mt6370_pmu_charger.h 18 KB

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