mt6370_pmu_charger.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551
  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. * The following software/firmware and/or related documentation ("MediaTek Software")
  32. * have been modified by MediaTek Inc. All revisions are subject to any receiver\'s
  33. * applicable license agreements with MediaTek Inc.
  34. */
  35. #ifndef __MT6370_PMU_CHARGER_H
  36. #define __MT6370_PMU_CHARGER_H
  37. #ifdef MTK_MT6370_PMU_CHARGER_SUPPORT
  38. int mt6370_chg_probe(void);
  39. #else
  40. static inline int mt6370_chg_probe(void)
  41. {
  42. return 0;
  43. }
  44. #endif
  45. #ifndef BIT
  46. #define BIT(nr) (1 << (nr))
  47. #endif
  48. #define MT6370_SLAVE_ADDR (0x34)
  49. #define RT5081_VENDOR_ID (0x80)
  50. #define MT6370_VENDOR_ID (0xE0)
  51. #define MT6371_VENDOR_ID (0xF0)
  52. #define MT6372_VENDOR_ID (0x90)
  53. #define MT6372C_VENDOR_ID (0xB0)
  54. /* core control */
  55. #define MT6370_PMU_REG_DEVINFO (0x00)
  56. #define MT6370_PMU_REG_CORECTRL1 (0x01)
  57. #define MT6370_PMU_REG_CORECTRL2 (0x02)
  58. #define MT6370_PMU_REG_RSTPASCODE1 (0x03)
  59. #define MT6370_PMU_REG_RSTPASCODE2 (0x04)
  60. #define MT6370_PMU_REG_HIDDENPASCODE1 (0x07)
  61. #define MT6370_PMU_REG_HIDDENPASCODE2 (0x08)
  62. #define MT6370_PMU_REG_HIDDENPASCODE3 (0x09)
  63. #define MT6370_PMU_REG_HIDDENPASCODE4 (0x0A)
  64. /* charger control */
  65. #define MT6370_PMU_REG_CHGCTRL1 (0x11)
  66. #define MT6370_PMU_REG_CHGCTRL2 (0x12)
  67. #define MT6370_PMU_REG_CHGCTRL3 (0x13)
  68. #define MT6370_PMU_REG_CHGCTRL4 (0x14)
  69. #define MT6370_PMU_REG_CHGCTRL5 (0x15)
  70. #define MT6370_PMU_REG_CHGCTRL6 (0x16)
  71. #define MT6370_PMU_REG_CHGCTRL7 (0x17)
  72. #define MT6370_PMU_REG_CHGCTRL8 (0x18)
  73. #define MT6370_PMU_REG_CHGCTRL9 (0x19)
  74. #define MT6370_PMU_REG_CHGCTRL10 (0x1A)
  75. #define MT6370_PMU_REG_CHGCTRL11 (0x1B)
  76. #define MT6370_PMU_REG_CHGCTRL12 (0x1C)
  77. #define MT6370_PMU_REG_CHGCTRL13 (0x1D)
  78. #define MT6370_PMU_REG_CHGCTRL14 (0x1E)
  79. #define MT6370_PMU_REG_CHGCTRL15 (0x1F)
  80. #define MT6370_PMU_REG_CHGCTRL16 (0x20)
  81. #define MT6370_PMU_REG_CHGADC (0x21)
  82. #define MT6370_PMU_REG_DEVICETYPE (0x22)
  83. #define MT6370_PMU_REG_QCCTRL1 (0x23)
  84. #define MT6370_PMU_REG_QCCTRL2 (0x24)
  85. #define MT6370_PMU_REG_QC3P0CTRL1 (0x25)
  86. #define MT6370_PMU_REG_QC3P0CTRL2 (0x26)
  87. #define MT6370_PMU_REG_USBSTATUS1 (0x27)
  88. #define MT6370_PMU_REG_QCSTATUS1 (0x28)
  89. #define MT6370_PMU_REG_QCSTATUS2 (0x29)
  90. #define MT6370_PMU_REG_CHGPUMP (0x2A)
  91. #define MT6370_PMU_REG_CHGCTRL17 (0x2B)
  92. #define MT6370_PMU_REG_CHGCTRL18 (0x2C)
  93. #define MT6370_PMU_REG_CHGDIRCHG1 (0x2D)
  94. #define MT6370_PMU_REG_CHGDIRCHG2 (0x2E)
  95. #define MT6370_PMU_REG_CHGDIRCHG3 (0x2F)
  96. #define MT6370_PMU_REG_CHGHIDDENCTRL6 (0x35)
  97. #define MT6370_PMU_REG_CHGHIDDENCTRL7 (0x36)
  98. #define MT6370_PMU_REG_CHGHIDDENCTRL8 (0x37)
  99. #define MT6370_PMU_REG_CHGHIDDENCTRL9 (0x38)
  100. #define MT6370_PMU_REG_CHGHIDDENCTRL15 (0x3E)
  101. #define MT6370_PMU_REG_CHGSTAT (0x4A)
  102. #define MT6370_PMU_REG_CHGNTC (0x4B)
  103. #define MT6370_PMU_REG_ADCDATAH (0x4C)
  104. #define MT6370_PMU_REG_ADCDATAL (0x4D)
  105. #define MT6370_PMU_REG_CHGCTRL19 (0x60)
  106. #define MT6370_PMU_REG_OVPCTRL (0x61)
  107. /* status event */
  108. #define MT6370_PMU_REG_CHGSTAT1 (0xD0)
  109. #define MT6370_PMU_REG_CHGSTAT2 (0xD1)
  110. #define MT6370_PMU_REG_CHGSTAT3 (0xD2)
  111. #define MT6370_PMU_REG_CHGSTAT4 (0xD3)
  112. #define MT6370_PMU_REG_CHGSTAT5 (0xD4)
  113. #define MT6370_PMU_REG_CHGSTAT6 (0xD5)
  114. #define MT6370_PMU_REG_QCSTAT (0xD6)
  115. #define MT6370_PMU_REG_DICHGSTAT (0xD7)
  116. #define MT6370_PMU_REG_OVPCTRLSTAT (0xD8)
  117. /* test mode related register */
  118. #define MT6370_PMU_REG_TM_PAS_CODE1 (0xF0)
  119. #define MT6370_PMU_REG_TM_INF (0xF4)
  120. #define MT6370_PMU_REG_BANK_REG (0xFF)
  121. #define MT6370_TM_REG_ICC_1A (0x19)
  122. #define MT6370_TM_REG_TM_INF (0x41)
  123. /* Parameter */
  124. /* mA */
  125. #define MT6370_ICHG_MIN 100
  126. #define MT6370_ICHG_MAX 5000
  127. #define MT6370_ICHG_STEP 100
  128. /* mA */
  129. #define MT6370_IEOC_MIN 100
  130. #define MT6370_IEOC_MAX 850
  131. #define MT6370_IEOC_STEP 50
  132. /* mV */
  133. #define MT6370_MIVR_MIN 3900
  134. #define MT6370_MIVR_MAX 13400
  135. #define MT6370_MIVR_STEP 100
  136. /* mA */
  137. #define MT6370_AICR_MIN 100
  138. #define MT6370_AICR_MAX 3250
  139. #define MT6370_AICR_STEP 50
  140. /* mV */
  141. #define MT6370_BAT_VOREG_MIN 3900
  142. #define MT6370_BAT_VOREG_MAX 4710
  143. #define MT6370_BAT_VOREG_STEP 10
  144. /* mV */
  145. #define MT6370_BOOST_VOREG_MIN 4425
  146. #define MT6370_BOOST_VOREG_MAX 5825
  147. #define MT6370_BOOST_VOREG_STEP 25
  148. /* mV */
  149. #define MT6370_VPREC_MIN 2000
  150. #define MT6370_VPREC_MAX 3500
  151. #define MT6370_VPREC_STEP 100
  152. /* mA */
  153. #define MT6370_IPREC_MIN 100
  154. #define MT6370_IPREC_MAX 850
  155. #define MT6370_IPREC_STEP 50
  156. /* mV */
  157. #define MT6370_VRECHG_MIN 100
  158. #define MT6370_VRECHG_MAX 400
  159. #define MT6370_VRECHG_STEP 100
  160. /* Watchdog fast-charge timer */
  161. /* hour */
  162. #define MT6370_WT_FC_MIN 4
  163. #define MT6370_WT_FC_MAX 20
  164. #define MT6370_WT_FC_STEP 2
  165. /* IR compensation */
  166. /* mohm */
  167. #define MT6370_IRCMP_RES_MIN 0
  168. #define MT6370_IRCMP_RES_MAX 175
  169. #define MT6370_IRCMP_RES_STEP 25
  170. /* IR compensation maximum voltage clamp */
  171. /* mV */
  172. #define MT6370_IRCMP_VCLAMP_MIN 0
  173. #define MT6370_IRCMP_VCLAMP_MAX 224
  174. #define MT6370_IRCMP_VCLAMP_STEP 32
  175. /* PE+20 voltage */
  176. /* mV */
  177. #define MT6370_PEP20_VOLT_MIN 5500
  178. #define MT6370_PEP20_VOLT_MAX 20000
  179. #define MT6370_PEP20_VOLT_STEP 500
  180. /* AICL VTH */
  181. /* mV */
  182. #define MT6370_AICL_VTH_MIN 4100
  183. #define MT6370_AICL_VTH_MAX 4800
  184. #define MT6370_AICL_VTH_STEP 100
  185. /* VBUSOV LVL */
  186. #define MT6370_DC_VBUSOV_LVL_MIN 3900
  187. #define MT6370_DC_VBUSOV_LVL_MAX 7000
  188. #define MT6370_DC_VBUSOV_LVL_STEP 100
  189. /* IBUSOC LVL */
  190. #define MT6370_DC_IBUSOC_LVL_MIN 4000
  191. #define MT6370_DC_IBUSOC_LVL_MAX 6500
  192. #define MT6370_DC_IBUSOC_LVL_STEP 500
  193. /* ADC unit/offset */
  194. #define MT6370_ADC_UNIT_VBUS_DIV5 25 /* mV */
  195. #define MT6370_ADC_UNIT_VBUS_DIV2 10 /* mV */
  196. #define MT6370_ADC_UNIT_VSYS 5 /* mV */
  197. #define MT6370_ADC_UNIT_VBAT 5 /* mV */
  198. #define MT6370_ADC_UNIT_TS_BAT 25 /* 0.01% */
  199. #define MT6370_ADC_UNIT_IBUS 50 /* mA */
  200. #define MT6370_ADC_UNIT_IBAT 50 /* mA */
  201. #define MT6370_ADC_UNIT_CHG_VDDP 5 /* mV */
  202. #define MT6370_ADC_UNIT_TEMP_JC 2 /* degree */
  203. #define MT6370_ADC_OFFSET_VBUS_DIV5 0 /* mV */
  204. #define MT6370_ADC_OFFSET_VBUS_DIV2 0 /* mV */
  205. #define MT6370_ADC_OFFSET_VSYS 0 /* mV */
  206. #define MT6370_ADC_OFFSET_VBAT 0 /* mV */
  207. #define MT6370_ADC_OFFSET_TS_BAT 0 /* % */
  208. #define MT6370_ADC_OFFSET_IBUS 0 /* mA */
  209. #define MT6370_ADC_OFFSET_IBAT 0 /* mA */
  210. #define MT6370_ADC_OFFSET_CHG_VDDP 0 /* mV */
  211. #define MT6370_ADC_OFFSET_TEMP_JC (-40) /* degree */
  212. /* ========== CHG_CTRL1 0x11 ============ */
  213. #define MT6370_SHIFT_OPA_MODE 0
  214. #define MT6370_SHIFT_HZ_EN 2
  215. #define MT6370_MASK_OPA_MODE BIT(MT6370_SHIFT_OPA_MODE)
  216. #define MT6370_MASK_HZ_EN BIT(MT6370_SHIFT_HZ_EN)
  217. /* ========== CHG_CTRL2 0x12 ============ */
  218. #define MT6370_SHIFT_CHG_EN 0
  219. #define MT6370_SHIFT_CFO_EN 1
  220. #define MT6370_SHIFT_IINLMTSEL 2
  221. #define MT6370_SHIFT_TE_EN 4
  222. #define MT6370_SHIFT_BYPASS_MODE 5
  223. #define MT6370_MASK_CHG_EN BIT(MT6370_SHIFT_CHG_EN)
  224. #define MT6370_MASK_CFO_EN BIT(MT6370_SHIFT_CFO_EN)
  225. #define MT6370_MASK_IINLMTSEL 0x0C
  226. #define MT6370_MASK_TE_EN BIT(MT6370_SHIFT_TE_EN)
  227. #define MT6370_MASK_BYPASS_MODE BIT(MT6370_SHIFT_BYPASS_MODE)
  228. /* ========== CHG_CTRL3 0x13 ============ */
  229. #define MT6370_SHIFT_AICR 2
  230. #define MT6370_SHIFT_AICR_EN 1
  231. #define MT6370_SHIFT_ILIM_EN 0
  232. #define MT6370_MASK_AICR 0xFC
  233. #define MT6370_MASK_AICR_EN BIT(MT6370_SHIFT_AICR_EN)
  234. #define MT6370_MASK_ILIM_EN BIT(MT6370_SHIFT_ILIM_EN)
  235. /* ========== CHG_CTRL4 0x14 ============ */
  236. #define MT6370_SHIFT_BAT_VOREG 1
  237. #define MT6370_MASK_BAT_VOREG 0xFE
  238. /* ========== CHG_CTRL5 0x15 ============ */
  239. #define MT6370_SHIFT_BOOST_VOREG 2
  240. #define MT6370_MASK_BOOST_VOREG 0xFC
  241. /* ========== CHG_CTRL6 0x16 ============ */
  242. #define MT6370_SHIFT_MIVR 1
  243. #define MT6370_SHIFT_MIVR_EN 0
  244. #define MT6370_MASK_MIVR 0xFE
  245. #define MT6370_MASK_MIVR_EN BIT(MT6370_SHIFT_MIVR_EN)
  246. /* ========== CHG_CTRL7 0x17 ============ */
  247. #define MT6370_SHIFT_ICHG 2
  248. #define MT6370_MASK_ICHG 0xFC
  249. /* ========== CHG_CTRL8 0x18 ============ */
  250. #define MT6370_SHIFT_VPREC 4
  251. #define MT6370_SHIFT_IPREC 0
  252. #define MT6370_MASK_VPREC 0xF0
  253. #define MT6370_MASK_IPREC 0x0F
  254. /* ========== CHG_CTRL9 0x19 ============ */
  255. #define MT6370_SHIFT_IEOC 4
  256. #define MT6370_MASK_IEOC 0xF0
  257. /* ========== CHG_CTRL10 0x1A ============ */
  258. #define MT6370_SHIFT_BOOST_OC 0
  259. #define MT6370_MASK_BOOST_OC 0x07
  260. /* ========== CHG_CTRL11 0x1B ============ */
  261. #define MT6370_SHIFT_VRECHG 0
  262. #define MT6370_MASK_VRECHG 0x03
  263. /* ========== CHG_CTRL12 0x1C ============ */
  264. #define MT6370_SHIFT_TMR_EN 1
  265. #define MT6370_SHIFT_WT_FC 5
  266. #define MT6370_MASK_TMR_EN BIT(MT6370_SHIFT_TMR_EN)
  267. #define MT6370_MASK_WT_FC 0xE0
  268. /* ========== CHG_CTRL13 0x1D ============ */
  269. #define MT6370_SHIFT_WDT_EN 7
  270. #define MT6370_MASK_WDT_EN BIT(MT6370_SHIFT_WDT_EN)
  271. /* ========== CHG_CTRL14 0x1E ============ */
  272. #define MT6370_SHIFT_AICL_MEAS 7
  273. #define MT6370_SHIFT_AICL_VTH 0
  274. #define MT6370_MASK_AICL_MEAS BIT(MT6370_SHIFT_AICL_MEAS)
  275. #define MT6370_MASK_AICL_VTH 0x07
  276. /* ========== CHG_CTRL16 0x20 ============ */
  277. #define MT6370_SHIFT_JEITA_EN 4
  278. #define MT6370_MASK_JEITA_EN BIT(MT6370_SHIFT_JEITA_EN)
  279. /* ========== CHG_ADC 0x21 ============ */
  280. #define MT6370_SHIFT_ADC_IN_SEL 4
  281. #define MT6370_SHIFT_ADC_START 0
  282. #define MT6370_MASK_ADC_IN_SEL 0xF0
  283. #define MT6370_MASK_ADC_START BIT(MT6370_SHIFT_ADC_START)
  284. /* ========== CHG_DEVICETYPE 0x22 ============ */
  285. #define MT6370_SHIFT_USBCHGEN 7
  286. #define MT6370_SHIFT_DCPSTD 2
  287. #define MT6370_SHIFT_CDP 1
  288. #define MT6370_SHIFT_SDP 0
  289. #define MT6370_MASK_USBCHGEN BIT(MT6370_SHIFT_USBCHGEN)
  290. #define MT6370_MASK_DCPSTD BIT(MT6370_SHIFT_DCPSTD)
  291. #define MT6370_MASK_CDP BIT(MT6370_SHIFT_CDP)
  292. #define MT6370_MASK_SDP BIT(MT6370_SHIFT_SDP)
  293. /* ========== QCCTRL2 0x24 ============ */
  294. #define MT6370_SHIFT_EN_DCP 1
  295. #define MT6370_MASK_EN_DCP BIT(MT6370_SHIFT_EN_DCP)
  296. /* ========== CHG_PUMP 0x2A ============ */
  297. #define MT6370_SHIFT_VG_LVL_SEL 1
  298. #define MT6370_SHIFT_VG_EN 0
  299. #define MT6370_MASK_VG_LVL_SEL BIT(MT6370_SHIFT_VG_LVL_SEL)
  300. #define MT6370_MASK_VG_EN BIT(MT6370_SHIFT_VG_EN)
  301. /* ========== CHG_CTRL17 0x2B ============ */
  302. #define MT6370_SHIFT_PUMPX_EN 7
  303. #define MT6370_SHIFT_PUMPX_20_10 6
  304. #define MT6370_SHIFT_PUMPX_UP_DN 5
  305. #define MT6370_SHIFT_PUMPX_DEC 0
  306. #define MT6370_MASK_PUMPX_EN BIT(MT6370_SHIFT_PUMPX_EN)
  307. #define MT6370_MASK_PUMPX_20_10 BIT(MT6370_SHIFT_PUMPX_20_10)
  308. #define MT6370_MASK_PUMPX_UP_DN BIT(MT6370_SHIFT_PUMPX_UP_DN)
  309. #define MT6370_MASK_PUMPX_DEC 0x1F
  310. /* ========== CHG_CTRL18 0x2C ============ */
  311. #define MT6370_SHIFT_IRCMP_RES 3
  312. #define MT6370_SHIFT_IRCMP_VCLAMP 0
  313. #define MT6370_MASK_IRCMP_RES 0x38
  314. #define MT6370_MASK_IRCMP_VCLAMP 0x07
  315. /* ========== CHG_DIRCHG1 0x2D ============ */
  316. #define MT6370_SHIFT_DC_VBATOV_EN 6
  317. #define MT6370_SHIFT_DC_VBATOV_LVL 4
  318. #define MT6370_SHIFT_DC_IBUSOC_EN 3
  319. #define MT6370_SHIFT_DC_IBUSOC_LVL 0
  320. #define MT6370_MASK_DC_VBATOV_EN BIT(MT6370_SHIFT_DC_VBATOV_EN)
  321. #define MT6370_MASK_DC_VBATOV_LVL 0x30
  322. #define MT6370_MASK_DC_IBUSOC_EN BIT(MT6370_SHIFT_DC_IBUSOC_EN)
  323. #define MT6370_MASK_DC_IBUSOC_LVL 0x07
  324. /* ========== CHG_DIRCHG1 0x2E ============ */
  325. #define MT6370_SHIFT_DC_WDT 4
  326. #define MT6370_MASK_DC_WDT 0x70
  327. /* ========== CHG_DIRCHG2 0x2F ============ */
  328. #define MT6370_SHIFT_DC_VBUSOV_EN 7
  329. #define MT6370_SHIFT_DC_VBUSOV_LVL 2
  330. #define MT6370_MASK_DC_VBUSOV_EN BIT(MT6370_SHIFT_DC_VBUSOV_EN)
  331. #define MT6370_MASK_DC_VBUSOV_LVL 0x7C
  332. /* ========== CHG_HIDDEN_CTRL9 0x38 ============ */
  333. #define MT6370_SHIFT_EN_PSK 7
  334. #define MT6370_MASK_EN_PSK BIT(MT6370_SHIFT_EN_PSK)
  335. /* ========== CHG_STAT 0x4A ============ */
  336. #define MT6370_SHIFT_ADC_STAT 0
  337. #define MT6370_SHIFT_CHG_STAT 6
  338. #define MT6370_MASK_ADC_STAT BIT(MT6370_SHIFT_ADC_STAT)
  339. #define MT6370_MASK_CHG_STAT 0xC0
  340. /* ========== CHG_IRQ5 0xC4 ============ */
  341. #define MT6370_SHIFT_CHG_IEOCI 7
  342. #define MT6370_SHIFT_CHG_TERMI 6
  343. #define MT6370_SHIFT_CHG_RECHGI 5
  344. #define MT6370_SHIFT_CHG_SSFINISHI 4
  345. #define MT6370_SHIFT_CHG_WDTMRI 3
  346. #define MT6370_SHIFT_CHGDET_DONEI 2
  347. #define MT6370_SHIFT_CHG_ICHGMEASI 1
  348. #define MT6370_SHIFT_CHG_AICLMEASI 0
  349. #define MT6370_MASK_CHG_IEOCI BIT(MT6370_SHIFT_CHG_IEOCI)
  350. #define MT6370_MASK_CHG_TERMI BIT(MT6370_SHIFT_CHG_TERMI)
  351. #define MT6370_MASK_CHG_RECHGI BIT(MT6370_SHIFT_CHG_RECHGI)
  352. #define MT6370_MASK_CHG_SSFINISHI BIT(MT6370_SHIFT_CHG_SSFINISHI)
  353. #define MT6370_MASK_CHG_WDTMRI BIT(MT6370_SHIFT_CHG_WDTMRI)
  354. #define MT6370_MASK_CHGDET_DONEI BIT(MT6370_SHIFT_CHGDET_DONEI)
  355. #define MT6370_MASK_CHG_ICHGMEASI BIT(MT6370_SHIFT_CHG_ICHGMEASI)
  356. #define MT6370_MASK_CHG_AICLMEASI BIT(MT6370_SHIFT_CHG_AICLMEASI)
  357. /* ========== CHG_IRQ6 0xC5 ============ */
  358. #define MT6370_SHIFT_BST_OLPI 7
  359. #define MT6370_SHIFT_BST_MIDOVI 6
  360. #define MT6370_SHIFT_BST_BATUVI 5
  361. #define MT6370_SHIFT_PUMPX_DONEI 1
  362. #define MT6370_SHIFT_ADC_DONEI 0
  363. #define MT6370_MASK_BST_OLPI BIT(MT6370_SHIFT_BST_OLPI)
  364. #define MT6370_MASK_BST_MIDOVI BIT(MT6370_SHIFT_BST_MIDOVI)
  365. #define MT6370_MASK_BST_BATUVI BIT(MT6370_SHIFT_BST_BATUVI)
  366. #define MT6370_MASK_PUMPX_DONEI BIT(MT6370_SHIFT_PUMPX_DONEI)
  367. #define MT6370_MASK_ADC_DONEI BIT(MT6370_SHIFT_ADC_DONEI)
  368. /* ========== DPDM_IRQ 0xC6 ============ */
  369. #define MT6370_SHIFT_DCDTI 7
  370. #define MT6370_SHIFT_CHGDETI 6
  371. #define MT6370_SHIFT_HVDCPDET 5
  372. #define MT6370_SHIFT_DETACHI 1
  373. #define MT6370_SHIFT_ATTACHI 0
  374. #define MT6370_MASK_DCDTI BIT(MT6370_SHIFT_DCDTI)
  375. #define MT6370_MASK_CHGDETI BIT(MT6370_SHIFT_CHGDETI)
  376. #define MT6370_MASK_HVDCPDET BIT(MT6370_SHIFT_HVDCPDET)
  377. #define MT6370_MASK_DETACHI BIT(MT6370_SHIFT_DETACHI)
  378. #define MT6370_MASK_ATTACHI BIT(MT6370_SHIFT_ATTACHI)
  379. /* ========== CHG_STAT1 0xD0 ============ */
  380. #define MT6370_SHIFT_PWR_RDY_STAT 7
  381. #define MT6370_SHIFT_MIVR_STAT 6
  382. #define MT6370_SHIFT_AICR_STAT 5
  383. #define MT6370_SHIFT_TREG_STAT 4
  384. #define MT6370_SHIFT_DIRCHG_ON_STAT 0
  385. #define MT6370_MASK_PWR_RDY_STAT BIT(MT6370_SHIFT_PWR_RDY_STAT)
  386. #define MT6370_MASK_MIVR_STAT BIT(MT6370_SHIFT_MIVR_STAT)
  387. #define MT6370_MASK_AICR_STAT BIT(MT6370_SHIFT_AICR_STAT)
  388. #define MT6370_MASK_TREG_STAT BIT(MT6370_SHIFT_TREG_STAT)
  389. #define MT6370_MASK_DIRCHG_ON_STAT BIT(MT6370_SHIFT_DIRCHG_ON_STAT)
  390. /* ========== CHG_STAT2 0xD1 ============ */
  391. #define MT6370_SHIFT_CHG_VBUSOV_STAT 7
  392. #define MT6370_MASK_CHG_VBUSOV_STAT BIT(MT6370_SHIFT_CHG_VBUSOV_STAT)
  393. /* ========== CHG_STAT4 0xD3 ============ */
  394. #define MT6370_SHIFT_CHG_TMRI_STAT 3
  395. #define MT6370_MASK_CHG_TMRI_STAT BIT(MT6370_SHIFT_CHG_TMRI_STAT)
  396. /* ========== CHG_STAT5 0xD4 ============ */
  397. #define MT6370_SHIFT_CHG_IEOCI_STAT 7
  398. #define MT6370_MASK_CHG_IEOCI_STAT BIT(MT6370_SHIFT_CHG_IEOCI_STAT)
  399. /* ========== DPDM_STAT 0xD6 ============ */
  400. #define MT6370_SHIFT_DCDTI_STAT 7
  401. #define MT6370_MASK_DCDTI_STAT BIT(MT6370_SHIFT_DCDTI_STAT)
  402. /* ========== OVPCTRL_STAT 0xD8 ============ */
  403. #define MT6370_SHIFT_OVPCTRL_UVP_D_STAT 4
  404. #define MT6370_MASK_OVPCTRL_UVP_D_STAT BIT(MT6370_SHIFT_OVPCTRL_UVP_D_STAT)
  405. /* ========== CHG_MASK1 0xE0 ============ */
  406. #define MT6370_SHIFT_CHG_MIVRM 6
  407. #define MT6370_MASK_CHG_MIVRM BIT(MT6370_SHIFT_CHG_MIVRM)
  408. /* ========== CHG_MASK5 0xE4 ============ */
  409. #define MT6370_SHIFT_CHG_IEOCM 7
  410. #define MT6370_SHIFT_CHG_TERMM 6
  411. #define MT6370_SHIFT_CHG_RECHGM 5
  412. #define MT6370_SHIFT_CHG_SSFINISHM 4
  413. #define MT6370_SHIFT_CHG_WDTMRM 3
  414. #define MT6370_SHIFT_CHGDET_DONEM 2
  415. #define MT6370_SHIFT_CHG_ICHGMEASM 1
  416. #define MT6370_SHIFT_CHG_AICLMEASM 0
  417. #define MT6370_MASK_CHG_IEOCM BIT(MT6370_SHIFT_CHG_IEOCM)
  418. #define MT6370_MASK_CHG_TERMM BIT(MT6370_SHIFT_CHG_TERMM)
  419. #define MT6370_MASK_CHG_RECHGM BIT(MT6370_SHIFT_CHG_RECHGM)
  420. #define MT6370_MASK_CHG_SSFINISHM BIT(MT6370_SHIFT_CHG_SSFINISHM)
  421. #define MT6370_MASK_CHG_WDTMRM BIT(MT6370_SHIFT_CHG_WDTMRM)
  422. #define MT6370_MASK_CHGDET_DONEM BIT(MT6370_SHIFT_CHGDET_DONEM)
  423. #define MT6370_MASK_CHG_ICHGMEASM BIT(MT6370_SHIFT_CHG_ICHGMEASM)
  424. #define MT6370_MASK_CHG_AICLMEASM BIT(MT6370_SHIFT_CHG_AICLMEASM)
  425. /* ========== CHG_MASK6 0xE5 ============ */
  426. #define MT6370_SHIFT_BST_OLPM 7
  427. #define MT6370_SHIFT_BST_MIDOVM 6
  428. #define MT6370_SHIFT_BST_BATUVM 5
  429. #define MT6370_SHIFT_PUMPX_DONEM 1
  430. #define MT6370_SHIFT_ADC_DONEM 0
  431. #define MT6370_MASK_BST_OLPM BIT(MT6370_SHIFT_BST_OLPM)
  432. #define MT6370_MASK_BST_MIDOVM BIT(MT6370_SHIFT_BST_MIDOVM)
  433. #define MT6370_MASK_BST_BATUVM BIT(MT6370_SHIFT_BST_BATUVM)
  434. #define MT6370_MASK_PUMPX_DONEM BIT(MT6370_SHIFT_PUMPX_DONEM)
  435. #define MT6370_MASK_ADC_DONEM BIT(MT6370_SHIFT_ADC_DONEM)
  436. /* ========== PMU_TM_INF 0xF4 ============ */
  437. #define MT6370_SHIFT_PMU_ID 6
  438. #define MT6370_MASK_PMU_ID BIT(MT6370_SHIFT_PMU_ID)
  439. /* ========== BANK_REG 0xFF ============ */
  440. #define MT6370_PMU_BANK_REG 0x00
  441. #define MT6370_TM_BANK_REG 0x69
  442. /* ========== TM_INF 0x41 ============ */
  443. #define MT6370_SHIFT_TM_ID 7
  444. #define MT6370_MASK_TM_ID BIT(MT6370_SHIFT_TM_ID)
  445. #endif /* __MT6370_PMU_CHARGER_H */