rt5081_pmu_charger.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536
  1. /* Copyright Statement:
  2. *
  3. * This software/firmware and related documentation ("MediaTek Software") are
  4. * protected under relevant copyright laws. The information contained herein
  5. * is confidential and proprietary to MediaTek Inc. and/or its licensors.
  6. * Without the prior written permission of MediaTek inc. and/or its licensors,
  7. * any reproduction, modification, use or disclosure of MediaTek Software,
  8. * and information contained herein, in whole or in part, shall be strictly prohibited.
  9. */
  10. /* MediaTek Inc. (C) 2015. All rights reserved.
  11. *
  12. * BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  13. * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  14. * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
  15. * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  16. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  17. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  18. * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  19. * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  20. * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
  21. * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
  22. * THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
  23. * CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
  24. * SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
  25. * STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
  26. * CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  27. * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  28. * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
  29. * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  30. */
  31. #ifndef __LINUX_MFD_RT5081_PMU_CHARGER_H
  32. #define __LINUX_MFD_RT5081_PMU_CHARGER_H
  33. #ifdef MTK_RT5081_PMU_CHARGER_SUPPORT
  34. extern int rt5081_chg_probe(void);
  35. #else
  36. static inline int rt5081_chg_probe(void)
  37. {
  38. return 0;
  39. }
  40. #endif
  41. #define RT5081_SLAVE_ADDR (0x34)
  42. #define RT5081_VENDOR_ID (0x80)
  43. /* core control */
  44. #define RT5081_PMU_REG_DEVINFO (0x00)
  45. #define RT5081_PMU_REG_CORECTRL2 (0x02)
  46. #define RT5081_PMU_REG_HIDDENPASCODE1 (0x07)
  47. #define RT5081_PMU_REG_HIDDENPASCODE2 (0x08)
  48. #define RT5081_PMU_REG_HIDDENPASCODE3 (0x09)
  49. #define RT5081_PMU_REG_HIDDENPASCODE4 (0x0A)
  50. /* charger control */
  51. #define RT5081_PMU_REG_CHGCTRL1 (0x11)
  52. #define RT5081_PMU_REG_CHGCTRL2 (0x12)
  53. #define RT5081_PMU_REG_CHGCTRL3 (0x13)
  54. #define RT5081_PMU_REG_CHGCTRL4 (0x14)
  55. #define RT5081_PMU_REG_CHGCTRL5 (0x15)
  56. #define RT5081_PMU_REG_CHGCTRL6 (0x16)
  57. #define RT5081_PMU_REG_CHGCTRL7 (0x17)
  58. #define RT5081_PMU_REG_CHGCTRL8 (0x18)
  59. #define RT5081_PMU_REG_CHGCTRL9 (0x19)
  60. #define RT5081_PMU_REG_CHGCTRL10 (0x1A)
  61. #define RT5081_PMU_REG_CHGCTRL11 (0x1B)
  62. #define RT5081_PMU_REG_CHGCTRL12 (0x1C)
  63. #define RT5081_PMU_REG_CHGCTRL13 (0x1D)
  64. #define RT5081_PMU_REG_CHGCTRL14 (0x1E)
  65. #define RT5081_PMU_REG_CHGCTRL15 (0x1F)
  66. #define RT5081_PMU_REG_CHGCTRL16 (0x20)
  67. #define RT5081_PMU_REG_CHGADC (0x21)
  68. #define RT5081_PMU_REG_DEVICETYPE (0x22)
  69. #define RT5081_PMU_REG_QCCTRL1 (0x23)
  70. #define RT5081_PMU_REG_QCCTRL2 (0x24)
  71. #define RT5081_PMU_REG_QC3P0CTRL1 (0x25)
  72. #define RT5081_PMU_REG_QC3P0CTRL2 (0x26)
  73. #define RT5081_PMU_REG_USBSTATUS1 (0x27)
  74. #define RT5081_PMU_REG_QCSTATUS1 (0x28)
  75. #define RT5081_PMU_REG_QCSTATUS2 (0x29)
  76. #define RT5081_PMU_REG_CHGPUMP (0x2A)
  77. #define RT5081_PMU_REG_CHGCTRL17 (0x2B)
  78. #define RT5081_PMU_REG_CHGCTRL18 (0x2C)
  79. #define RT5081_PMU_REG_CHGDIRCHG1 (0x2D)
  80. #define RT5081_PMU_REG_CHGDIRCHG2 (0x2E)
  81. #define RT5081_PMU_REG_CHGDIRCHG3 (0x2F)
  82. #define RT5081_PMU_REG_CHGHIDDENCTRL6 (0x35)
  83. #define RT5081_PMU_REG_CHGHIDDENCTRL7 (0x36)
  84. #define RT5081_PMU_REG_CHGHIDDENCTRL8 (0x37)
  85. #define RT5081_PMU_REG_CHGHIDDENCTRL15 (0x3E)
  86. #define RT5081_PMU_REG_CHGSTAT (0x4A)
  87. #define RT5081_PMU_REG_CHGNTC (0x4B)
  88. #define RT5081_PMU_REG_ADCDATAH (0x4C)
  89. #define RT5081_PMU_REG_ADCDATAL (0x4D)
  90. #define RT5081_PMU_REG_CHGCTRL19 (0x60)
  91. #define RT5081_PMU_REG_OVPCTRL (0x61)
  92. /* status event */
  93. #define RT5081_PMU_REG_CHGSTAT1 (0xD0)
  94. #define RT5081_PMU_REG_CHGSTAT2 (0xD1)
  95. #define RT5081_PMU_REG_CHGSTAT3 (0xD2)
  96. #define RT5081_PMU_REG_CHGSTAT4 (0xD3)
  97. #define RT5081_PMU_REG_CHGSTAT5 (0xD4)
  98. #define RT5081_PMU_REG_CHGSTAT6 (0xD5)
  99. #define RT5081_PMU_REG_QCSTAT (0xD6)
  100. #define RT5081_PMU_REG_DICHGSTAT (0xD7)
  101. #define RT5081_PMU_REG_OVPCTRLSTAT (0xD8)
  102. /* Parameter */
  103. /* mA */
  104. #define RT5081_ICHG_NUM 64
  105. #define RT5081_ICHG_MIN 100
  106. #define RT5081_ICHG_MAX 5000
  107. #define RT5081_ICHG_STEP 100
  108. /* mA */
  109. #define RT5081_IEOC_NUM 16
  110. #define RT5081_IEOC_MIN 100
  111. #define RT5081_IEOC_MAX 850
  112. #define RT5081_IEOC_STEP 50
  113. /* mV */
  114. #define RT5081_MIVR_NUM 128
  115. #define RT5081_MIVR_MIN 3900
  116. #define RT5081_MIVR_MAX 13400
  117. #define RT5081_MIVR_STEP 100
  118. /* mA */
  119. #define RT5081_AICR_NUM 64
  120. #define RT5081_AICR_MIN 100
  121. #define RT5081_AICR_MAX 3250
  122. #define RT5081_AICR_STEP 50
  123. /* mV */
  124. #define RT5081_BAT_VOREG_NUM 128
  125. #define RT5081_BAT_VOREG_MIN 3900
  126. #define RT5081_BAT_VOREG_MAX 4710
  127. #define RT5081_BAT_VOREG_STEP 10
  128. /* mV */
  129. #define RT5081_BOOST_VOREG_NUM 64
  130. #define RT5081_BOOST_VOREG_MIN 4425
  131. #define RT5081_BOOST_VOREG_MAX 5825
  132. #define RT5081_BOOST_VOREG_STEP 25
  133. /* mV */
  134. #define RT5081_VPREC_NUM 16
  135. #define RT5081_VPREC_MIN 2000
  136. #define RT5081_VPREC_MAX 3500
  137. #define RT5081_VPREC_STEP 100
  138. /* mA */
  139. #define RT5081_IPREC_NUM 16
  140. #define RT5081_IPREC_MIN 100
  141. #define RT5081_IPREC_MAX 850
  142. #define RT5081_IPREC_STEP 50
  143. /* mV */
  144. #define RT5081_VRECHG_NUM 4
  145. #define RT5081_VRECHG_MIN 100
  146. #define RT5081_VRECHG_MAX 400
  147. #define RT5081_VRECHG_STEP 100
  148. /* Watchdog fast-charge timer */
  149. /* hour */
  150. #define RT5081_WT_FC_NUM 8
  151. #define RT5081_WT_FC_MIN 4
  152. #define RT5081_WT_FC_MAX 20
  153. #define RT5081_WT_FC_STEP 2
  154. /* IR compensation */
  155. /* mohm */
  156. #define RT5081_IRCMP_RES_NUM 8
  157. #define RT5081_IRCMP_RES_MIN 0
  158. #define RT5081_IRCMP_RES_MAX 175
  159. #define RT5081_IRCMP_RES_STEP 25
  160. /* IR compensation maximum voltage clamp */
  161. /* mV */
  162. #define RT5081_IRCMP_VCLAMP_NUM 8
  163. #define RT5081_IRCMP_VCLAMP_MIN 0
  164. #define RT5081_IRCMP_VCLAMP_MAX 224
  165. #define RT5081_IRCMP_VCLAMP_STEP 32
  166. /* PE+20 voltage */
  167. /* mV */
  168. #define RT5081_PEP20_VOLT_NUM 30
  169. #define RT5081_PEP20_VOLT_MIN 5500
  170. #define RT5081_PEP20_VOLT_MAX 20000
  171. #define RT5081_PEP20_VOLT_STEP 500
  172. /* AICL VTH */
  173. /* mV */
  174. #define RT5081_AICL_VTH_NUM 8
  175. #define RT5081_AICL_VTH_MIN 4100
  176. #define RT5081_AICL_VTH_MAX 4800
  177. #define RT5081_AICL_VTH_STEP 100
  178. /* VBUSOV LVL */
  179. #define RT5081_DC_VBUSOV_LVL_NUM 32
  180. #define RT5081_DC_VBUSOV_LVL_MIN 3900
  181. #define RT5081_DC_VBUSOV_LVL_MAX 7000
  182. #define RT5081_DC_VBUSOV_LVL_STEP 100
  183. /* IBUSOC LVL */
  184. #define RT5081_DC_IBUSOC_LVL_NUM 8
  185. #define RT5081_DC_IBUSOC_LVL_MIN 4000
  186. #define RT5081_DC_IBUSOC_LVL_MAX 6500
  187. #define RT5081_DC_IBUSOC_LVL_STEP 500
  188. /* ADC unit/offset */
  189. #define RT5081_ADC_UNIT_VBUS_DIV5 25 /* mV */
  190. #define RT5081_ADC_UNIT_VBUS_DIV2 10 /* mV */
  191. #define RT5081_ADC_UNIT_VSYS 5 /* mV */
  192. #define RT5081_ADC_UNIT_VBAT 5 /* mV */
  193. #define RT5081_ADC_UNIT_TS_BAT 25 /* 0.01% */
  194. #define RT5081_ADC_UNIT_IBUS 50 /* mA */
  195. #define RT5081_ADC_UNIT_IBAT 50 /* mA */
  196. #define RT5081_ADC_UNIT_CHG_VDDP 5 /* mV */
  197. #define RT5081_ADC_UNIT_TEMP_JC 2 /* degree */
  198. #define RT5081_ADC_OFFSET_VBUS_DIV5 0 /* mV */
  199. #define RT5081_ADC_OFFSET_VBUS_DIV2 0 /* mV */
  200. #define RT5081_ADC_OFFSET_VSYS 0 /* mV */
  201. #define RT5081_ADC_OFFSET_VBAT 0 /* mV */
  202. #define RT5081_ADC_OFFSET_TS_BAT 0 /* % */
  203. #define RT5081_ADC_OFFSET_IBUS 0 /* mA */
  204. #define RT5081_ADC_OFFSET_IBAT 0 /* mA */
  205. #define RT5081_ADC_OFFSET_CHG_VDDP 0 /* mV */
  206. #define RT5081_ADC_OFFSET_TEMP_JC (-40) /* degree */
  207. /* ========== CORE_CTRL2 0x02 ============ */
  208. #define RT5081_SHIFT_CHG_RST 6
  209. #define RT5081_MASK_CHG_RST (1 << RT5081_SHIFT_CHG_RST)
  210. /* ========== CHG_CTRL1 0x11 ============ */
  211. #define RT5081_SHIFT_OPA_MODE 0
  212. #define RT5081_SHIFT_HZ_EN 2
  213. #define RT5081_MASK_OPA_MODE (1 << RT5081_SHIFT_OPA_MODE)
  214. #define RT5081_MASK_HZ_EN (1 << RT5081_SHIFT_HZ_EN)
  215. /* ========== CHG_CTRL2 0x12 ============ */
  216. #define RT5081_SHIFT_CHG_EN 0
  217. #define RT5081_SHIFT_CFO_EN 1
  218. #define RT5081_SHIFT_IINLMTSEL 2
  219. #define RT5081_SHIFT_TE_EN 4
  220. #define RT5081_SHIFT_BYPASS_MODE 5
  221. #define RT5081_MASK_CHG_EN (1 << RT5081_SHIFT_CHG_EN)
  222. #define RT5081_MASK_CFO_EN (1 << RT5081_SHIFT_CFO_EN)
  223. #define RT5081_MASK_IINLMTSEL 0x0C
  224. #define RT5081_MASK_TE_EN (1 << RT5081_SHIFT_TE_EN)
  225. #define RT5081_MASK_BYPASS_MODE (1 << RT5081_SHIFT_BYPASS_MODE)
  226. /* ========== CHG_CTRL3 0x13 ============ */
  227. #define RT5081_SHIFT_AICR 2
  228. #define RT5081_SHIFT_AICR_EN 1
  229. #define RT5081_SHIFT_ILIM_EN 0
  230. #define RT5081_MASK_AICR 0xFC
  231. #define RT5081_MASK_AICR_EN (1 << RT5081_SHIFT_AICR_EN)
  232. #define RT5081_MASK_ILIM_EN (1 << RT5081_SHIFT_ILIM_EN)
  233. /* ========== CHG_CTRL4 0x14 ============ */
  234. #define RT5081_SHIFT_BAT_VOREG 1
  235. #define RT5081_MASK_BAT_VOREG 0xFE
  236. /* ========== CHG_CTRL5 0x15 ============ */
  237. #define RT5081_SHIFT_BOOST_VOREG 2
  238. #define RT5081_MASK_BOOST_VOREG 0xFC
  239. /* ========== CHG_CTRL6 0x16 ============ */
  240. #define RT5081_SHIFT_MIVR 1
  241. #define RT5081_SHIFT_MIVR_EN 0
  242. #define RT5081_MASK_MIVR 0xFE
  243. #define RT5081_MASK_MIVR_EN (1 << RT5081_SHIFT_MIVR_EN)
  244. /* ========== CHG_CTRL7 0x17 ============ */
  245. #define RT5081_SHIFT_ICHG 2
  246. #define RT5081_MASK_ICHG 0xFC
  247. /* ========== CHG_CTRL8 0x18 ============ */
  248. #define RT5081_SHIFT_VPREC 4
  249. #define RT5081_SHIFT_IPREC 0
  250. #define RT5081_MASK_VPREC 0xF0
  251. #define RT5081_MASK_IPREC 0x0F
  252. /* ========== CHG_CTRL9 0x19 ============ */
  253. #define RT5081_SHIFT_IEOC 4
  254. #define RT5081_MASK_IEOC 0xF0
  255. /* ========== CHG_CTRL10 0x1A ============ */
  256. #define RT5081_SHIFT_BOOST_OC 0
  257. #define RT5081_MASK_BOOST_OC 0x07
  258. /* ========== CHG_CTRL11 0x1B ============ */
  259. #define RT5081_SHIFT_VRECHG 0
  260. #define RT5081_MASK_VRECHG 0x03
  261. /* ========== CHG_CTRL12 0x1C ============ */
  262. #define RT5081_SHIFT_TMR_EN 1
  263. #define RT5081_SHIFT_WT_FC 5
  264. #define RT5081_MASK_TMR_EN (1 << RT5081_SHIFT_TMR_EN)
  265. #define RT5081_MASK_WT_FC 0xE0
  266. /* ========== CHG_CTRL13 0x1D ============ */
  267. #define RT5081_SHIFT_WDT_EN 7
  268. #define RT5081_MASK_WDT_EN (1 << RT5081_SHIFT_WDT_EN)
  269. /* ========== CHG_CTRL14 0x1E ============ */
  270. #define RT5081_SHIFT_AICL_MEAS 7
  271. #define RT5081_SHIFT_AICL_VTH 0
  272. #define RT5081_MASK_AICL_MEAS (1 << RT5081_SHIFT_AICL_MEAS)
  273. #define RT5081_MASK_AICL_VTH 0x07
  274. /* ========== CHG_CTRL16 0x20 ============ */
  275. #define RT5081_SHIFT_JEITA_EN 4
  276. #define RT5081_MASK_JEITA_EN (1 << RT5081_SHIFT_JEITA_EN)
  277. /* ========== CHG_ADC 0x21 ============ */
  278. #define RT5081_SHIFT_ADC_IN_SEL 4
  279. #define RT5081_SHIFT_ADC_START 0
  280. #define RT5081_MASK_ADC_IN_SEL 0xF0
  281. #define RT5081_MASK_ADC_START (1 << RT5081_SHIFT_ADC_START)
  282. /* ========== CHG_DEVICETYPE 0x22 ============ */
  283. #define RT5081_SHIFT_USBCHGEN 7
  284. #define RT5081_SHIFT_DCPSTD 2
  285. #define RT5081_SHIFT_CDP 1
  286. #define RT5081_SHIFT_SDP 0
  287. #define RT5081_MASK_USBCHGEN (1 << RT5081_SHIFT_USBCHGEN)
  288. #define RT5081_MASK_DCPSTD (1 << RT5081_SHIFT_DCPSTD)
  289. #define RT5081_MASK_CDP (1 << RT5081_SHIFT_CDP)
  290. #define RT5081_MASK_SDP (1 << RT5081_SHIFT_SDP)
  291. /* ========== QCCTRL2 0x24 ============ */
  292. #define RT5081_SHIFT_EN_DCP 1
  293. #define RT5081_MASK_EN_DCP (1 << RT5081_SHIFT_EN_DCP)
  294. /* ========== CHG_PUMP 0x2A ============ */
  295. #define RT5081_SHIFT_VG_LVL_SEL 1
  296. #define RT5081_SHIFT_VG_EN 0
  297. #define RT5081_MASK_VG_LVL_SEL (1 << RT5081_SHIFT_LVL_SEL)
  298. #define RT5081_MASK_VG_EN (1 << RT5081_SHIFT_VG_EN)
  299. /* ========== CHG_CTRL17 0x2B ============ */
  300. #define RT5081_SHIFT_PUMPX_EN 7
  301. #define RT5081_SHIFT_PUMPX_20_10 6
  302. #define RT5081_SHIFT_PUMPX_UP_DN 5
  303. #define RT5081_SHIFT_PUMPX_DEC 0
  304. #define RT5081_MASK_PUMPX_EN (1 << RT5081_SHIFT_PUMPX_EN)
  305. #define RT5081_MASK_PUMPX_20_10 (1 << RT5081_SHIFT_PUMPX_20_10)
  306. #define RT5081_MASK_PUMPX_UP_DN (1 << RT5081_SHIFT_PUMPX_UP_DN)
  307. #define RT5081_MASK_PUMPX_DEC 0x1F
  308. /* ========== CHG_CTRL18 0x2C ============ */
  309. #define RT5081_SHIFT_IRCMP_RES 3
  310. #define RT5081_SHIFT_IRCMP_VCLAMP 0
  311. #define RT5081_MASK_IRCMP_RES 0x38
  312. #define RT5081_MASK_IRCMP_VCLAMP 0x07
  313. /* ========== CHG_DIRCHG1 0x2D ============ */
  314. #define RT5081_SHIFT_DC_VBATOV_EN 6
  315. #define RT5081_SHIFT_DC_VBATOV_LVL 4
  316. #define RT5081_SHIFT_DC_IBUSOC_EN 3
  317. #define RT5081_SHIFT_DC_IBUSOC_LVL 0
  318. #define RT5081_MASK_DC_VBATOV_EN (1 << RT5081_SHIFT_DC_VBATOV_EN)
  319. #define RT5081_MASK_DC_VBATOV_LVL 0x30
  320. #define RT5081_MASK_DC_IBUSOC_EN (1 << RT5081_SHIFT_DC_IBUSOC_EN)
  321. #define RT5081_MASK_DC_IBUSOC_LVL 0x07
  322. /* ========== CHG_DIRCHG1 0x2E ============ */
  323. #define RT5081_SHIFT_DC_WDT 4
  324. #define RT5081_MASK_DC_WDT 0x70
  325. /* ========== CHG_DIRCHG2 0x2F ============ */
  326. #define RT5081_SHIFT_DC_VBUSOV_EN 7
  327. #define RT5081_SHIFT_DC_VBUSOV_LVL 2
  328. #define RT5081_MASK_DC_VBUSOV_EN (1 << RT5081_SHIFT_DC_VBUSOV_EN)
  329. #define RT5081_MASK_DC_VBUSOV_LVL 0x7C
  330. /* ========== CHG_STAT 0x4A ============ */
  331. #define RT5081_SHIFT_ADC_STAT 0
  332. #define RT5081_SHIFT_CHG_STAT 6
  333. #define RT5081_MASK_ADC_STAT (1 << RT5081_SHIFT_ADC_STAT)
  334. #define RT5081_MASK_CHG_STAT 0xC0
  335. /* ========== CHG_STAT1 0xD0 ============ */
  336. #define RT5081_SHIFT_PWR_RDY 7
  337. #define RT5081_SHIFT_CHG_MIVR 6
  338. #define RT5081_SHIFT_CHG_AICR 5
  339. #define RT5081_SHIFT_CHG_TREG 4
  340. #define RT5081_SHIFT_DIRCHG_ON 0
  341. #define RT5081_MASK_PWR_RDY (1 << RT5081_SHIFT_PWR_RDY)
  342. #define RT5081_MASK_CHG_MIVR (1 << RT5081_SHIFT_CHG_MIVR)
  343. #define RT5081_MASK_CHG_AICR (1 << RT5081_SHIFT_CHG_AICR)
  344. #define RT5081_MASK_CHG_TREG (1 << RT5081_SHIFT_CHG_TREG)
  345. #define RT5081_MASK_DIRCHG_ON (1 << RT5081_SHIFT_DIRCHG_ON)
  346. /* ========== CHG_IRQ5 0xC4 ============ */
  347. #define RT5081_SHIFT_CHG_IEOCI 7
  348. #define RT5081_SHIFT_CHG_TERMI 6
  349. #define RT5081_SHIFT_CHG_RECHGI 5
  350. #define RT5081_SHIFT_CHG_SSFINISHI 4
  351. #define RT5081_SHIFT_CHG_WDTMRI 3
  352. #define RT5081_SHIFT_CHGDET_DONEI 2
  353. #define RT5081_SHIFT_CHG_ICHGMEASI 1
  354. #define RT5081_SHIFT_CHG_AICLMEASI 0
  355. #define RT5081_MASK_CHG_IEOCI (1 << RT5081_SHIFT_CHG_IEOCI)
  356. #define RT5081_MASK_CHG_TERMI (1 << RT5081_SHIFT_CHG_TERMI)
  357. #define RT5081_MASK_CHG_RECHGI (1 << RT5081_SHIFT_CHG_RECHGI)
  358. #define RT5081_MASK_CHG_SSFINISHI (1 << RT5081_SHIFT_CHG_SSFINISHI)
  359. #define RT5081_MASK_CHG_WDTMRI (1 << RT5081_SHIFT_CHG_WDTMRI)
  360. #define RT5081_MASK_CHGDET_DONEI (1 << RT5081_SHIFT_CHGDET_DONEI)
  361. #define RT5081_MASK_CHG_ICHGMEASI (1 << RT5081_SHIFT_CHG_ICHGMEASI)
  362. #define RT5081_MASK_CHG_AICLMEASI (1 << RT5081_SHIFT_CHG_AICLMEASI)
  363. /* ========== CHG_IRQ6 0xC5 ============ */
  364. #define RT5081_SHIFT_BST_OLPI 7
  365. #define RT5081_SHIFT_BST_MIDOVI 6
  366. #define RT5081_SHIFT_BST_BATUVI 5
  367. #define RT5081_SHIFT_PUMPX_DONEI 1
  368. #define RT5081_SHIFT_ADC_DONEI 0
  369. #define RT5081_MASK_BST_OLPI (1 << RT5081_SHIFT_BST_OLPI)
  370. #define RT5081_MASK_BST_MIDOVI (1 << RT5081_SHIFT_BST_MIDOVI)
  371. #define RT5081_MASK_BST_BATUVI (1 << RT5081_SHIFT_BST_BATUVI)
  372. #define RT5081_MASK_PUMPX_DONEI (1 << RT5081_SHIFT_PUMPX_DONEI)
  373. #define RT5081_MASK_ADC_DONEI (1 << RT5081_SHIFT_ADC_DONEI)
  374. /* ========== DPDM_IRQ 0xC6 ============ */
  375. #define RT5081_SHIFT_DCDTI 7
  376. #define RT5081_SHIFT_CHGDETI 6
  377. #define RT5081_SHIFT_HVDCPDET 5
  378. #define RT5081_SHIFT_DETACHI 1
  379. #define RT5081_SHIFT_ATTACHI 0
  380. #define RT5081_MASK_DCDTI (1 << RT5081_SHIFT_DCDTI)
  381. #define RT5081_MASK_CHGDETI (1 << RT5081_SHIFT_CHGDETI)
  382. #define RT5081_MASK_HVDCPDET (1 << RT5081_SHIFT_HVDCPDET)
  383. #define RT5081_MASK_DETACHI (1 << RT5081_SHIFT_DETACHI)
  384. #define RT5081_MASK_ATTACHI (1 << RT5081_SHIFT_ATTACHI)
  385. /* ========== CHG_STAT1 0xD0 ============ */
  386. #define RT5081_SHIFT_MIVR_STAT 6
  387. #define RT5081_MASK_MIVR_STAT (1 << RT5081_SHIFT_MIVR_STAT)
  388. /* ========== CHG_STAT2 0xD1 ============ */
  389. #define RT5081_SHIFT_CHG_VBUSOV_STAT 7
  390. #define RT5081_MASK_CHG_VBUSOV_STAT (1 << RT5081_SHIFT_CHG_VBUSOV_STAT)
  391. /* ========== CHG_STAT4 0xD3 ============ */
  392. #define RT5081_SHIFT_CHG_TMRI_STAT 3
  393. #define RT5081_MASK_CHG_TMRI_STAT (1 << RT5081_SHIFT_CHG_TMRI_STAT)
  394. /* ========== CHG_STAT5 0xD4 ============ */
  395. #define RT5081_SHIFT_CHG_IEOCI_STAT 7
  396. #define RT5081_MASK_CHG_IEOCI_STAT (1 << RT5081_SHIFT_CHG_IEOCI_STAT)
  397. /* ========== DPDM_STAT 0xD6 ============ */
  398. #define RT5081_SHIFT_DCDTI_STAT 7
  399. #define RT5081_MASK_DCDTI_STAT (1 << RT5081_SHIFT_DCDTI_STAT)
  400. /* ========== OVPCTRL_STAT 0xD8 ============ */
  401. #define RT5081_SHIFT_OVPCTRL_UVP_D_STAT 4
  402. #define RT5081_MASK_OVPCTRL_UVP_D_STAT (1 << RT5081_SHIFT_OVPCTRL_UVP_D_STAT)
  403. /* ========== CHG_MASK1 0xE0 ============ */
  404. #define RT5081_SHIFT_CHG_MIVRM 6
  405. #define RT5081_MASK_CHG_MIVRM (1 << RT5081_SHIFT_CHG_MIVRM)
  406. /* ========== CHG_MASK5 0xE4 ============ */
  407. #define RT5081_SHIFT_CHG_IEOCM 7
  408. #define RT5081_SHIFT_CHG_TERMM 6
  409. #define RT5081_SHIFT_CHG_RECHGM 5
  410. #define RT5081_SHIFT_CHG_SSFINISHM 4
  411. #define RT5081_SHIFT_CHG_WDTMRM 3
  412. #define RT5081_SHIFT_CHGDET_DONEM 2
  413. #define RT5081_SHIFT_CHG_ICHGMEASM 1
  414. #define RT5081_SHIFT_CHG_AICLMEASM 0
  415. #define RT5081_MASK_CHG_IEOCM (1 << RT5081_SHIFT_CHG_IEOCM)
  416. #define RT5081_MASK_CHG_TERMM (1 << RT5081_SHIFT_CHG_TERMM)
  417. #define RT5081_MASK_CHG_RECHGM (1 << RT5081_SHIFT_CHG_RECHGM)
  418. #define RT5081_MASK_CHG_SSFINISHM (1 << RT5081_SHIFT_CHG_SSFINISHM)
  419. #define RT5081_MASK_CHG_WDTMRM (1 << RT5081_SHIFT_CHG_WDTMRM)
  420. #define RT5081_MASK_CHGDET_DONEM (1 << RT5081_SHIFT_CHGDET_DONEM)
  421. #define RT5081_MASK_CHG_ICHGMEASM (1 << RT5081_SHIFT_CHG_ICHGMEASM)
  422. #define RT5081_MASK_CHG_AICLMEASM (1 << RT5081_SHIFT_CHG_AICLMEASM)
  423. /* ========== CHG_MASK6 0xE5 ============ */
  424. #define RT5081_SHIFT_BST_OLPM 7
  425. #define RT5081_SHIFT_BST_MIDOVM 6
  426. #define RT5081_SHIFT_BST_BATUVM 5
  427. #define RT5081_SHIFT_PUMPX_DONEM 1
  428. #define RT5081_SHIFT_ADC_DONEM 0
  429. #define RT5081_MASK_BST_OLPM (1 << RT5081_SHIFT_BST_OLPM)
  430. #define RT5081_MASK_BST_MIDOVM (1 << RT5081_SHIFT_BST_MIDOVM)
  431. #define RT5081_MASK_BST_BATUVM (1 << RT5081_SHIFT_BST_BATUVM)
  432. #define RT5081_MASK_PUMPX_DONEM (1 << RT5081_SHIFT_PUMPX_DONEM)
  433. #define RT5081_MASK_ADC_DONEM (1 << RT5081_SHIFT_ADC_DONEM)
  434. #endif /* __LINUX_MFD_RT5081_PMU_CHARGER_H */