bd99954-charger.h 35 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /* Copyright (C) 2020 ROHM Semiconductors */
  3. #ifndef BD99954_CHARGER_H
  4. #define BD99954_CHARGER_H
  5. #include <linux/regmap.h>
  6. #define BD9995X_MANUFACTURER "Rohm Semiconductor"
  7. #define BD9995X_IRQ_PIN "bd9995x_irq"
  8. #define BD9995X_VSYS_PRECHARGE_OFFSET_MV 200
  9. #define BD99954_ID 0x346
  10. #define BD99955_ID 0x221
  11. #define BD99956_ID 0x331
  12. /* Battery Charger Commands */
  13. #define CHARGING_CURRENT 0x14
  14. #define CHARGING_VOLTAGE 0x15
  15. #define PROTECT_SET 0x3E
  16. #define MAP_SET 0x3F
  17. /* Extended commands */
  18. #define CHGSTM_STATUS 0x100
  19. #define VBAT_VSYS_STATUS 0x101
  20. #define VBUS_VCC_STATUS 0x102
  21. #define CHGOP_STATUS 0x103
  22. #define WDT_STATUS 0x104
  23. #define CUR_ILIM_VAL 0x105
  24. #define SEL_ILIM_VAL 0x106
  25. #define IBUS_LIM_SET 0x107
  26. #define ICC_LIM_SET 0x108
  27. #define IOTG_LIM_SET 0x109
  28. #define VIN_CTRL_SET 0x10A
  29. #define CHGOP_SET1 0x10B
  30. #define CHGOP_SET2 0x10C
  31. #define VBUSCLPS_TH_SET 0x10D
  32. #define VCCCLPS_TH_SET 0x10E
  33. #define CHGWDT_SET 0x10F
  34. #define BATTWDT_SET 0x110
  35. #define VSYSREG_SET 0x111
  36. #define VSYSVAL_THH_SET 0x112
  37. #define VSYSVAL_THL_SET 0x113
  38. #define ITRICH_SET 0x114
  39. #define IPRECH_SET 0x115
  40. #define ICHG_SET 0x116
  41. #define ITERM_SET 0x117
  42. #define VPRECHG_TH_SET 0x118
  43. #define VRBOOST_SET 0x119
  44. #define VFASTCHG_REG_SET1 0x11A
  45. #define VFASTCHG_REG_SET2 0x11B
  46. #define VFASTCHG_REG_SET3 0x11C
  47. #define VRECHG_SET 0x11D
  48. #define VBATOVP_SET 0x11E
  49. #define IBATSHORT_SET 0x11F
  50. #define PROCHOT_CTRL_SET 0x120
  51. #define PROCHOT_ICRIT_SET 0x121
  52. #define PROCHOT_INORM_SET 0x122
  53. #define PROCHOT_IDCHG_SET 0x123
  54. #define PROCHOT_VSYS_SET 0x124
  55. #define PMON_IOUT_CTRL_SET 0x125
  56. #define PMON_DACIN_VAL 0x126
  57. #define IOUT_DACIN_VAL 0x127
  58. #define VCC_UCD_SET 0x128
  59. #define VCC_UCD_STATUS 0x129
  60. #define VCC_IDD_STATUS 0x12A
  61. #define VCC_UCD_FCTRL_SET 0x12B
  62. #define VCC_UCD_FCTRL_EN 0x12C
  63. #define VBUS_UCD_SET 0x130
  64. #define VBUS_UCD_STATUS 0x131
  65. #define VBUS_IDD_STATUS 0x132
  66. #define VBUS_UCD_FCTRL_SET 0x133
  67. #define VBUS_UCD_FCTRL_EN 0x134
  68. #define CHIP_ID 0x138
  69. #define CHIP_REV 0x139
  70. #define IC_SET1 0x13A
  71. #define IC_SET2 0x13B
  72. #define SYSTEM_STATUS 0x13C
  73. #define SYSTEM_CTRL_SET 0x13D
  74. #define VM_CTRL_SET 0x140
  75. #define THERM_WINDOW_SET1 0x141
  76. #define THERM_WINDOW_SET2 0x142
  77. #define THERM_WINDOW_SET3 0x143
  78. #define THERM_WINDOW_SET4 0x144
  79. #define THERM_WINDOW_SET5 0x145
  80. #define IBATP_TH_SET 0x146
  81. #define IBATM_TH_SET 0x147
  82. #define VBAT_TH_SET 0x148
  83. #define THERM_TH_SET 0x149
  84. #define IACP_TH_SET 0x14A
  85. #define VACP_TH_SET 0x14B
  86. #define VBUS_TH_SET 0x14C
  87. #define VCC_TH_SET 0x14D
  88. #define VSYS_TH_SET 0x14E
  89. #define EXTIADP_TH_SET 0x14F
  90. #define IBATP_VAL 0x150
  91. #define IBATP_AVE_VAL 0x151
  92. #define IBATM_VAL 0x152
  93. #define IBATM_AVE_VAL 0x153
  94. #define VBAT_VAL 0x154
  95. #define VBAT_AVE_VAL 0x155
  96. #define THERM_VAL 0x156
  97. #define VTH_VAL 0x157
  98. #define IACP_VAL 0x158
  99. #define IACP_AVE_VAL 0x159
  100. #define VACP_VAL 0x15A
  101. #define VACP_AVE_VAL 0x15B
  102. #define VBUS_VAL 0x15C
  103. #define VBUS_AVE_VAL 0x15D
  104. #define VCC_VAL 0x15E
  105. #define VCC_AVE_VAL 0x15F
  106. #define VSYS_VAL 0x160
  107. #define VSYS_AVE_VAL 0x161
  108. #define EXTIADP_VAL 0x162
  109. #define EXTIADP_AVE_VAL 0x163
  110. #define VACPCLPS_TH_SET 0x164
  111. #define INT0_SET 0x168
  112. #define INT1_SET 0x169
  113. #define INT2_SET 0x16A
  114. #define INT3_SET 0x16B
  115. #define INT4_SET 0x16C
  116. #define INT5_SET 0x16D
  117. #define INT6_SET 0x16E
  118. #define INT7_SET 0x16F
  119. #define INT0_STATUS 0x170
  120. #define INT1_STATUS 0x171
  121. #define INT2_STATUS 0x172
  122. #define INT3_STATUS 0x173
  123. #define INT4_STATUS 0x174
  124. #define INT5_STATUS 0x175
  125. #define INT6_STATUS 0x176
  126. #define INT7_STATUS 0x177
  127. #define OTPREG0 0x17A
  128. #define OTPREG1 0x17B
  129. #define SMBREG 0x17C
  130. #define DEBUG_MODE_SET 0x17F
  131. #define DEBUG0x14 0x214
  132. #define DEBUG0x1A 0x21A
  133. enum bd9995x_fields {
  134. F_PREV_CHGSTM_STATE, F_CHGSTM_STATE,
  135. F_VBAT_VSYS_STATUS,
  136. F_VBUS_VCC_STATUS,
  137. F_BATTEMP, F_VRECHG_DET, F_RBOOST_UV, F_RBOOSTS,
  138. F_THERMWDT_VAL, F_CHGWDT_VAL,
  139. F_CUR_ILIM_VAL,
  140. F_SEL_ILIM_VAL,
  141. F_IBUS_LIM_SET,
  142. F_ICC_LIM_SET,
  143. F_IOTG_LIM_SET,
  144. F_OTG_BOTH_EN,
  145. F_VRBOOST_TRIG,
  146. F_VRBOOST_EN,
  147. F_PP_BOTH_THRU,
  148. F_VIN_ORD,
  149. F_VBUS_EN,
  150. F_VCC_EN,
  151. F_VSYS_PRIORITY,
  152. F_PPC_SUB_CAP,
  153. F_PPC_CAP,
  154. F_DCP_2500_SEL,
  155. F_SDP_500_SEL,
  156. F_ILIM_AUTO_DISEN,
  157. F_VCC_BC_DISEN,
  158. F_VBUS_BC_DISEN,
  159. F_SDP_CHG_TRIG_EN,
  160. F_SDP_CHG_TRIG,
  161. F_AUTO_TOF,
  162. F_AUTO_FST,
  163. F_AUTO_RECH,
  164. F_ILIM_RESET_EN,
  165. F_DCDC_1MS_SEL,
  166. F_SEL_ILIM_DIV,
  167. F_BATT_LEARN,
  168. F_CHG_EN,
  169. F_USB_SUS,
  170. F_CHOP_SS_INIT,
  171. F_CHOP_ALL_INIT,
  172. F_DCDC_CLK_SEL,
  173. F_CHOP_SS,
  174. F_CHOP_ALL,
  175. F_VBUSCLPS_TH_SET,
  176. F_VCCCLPS_TH_SET,
  177. F_WDT_FST,
  178. F_WDT_PRE,
  179. F_WDT_IBAT_SHORT,
  180. F_WDT_THERM,
  181. F_VSYSREG_SET,
  182. F_VSYSVAL_THH_SET,
  183. F_VSYSVAL_THL_SET,
  184. F_ITRICH_SET,
  185. F_IPRECH_SET,
  186. F_ICHG_SET,
  187. F_ITERM_SET,
  188. F_VPRECHG_TH_SET,
  189. F_VRBOOST_SET,
  190. F_VFASTCHG_REG_SET1,
  191. F_VFASTCHG_REG_SET2,
  192. F_VFASTCHG_REG_SET3,
  193. F_VRECHG_SET,
  194. F_VBATOVP_SET,
  195. F_IBATM_SHORT_SET,
  196. F_PROCHOT_DG_SET,
  197. F_PROCHOT_ICRIT_DG_SET,
  198. F_PROCHOT_IDCHG_DG_SET,
  199. F_PROCHOT_EN,
  200. F_PROCHOT_ICRIT_SET,
  201. F_PROCHOT_INORM_SET,
  202. F_PROCHOT_IDCHG_SET,
  203. F_PROCHOT_VSYS_SET,
  204. F_IMON_INSEL,
  205. F_PMON_INSEL,
  206. F_IOUT_OUT_EN,
  207. F_IOUT_SOURCE_SEL,
  208. F_IOUT_GAIN_SET,
  209. F_PMON_OUT_EN,
  210. F_PMON_GAIN_SET,
  211. F_PMON_DACIN_VAL,
  212. F_IOUT_DACIN_VAL,
  213. F_VCC_BCSRETRY,
  214. F_VCC_ADCRTRY,
  215. F_VCC_USBDETEN,
  216. F_VCC_IDRDETEN,
  217. F_VCC_ENUMRDY,
  218. F_VCC_ADCPOLEN,
  219. F_VCC_DCDMODE,
  220. F_VCC_USB_SW_EN,
  221. F_VCC_USB_SW,
  222. F_VCC_DCDFAIL,
  223. F_VCC_CHGPORT,
  224. F_VCC_PUPDET,
  225. F_VCC_VBUS_VLD,
  226. F_VCC_CHGDET,
  227. F_VCC_OTGDET,
  228. F_VCC_VBINOP,
  229. F_VCC_EXTID,
  230. F_VCC_IDRDET,
  231. F_VCC_INDO,
  232. F_VCC_UCDSWEN,
  233. F_VCC_RREF_EN,
  234. F_VCC_DPPU_EN,
  235. F_VCC_DPREF_EN,
  236. F_VCC_DMREF_EN,
  237. F_VCC_DPDET_EN,
  238. F_VCC_DMDET_EN,
  239. F_VCC_DPSINK_EN,
  240. F_VCC_DMSINK_EN,
  241. F_VCC_DP_BUFF_EN,
  242. F_VCC_DM_BUFF_EN,
  243. F_VCC_EXTCLKENBL,
  244. F_VCC_PLSTESTEN,
  245. F_VCC_UCDSWEN_TSTENB,
  246. F_VCC_RREF_EN_TSTENB,
  247. F_VCC_DPPU_EN_TSTENB,
  248. F_VCC_DPREF_EN_TSTENB,
  249. F_VCC_DMREF_EN_TSTENB,
  250. F_VCC_DPDET_EN_TSTENB,
  251. F_VCC_DMDET_EN_TSTENB,
  252. F_VCC_DPSINK_EN_TSTENB,
  253. F_VCC_DMSINK_EN_TSTENB,
  254. F_VCC_DP_BUFF_EN_TSTENB,
  255. F_VCC_DM_BUFF_EN_TSTENB,
  256. F_VBUS_BCSRETRY,
  257. F_VBUS_ADCRTRY,
  258. F_VBUS_USBDETEN,
  259. F_VBUS_IDRDETEN,
  260. F_VBUS_ENUMRDY,
  261. F_VBUS_ADCPOLEN,
  262. F_VBUS_DCDMODE,
  263. F_VBUS_USB_SW_EN,
  264. F_VBUS_USB_SW,
  265. F_VBUS_DCDFAIL,
  266. F_VBUS_CHGPORT,
  267. F_VBUS_PUPDET,
  268. F_VBUS_VBUS_VLD,
  269. F_VBUS_CHGDET,
  270. F_VBUS_OTGDET,
  271. F_VBUS_VBINOP,
  272. F_VBUS_EXTID,
  273. F_VBUS_IDRDET,
  274. F_VBUS_INDO,
  275. F_VBUS_UCDSWEN,
  276. F_VBUS_RREF_EN,
  277. F_VBUS_DPPU_EN,
  278. F_VBUS_DPREF_EN,
  279. F_VBUS_DMREF_EN,
  280. F_VBUS_DPDET_EN,
  281. F_VBUS_DMDET_EN,
  282. F_VBUS_DPSINK_EN,
  283. F_VBUS_DMSINK_EN,
  284. F_VBUS_DP_BUFF_EN,
  285. F_VBUS_DM_BUFF_EN,
  286. F_VBUS_EXTCLKENBL,
  287. F_VBUS_PLSTESTEN,
  288. F_VBUS_UCDSWEN_TSTENB,
  289. F_VBUS_RREF_EN_TSTENB,
  290. F_VBUS_DPPU_EN_TSTENB,
  291. F_VBUS_DPREF_EN_TSTENB,
  292. F_VBUS_DMREF_EN_TSTENB,
  293. F_VBUS_DPDET_EN_TSTENB,
  294. F_VBUS_DMDET_EN_TSTENB,
  295. F_VBUS_DPSINK_EN_TSTENB,
  296. F_VBUS_DMSINK_EN_TSTENB,
  297. F_VBUS_DP_BUFF_EN_TSTENB,
  298. F_VBUS_DM_BUFF_EN_TSTENB,
  299. F_CHIP_ID,
  300. F_CHIP_REV,
  301. F_ONE_CELL_MODE,
  302. F_cell,
  303. F_VACP_AUTO_DISCHG,
  304. F_VACP_LOAD,
  305. F_ACOK_POL,
  306. F_ACOK_DISEN,
  307. F_DEBUG_SET1,
  308. F_DEBUG_SET0,
  309. F_MONRST_STATE,
  310. F_ALMRST_STATE,
  311. F_CHGRST_STATE,
  312. F_OTPLD_STATE,
  313. F_ALLRST_STATE,
  314. F_PROTECT_SET,
  315. F_MAP_SET,
  316. F_ADCINTERVAL,
  317. F_ADCMOD,
  318. F_ADCTMOD,
  319. F_EXTIADPEN,
  320. F_VSYSENB,
  321. F_VCCENB,
  322. F_VBUSENB,
  323. F_VACPENB,
  324. F_IACPENB,
  325. F_THERMENB,
  326. F_VBATENB,
  327. F_IBATMENB,
  328. F_IBATPENB,
  329. F_TMPTHR1B,
  330. F_TMPTHR1A,
  331. F_TMPTHR2B,
  332. F_TMPTHR2A,
  333. F_TMPTHR3B,
  334. F_TMPTHR3A,
  335. F_TMPTHR4B,
  336. F_TMPTHR4A,
  337. F_TMPTHR5B,
  338. F_TMPTHR5A,
  339. F_IBATP_TH_SET,
  340. F_IBATM_TH_SET,
  341. F_VBAT_TH_SET,
  342. F_THERM_TH_SET,
  343. F_IACP_TH_SET,
  344. F_VACP_TH_SET,
  345. F_VBUS_TH_SET,
  346. F_VCC_TH_SET,
  347. F_VSYS_TH_SET,
  348. F_EXTIADP_TH_SET,
  349. F_IBATP_VAL,
  350. F_IBATP_AVE_VAL,
  351. F_IBATM_VAL,
  352. F_IBATM_AVE_VAL,
  353. F_VBAT_VAL,
  354. F_VBAT_AVE_VAL,
  355. F_THERM_VAL,
  356. F_VTH_VAL,
  357. F_IACP_VAL,
  358. F_IACP_AVE_VAL,
  359. F_VACP_VAL,
  360. F_VACP_AVE_VAL,
  361. F_VBUS_VAL,
  362. F_VBUS_AVE_VAL,
  363. F_VCC_VAL,
  364. F_VCC_AVE_VAL,
  365. F_VSYS_VAL,
  366. F_VSYS_AVE_VAL,
  367. F_EXTIADP_VAL,
  368. F_EXTIADP_AVE_VAL,
  369. F_VACPCLPS_TH_SET,
  370. F_INT7_SET,
  371. F_INT6_SET,
  372. F_INT5_SET,
  373. F_INT4_SET,
  374. F_INT3_SET,
  375. F_INT2_SET,
  376. F_INT1_SET,
  377. F_INT0_SET,
  378. F_VBUS_RBUV_DET,
  379. F_VBUS_RBUV_RES,
  380. F_VBUS_TH_DET,
  381. F_VBUS_TH_RES,
  382. F_VBUS_IIN_MOD,
  383. F_VBUS_OV_DET,
  384. F_VBUS_OV_RES,
  385. F_VBUS_CLPS_DET,
  386. F_VBUS_CLPS,
  387. F_VBUS_DET,
  388. F_VBUS_RES,
  389. F_VCC_RBUV_DET,
  390. F_VCC_RBUV_RES,
  391. F_VCC_TH_DET,
  392. F_VCC_TH_RES,
  393. F_VCC_IIN_MOD,
  394. F_VCC_OVP_DET,
  395. F_VCC_OVP_RES,
  396. F_VCC_CLPS_DET,
  397. F_VCC_CLPS_RES,
  398. F_VCC_DET,
  399. F_VCC_RES,
  400. F_TH_DET,
  401. F_TH_RMV,
  402. F_TMP_OUT_DET,
  403. F_TMP_OUT_RES,
  404. F_VBAT_TH_DET,
  405. F_VBAT_TH_RES,
  406. F_IBAT_SHORT_DET,
  407. F_IBAT_SHORT_RES,
  408. F_VBAT_OV_DET,
  409. F_VBAT_OV_RES,
  410. F_BAT_ASSIST_DET,
  411. F_BAT_ASSIST_RES,
  412. F_VSYS_TH_DET,
  413. F_VSYS_TH_RES,
  414. F_VSYS_OV_DET,
  415. F_VSYS_OV_RES,
  416. F_VSYS_SHT_DET,
  417. F_VSYS_SHT_RES,
  418. F_VSYS_UV_DET,
  419. F_VSYS_UV_RES,
  420. F_OTP_LOAD_DONE,
  421. F_PWR_ON,
  422. F_EXTIADP_TRNS,
  423. F_EXTIADP_TH_DET,
  424. F_EXIADP_TH_RES,
  425. F_BAT_MNT_DET,
  426. F_BAT_MNT_RES,
  427. F_TSD_DET,
  428. F_TSD_RES,
  429. F_CHGWDT_EXP,
  430. F_THERMWDT_EXP,
  431. F_TMP_TRNS,
  432. F_CHG_TRNS,
  433. F_VBUS_UCD_PORT_DET,
  434. F_VBUS_UCD_UCHG_DET,
  435. F_VBUS_UCD_URID_RMV,
  436. F_VBUS_UCD_OTG_DET,
  437. F_VBUS_UCD_URID_MOD,
  438. F_VCC_UCD_PORT_DET,
  439. F_VCC_UCD_UCHG_DET,
  440. F_VCC_UCD_URID_RMV,
  441. F_VCC_UCD_OTG_DET,
  442. F_VCC_UCD_URID_MOD,
  443. F_PROCHOT_DET,
  444. F_PROCHOT_RES,
  445. F_VACP_DET,
  446. F_VACP_RES,
  447. F_VACP_TH_DET,
  448. F_VACP_TH_RES,
  449. F_IACP_TH_DET,
  450. F_IACP_THE_RES,
  451. F_THERM_TH_DET,
  452. F_THERM_TH_RES,
  453. F_IBATM_TH_DET,
  454. F_IBATM_TH_RES,
  455. F_IBATP_TH_DET,
  456. F_IBATP_TH_RES,
  457. F_INT7_STATUS,
  458. F_INT6_STATUS,
  459. F_INT5_STATUS,
  460. F_INT4_STATUS,
  461. F_INT3_STATUS,
  462. F_INT2_STATUS,
  463. F_INT1_STATUS,
  464. F_INT0_STATUS,
  465. F_ILIM_DECREASE,
  466. F_RESERVE_OTPREG1,
  467. F_POWER_SAVE_MODE,
  468. F_DEBUG_MODE_SET,
  469. F_DEBUG0x14,
  470. F_DEBUG0x1A,
  471. F_MAX_FIELDS
  472. };
  473. static const struct reg_field bd9995x_reg_fields[] = {
  474. [F_PREV_CHGSTM_STATE] = REG_FIELD(CHGSTM_STATUS, 8, 14),
  475. [F_CHGSTM_STATE] = REG_FIELD(CHGSTM_STATUS, 0, 6),
  476. [F_VBAT_VSYS_STATUS] = REG_FIELD(VBAT_VSYS_STATUS, 0, 15),
  477. [F_VBUS_VCC_STATUS] = REG_FIELD(VBUS_VCC_STATUS, 0, 12),
  478. [F_BATTEMP] = REG_FIELD(CHGOP_STATUS, 8, 10),
  479. [F_VRECHG_DET] = REG_FIELD(CHGOP_STATUS, 6, 6),
  480. [F_RBOOST_UV] = REG_FIELD(CHGOP_STATUS, 1, 1),
  481. [F_RBOOSTS] = REG_FIELD(CHGOP_STATUS, 0, 0),
  482. [F_THERMWDT_VAL] = REG_FIELD(WDT_STATUS, 8, 15),
  483. [F_CHGWDT_VAL] = REG_FIELD(WDT_STATUS, 0, 7),
  484. [F_CUR_ILIM_VAL] = REG_FIELD(CUR_ILIM_VAL, 0, 13),
  485. [F_SEL_ILIM_VAL] = REG_FIELD(SEL_ILIM_VAL, 0, 13),
  486. [F_IBUS_LIM_SET] = REG_FIELD(IBUS_LIM_SET, 5, 13),
  487. [F_ICC_LIM_SET] = REG_FIELD(ICC_LIM_SET, 5, 13),
  488. [F_IOTG_LIM_SET] = REG_FIELD(IOTG_LIM_SET, 5, 13),
  489. [F_OTG_BOTH_EN] = REG_FIELD(VIN_CTRL_SET, 15, 15),
  490. [F_VRBOOST_TRIG] = REG_FIELD(VIN_CTRL_SET, 14, 14),
  491. [F_VRBOOST_EN] = REG_FIELD(VIN_CTRL_SET, 12, 13),
  492. [F_PP_BOTH_THRU] = REG_FIELD(VIN_CTRL_SET, 11, 11),
  493. [F_VIN_ORD] = REG_FIELD(VIN_CTRL_SET, 7, 7),
  494. [F_VBUS_EN] = REG_FIELD(VIN_CTRL_SET, 6, 6),
  495. [F_VCC_EN] = REG_FIELD(VIN_CTRL_SET, 5, 5),
  496. [F_VSYS_PRIORITY] = REG_FIELD(VIN_CTRL_SET, 4, 4),
  497. [F_PPC_SUB_CAP] = REG_FIELD(VIN_CTRL_SET, 2, 3),
  498. [F_PPC_CAP] = REG_FIELD(VIN_CTRL_SET, 0, 1),
  499. [F_DCP_2500_SEL] = REG_FIELD(CHGOP_SET1, 15, 15),
  500. [F_SDP_500_SEL] = REG_FIELD(CHGOP_SET1, 14, 14),
  501. [F_ILIM_AUTO_DISEN] = REG_FIELD(CHGOP_SET1, 13, 13),
  502. [F_VCC_BC_DISEN] = REG_FIELD(CHGOP_SET1, 11, 11),
  503. [F_VBUS_BC_DISEN] = REG_FIELD(CHGOP_SET1, 10, 10),
  504. [F_SDP_CHG_TRIG_EN] = REG_FIELD(CHGOP_SET1, 9, 9),
  505. [F_SDP_CHG_TRIG] = REG_FIELD(CHGOP_SET1, 8, 8),
  506. [F_AUTO_TOF] = REG_FIELD(CHGOP_SET1, 6, 6),
  507. [F_AUTO_FST] = REG_FIELD(CHGOP_SET1, 5, 5),
  508. [F_AUTO_RECH] = REG_FIELD(CHGOP_SET1, 3, 3),
  509. [F_ILIM_RESET_EN] = REG_FIELD(CHGOP_SET2, 14, 14),
  510. [F_DCDC_1MS_SEL] = REG_FIELD(CHGOP_SET2, 12, 13),
  511. [F_SEL_ILIM_DIV] = REG_FIELD(CHGOP_SET2, 10, 10),
  512. [F_BATT_LEARN] = REG_FIELD(CHGOP_SET2, 8, 8),
  513. [F_CHG_EN] = REG_FIELD(CHGOP_SET2, 7, 7),
  514. [F_USB_SUS] = REG_FIELD(CHGOP_SET2, 6, 6),
  515. [F_CHOP_SS_INIT] = REG_FIELD(CHGOP_SET2, 5, 5),
  516. [F_CHOP_ALL_INIT] = REG_FIELD(CHGOP_SET2, 4, 4),
  517. [F_DCDC_CLK_SEL] = REG_FIELD(CHGOP_SET2, 2, 3),
  518. [F_CHOP_SS] = REG_FIELD(CHGOP_SET2, 1, 1),
  519. [F_CHOP_ALL] = REG_FIELD(CHGOP_SET2, 0, 0),
  520. [F_VBUSCLPS_TH_SET] = REG_FIELD(VBUSCLPS_TH_SET, 7, 14),
  521. [F_VCCCLPS_TH_SET] = REG_FIELD(VCCCLPS_TH_SET, 7, 14),
  522. [F_WDT_FST] = REG_FIELD(CHGWDT_SET, 8, 15),
  523. [F_WDT_PRE] = REG_FIELD(CHGWDT_SET, 0, 7),
  524. [F_WDT_IBAT_SHORT] = REG_FIELD(BATTWDT_SET, 8, 15),
  525. [F_WDT_THERM] = REG_FIELD(BATTWDT_SET, 0, 7),
  526. [F_VSYSREG_SET] = REG_FIELD(VSYSREG_SET, 6, 14),
  527. [F_VSYSVAL_THH_SET] = REG_FIELD(VSYSVAL_THH_SET, 6, 14),
  528. [F_VSYSVAL_THL_SET] = REG_FIELD(VSYSVAL_THL_SET, 6, 14),
  529. [F_ITRICH_SET] = REG_FIELD(ITRICH_SET, 6, 10),
  530. [F_IPRECH_SET] = REG_FIELD(IPRECH_SET, 6, 10),
  531. [F_ICHG_SET] = REG_FIELD(ICHG_SET, 6, 13),
  532. [F_ITERM_SET] = REG_FIELD(ITERM_SET, 6, 10),
  533. [F_VPRECHG_TH_SET] = REG_FIELD(VPRECHG_TH_SET, 6, 14),
  534. [F_VRBOOST_SET] = REG_FIELD(VRBOOST_SET, 6, 14),
  535. [F_VFASTCHG_REG_SET1] = REG_FIELD(VFASTCHG_REG_SET1, 4, 14),
  536. [F_VFASTCHG_REG_SET2] = REG_FIELD(VFASTCHG_REG_SET2, 4, 14),
  537. [F_VFASTCHG_REG_SET3] = REG_FIELD(VFASTCHG_REG_SET3, 4, 14),
  538. [F_VRECHG_SET] = REG_FIELD(VRECHG_SET, 4, 14),
  539. [F_VBATOVP_SET] = REG_FIELD(VBATOVP_SET, 4, 14),
  540. [F_IBATM_SHORT_SET] = REG_FIELD(IBATSHORT_SET, 0, 14),
  541. [F_PROCHOT_DG_SET] = REG_FIELD(PROCHOT_CTRL_SET, 14, 15),
  542. [F_PROCHOT_ICRIT_DG_SET] = REG_FIELD(PROCHOT_CTRL_SET, 10, 11),
  543. [F_PROCHOT_IDCHG_DG_SET] = REG_FIELD(PROCHOT_CTRL_SET, 8, 9),
  544. [F_PROCHOT_EN] = REG_FIELD(PROCHOT_CTRL_SET, 0, 4),
  545. [F_PROCHOT_ICRIT_SET] = REG_FIELD(PROCHOT_ICRIT_SET, 0, 14),
  546. [F_PROCHOT_INORM_SET] = REG_FIELD(PROCHOT_INORM_SET, 0, 14),
  547. [F_PROCHOT_IDCHG_SET] = REG_FIELD(PROCHOT_IDCHG_SET, 0, 14),
  548. [F_PROCHOT_VSYS_SET] = REG_FIELD(PROCHOT_VSYS_SET, 0, 14),
  549. [F_IMON_INSEL] = REG_FIELD(PMON_IOUT_CTRL_SET, 9, 9),
  550. [F_PMON_INSEL] = REG_FIELD(PMON_IOUT_CTRL_SET, 8, 8),
  551. [F_IOUT_OUT_EN] = REG_FIELD(PMON_IOUT_CTRL_SET, 7, 7),
  552. [F_IOUT_SOURCE_SEL] = REG_FIELD(PMON_IOUT_CTRL_SET, 6, 6),
  553. [F_IOUT_GAIN_SET] = REG_FIELD(PMON_IOUT_CTRL_SET, 4, 5),
  554. [F_PMON_OUT_EN] = REG_FIELD(PMON_IOUT_CTRL_SET, 3, 3),
  555. [F_PMON_GAIN_SET] = REG_FIELD(PMON_IOUT_CTRL_SET, 0, 2),
  556. [F_PMON_DACIN_VAL] = REG_FIELD(PMON_DACIN_VAL, 0, 9),
  557. [F_IOUT_DACIN_VAL] = REG_FIELD(IOUT_DACIN_VAL, 0, 11),
  558. [F_VCC_BCSRETRY] = REG_FIELD(VCC_UCD_SET, 12, 12),
  559. [F_VCC_ADCRTRY] = REG_FIELD(VCC_UCD_SET, 8, 8),
  560. [F_VCC_USBDETEN] = REG_FIELD(VCC_UCD_SET, 7, 7),
  561. [F_VCC_IDRDETEN] = REG_FIELD(VCC_UCD_SET, 6, 6),
  562. [F_VCC_ENUMRDY] = REG_FIELD(VCC_UCD_SET, 5, 5),
  563. [F_VCC_ADCPOLEN] = REG_FIELD(VCC_UCD_SET, 4, 4),
  564. [F_VCC_DCDMODE] = REG_FIELD(VCC_UCD_SET, 3, 3),
  565. [F_VCC_USB_SW_EN] = REG_FIELD(VCC_UCD_SET, 1, 1),
  566. [F_VCC_USB_SW] = REG_FIELD(VCC_UCD_SET, 0, 0),
  567. [F_VCC_DCDFAIL] = REG_FIELD(VCC_UCD_STATUS, 15, 15),
  568. [F_VCC_CHGPORT] = REG_FIELD(VCC_UCD_STATUS, 12, 13),
  569. [F_VCC_PUPDET] = REG_FIELD(VCC_UCD_STATUS, 11, 11),
  570. [F_VCC_VBUS_VLD] = REG_FIELD(VCC_UCD_STATUS, 7, 7),
  571. [F_VCC_CHGDET] = REG_FIELD(VCC_UCD_STATUS, 6, 6),
  572. [F_VCC_OTGDET] = REG_FIELD(VCC_UCD_STATUS, 3, 3),
  573. [F_VCC_VBINOP] = REG_FIELD(VCC_IDD_STATUS, 6, 6),
  574. [F_VCC_EXTID] = REG_FIELD(VCC_IDD_STATUS, 5, 5),
  575. [F_VCC_IDRDET] = REG_FIELD(VCC_IDD_STATUS, 4, 4),
  576. [F_VCC_INDO] = REG_FIELD(VCC_IDD_STATUS, 0, 3),
  577. [F_VCC_UCDSWEN] = REG_FIELD(VCC_UCD_FCTRL_SET, 10, 10),
  578. [F_VCC_RREF_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 9, 9),
  579. [F_VCC_DPPU_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 8, 8),
  580. [F_VCC_DPREF_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 7, 7),
  581. [F_VCC_DMREF_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 6, 6),
  582. [F_VCC_DPDET_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 5, 5),
  583. [F_VCC_DMDET_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 4, 4),
  584. [F_VCC_DPSINK_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 3, 3),
  585. [F_VCC_DMSINK_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 2, 2),
  586. [F_VCC_DP_BUFF_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 1, 1),
  587. [F_VCC_DM_BUFF_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 0, 0),
  588. [F_VCC_EXTCLKENBL] = REG_FIELD(VCC_UCD_FCTRL_EN, 15, 15),
  589. [F_VCC_PLSTESTEN] = REG_FIELD(VCC_UCD_FCTRL_EN, 14, 14),
  590. [F_VCC_UCDSWEN_TSTENB] = REG_FIELD(VCC_UCD_FCTRL_EN, 10, 10),
  591. [F_VCC_RREF_EN_TSTENB] = REG_FIELD(VCC_UCD_FCTRL_EN, 9, 9),
  592. [F_VCC_DPPU_EN_TSTENB] = REG_FIELD(VCC_UCD_FCTRL_EN, 8, 8),
  593. [F_VCC_DPREF_EN_TSTENB] = REG_FIELD(VCC_UCD_FCTRL_EN, 7, 7),
  594. [F_VCC_DMREF_EN_TSTENB] = REG_FIELD(VCC_UCD_FCTRL_EN, 6, 6),
  595. [F_VCC_DPDET_EN_TSTENB] = REG_FIELD(VCC_UCD_FCTRL_EN, 5, 5),
  596. [F_VCC_DMDET_EN_TSTENB] = REG_FIELD(VCC_UCD_FCTRL_EN, 4, 4),
  597. [F_VCC_DPSINK_EN_TSTENB] = REG_FIELD(VCC_UCD_FCTRL_EN, 3, 3),
  598. [F_VCC_DMSINK_EN_TSTENB] = REG_FIELD(VCC_UCD_FCTRL_EN, 2, 2),
  599. [F_VCC_DP_BUFF_EN_TSTENB] = REG_FIELD(VCC_UCD_FCTRL_EN, 1, 1),
  600. [F_VCC_DM_BUFF_EN_TSTENB] = REG_FIELD(VCC_UCD_FCTRL_EN, 0, 0),
  601. [F_VBUS_BCSRETRY] = REG_FIELD(VBUS_UCD_SET, 12, 12),
  602. [F_VBUS_ADCRTRY] = REG_FIELD(VBUS_UCD_SET, 8, 8),
  603. [F_VBUS_USBDETEN] = REG_FIELD(VBUS_UCD_SET, 7, 7),
  604. [F_VBUS_IDRDETEN] = REG_FIELD(VBUS_UCD_SET, 6, 6),
  605. [F_VBUS_ENUMRDY] = REG_FIELD(VBUS_UCD_SET, 5, 5),
  606. [F_VBUS_ADCPOLEN] = REG_FIELD(VBUS_UCD_SET, 4, 4),
  607. [F_VBUS_DCDMODE] = REG_FIELD(VBUS_UCD_SET, 3, 3),
  608. [F_VBUS_USB_SW_EN] = REG_FIELD(VBUS_UCD_SET, 1, 1),
  609. [F_VBUS_USB_SW] = REG_FIELD(VBUS_UCD_SET, 0, 0),
  610. [F_VBUS_DCDFAIL] = REG_FIELD(VBUS_UCD_STATUS, 15, 15),
  611. [F_VBUS_CHGPORT] = REG_FIELD(VBUS_UCD_STATUS, 12, 13),
  612. [F_VBUS_PUPDET] = REG_FIELD(VBUS_UCD_STATUS, 11, 11),
  613. [F_VBUS_VBUS_VLD] = REG_FIELD(VBUS_UCD_STATUS, 7, 7),
  614. [F_VBUS_CHGDET] = REG_FIELD(VBUS_UCD_STATUS, 6, 6),
  615. [F_VBUS_OTGDET] = REG_FIELD(VBUS_UCD_STATUS, 3, 3),
  616. [F_VBUS_VBINOP] = REG_FIELD(VBUS_IDD_STATUS, 6, 6),
  617. [F_VBUS_EXTID] = REG_FIELD(VBUS_IDD_STATUS, 5, 5),
  618. [F_VBUS_IDRDET] = REG_FIELD(VBUS_IDD_STATUS, 4, 4),
  619. [F_VBUS_INDO] = REG_FIELD(VBUS_IDD_STATUS, 0, 3),
  620. [F_VBUS_UCDSWEN] = REG_FIELD(VCC_UCD_FCTRL_SET, 10, 10),
  621. [F_VBUS_RREF_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 9, 9),
  622. [F_VBUS_DPPU_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 8, 8),
  623. [F_VBUS_DPREF_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 7, 7),
  624. [F_VBUS_DMREF_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 6, 6),
  625. [F_VBUS_DPDET_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 5, 5),
  626. [F_VBUS_DMDET_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 4, 4),
  627. [F_VBUS_DPSINK_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 3, 3),
  628. [F_VBUS_DMSINK_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 2, 2),
  629. [F_VBUS_DP_BUFF_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 1, 1),
  630. [F_VBUS_DM_BUFF_EN] = REG_FIELD(VCC_UCD_FCTRL_SET, 0, 0),
  631. [F_VBUS_EXTCLKENBL] = REG_FIELD(VBUS_UCD_FCTRL_EN, 15, 15),
  632. [F_VBUS_PLSTESTEN] = REG_FIELD(VBUS_UCD_FCTRL_EN, 14, 14),
  633. [F_VBUS_UCDSWEN_TSTENB] = REG_FIELD(VBUS_UCD_FCTRL_EN, 10, 10),
  634. [F_VBUS_RREF_EN_TSTENB] = REG_FIELD(VBUS_UCD_FCTRL_EN, 9, 9),
  635. [F_VBUS_DPPU_EN_TSTENB] = REG_FIELD(VBUS_UCD_FCTRL_EN, 8, 8),
  636. [F_VBUS_DPREF_EN_TSTENB] = REG_FIELD(VBUS_UCD_FCTRL_EN, 7, 7),
  637. [F_VBUS_DMREF_EN_TSTENB] = REG_FIELD(VBUS_UCD_FCTRL_EN, 6, 6),
  638. [F_VBUS_DPDET_EN_TSTENB] = REG_FIELD(VBUS_UCD_FCTRL_EN, 5, 5),
  639. [F_VBUS_DMDET_EN_TSTENB] = REG_FIELD(VBUS_UCD_FCTRL_EN, 4, 4),
  640. [F_VBUS_DPSINK_EN_TSTENB] = REG_FIELD(VBUS_UCD_FCTRL_EN, 3, 3),
  641. [F_VBUS_DMSINK_EN_TSTENB] = REG_FIELD(VBUS_UCD_FCTRL_EN, 2, 2),
  642. [F_VBUS_DP_BUFF_EN_TSTENB] = REG_FIELD(VBUS_UCD_FCTRL_EN, 1, 1),
  643. [F_VBUS_DM_BUFF_EN_TSTENB] = REG_FIELD(VBUS_UCD_FCTRL_EN, 0, 0),
  644. [F_CHIP_ID] = REG_FIELD(CHIP_ID, 0, 15),
  645. [F_CHIP_REV] = REG_FIELD(CHIP_REV, 0, 15),
  646. [F_ONE_CELL_MODE] = REG_FIELD(IC_SET1, 11, 11),
  647. [F_cell] = REG_FIELD(IC_SET1, 1, 1),
  648. [F_VACP_AUTO_DISCHG] = REG_FIELD(IC_SET1, 9, 9),
  649. [F_VACP_LOAD] = REG_FIELD(IC_SET1, 8, 8),
  650. [F_ACOK_POL] = REG_FIELD(IC_SET1, 1, 1),
  651. [F_ACOK_DISEN] = REG_FIELD(IC_SET1, 0, 0),
  652. [F_DEBUG_SET1] = REG_FIELD(IC_SET2, 4, 8),
  653. [F_DEBUG_SET0] = REG_FIELD(IC_SET2, 0, 0),
  654. [F_MONRST_STATE] = REG_FIELD(SYSTEM_STATUS, 6, 6),
  655. [F_ALMRST_STATE] = REG_FIELD(SYSTEM_STATUS, 5, 5),
  656. [F_CHGRST_STATE] = REG_FIELD(SYSTEM_STATUS, 4, 4),
  657. [F_OTPLD_STATE] = REG_FIELD(SYSTEM_STATUS, 1, 1),
  658. [F_ALLRST_STATE] = REG_FIELD(SYSTEM_STATUS, 0, 0),
  659. [F_PROTECT_SET] = REG_FIELD(PROTECT_SET, 0, 15),
  660. [F_MAP_SET] = REG_FIELD(MAP_SET, 0, 15),
  661. [F_ADCINTERVAL] = REG_FIELD(VM_CTRL_SET, 14, 15),
  662. [F_ADCMOD] = REG_FIELD(VM_CTRL_SET, 12, 13),
  663. [F_ADCTMOD] = REG_FIELD(VM_CTRL_SET, 10, 11),
  664. [F_EXTIADPEN] = REG_FIELD(VM_CTRL_SET, 9, 9),
  665. [F_VSYSENB] = REG_FIELD(VM_CTRL_SET, 8, 8),
  666. [F_VCCENB] = REG_FIELD(VM_CTRL_SET, 7, 7),
  667. [F_VBUSENB] = REG_FIELD(VM_CTRL_SET, 6, 6),
  668. [F_VACPENB] = REG_FIELD(VM_CTRL_SET, 5, 5),
  669. [F_IACPENB] = REG_FIELD(VM_CTRL_SET, 4, 4),
  670. [F_THERMENB] = REG_FIELD(VM_CTRL_SET, 3, 3),
  671. [F_VBATENB] = REG_FIELD(VM_CTRL_SET, 2, 2),
  672. [F_IBATMENB] = REG_FIELD(VM_CTRL_SET, 1, 1),
  673. [F_IBATPENB] = REG_FIELD(VM_CTRL_SET, 0, 0),
  674. [F_TMPTHR1B] = REG_FIELD(THERM_WINDOW_SET1, 8, 15),
  675. [F_TMPTHR1A] = REG_FIELD(THERM_WINDOW_SET1, 0, 7),
  676. [F_TMPTHR2B] = REG_FIELD(THERM_WINDOW_SET2, 8, 15),
  677. [F_TMPTHR2A] = REG_FIELD(THERM_WINDOW_SET2, 0, 7),
  678. [F_TMPTHR3B] = REG_FIELD(THERM_WINDOW_SET3, 8, 15),
  679. [F_TMPTHR3A] = REG_FIELD(THERM_WINDOW_SET3, 0, 7),
  680. [F_TMPTHR4B] = REG_FIELD(THERM_WINDOW_SET4, 8, 15),
  681. [F_TMPTHR4A] = REG_FIELD(THERM_WINDOW_SET4, 0, 7),
  682. [F_TMPTHR5B] = REG_FIELD(THERM_WINDOW_SET5, 8, 15),
  683. [F_TMPTHR5A] = REG_FIELD(THERM_WINDOW_SET5, 0, 7),
  684. [F_IBATP_TH_SET] = REG_FIELD(IBATP_TH_SET, 0, 14),
  685. [F_IBATM_TH_SET] = REG_FIELD(IBATM_TH_SET, 0, 14),
  686. [F_VBAT_TH_SET] = REG_FIELD(VBAT_TH_SET, 0, 14),
  687. [F_THERM_TH_SET] = REG_FIELD(THERM_TH_SET, 0, 7),
  688. [F_IACP_TH_SET] = REG_FIELD(IACP_TH_SET, 0, 14),
  689. [F_VACP_TH_SET] = REG_FIELD(VACP_TH_SET, 0, 14),
  690. [F_VBUS_TH_SET] = REG_FIELD(VBUS_TH_SET, 0, 14),
  691. [F_VCC_TH_SET] = REG_FIELD(VCC_TH_SET, 0, 14),
  692. [F_VSYS_TH_SET] = REG_FIELD(VSYS_TH_SET, 0, 14),
  693. [F_EXTIADP_TH_SET] = REG_FIELD(EXTIADP_TH_SET, 0, 11),
  694. [F_IBATP_VAL] = REG_FIELD(IBATP_VAL, 0, 14),
  695. [F_IBATP_AVE_VAL] = REG_FIELD(IBATP_AVE_VAL, 0, 14),
  696. [F_IBATM_VAL] = REG_FIELD(IBATM_VAL, 0, 14),
  697. [F_IBATM_AVE_VAL] = REG_FIELD(IBATM_AVE_VAL, 0, 14),
  698. [F_VBAT_VAL] = REG_FIELD(VBAT_VAL, 0, 14),
  699. [F_VBAT_AVE_VAL] = REG_FIELD(VBAT_AVE_VAL, 0, 14),
  700. [F_THERM_VAL] = REG_FIELD(THERM_VAL, 0, 7),
  701. [F_VTH_VAL] = REG_FIELD(VTH_VAL, 0, 11),
  702. [F_IACP_VAL] = REG_FIELD(IACP_VAL, 0, 14),
  703. [F_IACP_AVE_VAL] = REG_FIELD(IACP_AVE_VAL, 0, 14),
  704. [F_VACP_VAL] = REG_FIELD(VACP_VAL, 0, 14),
  705. [F_VACP_AVE_VAL] = REG_FIELD(VACP_AVE_VAL, 0, 14),
  706. [F_VBUS_VAL] = REG_FIELD(VBUS_VAL, 0, 14),
  707. [F_VBUS_AVE_VAL] = REG_FIELD(VBUS_AVE_VAL, 0, 14),
  708. [F_VCC_VAL] = REG_FIELD(VCC_VAL, 0, 14),
  709. [F_VCC_AVE_VAL] = REG_FIELD(VCC_AVE_VAL, 0, 14),
  710. [F_VSYS_VAL] = REG_FIELD(VSYS_VAL, 0, 14),
  711. [F_VSYS_AVE_VAL] = REG_FIELD(VSYS_AVE_VAL, 0, 14),
  712. [F_EXTIADP_VAL] = REG_FIELD(EXTIADP_VAL, 0, 11),
  713. [F_EXTIADP_AVE_VAL] = REG_FIELD(EXTIADP_AVE_VAL, 0, 11),
  714. [F_VACPCLPS_TH_SET] = REG_FIELD(VACPCLPS_TH_SET, 7, 14),
  715. [F_INT7_SET] = REG_FIELD(INT7_SET, 0, 15),
  716. [F_INT6_SET] = REG_FIELD(INT6_SET, 0, 13),
  717. [F_INT5_SET] = REG_FIELD(INT5_SET, 0, 13),
  718. [F_INT4_SET] = REG_FIELD(INT4_SET, 0, 9),
  719. [F_INT3_SET] = REG_FIELD(INT3_SET, 0, 15),
  720. [F_INT2_SET] = REG_FIELD(INT2_SET, 0, 15),
  721. [F_INT1_SET] = REG_FIELD(INT1_SET, 0, 15),
  722. [F_INT0_SET] = REG_FIELD(INT0_SET, 0, 7),
  723. [F_VBUS_RBUV_DET] = REG_FIELD(INT1_SET, 15, 15),
  724. [F_VBUS_RBUV_RES] = REG_FIELD(INT1_SET, 14, 14),
  725. [F_VBUS_TH_DET] = REG_FIELD(INT1_SET, 9, 9),
  726. [F_VBUS_TH_RES] = REG_FIELD(INT1_SET, 8, 8),
  727. [F_VBUS_IIN_MOD] = REG_FIELD(INT1_SET, 6, 6),
  728. [F_VBUS_OV_DET] = REG_FIELD(INT1_SET, 5, 5),
  729. [F_VBUS_OV_RES] = REG_FIELD(INT1_SET, 4, 4),
  730. [F_VBUS_CLPS_DET] = REG_FIELD(INT1_SET, 3, 3),
  731. [F_VBUS_CLPS] = REG_FIELD(INT1_SET, 2, 2),
  732. [F_VBUS_DET] = REG_FIELD(INT1_SET, 1, 1),
  733. [F_VBUS_RES] = REG_FIELD(INT1_SET, 0, 0),
  734. [F_VCC_RBUV_DET] = REG_FIELD(INT2_SET, 15, 15),
  735. [F_VCC_RBUV_RES] = REG_FIELD(INT2_SET, 14, 14),
  736. [F_VCC_TH_DET] = REG_FIELD(INT2_SET, 9, 9),
  737. [F_VCC_TH_RES] = REG_FIELD(INT2_SET, 8, 8),
  738. [F_VCC_IIN_MOD] = REG_FIELD(INT2_SET, 6, 6),
  739. [F_VCC_OVP_DET] = REG_FIELD(INT2_SET, 5, 5),
  740. [F_VCC_OVP_RES] = REG_FIELD(INT2_SET, 4, 4),
  741. [F_VCC_CLPS_DET] = REG_FIELD(INT2_SET, 3, 3),
  742. [F_VCC_CLPS_RES] = REG_FIELD(INT2_SET, 2, 2),
  743. [F_VCC_DET] = REG_FIELD(INT2_SET, 1, 1),
  744. [F_VCC_RES] = REG_FIELD(INT2_SET, 0, 0),
  745. [F_TH_DET] = REG_FIELD(INT3_SET, 15, 15),
  746. [F_TH_RMV] = REG_FIELD(INT3_SET, 14, 14),
  747. [F_TMP_OUT_DET] = REG_FIELD(INT3_SET, 11, 11),
  748. [F_TMP_OUT_RES] = REG_FIELD(INT3_SET, 10, 10),
  749. [F_VBAT_TH_DET] = REG_FIELD(INT3_SET, 9, 9),
  750. [F_VBAT_TH_RES] = REG_FIELD(INT3_SET, 8, 8),
  751. [F_IBAT_SHORT_DET] = REG_FIELD(INT3_SET, 7, 7),
  752. [F_IBAT_SHORT_RES] = REG_FIELD(INT3_SET, 6, 6),
  753. [F_VBAT_OV_DET] = REG_FIELD(INT3_SET, 5, 5),
  754. [F_VBAT_OV_RES] = REG_FIELD(INT3_SET, 4, 4),
  755. [F_BAT_ASSIST_DET] = REG_FIELD(INT3_SET, 3, 3),
  756. [F_BAT_ASSIST_RES] = REG_FIELD(INT3_SET, 2, 2),
  757. [F_VSYS_TH_DET] = REG_FIELD(INT4_SET, 9, 9),
  758. [F_VSYS_TH_RES] = REG_FIELD(INT4_SET, 8, 8),
  759. [F_VSYS_OV_DET] = REG_FIELD(INT4_SET, 5, 5),
  760. [F_VSYS_OV_RES] = REG_FIELD(INT4_SET, 4, 4),
  761. [F_VSYS_SHT_DET] = REG_FIELD(INT4_SET, 3, 3),
  762. [F_VSYS_SHT_RES] = REG_FIELD(INT4_SET, 2, 2),
  763. [F_VSYS_UV_DET] = REG_FIELD(INT4_SET, 1, 1),
  764. [F_VSYS_UV_RES] = REG_FIELD(INT4_SET, 0, 0),
  765. [F_OTP_LOAD_DONE] = REG_FIELD(INT5_SET, 13, 13),
  766. [F_PWR_ON] = REG_FIELD(INT5_SET, 12, 12),
  767. [F_EXTIADP_TRNS] = REG_FIELD(INT5_SET, 11, 11),
  768. [F_EXTIADP_TH_DET] = REG_FIELD(INT5_SET, 9, 9),
  769. [F_EXIADP_TH_RES] = REG_FIELD(INT5_SET, 8, 8),
  770. [F_BAT_MNT_DET] = REG_FIELD(INT5_SET, 7, 7),
  771. [F_BAT_MNT_RES] = REG_FIELD(INT5_SET, 6, 6),
  772. [F_TSD_DET] = REG_FIELD(INT5_SET, 5, 5),
  773. [F_TSD_RES] = REG_FIELD(INT5_SET, 4, 4),
  774. [F_CHGWDT_EXP] = REG_FIELD(INT5_SET, 3, 3),
  775. [F_THERMWDT_EXP] = REG_FIELD(INT5_SET, 2, 2),
  776. [F_TMP_TRNS] = REG_FIELD(INT5_SET, 1, 1),
  777. [F_CHG_TRNS] = REG_FIELD(INT5_SET, 0, 0),
  778. [F_VBUS_UCD_PORT_DET] = REG_FIELD(INT6_SET, 13, 13),
  779. [F_VBUS_UCD_UCHG_DET] = REG_FIELD(INT6_SET, 12, 12),
  780. [F_VBUS_UCD_URID_RMV] = REG_FIELD(INT6_SET, 11, 11),
  781. [F_VBUS_UCD_OTG_DET] = REG_FIELD(INT6_SET, 10, 10),
  782. [F_VBUS_UCD_URID_MOD] = REG_FIELD(INT6_SET, 8, 8),
  783. [F_VCC_UCD_PORT_DET] = REG_FIELD(INT6_SET, 5, 5),
  784. [F_VCC_UCD_UCHG_DET] = REG_FIELD(INT6_SET, 4, 4),
  785. [F_VCC_UCD_URID_RMV] = REG_FIELD(INT6_SET, 3, 3),
  786. [F_VCC_UCD_OTG_DET] = REG_FIELD(INT6_SET, 2, 2),
  787. [F_VCC_UCD_URID_MOD] = REG_FIELD(INT6_SET, 0, 0),
  788. [F_PROCHOT_DET] = REG_FIELD(INT7_SET, 15, 15),
  789. [F_PROCHOT_RES] = REG_FIELD(INT7_SET, 14, 14),
  790. [F_VACP_DET] = REG_FIELD(INT7_SET, 11, 11),
  791. [F_VACP_RES] = REG_FIELD(INT7_SET, 10, 10),
  792. [F_VACP_TH_DET] = REG_FIELD(INT7_SET, 9, 9),
  793. [F_VACP_TH_RES] = REG_FIELD(INT7_SET, 8, 8),
  794. [F_IACP_TH_DET] = REG_FIELD(INT7_SET, 7, 7),
  795. [F_IACP_THE_RES] = REG_FIELD(INT7_SET, 6, 6),
  796. [F_THERM_TH_DET] = REG_FIELD(INT7_SET, 5, 5),
  797. [F_THERM_TH_RES] = REG_FIELD(INT7_SET, 4, 4),
  798. [F_IBATM_TH_DET] = REG_FIELD(INT7_SET, 3, 3),
  799. [F_IBATM_TH_RES] = REG_FIELD(INT7_SET, 2, 2),
  800. [F_IBATP_TH_DET] = REG_FIELD(INT7_SET, 1, 1),
  801. [F_IBATP_TH_RES] = REG_FIELD(INT7_SET, 0, 0),
  802. [F_INT7_STATUS] = REG_FIELD(INT7_STATUS, 0, 15),
  803. [F_INT6_STATUS] = REG_FIELD(INT6_STATUS, 0, 13),
  804. [F_INT5_STATUS] = REG_FIELD(INT5_STATUS, 0, 13),
  805. [F_INT4_STATUS] = REG_FIELD(INT4_STATUS, 0, 9),
  806. [F_INT3_STATUS] = REG_FIELD(INT3_STATUS, 0, 15),
  807. [F_INT2_STATUS] = REG_FIELD(INT2_STATUS, 0, 15),
  808. [F_INT1_STATUS] = REG_FIELD(INT1_STATUS, 0, 15),
  809. [F_INT0_STATUS] = REG_FIELD(INT0_STATUS, 0, 7),
  810. [F_ILIM_DECREASE] = REG_FIELD(OTPREG0, 0, 15),
  811. [F_RESERVE_OTPREG1] = REG_FIELD(OTPREG1, 0, 15),
  812. [F_POWER_SAVE_MODE] = REG_FIELD(SMBREG, 0, 15),
  813. [F_DEBUG_MODE_SET] = REG_FIELD(DEBUG_MODE_SET, 0, 15),
  814. [F_DEBUG0x14] = REG_FIELD(DEBUG0x14, 0, 15),
  815. [F_DEBUG0x1A] = REG_FIELD(DEBUG0x1A, 0, 15),
  816. };
  817. /* CHGSTM_STATEs */
  818. #define CHGSTM_SUSPEND 0x00
  819. #define CHGSTM_TRICKLE_CHARGE 0x01
  820. #define CHGSTM_PRE_CHARGE 0x02
  821. #define CHGSTM_FAST_CHARGE 0x03
  822. #define CHGSTM_TOP_OFF 0x04
  823. #define CHGSTM_DONE 0x05
  824. #define CHGSTM_OTG 0x08
  825. #define CHGSTM_OTG_DONE 0x09
  826. #define CHGSTM_TEMPERATURE_ERROR_1 0x10
  827. #define CHGSTM_TEMPERATURE_ERROR_2 0x11
  828. #define CHGSTM_TEMPERATURE_ERROR_3 0x12
  829. #define CHGSTM_TEMPERATURE_ERROR_4 0x13
  830. #define CHGSTM_TEMPERATURE_ERROR_5 0x14
  831. #define CHGSTM_TEMPERATURE_ERROR_6 0x15
  832. #define CHGSTM_TEMPERATURE_ERROR_7 0x18
  833. #define CHGSTM_THERMAL_SHUT_DOWN_1 0x20
  834. #define CHGSTM_THERMAL_SHUT_DOWN_2 0x21
  835. #define CHGSTM_THERMAL_SHUT_DOWN_3 0x22
  836. #define CHGSTM_THERMAL_SHUT_DOWN_4 0x23
  837. #define CHGSTM_THERMAL_SHUT_DOWN_5 0x24
  838. #define CHGSTM_THERMAL_SHUT_DOWN_6 0x25
  839. #define CHGSTM_THERMAL_SHUT_DOWN_7 0x28
  840. #define CHGSTM_BATTERY_ERROR 0x40
  841. /* VBAT_VSYS_STATUS */
  842. #define STATUS_VSYS_OV BIT(15)
  843. #define STATUS_VSYS_SSD BIT(14)
  844. #define STATUS_VSYS_SCP BIT(13)
  845. #define STATUS_VSYS_UVN BIT(12)
  846. #define STATUS_IBAT_SHORT BIT(6)
  847. #define STATUS_VBAT_OV BIT(3)
  848. #define STATUS_DEAD_BAT BIT(0)
  849. /* VBUS_VCC_STATUS */
  850. #define STATUS_VACP_DET BIT(12)
  851. #define STATUS_VCC_OVP BIT(11)
  852. #define STATUS_ILIM_VCC_MOD BIT(10)
  853. #define STATUS_VCC_CLPS BIT(9)
  854. #define STATUS_VCC_DET BIT(8)
  855. #define STATUS_VBUS_OVP BIT(3)
  856. #define STATUS_ILIM_VBUS_MOD BIT(2)
  857. #define STATUS_VBUS_CLPS BIT(1)
  858. #define STATUS_VBUS_DET BIT(0)
  859. /* Interrupt set/status definitions */
  860. /* INT 0 */
  861. #define INT0_INT7_STATUS BIT(7)
  862. #define INT0_INT6_STATUS BIT(6)
  863. #define INT0_INT5_STATUS BIT(5)
  864. #define INT0_INT4_STATUS BIT(4)
  865. #define INT0_INT3_STATUS BIT(3)
  866. #define INT0_INT2_STATUS BIT(2)
  867. #define INT0_INT1_STATUS BIT(1)
  868. #define INT0_INT0_STATUS BIT(0)
  869. #define INT0_ALL 0xff
  870. /* INT 1 */
  871. #define VBUS_RBUV_DET BIT(15)
  872. #define VBUS_RBUV_RES BIT(14)
  873. #define VBUS_TH_DET BIT(9)
  874. #define VBUS_TH_RES BIT(8)
  875. #define VBUS_IIN_MOD BIT(6)
  876. #define VBUS_OV_DET BIT(5)
  877. #define VBUS_OV_RES BIT(4)
  878. #define VBUS_CLPS_DET BIT(3)
  879. #define VBUS_CLPS BIT(2)
  880. #define VBUS_DET BIT(1)
  881. #define VBUS_RES BIT(0)
  882. #define INT1_ALL (VBUS_RBUV_DET|\
  883. VBUS_RBUV_RES|\
  884. VBUS_TH_DET |\
  885. VBUS_TH_RES |\
  886. VBUS_IIN_MOD|\
  887. VBUS_OV_DET |\
  888. VBUS_OV_RES |\
  889. VBUS_CLPS_DET |\
  890. VBUS_CLPS |\
  891. VBUS_DET |\
  892. VBUS_RES)
  893. /* INT 2 */
  894. #define VCC_RBUV_DET BIT(15)
  895. #define VCC_RBUV_RES BIT(14)
  896. #define VCC_TH_DET BIT(9)
  897. #define VCC_TH_RES BIT(8)
  898. #define VCC_IIN_MOD BIT(6)
  899. #define VCC_OVP_DET BIT(5)
  900. #define VCC_OVP_RES BIT(4)
  901. #define VCC_CLPS_DET BIT(3)
  902. #define VCC_CLPS_RES BIT(2)
  903. #define VCC_DET BIT(1)
  904. #define VCC_RES BIT(0)
  905. #define INT2_ALL (VCC_RBUV_DET |\
  906. VCC_RBUV_RES |\
  907. VCC_TH_DET |\
  908. VCC_TH_RES |\
  909. VCC_IIN_MOD |\
  910. VCC_OVP_DET |\
  911. VCC_OVP_RES |\
  912. VCC_CLPS_DET |\
  913. VCC_CLPS_RES |\
  914. VCC_DET |\
  915. VCC_RES)
  916. /* INT 3 */
  917. #define TH_DET BIT(15)
  918. #define TH_RMV BIT(14)
  919. #define TMP_OUT_DET BIT(11)
  920. #define TMP_OUT_RES BIT(10)
  921. #define VBAT_TH_DET BIT(9)
  922. #define VBAT_TH_RES BIT(8)
  923. #define IBAT_SHORT_DET BIT(7)
  924. #define IBAT_SHORT_RES BIT(6)
  925. #define VBAT_OV_DET BIT(5)
  926. #define VBAT_OV_RES BIT(4)
  927. #define BAT_ASSIST_DET BIT(3)
  928. #define BAT_ASSIST_RES BIT(2)
  929. #define INT3_ALL (TH_DET |\
  930. TH_RMV |\
  931. TMP_OUT_DET |\
  932. TMP_OUT_RES |\
  933. VBAT_TH_DET |\
  934. VBAT_TH_RES |\
  935. IBAT_SHORT_DET |\
  936. IBAT_SHORT_RES |\
  937. VBAT_OV_DET |\
  938. VBAT_OV_RES |\
  939. BAT_ASSIST_DET |\
  940. BAT_ASSIST_RES)
  941. /* INT 4 */
  942. #define VSYS_TH_DET BIT(9)
  943. #define VSYS_TH_RES BIT(8)
  944. #define VSYS_OV_DET BIT(5)
  945. #define VSYS_OV_RES BIT(4)
  946. #define VSYS_SHT_DET BIT(3)
  947. #define VSYS_SHT_RES BIT(2)
  948. #define VSYS_UV_DET BIT(1)
  949. #define VSYS_UV_RES BIT(0)
  950. #define INT4_ALL (VSYS_TH_DET |\
  951. VSYS_TH_RES |\
  952. VSYS_OV_DET |\
  953. VSYS_OV_RES |\
  954. VSYS_SHT_DET |\
  955. VSYS_SHT_RES |\
  956. VSYS_UV_DET |\
  957. VSYS_UV_RES)
  958. /* INT 5*/
  959. #define OTP_LOAD_DONE BIT(13)
  960. #define PWR_ON BIT(12)
  961. #define EXTIADP_TRNS BIT(11)
  962. #define EXTIADP_TH_DET BIT(9)
  963. #define EXIADP_TH_RES BIT(8)
  964. #define BAT_MNT_DET BIT(7)
  965. #define BAT_MNT_RES BIT(6)
  966. #define TSD_DET BIT(5)
  967. #define TSD_RES BIT(4)
  968. #define CHGWDT_EXP BIT(3)
  969. #define THERMWDT_EXP BIT(2)
  970. #define TMP_TRNS BIT(1)
  971. #define CHG_TRNS BIT(0)
  972. #define INT5_ALL (OTP_LOAD_DONE |\
  973. PWR_ON |\
  974. EXTIADP_TRNS |\
  975. EXTIADP_TH_DET |\
  976. EXIADP_TH_RES |\
  977. BAT_MNT_DET |\
  978. BAT_MNT_RES |\
  979. TSD_DET |\
  980. TSD_RES |\
  981. CHGWDT_EXP |\
  982. THERMWDT_EXP |\
  983. TMP_TRNS |\
  984. CHG_TRNS)
  985. /* INT 6*/
  986. #define VBUS_UCD_PORT_DET BIT(13)
  987. #define VBUS_UCD_UCHG_DET BIT(12)
  988. #define VBUS_UCD_URID_RMV BIT(11)
  989. #define VBUS_UCD_OTG_DET BIT(10)
  990. #define VBUS_UCD_URID_MOD BIT(8)
  991. #define VCC_UCD_PORT_DET BIT(5)
  992. #define VCC_UCD_UCHG_DET BIT(4)
  993. #define VCC_UCD_URID_RMV BIT(3)
  994. #define VCC_UCD_OTG_DET BIT(2)
  995. #define VCC_UCD_URID_MOD BIT(0)
  996. #define INT6_ALL (VBUS_UCD_PORT_DET |\
  997. VBUS_UCD_UCHG_DET |\
  998. VBUS_UCD_URID_RMV |\
  999. VBUS_UCD_OTG_DET |\
  1000. VBUS_UCD_URID_MOD |\
  1001. VCC_UCD_PORT_DET |\
  1002. VCC_UCD_UCHG_DET |\
  1003. VCC_UCD_URID_RMV |\
  1004. VCC_UCD_OTG_DET |\
  1005. VCC_UCD_URID_MOD)
  1006. /* INT 7 */
  1007. #define PROCHOT_DET BIT(15)
  1008. #define PROCHOT_RES BIT(14)
  1009. #define VACP_DET BIT(11)
  1010. #define VACP_RES BIT(10)
  1011. #define VACP_TH_DET BIT(9)
  1012. #define VACP_TH_RES BIT(8)
  1013. #define IACP_TH_DET BIT(7)
  1014. #define IACP_THE_RES BIT(6)
  1015. #define THERM_TH_DET BIT(5)
  1016. #define THERM_TH_RES BIT(4)
  1017. #define IBATM_TH_DET BIT(3)
  1018. #define IBATM_TH_RES BIT(2)
  1019. #define IBATP_TH_DET BIT(1)
  1020. #define IBATP_TH_RES BIT(0)
  1021. #define INT7_ALL (PROCHOT_DET |\
  1022. PROCHOT_RES |\
  1023. VACP_DET |\
  1024. VACP_RES |\
  1025. VACP_TH_DET |\
  1026. VACP_TH_RES |\
  1027. IACP_TH_DET |\
  1028. IACP_THE_RES |\
  1029. THERM_TH_DET |\
  1030. THERM_TH_RES |\
  1031. IBATM_TH_DET |\
  1032. IBATM_TH_RES |\
  1033. IBATP_TH_DET |\
  1034. IBATP_TH_RES)
  1035. /* SYSTEM_CTRL_SET*/
  1036. #define MONRST BIT(6)
  1037. #define ALMRST BIT(5)
  1038. #define CHGRST BIT(4)
  1039. #define OTPLD BIT(1)
  1040. #define ALLRST BIT(0)
  1041. /* F_BATTEMP */
  1042. #define ROOM 0x0
  1043. #define HOT1 0x1
  1044. #define HOT2 0x2
  1045. #define HOT3 0x3
  1046. #define COLD1 0x4
  1047. #define COLD2 0x5
  1048. #define TEMP_DIS 0x6
  1049. #define BATT_OPEN 0x7
  1050. #endif