• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Register definitions for Rockchip's RK808/RK818 PMIC
4  *
5  * Copyright (c) 2014, Fuzhou Rockchip Electronics Co., Ltd
6  *
7  * Author: Chris Zhong <zyw@rock-chips.com>
8  * Author: Zhang Qing <zhangqing@rock-chips.com>
9  *
10  * Copyright (C) 2016 PHYTEC Messtechnik GmbH
11  *
12  * Author: Wadim Egorov <w.egorov@phytec.de>
13  */
14 
15 #ifndef __LINUX_REGULATOR_RK808_H
16 #define __LINUX_REGULATOR_RK808_H
17 
18 #include <linux/regulator/machine.h>
19 #include <linux/regmap.h>
20 
21 /*
22  * rk808 Global Register Map.
23  */
24 
25 #define RK808_DCDC1 0 /* (0+RK808_START) */
26 #define RK808_LDO1 4  /* (4+RK808_START) */
27 #define RK808_NUM_REGULATORS 14
28 
29 enum rk808_reg {
30     RK808_ID_DCDC1,
31     RK808_ID_DCDC2,
32     RK808_ID_DCDC3,
33     RK808_ID_DCDC4,
34     RK808_ID_LDO1,
35     RK808_ID_LDO2,
36     RK808_ID_LDO3,
37     RK808_ID_LDO4,
38     RK808_ID_LDO5,
39     RK808_ID_LDO6,
40     RK808_ID_LDO7,
41     RK808_ID_LDO8,
42     RK808_ID_SWITCH1,
43     RK808_ID_SWITCH2,
44 };
45 
46 #define RK808_SECONDS_REG 0x00
47 #define RK808_MINUTES_REG 0x01
48 #define RK808_HOURS_REG 0x02
49 #define RK808_DAYS_REG 0x03
50 #define RK808_MONTHS_REG 0x04
51 #define RK808_YEARS_REG 0x05
52 #define RK808_WEEKS_REG 0x06
53 #define RK808_ALARM_SECONDS_REG 0x08
54 #define RK808_ALARM_MINUTES_REG 0x09
55 #define RK808_ALARM_HOURS_REG 0x0a
56 #define RK808_ALARM_DAYS_REG 0x0b
57 #define RK808_ALARM_MONTHS_REG 0x0c
58 #define RK808_ALARM_YEARS_REG 0x0d
59 #define RK808_RTC_CTRL_REG 0x10
60 #define RK808_RTC_STATUS_REG 0x11
61 #define RK808_RTC_INT_REG 0x12
62 #define RK808_RTC_COMP_LSB_REG 0x13
63 #define RK808_RTC_COMP_MSB_REG 0x14
64 #define RK808_ID_MSB 0x17
65 #define RK808_ID_LSB 0x18
66 #define RK808_CLK32OUT_REG 0x20
67 #define RK808_VB_MON_REG 0x21
68 #define RK808_THERMAL_REG 0x22
69 #define RK808_DCDC_EN_REG 0x23
70 #define RK808_LDO_EN_REG 0x24
71 #define RK808_SLEEP_SET_OFF_REG1 0x25
72 #define RK808_SLEEP_SET_OFF_REG2 0x26
73 #define RK808_DCDC_UV_STS_REG 0x27
74 #define RK808_DCDC_UV_ACT_REG 0x28
75 #define RK808_LDO_UV_STS_REG 0x29
76 #define RK808_LDO_UV_ACT_REG 0x2a
77 #define RK808_DCDC_PG_REG 0x2b
78 #define RK808_LDO_PG_REG 0x2c
79 #define RK808_VOUT_MON_TDB_REG 0x2d
80 #define RK808_BUCK1_CONFIG_REG 0x2e
81 #define RK808_BUCK1_ON_VSEL_REG 0x2f
82 #define RK808_BUCK1_SLP_VSEL_REG 0x30
83 #define RK808_BUCK1_DVS_VSEL_REG 0x31
84 #define RK808_BUCK2_CONFIG_REG 0x32
85 #define RK808_BUCK2_ON_VSEL_REG 0x33
86 #define RK808_BUCK2_SLP_VSEL_REG 0x34
87 #define RK808_BUCK2_DVS_VSEL_REG 0x35
88 #define RK808_BUCK3_CONFIG_REG 0x36
89 #define RK808_BUCK4_CONFIG_REG 0x37
90 #define RK808_BUCK4_ON_VSEL_REG 0x38
91 #define RK808_BUCK4_SLP_VSEL_REG 0x39
92 #define RK808_BOOST_CONFIG_REG 0x3a
93 #define RK808_LDO1_ON_VSEL_REG 0x3b
94 #define RK808_LDO1_SLP_VSEL_REG 0x3c
95 #define RK808_LDO2_ON_VSEL_REG 0x3d
96 #define RK808_LDO2_SLP_VSEL_REG 0x3e
97 #define RK808_LDO3_ON_VSEL_REG 0x3f
98 #define RK808_LDO3_SLP_VSEL_REG 0x40
99 #define RK808_LDO4_ON_VSEL_REG 0x41
100 #define RK808_LDO4_SLP_VSEL_REG 0x42
101 #define RK808_LDO5_ON_VSEL_REG 0x43
102 #define RK808_LDO5_SLP_VSEL_REG 0x44
103 #define RK808_LDO6_ON_VSEL_REG 0x45
104 #define RK808_LDO6_SLP_VSEL_REG 0x46
105 #define RK808_LDO7_ON_VSEL_REG 0x47
106 #define RK808_LDO7_SLP_VSEL_REG 0x48
107 #define RK808_LDO8_ON_VSEL_REG 0x49
108 #define RK808_LDO8_SLP_VSEL_REG 0x4a
109 #define RK808_DEVCTRL_REG 0x4b
110 #define RK808_INT_STS_REG1 0x4c
111 #define RK808_INT_STS_MSK_REG1 0x4d
112 #define RK808_INT_STS_REG2 0x4e
113 #define RK808_INT_STS_MSK_REG2 0x4f
114 #define RK808_IO_POL_REG 0x50
115 
116 /* RK816 */
117 enum rk816_reg {
118     RK816_ID_DCDC1,
119     RK816_ID_DCDC2,
120     RK816_ID_DCDC3,
121     RK816_ID_DCDC4,
122     RK816_ID_LDO1,
123     RK816_ID_LDO2,
124     RK816_ID_LDO3,
125     RK816_ID_LDO4,
126     RK816_ID_LDO5,
127     RK816_ID_LDO6,
128 };
129 
130 /* VERSION REGISTER */
131 #define RK816_CHIP_NAME_REG 0x17
132 #define RK816_CHIP_VER_REG 0x18
133 #define RK816_OTP_VER_REG 0x19
134 #define RK816_NUM_REGULATORS 10
135 
136 /* POWER ON/OFF REGISTER */
137 #define RK816_VB_MON_REG 0x21
138 #define RK816_THERMAL_REG 0x22
139 #define RK816_PWRON_LP_INT_TIME_REG 0x47
140 #define RK816_PWRON_DB_REG 0x48
141 #define RK816_DEV_CTRL_REG 0x4B
142 #define RK816_ON_SOURCE_REG 0xAE
143 #define RK816_OFF_SOURCE_REG 0xAF
144 
145 /* POWER CHANNELS ENABLE REGISTER */
146 #define RK816_DCDC_EN_REG1 0x23
147 #define RK816_DCDC_EN_REG2 0x24
148 #define RK816_SLP_DCDC_EN_REG 0x25
149 #define RK816_SLP_LDO_EN_REG 0x26
150 #define RK816_LDO_EN_REG1 0x27
151 #define RK816_LDO_EN_REG2 0x28
152 
153 /* BUCK AND LDO CONFIG REGISTER */
154 #define RK816_BUCK1_CONFIG_REG 0x2E
155 #define RK816_BUCK1_ON_VSEL_REG 0x2F
156 #define RK816_BUCK1_SLP_VSEL_REG 0x30
157 #define RK816_BUCK2_CONFIG_REG 0x32
158 #define RK816_BUCK2_ON_VSEL_REG 0x33
159 #define RK816_BUCK2_SLP_VSEL_REG 0x34
160 #define RK816_BUCK3_CONFIG_REG 0x36
161 #define RK816_BUCK4_CONFIG_REG 0x37
162 #define RK816_BUCK4_ON_VSEL_REG 0x38
163 #define RK816_BUCK4_SLP_VSEL_REG 0x39
164 #define RK816_LDO1_ON_VSEL_REG 0x3B
165 #define RK816_LDO1_SLP_VSEL_REG 0x3C
166 #define RK816_LDO2_ON_VSEL_REG 0x3D
167 #define RK816_LDO2_SLP_VSEL_REG 0x3E
168 #define RK816_LDO3_ON_VSEL_REG 0x3F
169 #define RK816_LDO3_SLP_VSEL_REG 0x40
170 #define RK816_LDO4_ON_VSEL_REG 0x41
171 #define RK816_LDO4_SLP_VSEL_REG 0x42
172 #define RK816_LDO5_ON_VSEL_REG 0x43
173 #define RK816_LDO5_SLP_VSEL_REG 0x44
174 #define RK816_LDO6_ON_VSEL_REG 0x45
175 #define RK816_LDO6_SLP_VSEL_REG 0x46
176 #define RK816_GPIO_IO_POL_REG 0x50
177 
178 /* CHARGER BOOST AND OTG REGISTER */
179 #define RK816_OTG_BUCK_LDO_CONFIG_REG 0x2A
180 #define RK816_CHRG_CONFIG_REG 0x2B
181 #define RK816_BOOST_ON_VESL_REG 0x54
182 #define RK816_BOOST_SLP_VSEL_REG 0x55
183 #define RK816_CHRG_BOOST_CONFIG_REG 0x9A
184 #define RK816_SUP_STS_REG 0xA0
185 #define RK816_USB_CTRL_REG 0xA1
186 #define RK816_CHRG_CTRL_REG1 0xA3
187 #define RK816_CHRG_CTRL_REG2 0xA4
188 #define RK816_CHRG_CTRL_REG3 0xA5
189 #define RK816_BAT_CTRL_REG 0xA6
190 #define RK816_BAT_HTS_TS_REG 0xA8
191 #define RK816_BAT_LTS_TS_REG 0xA9
192 
193 #define RK816_TS_CTRL_REG 0xAC
194 #define RK816_ADC_CTRL_REG 0xAD
195 #define RK816_GGCON_REG 0xB0
196 #define RK816_GGSTS_REG 0xB1
197 #define RK816_ZERO_CUR_ADC_REGH 0xB2
198 #define RK816_ZERO_CUR_ADC_REGL 0xB3
199 #define RK816_GASCNT_CAL_REG3 0xB4
200 #define RK816_GASCNT_CAL_REG2 0xB5
201 #define RK816_GASCNT_CAL_REG1 0xB6
202 #define RK816_GASCNT_CAL_REG0 0xB7
203 #define RK816_GASCNT_REG3 0xB8
204 #define RK816_GASCNT_REG2 0xB9
205 #define RK816_GASCNT_REG1 0xBA
206 #define RK816_GASCNT_REG0 0xBB
207 #define RK816_BAT_CUR_AVG_REGH 0xBC
208 #define RK816_BAT_CUR_AVG_REGL 0xBD
209 #define RK816_TS_ADC_REGH 0xBE
210 #define RK816_TS_ADC_REGL 0xBF
211 #define RK816_USB_ADC_REGH 0xC0
212 #define RK816_USB_ADC_REGL 0xC1
213 #define RK816_BAT_OCV_REGH 0xC2
214 #define RK816_BAT_OCV_REGL 0xC3
215 #define RK816_BAT_VOL_REGH 0xC4
216 #define RK816_BAT_VOL_REGL 0xC5
217 #define RK816_RELAX_ENTRY_THRES_REGH 0xC6
218 #define RK816_RELAX_ENTRY_THRES_REGL 0xC7
219 #define RK816_RELAX_EXIT_THRES_REGH 0xC8
220 #define RK816_RELAX_EXIT_THRES_REGL 0xC9
221 #define RK816_RELAX_VOL1_REGH 0xCA
222 #define RK816_RELAX_VOL1_REGL 0xCB
223 #define RK816_RELAX_VOL2_REGH 0xCC
224 #define RK816_RELAX_VOL2_REGL 0xCD
225 #define RK816_RELAX_CUR1_REGH 0xCE
226 #define RK816_RELAX_CUR1_REGL 0xCF
227 #define RK816_RELAX_CUR2_REGH 0xD0
228 #define RK816_RELAX_CUR2_REGL 0xD1
229 #define RK816_CAL_OFFSET_REGH 0xD2
230 #define RK816_CAL_OFFSET_REGL 0xD3
231 #define RK816_NON_ACT_TIMER_CNT_REG 0xD4
232 #define RK816_VCALIB0_REGH 0xD5
233 #define RK816_VCALIB0_REGL 0xD6
234 #define RK816_VCALIB1_REGH 0xD7
235 #define RK816_VCALIB1_REGL 0xD8
236 #define RK816_FCC_GASCNT_REG3 0xD9
237 #define RK816_FCC_GASCNT_REG2 0xDA
238 #define RK816_FCC_GASCNT_REG1 0xDB
239 #define RK816_FCC_GASCNT_REG0 0xDC
240 #define RK816_IOFFSET_REGH 0xDD
241 #define RK816_IOFFSET_REGL 0xDE
242 #define RK816_SLEEP_CON_SAMP_CUR_REG 0xDF
243 
244 /* DATA REGISTER */
245 #define RK816_SOC_REG 0xE0
246 #define RK816_REMAIN_CAP_REG3 0xE1
247 #define RK816_REMAIN_CAP_REG2 0xE2
248 #define RK816_REMAIN_CAP_REG1 0xE3
249 #define RK816_REMAIN_CAP_REG0 0xE4
250 #define RK816_UPDATE_LEVE_REG 0xE5
251 #define RK816_NEW_FCC_REG3 0xE6
252 #define RK816_NEW_FCC_REG2 0xE7
253 #define RK816_NEW_FCC_REG1 0xE8
254 #define RK816_NEW_FCC_REG0 0xE9
255 #define RK816_NON_ACT_TIMER_CNT_REG_SAVE 0xEA
256 #define RK816_OCV_VOL_VALID_REG 0xEB
257 #define RK816_REBOOT_CNT_REG 0xEC
258 #define RK816_PCB_IOFFSET_REG 0xED
259 #define RK816_MISC_MARK_REG 0xEE
260 #define RK816_HALT_CNT_REG 0xEF
261 #define RK816_CALC_REST_REGH 0xF0
262 #define RK816_CALC_REST_REGL 0xF1
263 #define DATA18_REG 0xF2
264 
265 /* INTERRUPT REGISTER */
266 #define RK816_INT_STS_REG1 0x49
267 #define RK816_INT_STS_MSK_REG1 0x4A
268 #define RK816_INT_STS_REG2 0x4C
269 #define RK816_INT_STS_MSK_REG2 0x4D
270 #define RK816_INT_STS_REG3 0x4E
271 #define RK816_INT_STS_MSK_REG3 0x4F
272 #define RK816_GPIO_IO_POL_REG 0x50
273 
274 #define RK816_DATA18_REG 0xF2
275 
276 /* IRQ Definitions */
277 #define RK816_IRQ_PWRON_FALL 0
278 #define RK816_IRQ_PWRON_RISE 1
279 #define RK816_IRQ_VB_LOW 2
280 #define RK816_IRQ_PWRON 3
281 #define RK816_IRQ_PWRON_LP 4
282 #define RK816_IRQ_HOTDIE 5
283 #define RK816_IRQ_RTC_ALARM 6
284 #define RK816_IRQ_RTC_PERIOD 7
285 #define RK816_IRQ_USB_OV 8
286 #define RK816_IRQ_PLUG_IN 9
287 #define RK816_IRQ_PLUG_OUT 10
288 #define RK816_IRQ_CHG_OK 11
289 #define RK816_IRQ_CHG_TE 12
290 #define RK816_IRQ_CHG_TS 13
291 #define RK816_IRQ_CHG_CVTLIM 14
292 #define RK816_IRQ_DISCHG_ILIM 15
293 
294 #define RK816_IRQ_PWRON_FALL_MSK BIT(5)
295 #define RK816_IRQ_PWRON_RISE_MSK BIT(6)
296 #define RK816_IRQ_VB_LOW_MSK BIT(1)
297 #define RK816_IRQ_PWRON_MSK BIT(2)
298 #define RK816_IRQ_PWRON_LP_MSK BIT(3)
299 #define RK816_IRQ_HOTDIE_MSK BIT(4)
300 #define RK816_IRQ_RTC_ALARM_MSK BIT(5)
301 #define RK816_IRQ_RTC_PERIOD_MSK BIT(6)
302 #define RK816_IRQ_USB_OV_MSK BIT(7)
303 #define RK816_IRQ_PLUG_IN_MSK BIT(0)
304 #define RK816_IRQ_PLUG_OUT_MSK BIT(1)
305 #define RK816_IRQ_CHG_OK_MSK BIT(2)
306 #define RK816_IRQ_CHG_TE_MSK BIT(3)
307 #define RK816_IRQ_CHG_TS_MSK BIT(4)
308 #define RK816_IRQ_CHG_CVTLIM_MSK BIT(6)
309 #define RK816_IRQ_DISCHG_ILIM_MSK BIT(7)
310 
311 #define RK816_VBAT_LOW_2V8 0x00
312 #define RK816_VBAT_LOW_2V9 0x01
313 #define RK816_VBAT_LOW_3V0 0x02
314 #define RK816_VBAT_LOW_3V1 0x03
315 #define RK816_VBAT_LOW_3V2 0x04
316 #define RK816_VBAT_LOW_3V3 0x05
317 #define RK816_VBAT_LOW_3V4 0x06
318 #define RK816_VBAT_LOW_3V5 0x07
319 #define RK816_PWR_FALL_INT_STATUS (0x1 << 5)
320 #define RK816_PWR_RISE_INT_STATUS (0x1 << 6)
321 #define RK816_ALARM_INT_STATUS (0x1 << 5)
322 #define EN_VBAT_LOW_IRQ (0x1 << 4)
323 #define VBAT_LOW_ACT_MASK (0x1 << 4)
324 #define RTC_TIMER_ALARM_INT_MSK (0x3 << 2)
325 #define RTC_TIMER_ALARM_INT_DIS (0x0 << 2)
326 #define RTC_PERIOD_ALARM_INT_MSK (0x3 << 5)
327 #define RTC_PERIOD_ALARM_INT_ST (0x3 << 5)
328 #define RTC_PERIOD_ALARM_INT_DIS (0x3 << 5)
329 #define RTC_PERIOD_ALARM_INT_EN (0x9f)
330 #define REG_WRITE_MSK 0xff
331 #define BUCK4_MAX_ILIMIT 0x2c
332 #define BUCK_RATE_MSK (0x3 << 3)
333 #define BUCK_RATE_12_5MV_US (0x2 << 3)
334 #define ALL_INT_FLAGS_ST 0xff
335 #define PLUGIN_OUT_INT_EN 0xfc
336 #define RK816_PWRON_FALL_RISE_INT_EN 0x9f
337 #define BUCK1_2_IMAX_MAX (0x3 << 6)
338 #define BUCK3_4_IMAX_MAX (0x3 << 3)
339 #define BOOST_DISABLE ((0x1 << 5) | (0x0 << 1))
340 #define BUCK4_VRP_3PERCENT 0xc0
341 #define RK816_BUCK_DVS_CONFIRM (0x1 << 7)
342 #define RK816_TYPE_ES2 0x05
343 #define RK816_CHIP_VERSION_MASK 0x0f
344 
345 /* RK818 */
346 #define RK818_DCDC1 0
347 #define RK818_LDO1 4
348 #define RK818_NUM_REGULATORS 17
349 
350 enum rk818_reg {
351     RK818_ID_DCDC1,
352     RK818_ID_DCDC2,
353     RK818_ID_DCDC3,
354     RK818_ID_DCDC4,
355     RK818_ID_BOOST,
356     RK818_ID_LDO1,
357     RK818_ID_LDO2,
358     RK818_ID_LDO3,
359     RK818_ID_LDO4,
360     RK818_ID_LDO5,
361     RK818_ID_LDO6,
362     RK818_ID_LDO7,
363     RK818_ID_LDO8,
364     RK818_ID_LDO9,
365     RK818_ID_SWITCH,
366     RK818_ID_HDMI_SWITCH,
367     RK818_ID_OTG_SWITCH,
368 };
369 
370 #define RK818_VB_MON_REG 0x21
371 #define RK818_THERMAL_REG 0x22
372 #define RK818_DCDC_EN_REG 0x23
373 #define RK818_LDO_EN_REG 0x24
374 #define RK818_SLEEP_SET_OFF_REG1 0x25
375 #define RK818_SLEEP_SET_OFF_REG2 0x26
376 #define RK818_DCDC_UV_STS_REG 0x27
377 #define RK818_DCDC_UV_ACT_REG 0x28
378 #define RK818_LDO_UV_STS_REG 0x29
379 #define RK818_LDO_UV_ACT_REG 0x2a
380 #define RK818_DCDC_PG_REG 0x2b
381 #define RK818_LDO_PG_REG 0x2c
382 #define RK818_VOUT_MON_TDB_REG 0x2d
383 #define RK818_BUCK1_CONFIG_REG 0x2e
384 #define RK818_BUCK1_ON_VSEL_REG 0x2f
385 #define RK818_BUCK1_SLP_VSEL_REG 0x30
386 #define RK818_BUCK2_CONFIG_REG 0x32
387 #define RK818_BUCK2_ON_VSEL_REG 0x33
388 #define RK818_BUCK2_SLP_VSEL_REG 0x34
389 #define RK818_BUCK3_CONFIG_REG 0x36
390 #define RK818_BUCK4_CONFIG_REG 0x37
391 #define RK818_BUCK4_ON_VSEL_REG 0x38
392 #define RK818_BUCK4_SLP_VSEL_REG 0x39
393 #define RK818_BOOST_CONFIG_REG 0x3a
394 #define RK818_LDO1_ON_VSEL_REG 0x3b
395 #define RK818_LDO1_SLP_VSEL_REG 0x3c
396 #define RK818_LDO2_ON_VSEL_REG 0x3d
397 #define RK818_LDO2_SLP_VSEL_REG 0x3e
398 #define RK818_LDO3_ON_VSEL_REG 0x3f
399 #define RK818_LDO3_SLP_VSEL_REG 0x40
400 #define RK818_LDO4_ON_VSEL_REG 0x41
401 #define RK818_LDO4_SLP_VSEL_REG 0x42
402 #define RK818_LDO5_ON_VSEL_REG 0x43
403 #define RK818_LDO5_SLP_VSEL_REG 0x44
404 #define RK818_LDO6_ON_VSEL_REG 0x45
405 #define RK818_LDO6_SLP_VSEL_REG 0x46
406 #define RK818_LDO7_ON_VSEL_REG 0x47
407 #define RK818_LDO7_SLP_VSEL_REG 0x48
408 #define RK818_LDO8_ON_VSEL_REG 0x49
409 #define RK818_LDO8_SLP_VSEL_REG 0x4a
410 #define RK818_BOOST_LDO9_ON_VSEL_REG 0x54
411 #define RK818_BOOST_LDO9_SLP_VSEL_REG 0x55
412 #define RK818_DEVCTRL_REG 0x4b
413 #define RK818_INT_STS_REG1 0X4c
414 #define RK818_INT_STS_MSK_REG1 0x4d
415 #define RK818_INT_STS_REG2 0x4e
416 #define RK818_INT_STS_MSK_REG2 0x4f
417 #define RK818_IO_POL_REG 0x50
418 #define RK818_H5V_EN_REG 0x52
419 #define RK818_SLEEP_SET_OFF_REG3 0x53
420 #define RK818_BOOST_LDO9_ON_VSEL_REG 0x54
421 #define RK818_BOOST_LDO9_SLP_VSEL_REG 0x55
422 #define RK818_BOOST_CTRL_REG 0x56
423 #define RK818_DCDC_ILMAX 0x90
424 #define RK818_CHRG_COMP_REG 0x9a
425 #define RK818_SUP_STS_REG 0xa0
426 #define RK818_USB_CTRL_REG 0xa1
427 #define RK818_CHRG_CTRL_REG1 0xa3
428 #define RK818_CHRG_CTRL_REG2 0xa4
429 #define RK818_CHRG_CTRL_REG3 0xa5
430 #define RK818_BAT_CTRL_REG 0xa6
431 #define RK818_BAT_HTS_TS1_REG 0xa8
432 #define RK818_BAT_LTS_TS1_REG 0xa9
433 #define RK818_BAT_HTS_TS2_REG 0xaa
434 #define RK818_BAT_LTS_TS2_REG 0xab
435 #define RK818_TS_CTRL_REG 0xac
436 #define RK818_ADC_CTRL_REG 0xad
437 #define RK818_ON_SOURCE_REG 0xae
438 #define RK818_OFF_SOURCE_REG 0xaf
439 #define RK818_GGCON_REG 0xb0
440 #define RK818_GGSTS_REG 0xb1
441 #define RK818_FRAME_SMP_INTERV_REG 0xb2
442 #define RK818_AUTO_SLP_CUR_THR_REG 0xb3
443 #define RK818_GASCNT_CAL_REG3 0xb4
444 #define RK818_GASCNT_CAL_REG2 0xb5
445 #define RK818_GASCNT_CAL_REG1 0xb6
446 #define RK818_GASCNT_CAL_REG0 0xb7
447 #define RK818_GASCNT3_REG 0xb8
448 #define RK818_GASCNT2_REG 0xb9
449 #define RK818_GASCNT1_REG 0xba
450 #define RK818_GASCNT0_REG 0xbb
451 #define RK818_BAT_CUR_AVG_REGH 0xbc
452 #define RK818_BAT_CUR_AVG_REGL 0xbd
453 #define RK818_TS1_ADC_REGH 0xbe
454 #define RK818_TS1_ADC_REGL 0xbf
455 #define RK818_TS2_ADC_REGH 0xc0
456 #define RK818_TS2_ADC_REGL 0xc1
457 #define RK818_BAT_OCV_REGH 0xc2
458 #define RK818_BAT_OCV_REGL 0xc3
459 #define RK818_BAT_VOL_REGH 0xc4
460 #define RK818_BAT_VOL_REGL 0xc5
461 #define RK818_RELAX_ENTRY_THRES_REGH 0xc6
462 #define RK818_RELAX_ENTRY_THRES_REGL 0xc7
463 #define RK818_RELAX_EXIT_THRES_REGH 0xc8
464 #define RK818_RELAX_EXIT_THRES_REGL 0xc9
465 #define RK818_RELAX_VOL1_REGH 0xca
466 #define RK818_RELAX_VOL1_REGL 0xcb
467 #define RK818_RELAX_VOL2_REGH 0xcc
468 #define RK818_RELAX_VOL2_REGL 0xcd
469 #define RK818_BAT_CUR_R_CALC_REGH 0xce
470 #define RK818_BAT_CUR_R_CALC_REGL 0xcf
471 #define RK818_BAT_VOL_R_CALC_REGH 0xd0
472 #define RK818_BAT_VOL_R_CALC_REGL 0xd1
473 #define RK818_CAL_OFFSET_REGH 0xd2
474 #define RK818_CAL_OFFSET_REGL 0xd3
475 #define RK818_NON_ACT_TIMER_CNT_REG 0xd4
476 #define RK818_VCALIB0_REGH 0xd5
477 #define RK818_VCALIB0_REGL 0xd6
478 #define RK818_VCALIB1_REGH 0xd7
479 #define RK818_VCALIB1_REGL 0xd8
480 #define RK818_IOFFSET_REGH 0xdd
481 #define RK818_IOFFSET_REGL 0xde
482 #define RK818_SOC_REG 0xe0
483 #define RK818_REMAIN_CAP_REG3 0xe1
484 #define RK818_REMAIN_CAP_REG2 0xe2
485 #define RK818_REMAIN_CAP_REG1 0xe3
486 #define RK818_REMAIN_CAP_REG0 0xe4
487 #define RK818_UPDAT_LEVE_REG 0xe5
488 #define RK818_NEW_FCC_REG3 0xe6
489 #define RK818_NEW_FCC_REG2 0xe7
490 #define RK818_NEW_FCC_REG1 0xe8
491 #define RK818_NEW_FCC_REG0 0xe9
492 #define RK818_NON_ACT_TIMER_CNT_SAVE_REG 0xea
493 #define RK818_OCV_VOL_VALID_REG 0xeb
494 #define RK818_REBOOT_CNT_REG 0xec
495 #define RK818_POFFSET_REG 0xed
496 #define RK818_MISC_MARK_REG 0xee
497 #define RK818_HALT_CNT_REG 0xef
498 #define RK818_CALC_REST_REGH 0xf0
499 #define RK818_CALC_REST_REGL 0xf1
500 #define RK818_SAVE_DATA19 0xf2
501 #define RK818_NUM_REGULATOR 17
502 
503 #define RK818_H5V_EN BIT(0)
504 #define RK818_REF_RDY_CTRL BIT(1)
505 #define RK818_USB_ILIM_SEL_MASK 0xf
506 #define RK818_USB_ILMIN_2000MA 0x7
507 #define RK818_USB_CHG_SD_VSEL_MASK 0x70
508 
509 /* RK805 */
510 enum rk805_reg {
511     RK805_ID_DCDC1,
512     RK805_ID_DCDC2,
513     RK805_ID_DCDC3,
514     RK805_ID_DCDC4,
515     RK805_ID_LDO1,
516     RK805_ID_LDO2,
517     RK805_ID_LDO3,
518 };
519 
520 /* CONFIG REGISTER */
521 #define RK805_VB_MON_REG 0x21
522 #define RK805_THERMAL_REG 0x22
523 
524 /* POWER CHANNELS ENABLE REGISTER */
525 #define RK805_DCDC_EN_REG 0x23
526 #define RK805_SLP_DCDC_EN_REG 0x25
527 #define RK805_SLP_LDO_EN_REG 0x26
528 #define RK805_LDO_EN_REG 0x27
529 
530 /* BUCK AND LDO CONFIG REGISTER */
531 #define RK805_BUCK_LDO_SLP_LP_EN_REG 0x2A
532 #define RK805_BUCK1_CONFIG_REG 0x2E
533 #define RK805_BUCK1_ON_VSEL_REG 0x2F
534 #define RK805_BUCK1_SLP_VSEL_REG 0x30
535 #define RK805_BUCK2_CONFIG_REG 0x32
536 #define RK805_BUCK2_ON_VSEL_REG 0x33
537 #define RK805_BUCK2_SLP_VSEL_REG 0x34
538 #define RK805_BUCK3_CONFIG_REG 0x36
539 #define RK805_BUCK4_CONFIG_REG 0x37
540 #define RK805_BUCK4_ON_VSEL_REG 0x38
541 #define RK805_BUCK4_SLP_VSEL_REG 0x39
542 #define RK805_LDO1_ON_VSEL_REG 0x3B
543 #define RK805_LDO1_SLP_VSEL_REG 0x3C
544 #define RK805_LDO2_ON_VSEL_REG 0x3D
545 #define RK805_LDO2_SLP_VSEL_REG 0x3E
546 #define RK805_LDO3_ON_VSEL_REG 0x3F
547 #define RK805_LDO3_SLP_VSEL_REG 0x40
548 
549 /* INTERRUPT REGISTER */
550 #define RK805_PWRON_LP_INT_TIME_REG 0x47
551 #define RK805_PWRON_DB_REG 0x48
552 #define RK805_DEV_CTRL_REG 0x4B
553 #define RK805_INT_STS_REG 0x4C
554 #define RK805_INT_STS_MSK_REG 0x4D
555 #define RK805_GPIO_IO_POL_REG 0x50
556 #define RK805_OUT_REG 0x52
557 #define RK805_ON_SOURCE_REG 0xAE
558 #define RK805_OFF_SOURCE_REG 0xAF
559 
560 #define RK805_NUM_REGULATORS 7
561 
562 #define RK805_PWRON_FALL_RISE_INT_EN 0x0
563 #define RK805_PWRON_FALL_RISE_INT_MSK 0x81
564 
565 /* RK805 IRQ Definitions */
566 #define RK805_IRQ_VB_LOW 1
567 #define RK805_IRQ_PWRON 2
568 #define RK805_IRQ_PWRON_LP 3
569 #define RK805_IRQ_HOTDIE 4
570 #define RK805_IRQ_RTC_ALARM 5
571 #define RK805_IRQ_RTC_PERIOD 6
572 
573 /*
574  * When PMIC irq occurs, regmap-irq.c will traverse all PMIC child
575  * interrupts from low index 0 to high index, we give fall interrupt
576  * high priority to be called earlier than rise, so that it can be
577  * override by late rise event. This can helps to solve key release
578  * glitch which make a wrongly fall event immediately after rise.
579  */
580 #define RK805_IRQ_PWRON_FALL 0
581 #define RK805_IRQ_PWRON_RISE 7
582 
583 #define RK805_IRQ_PWRON_RISE_MSK BIT(0)
584 #define RK805_IRQ_VB_LOW_MSK BIT(1)
585 #define RK805_IRQ_PWRON_MSK BIT(2)
586 #define RK805_IRQ_PWRON_LP_MSK BIT(3)
587 #define RK805_IRQ_HOTDIE_MSK BIT(4)
588 #define RK805_IRQ_RTC_ALARM_MSK BIT(5)
589 #define RK805_IRQ_RTC_PERIOD_MSK BIT(6)
590 #define RK805_IRQ_PWRON_FALL_MSK BIT(7)
591 
592 #define RK805_PWR_RISE_INT_STATUS BIT(0)
593 #define RK805_VB_LOW_INT_STATUS BIT(1)
594 #define RK805_PWRON_INT_STATUS BIT(2)
595 #define RK805_PWRON_LP_INT_STATUS BIT(3)
596 #define RK805_HOTDIE_INT_STATUS BIT(4)
597 #define RK805_ALARM_INT_STATUS BIT(5)
598 #define RK805_PERIOD_INT_STATUS BIT(6)
599 #define RK805_PWR_FALL_INT_STATUS BIT(7)
600 
601 #define RK805_BUCK1_2_ILMAX_MASK (3 << 6)
602 #define RK805_BUCK3_4_ILMAX_MASK (3 << 3)
603 #define RK805_RTC_PERIOD_INT_MASK (1 << 6)
604 #define RK805_RTC_ALARM_INT_MASK (1 << 5)
605 #define RK805_INT_ALARM_EN (1 << 3)
606 #define RK805_INT_TIMER_EN (1 << 2)
607 
608 #define RK805_SLP_LDO_EN_OFFSET (-1)
609 #define RK805_SLP_DCDC_EN_OFFSET 2
610 
611 #define RK805_RAMP_RATE_OFFSET 3
612 #define RK805_RAMP_RATE_MASK (3 << RK805_RAMP_RATE_OFFSET)
613 #define RK805_RAMP_RATE_3MV_PER_US (0 << RK805_RAMP_RATE_OFFSET)
614 #define RK805_RAMP_RATE_6MV_PER_US (1 << RK805_RAMP_RATE_OFFSET)
615 #define RK805_RAMP_RATE_12_5MV_PER_US (2 << RK805_RAMP_RATE_OFFSET)
616 #define RK805_RAMP_RATE_25MV_PER_US (3 << RK805_RAMP_RATE_OFFSET)
617 
618 /* RK808 IRQ Definitions */
619 #define RK808_IRQ_VOUT_LO 0
620 #define RK808_IRQ_VB_LO 1
621 #define RK808_IRQ_PWRON 2
622 #define RK808_IRQ_PWRON_LP 3
623 #define RK808_IRQ_HOTDIE 4
624 #define RK808_IRQ_RTC_ALARM 5
625 #define RK808_IRQ_RTC_PERIOD 6
626 #define RK808_IRQ_PLUG_IN_INT 7
627 #define RK808_IRQ_PLUG_OUT_INT 8
628 #define RK808_NUM_IRQ 9
629 
630 #define RK808_IRQ_VOUT_LO_MSK BIT(0)
631 #define RK808_IRQ_VB_LO_MSK BIT(1)
632 #define RK808_IRQ_PWRON_MSK BIT(2)
633 #define RK808_IRQ_PWRON_LP_MSK BIT(3)
634 #define RK808_IRQ_HOTDIE_MSK BIT(4)
635 #define RK808_IRQ_RTC_ALARM_MSK BIT(5)
636 #define RK808_IRQ_RTC_PERIOD_MSK BIT(6)
637 #define RK808_IRQ_PLUG_IN_INT_MSK BIT(0)
638 #define RK808_IRQ_PLUG_OUT_INT_MSK BIT(1)
639 
640 /* RK818 IRQ Definitions */
641 #define RK818_IRQ_VOUT_LO 0
642 #define RK818_IRQ_VB_LO 1
643 #define RK818_IRQ_PWRON 2
644 #define RK818_IRQ_PWRON_LP 3
645 #define RK818_IRQ_HOTDIE 4
646 #define RK818_IRQ_RTC_ALARM 5
647 #define RK818_IRQ_RTC_PERIOD 6
648 #define RK818_IRQ_USB_OV 7
649 #define RK818_IRQ_PLUG_IN 8
650 #define RK818_IRQ_PLUG_OUT 9
651 #define RK818_IRQ_CHG_OK 10
652 #define RK818_IRQ_CHG_TE 11
653 #define RK818_IRQ_CHG_TS1 12
654 #define RK818_IRQ_TS2 13
655 #define RK818_IRQ_CHG_CVTLIM 14
656 #define RK818_IRQ_DISCHG_ILIM 15
657 
658 #define RK818_IRQ_VOUT_LO_MSK BIT(0)
659 #define RK818_IRQ_VB_LO_MSK BIT(1)
660 #define RK818_IRQ_PWRON_MSK BIT(2)
661 #define RK818_IRQ_PWRON_LP_MSK BIT(3)
662 #define RK818_IRQ_HOTDIE_MSK BIT(4)
663 #define RK818_IRQ_RTC_ALARM_MSK BIT(5)
664 #define RK818_IRQ_RTC_PERIOD_MSK BIT(6)
665 #define RK818_IRQ_USB_OV_MSK BIT(7)
666 #define RK818_IRQ_PLUG_IN_MSK BIT(0)
667 #define RK818_IRQ_PLUG_OUT_MSK BIT(1)
668 #define RK818_IRQ_CHG_OK_MSK BIT(2)
669 #define RK818_IRQ_CHG_TE_MSK BIT(3)
670 #define RK818_IRQ_CHG_TS1_MSK BIT(4)
671 #define RK818_IRQ_TS2_MSK BIT(5)
672 #define RK818_IRQ_CHG_CVTLIM_MSK BIT(6)
673 #define RK818_IRQ_DISCHG_ILIM_MSK BIT(7)
674 
675 #define RK818_NUM_IRQ 16
676 
677 /* RK818_DCDC_EN_REG */
678 #define BUCK1_EN_MASK BIT(0)
679 #define BUCK2_EN_MASK BIT(1)
680 #define BUCK3_EN_MASK BIT(2)
681 #define BUCK4_EN_MASK BIT(3)
682 #define BOOST_EN_MASK BIT(4)
683 #define LDO9_EN_MASK BIT(5)
684 #define SWITCH_EN_MASK BIT(6)
685 #define OTG_EN_MASK BIT(7)
686 
687 #define BUCK1_EN_ENABLE BIT(0)
688 #define BUCK2_EN_ENABLE BIT(1)
689 #define BUCK3_EN_ENABLE BIT(2)
690 #define BUCK4_EN_ENABLE BIT(3)
691 #define BOOST_EN_ENABLE BIT(4)
692 #define LDO9_EN_ENABLE BIT(5)
693 #define SWITCH_EN_ENABLE BIT(6)
694 #define OTG_EN_ENABLE BIT(7)
695 
696 #define BUCK1_SLP_SET_MASK BIT(0)
697 #define BUCK2_SLP_SET_MASK BIT(1)
698 #define BUCK3_SLP_SET_MASK BIT(2)
699 #define BUCK4_SLP_SET_MASK BIT(3)
700 #define BOOST_SLP_SET_MASK BIT(4)
701 #define LDO9_SLP_SET_MASK BIT(5)
702 #define SWITCH_SLP_SET_MASK BIT(6)
703 #define OTG_SLP_SET_MASK BIT(7)
704 
705 #define BUCK1_SLP_SET_OFF BIT(0)
706 #define BUCK2_SLP_SET_OFF BIT(1)
707 #define BUCK3_SLP_SET_OFF BIT(2)
708 #define BUCK4_SLP_SET_OFF BIT(3)
709 #define BOOST_SLP_SET_OFF BIT(4)
710 #define LDO9_SLP_SET_OFF BIT(5)
711 #define SWITCH_SLP_SET_OFF BIT(6)
712 #define OTG_SLP_SET_OFF BIT(7)
713 #define OTG_BOOST_SLP_OFF (BOOST_SLP_SET_OFF | OTG_SLP_SET_OFF)
714 
715 #define BUCK1_SLP_SET_ON BIT(0)
716 #define BUCK2_SLP_SET_ON BIT(1)
717 #define BUCK3_SLP_SET_ON BIT(2)
718 #define BUCK4_SLP_SET_ON BIT(3)
719 #define BOOST_SLP_SET_ON BIT(4)
720 #define LDO9_SLP_SET_ON BIT(5)
721 #define SWITCH_SLP_SET_ON BIT(6)
722 #define OTG_SLP_SET_ON BIT(7)
723 
724 #define VOUT_LO_MASK BIT(0)
725 #define VB_LO_MASK BIT(1)
726 #define PWRON_MASK BIT(2)
727 #define PWRON_LP_MASK BIT(3)
728 #define HOTDIE_MASK BIT(4)
729 #define RTC_ALARM_MASK BIT(5)
730 #define RTC_PERIOD_MASK BIT(6)
731 #define USB_OV_MASK BIT(7)
732 
733 #define VOUT_LO_DISABLE BIT(0)
734 #define VB_LO_DISABLE BIT(1)
735 #define PWRON_DISABLE BIT(2)
736 #define PWRON_LP_DISABLE BIT(3)
737 #define HOTDIE_DISABLE BIT(4)
738 #define RTC_ALARM_DISABLE BIT(5)
739 #define RTC_PERIOD_DISABLE BIT(6)
740 #define USB_OV_INT_DISABLE BIT(7)
741 
742 #define VOUT_LO_ENABLE (0 << 0)
743 #define VB_LO_ENABLE (0 << 1)
744 #define PWRON_ENABLE (0 << 2)
745 #define PWRON_LP_ENABLE (0 << 3)
746 #define HOTDIE_ENABLE (0 << 4)
747 #define RTC_ALARM_ENABLE (0 << 5)
748 #define RTC_PERIOD_ENABLE (0 << 6)
749 #define USB_OV_INT_ENABLE (0 << 7)
750 
751 #define PLUG_IN_MASK BIT(0)
752 #define PLUG_OUT_MASK BIT(1)
753 #define CHGOK_MASK BIT(2)
754 #define CHGTE_MASK BIT(3)
755 #define CHGTS1_MASK BIT(4)
756 #define TS2_MASK BIT(5)
757 #define CHG_CVTLIM_MASK BIT(6)
758 #define DISCHG_ILIM_MASK BIT(7)
759 
760 #define PLUG_IN_DISABLE BIT(0)
761 #define PLUG_OUT_DISABLE BIT(1)
762 #define CHGOK_DISABLE BIT(2)
763 #define CHGTE_DISABLE BIT(3)
764 #define CHGTS1_DISABLE BIT(4)
765 #define TS2_DISABLE BIT(5)
766 #define CHG_CVTLIM_DISABLE BIT(6)
767 #define DISCHG_ILIM_DISABLE BIT(7)
768 
769 #define PLUG_IN_ENABLE BIT(0)
770 #define PLUG_OUT_ENABLE BIT(1)
771 #define CHGOK_ENABLE BIT(2)
772 #define CHGTE_ENABLE BIT(3)
773 #define CHGTS1_ENABLE BIT(4)
774 #define TS2_ENABLE BIT(5)
775 #define CHG_CVTLIM_ENABLE BIT(6)
776 #define DISCHG_ILIM_ENABLE BIT(7)
777 
778 #define RK808_VBAT_LOW_2V8 0x00
779 #define RK808_VBAT_LOW_2V9 0x01
780 #define RK808_VBAT_LOW_3V0 0x02
781 #define RK808_VBAT_LOW_3V1 0x03
782 #define RK808_VBAT_LOW_3V2 0x04
783 #define RK808_VBAT_LOW_3V3 0x05
784 #define RK808_VBAT_LOW_3V4 0x06
785 #define RK808_VBAT_LOW_3V5 0x07
786 #define VBAT_LOW_VOL_MASK (0x07 << 0)
787 #define EN_VABT_LOW_SHUT_DOWN (0x00 << 4)
788 #define EN_VBAT_LOW_IRQ (0x1 << 4)
789 #define VBAT_LOW_ACT_MASK (0x1 << 4)
790 
791 #define BUCK_ILMIN_MASK (7 << 0)
792 #define BOOST_ILMIN_MASK (7 << 0)
793 #define BUCK1_RATE_MASK (3 << 3)
794 #define BUCK2_RATE_MASK (3 << 3)
795 #define MASK_ALL 0xff
796 
797 #define BUCK_UV_ACT_MASK 0x0f
798 #define BUCK_UV_ACT_DISABLE 0
799 
800 #define SWITCH2_EN BIT(6)
801 #define SWITCH1_EN BIT(5)
802 #define DEV_OFF_RST BIT(3)
803 #define DEV_OFF BIT(0)
804 #define RTC_STOP BIT(0)
805 
806 #define VB_LO_ACT BIT(4)
807 #define VB_LO_SEL_3500MV (7 << 0)
808 
809 #define VOUT_LO_INT BIT(0)
810 #define CLK32KOUT2_EN BIT(0)
811 #define CLK32KOUT2_FUNC (0 << 1)
812 #define CLK32KOUT2_FUNC_MASK BIT(1)
813 
814 #define TEMP105C 0x08
815 #define TEMP115C 0x0c
816 #define TEMP_HOTDIE_MSK 0x0c
817 #define SLP_SD_MSK (0x3 << 2)
818 #define SHUTDOWN_FUN (0x2 << 2)
819 #define SLEEP_FUN (0x1 << 2)
820 #define RK8XX_ID_MSK 0xfff0
821 #define PWM_MODE_MSK BIT(7)
822 #define FPWM_MODE BIT(7)
823 #define AUTO_PWM_MODE 0
824 #define REGS_WMSK 0xf0
825 
826 enum rk817_reg_id {
827     RK817_ID_DCDC1 = 0,
828     RK817_ID_DCDC2,
829     RK817_ID_DCDC3,
830     RK817_ID_DCDC4,
831     RK817_ID_LDO1,
832     RK817_ID_LDO2,
833     RK817_ID_LDO3,
834     RK817_ID_LDO4,
835     RK817_ID_LDO5,
836     RK817_ID_LDO6,
837     RK817_ID_LDO7,
838     RK817_ID_LDO8,
839     RK817_ID_LDO9,
840     RK817_ID_BOOST,
841     RK817_ID_BOOST_OTG_SW,
842     RK817_NUM_REGULATORS
843 };
844 
845 enum rk809_reg_id { RK809_ID_DCDC5 = RK817_ID_BOOST, RK809_ID_SW1, RK809_ID_SW2, RK809_NUM_REGULATORS };
846 
847 #define RK817_SECONDS_REG 0x00
848 #define RK817_MINUTES_REG 0x01
849 #define RK817_HOURS_REG 0x02
850 #define RK817_DAYS_REG 0x03
851 #define RK817_MONTHS_REG 0x04
852 #define RK817_YEARS_REG 0x05
853 #define RK817_WEEKS_REG 0x06
854 #define RK817_ALARM_SECONDS_REG 0x07
855 #define RK817_ALARM_MINUTES_REG 0x08
856 #define RK817_ALARM_HOURS_REG 0x09
857 #define RK817_ALARM_DAYS_REG 0x0a
858 #define RK817_ALARM_MONTHS_REG 0x0b
859 #define RK817_ALARM_YEARS_REG 0x0c
860 #define RK817_RTC_CTRL_REG 0xd
861 #define RK817_RTC_STATUS_REG 0xe
862 #define RK817_RTC_INT_REG 0xf
863 #define RK817_RTC_COMP_LSB_REG 0x10
864 #define RK817_RTC_COMP_MSB_REG 0x11
865 #define RK817_ADC_CONFIG0 0x50
866 #define RK817_CURE_ADC_K0 0xb0
867 #define RK817_POWER_EN_SAVE0 0x99
868 #define RK817_POWER_EN_SAVE1 0xa4
869 
870 #define RK817_POWER_EN_REG(i) (0xb1 + (i))
871 #define RK817_POWER_SLP_EN_REG(i) (0xb5 + (i))
872 
873 #define RK817_POWER_CONFIG (0xb9)
874 
875 #define RK817_BUCK_CONFIG_REG(i) (0xba + (i)*3)
876 
877 #define RK817_BUCK1_ON_VSEL_REG 0xBB
878 #define RK817_BUCK1_SLP_VSEL_REG 0xBC
879 
880 #define RK817_BUCK2_CONFIG_REG 0xBD
881 #define RK817_BUCK2_ON_VSEL_REG 0xBE
882 #define RK817_BUCK2_SLP_VSEL_REG 0xBF
883 
884 #define RK817_BUCK3_CONFIG_REG 0xC0
885 #define RK817_BUCK3_ON_VSEL_REG 0xC1
886 #define RK817_BUCK3_SLP_VSEL_REG 0xC2
887 
888 #define RK817_BUCK4_CONFIG_REG 0xC3
889 #define RK817_BUCK4_ON_VSEL_REG 0xC4
890 #define RK817_BUCK4_SLP_VSEL_REG 0xC5
891 
892 #define RK817_LDO_ON_VSEL_REG(idx) (0xcc + (idx)*2)
893 #define RK817_BOOST_OTG_CFG (0xde)
894 
895 #define RK817_CHRG_OUT 0xe4
896 #define RK817_CHRG_IN 0xe5
897 #define RK817_CHRG_STS 0xeb
898 #define RK817_ID_MSB 0xed
899 #define RK817_ID_LSB 0xee
900 
901 #define RK817_SYS_STS 0xf0
902 #define RK817_SYS_CFG(i) (0xf1 + (i))
903 
904 #define RK817_ON_SOURCE_REG 0xf5
905 #define RK817_OFF_SOURCE_REG 0xf6
906 
907 /* INTERRUPT REGISTER */
908 #define RK817_INT_STS_REG0 0xf8
909 #define RK817_INT_STS_MSK_REG0 0xf9
910 #define RK817_INT_STS_REG1 0xfa
911 #define RK817_INT_STS_MSK_REG1 0xfb
912 #define RK817_INT_STS_REG2 0xfc
913 #define RK817_INT_STS_MSK_REG2 0xfd
914 #define RK817_GPIO_INT_CFG 0xfe
915 
916 /* IRQ Definitions */
917 #define RK817_IRQ_PWRON_FALL 0
918 #define RK817_IRQ_PWRON_RISE 1
919 #define RK817_IRQ_PWRON 2
920 #define RK817_IRQ_PWMON_LP 3
921 #define RK817_IRQ_HOTDIE 4
922 #define RK817_IRQ_RTC_ALARM 5
923 #define RK817_IRQ_RTC_PERIOD 6
924 #define RK817_IRQ_VB_LO 7
925 #define RK817_IRQ_PLUG_IN 8
926 #define RK817_IRQ_PLUG_OUT 9
927 #define RK817_IRQ_CHRG_TERM 10
928 #define RK817_IRQ_CHRG_TIME 11
929 #define RK817_IRQ_CHRG_TS 12
930 #define RK817_IRQ_USB_OV 13
931 #define RK817_IRQ_CHRG_IN_CLMP 14
932 #define RK817_IRQ_BAT_DIS_ILIM 15
933 #define RK817_IRQ_GATE_GPIO 16
934 #define RK817_IRQ_TS_GPIO 17
935 #define RK817_IRQ_CODEC_PD 18
936 #define RK817_IRQ_CODEC_PO 19
937 #define RK817_IRQ_CLASSD_MUTE_DONE 20
938 #define RK817_IRQ_CLASSD_OCP 21
939 #define RK817_IRQ_BAT_OVP 22
940 #define RK817_IRQ_CHRG_BAT_HI 23
941 #define RK817_IRQ_END (RK817_IRQ_CHRG_BAT_HI + 1)
942 
943 /*
944  * rtc_ctrl 0xd
945  * same as 808, except bit4
946  */
947 #define RK817_RTC_CTRL_RSV4 BIT(4)
948 
949 /* power config 0xb9 */
950 #define RK817_BUCK3_FB_RES_MSK BIT(6)
951 #define RK817_BUCK3_FB_RES_INTER BIT(6)
952 #define RK817_BUCK3_FB_RES_EXT 0
953 
954 /* buck config 0xba */
955 #define RK817_RAMP_RATE_OFFSET 6
956 #define RK817_RAMP_RATE_MASK (0x3 << RK817_RAMP_RATE_OFFSET)
957 #define RK817_RAMP_RATE_3MV_PER_US (0x0 << RK817_RAMP_RATE_OFFSET)
958 #define RK817_RAMP_RATE_6_3MV_PER_US (0x1 << RK817_RAMP_RATE_OFFSET)
959 #define RK817_RAMP_RATE_12_5MV_PER_US (0x2 << RK817_RAMP_RATE_OFFSET)
960 #define RK817_RAMP_RATE_25MV_PER_US (0x3 << RK817_RAMP_RATE_OFFSET)
961 
962 /* sys_cfg1 0xf2 */
963 #define RK817_HOTDIE_TEMP_MSK (0x3 << 4)
964 #define RK817_HOTDIE_85 (0x0 << 4)
965 #define RK817_HOTDIE_95 (0x1 << 4)
966 #define RK817_HOTDIE_105 (0x2 << 4)
967 #define RK817_HOTDIE_115 (0x3 << 4)
968 
969 #define RK817_TSD_TEMP_MSK BIT(6)
970 #define RK817_TSD_140 0
971 #define RK817_TSD_160 BIT(6)
972 
973 #define RK817_CLK32KOUT2_EN BIT(7)
974 
975 /* sys_cfg3 0xf4 */
976 #define RK817_SLPPIN_FUNC_MSK (0x3 << 3)
977 #define SLPPIN_NULL_FUN (0x0 << 3)
978 #define SLPPIN_SLP_FUN (0x1 << 3)
979 #define SLPPIN_DN_FUN (0x2 << 3)
980 #define SLPPIN_RST_FUN (0x3 << 3)
981 
982 #define RK817_RST_FUNC_MSK (0x3 << 6)
983 #define RK817_RST_FUNC_SFT (6)
984 #define RK817_RST_FUNC_CNT (3)
985 #define RK817_RST_FUNC_DEV (0)        /* reset the dev */
986 #define RK817_RST_FUNC_REG (0x1 << 6) /* reset the reg only */
987 
988 #define RK817_SLPPOL_MSK BIT(5)
989 #define RK817_SLPPOL_H BIT(5)
990 #define RK817_SLPPOL_L (0)
991 
992 /* gpio&int 0xfe */
993 #define RK817_INT_POL_MSK BIT(1)
994 #define RK817_INT_POL_H BIT(1)
995 #define RK817_INT_POL_L 0
996 #define RK809_BUCK5_CONFIG(i) (RK817_BOOST_OTG_CFG + (i)*1)
997 
998 #define RK_REG_BITS 8
999 #define RK_VAL_BITS 8
1000 #define RK_REG_VAL_ZERO 0
1001 #define RK_REG_VAL_THREE 3
1002 #define RK_REG_SHIFT_MASK_ZERO 0
1003 #define RK_REG_SHIFT_MASK_ONE 1
1004 #define RK_REG_SHIFT_MASK_TWO 2
1005 #define RK_REG_SHIFT_MASK_THREE 3
1006 #define RK_REG_SHIFT_MASK_FOUR 4
1007 #define RK_REG_SHIFT_MASK_FIVE 5
1008 #define RK_REG_SHIFT_MASK_SIX 6
1009 #define RK_REG_SHIFT_MASK_SEVEN 7
1010 #define RK_REG_SHIFT_MASK_EIGHT 8
1011 #define RK_DELAY_COUNT_TWO_MS 2
1012 #define RK_DELAY_COUNT_TEN_MS 10
1013 #define RK_SSCAN_RET_RESULT_ONE 1
1014 #define RK_SSCAN_RET_RESULT_TWO 2
1015 #define RK_SSCAN_RET_RESULT_THREE 3
1016 #define RK_INPUT_MASK 0xff
1017 #define RK_BYTE_HIGH_FOUR_BIT_MASK 0xf0
1018 #define RK_BYTE_LOW_FOUR_BIT_MASK 0x0f
1019 #define RK_BYTE_FOUR_BIT_SHIFT_MASK 4
1020 #define RK_POWER_EN_REG_VALUE_ZERO 0
1021 #define RK_POWER_EN_REG_VALUE_ONE 1
1022 #define RK_POWER_EN_REG_VALUE_TWO 2
1023 #define RK_POWER_EN_REG_VALUE_THREE 3
1024 
1025 enum {
1026     BUCK_ILMIN_50MA,
1027     BUCK_ILMIN_100MA,
1028     BUCK_ILMIN_150MA,
1029     BUCK_ILMIN_200MA,
1030     BUCK_ILMIN_250MA,
1031     BUCK_ILMIN_300MA,
1032     BUCK_ILMIN_350MA,
1033     BUCK_ILMIN_400MA,
1034 };
1035 
1036 enum {
1037     BOOST_ILMIN_75MA,
1038     BOOST_ILMIN_100MA,
1039     BOOST_ILMIN_125MA,
1040     BOOST_ILMIN_150MA,
1041     BOOST_ILMIN_175MA,
1042     BOOST_ILMIN_200MA,
1043     BOOST_ILMIN_225MA,
1044     BOOST_ILMIN_250MA,
1045 };
1046 
1047 enum {
1048     RK805_BUCK1_2_ILMAX_2500MA,
1049     RK805_BUCK1_2_ILMAX_3000MA,
1050     RK805_BUCK1_2_ILMAX_3500MA,
1051     RK805_BUCK1_2_ILMAX_4000MA,
1052 };
1053 
1054 enum {
1055     RK805_BUCK3_ILMAX_1500MA,
1056     RK805_BUCK3_ILMAX_2000MA,
1057     RK805_BUCK3_ILMAX_2500MA,
1058     RK805_BUCK3_ILMAX_3000MA,
1059 };
1060 
1061 enum {
1062     RK805_BUCK4_ILMAX_2000MA,
1063     RK805_BUCK4_ILMAX_2500MA,
1064     RK805_BUCK4_ILMAX_3000MA,
1065     RK805_BUCK4_ILMAX_3500MA,
1066 };
1067 
1068 enum {
1069     RK805_ID = 0x8050,
1070     RK808_ID = 0x0000,
1071     RK809_ID = 0x8090,
1072     RK816_ID = 0x8160,
1073     RK817_ID = 0x8170,
1074     RK818_ID = 0x8180,
1075 };
1076 
1077 struct rk808_pin_info {
1078     struct pinctrl *p;
1079     struct pinctrl_state *reset;
1080     struct pinctrl_state *power_off;
1081     struct pinctrl_state *sleep;
1082 };
1083 
1084 struct rk808 {
1085     struct i2c_client *i2c;
1086     struct regmap_irq_chip_data *irq_data;
1087     struct regmap_irq_chip_data *battery_irq_data;
1088     struct regmap *regmap;
1089     long variant;
1090     const struct regmap_config *regmap_cfg;
1091     const struct regmap_irq_chip *regmap_irq_chip;
1092     void (*pm_pwroff_prep_fn)(void);
1093     struct rk808_pin_info *pins;
1094 };
1095 #endif /* __LINUX_REGULATOR_RK808_H */
1096