1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun * tps65910.h -- TI TPS6591x
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * Copyright 2010-2011 Texas Instruments Inc.
6*4882a593Smuzhiyun *
7*4882a593Smuzhiyun * Author: Graeme Gregory <gg@slimlogic.co.uk>
8*4882a593Smuzhiyun * Author: Jorge Eduardo Candelaria <jedu@slimlogic.co.uk>
9*4882a593Smuzhiyun * Author: Arnaud Deconinck <a-deconinck@ti.com>
10*4882a593Smuzhiyun */
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun #ifndef __LINUX_MFD_TPS65910_H
13*4882a593Smuzhiyun #define __LINUX_MFD_TPS65910_H
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun #include <linux/gpio.h>
16*4882a593Smuzhiyun #include <linux/regmap.h>
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun /* TPS chip id list */
19*4882a593Smuzhiyun #define TPS65910 0
20*4882a593Smuzhiyun #define TPS65911 1
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun /* TPS regulator type list */
23*4882a593Smuzhiyun #define REGULATOR_LDO 0
24*4882a593Smuzhiyun #define REGULATOR_DCDC 1
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun /*
27*4882a593Smuzhiyun * List of registers for component TPS65910
28*4882a593Smuzhiyun *
29*4882a593Smuzhiyun */
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun #define TPS65910_SECONDS 0x0
32*4882a593Smuzhiyun #define TPS65910_MINUTES 0x1
33*4882a593Smuzhiyun #define TPS65910_HOURS 0x2
34*4882a593Smuzhiyun #define TPS65910_DAYS 0x3
35*4882a593Smuzhiyun #define TPS65910_MONTHS 0x4
36*4882a593Smuzhiyun #define TPS65910_YEARS 0x5
37*4882a593Smuzhiyun #define TPS65910_WEEKS 0x6
38*4882a593Smuzhiyun #define TPS65910_ALARM_SECONDS 0x8
39*4882a593Smuzhiyun #define TPS65910_ALARM_MINUTES 0x9
40*4882a593Smuzhiyun #define TPS65910_ALARM_HOURS 0xA
41*4882a593Smuzhiyun #define TPS65910_ALARM_DAYS 0xB
42*4882a593Smuzhiyun #define TPS65910_ALARM_MONTHS 0xC
43*4882a593Smuzhiyun #define TPS65910_ALARM_YEARS 0xD
44*4882a593Smuzhiyun #define TPS65910_RTC_CTRL 0x10
45*4882a593Smuzhiyun #define TPS65910_RTC_STATUS 0x11
46*4882a593Smuzhiyun #define TPS65910_RTC_INTERRUPTS 0x12
47*4882a593Smuzhiyun #define TPS65910_RTC_COMP_LSB 0x13
48*4882a593Smuzhiyun #define TPS65910_RTC_COMP_MSB 0x14
49*4882a593Smuzhiyun #define TPS65910_RTC_RES_PROG 0x15
50*4882a593Smuzhiyun #define TPS65910_RTC_RESET_STATUS 0x16
51*4882a593Smuzhiyun #define TPS65910_BCK1 0x17
52*4882a593Smuzhiyun #define TPS65910_BCK2 0x18
53*4882a593Smuzhiyun #define TPS65910_BCK3 0x19
54*4882a593Smuzhiyun #define TPS65910_BCK4 0x1A
55*4882a593Smuzhiyun #define TPS65910_BCK5 0x1B
56*4882a593Smuzhiyun #define TPS65910_PUADEN 0x1C
57*4882a593Smuzhiyun #define TPS65910_REF 0x1D
58*4882a593Smuzhiyun #define TPS65910_VRTC 0x1E
59*4882a593Smuzhiyun #define TPS65910_VIO 0x20
60*4882a593Smuzhiyun #define TPS65910_VDD1 0x21
61*4882a593Smuzhiyun #define TPS65910_VDD1_OP 0x22
62*4882a593Smuzhiyun #define TPS65910_VDD1_SR 0x23
63*4882a593Smuzhiyun #define TPS65910_VDD2 0x24
64*4882a593Smuzhiyun #define TPS65910_VDD2_OP 0x25
65*4882a593Smuzhiyun #define TPS65910_VDD2_SR 0x26
66*4882a593Smuzhiyun #define TPS65910_VDD3 0x27
67*4882a593Smuzhiyun #define TPS65910_VDIG1 0x30
68*4882a593Smuzhiyun #define TPS65910_VDIG2 0x31
69*4882a593Smuzhiyun #define TPS65910_VAUX1 0x32
70*4882a593Smuzhiyun #define TPS65910_VAUX2 0x33
71*4882a593Smuzhiyun #define TPS65910_VAUX33 0x34
72*4882a593Smuzhiyun #define TPS65910_VMMC 0x35
73*4882a593Smuzhiyun #define TPS65910_VPLL 0x36
74*4882a593Smuzhiyun #define TPS65910_VDAC 0x37
75*4882a593Smuzhiyun #define TPS65910_THERM 0x38
76*4882a593Smuzhiyun #define TPS65910_BBCH 0x39
77*4882a593Smuzhiyun #define TPS65910_DCDCCTRL 0x3E
78*4882a593Smuzhiyun #define TPS65910_DEVCTRL 0x3F
79*4882a593Smuzhiyun #define TPS65910_DEVCTRL2 0x40
80*4882a593Smuzhiyun #define TPS65910_SLEEP_KEEP_LDO_ON 0x41
81*4882a593Smuzhiyun #define TPS65910_SLEEP_KEEP_RES_ON 0x42
82*4882a593Smuzhiyun #define TPS65910_SLEEP_SET_LDO_OFF 0x43
83*4882a593Smuzhiyun #define TPS65910_SLEEP_SET_RES_OFF 0x44
84*4882a593Smuzhiyun #define TPS65910_EN1_LDO_ASS 0x45
85*4882a593Smuzhiyun #define TPS65910_EN1_SMPS_ASS 0x46
86*4882a593Smuzhiyun #define TPS65910_EN2_LDO_ASS 0x47
87*4882a593Smuzhiyun #define TPS65910_EN2_SMPS_ASS 0x48
88*4882a593Smuzhiyun #define TPS65910_EN3_LDO_ASS 0x49
89*4882a593Smuzhiyun #define TPS65910_SPARE 0x4A
90*4882a593Smuzhiyun #define TPS65910_INT_STS 0x50
91*4882a593Smuzhiyun #define TPS65910_INT_MSK 0x51
92*4882a593Smuzhiyun #define TPS65910_INT_STS2 0x52
93*4882a593Smuzhiyun #define TPS65910_INT_MSK2 0x53
94*4882a593Smuzhiyun #define TPS65910_INT_STS3 0x54
95*4882a593Smuzhiyun #define TPS65910_INT_MSK3 0x55
96*4882a593Smuzhiyun #define TPS65910_GPIO0 0x60
97*4882a593Smuzhiyun #define TPS65910_GPIO1 0x61
98*4882a593Smuzhiyun #define TPS65910_GPIO2 0x62
99*4882a593Smuzhiyun #define TPS65910_GPIO3 0x63
100*4882a593Smuzhiyun #define TPS65910_GPIO4 0x64
101*4882a593Smuzhiyun #define TPS65910_GPIO5 0x65
102*4882a593Smuzhiyun #define TPS65910_GPIO6 0x66
103*4882a593Smuzhiyun #define TPS65910_GPIO7 0x67
104*4882a593Smuzhiyun #define TPS65910_GPIO8 0x68
105*4882a593Smuzhiyun #define TPS65910_JTAGVERNUM 0x80
106*4882a593Smuzhiyun #define TPS65910_MAX_REGISTER 0x80
107*4882a593Smuzhiyun
108*4882a593Smuzhiyun /*
109*4882a593Smuzhiyun * List of registers specific to TPS65911
110*4882a593Smuzhiyun */
111*4882a593Smuzhiyun #define TPS65911_VDDCTRL 0x27
112*4882a593Smuzhiyun #define TPS65911_VDDCTRL_OP 0x28
113*4882a593Smuzhiyun #define TPS65911_VDDCTRL_SR 0x29
114*4882a593Smuzhiyun #define TPS65911_LDO1 0x30
115*4882a593Smuzhiyun #define TPS65911_LDO2 0x31
116*4882a593Smuzhiyun #define TPS65911_LDO5 0x32
117*4882a593Smuzhiyun #define TPS65911_LDO8 0x33
118*4882a593Smuzhiyun #define TPS65911_LDO7 0x34
119*4882a593Smuzhiyun #define TPS65911_LDO6 0x35
120*4882a593Smuzhiyun #define TPS65911_LDO4 0x36
121*4882a593Smuzhiyun #define TPS65911_LDO3 0x37
122*4882a593Smuzhiyun #define TPS65911_VMBCH 0x6A
123*4882a593Smuzhiyun #define TPS65911_VMBCH2 0x6B
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun /*
126*4882a593Smuzhiyun * List of register bitfields for component TPS65910
127*4882a593Smuzhiyun *
128*4882a593Smuzhiyun */
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun /* RTC_CTRL_REG bitfields */
131*4882a593Smuzhiyun #define TPS65910_RTC_CTRL_STOP_RTC 0x01 /*0=stop, 1=run */
132*4882a593Smuzhiyun #define TPS65910_RTC_CTRL_AUTO_COMP 0x04
133*4882a593Smuzhiyun #define TPS65910_RTC_CTRL_GET_TIME 0x40
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun /* RTC_STATUS_REG bitfields */
136*4882a593Smuzhiyun #define TPS65910_RTC_STATUS_ALARM 0x40
137*4882a593Smuzhiyun
138*4882a593Smuzhiyun /* RTC_INTERRUPTS_REG bitfields */
139*4882a593Smuzhiyun #define TPS65910_RTC_INTERRUPTS_EVERY 0x03
140*4882a593Smuzhiyun #define TPS65910_RTC_INTERRUPTS_IT_ALARM 0x08
141*4882a593Smuzhiyun
142*4882a593Smuzhiyun /*Register BCK1 (0x80) register.RegisterDescription */
143*4882a593Smuzhiyun #define BCK1_BCKUP_MASK 0xFF
144*4882a593Smuzhiyun #define BCK1_BCKUP_SHIFT 0
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun
147*4882a593Smuzhiyun /*Register BCK2 (0x80) register.RegisterDescription */
148*4882a593Smuzhiyun #define BCK2_BCKUP_MASK 0xFF
149*4882a593Smuzhiyun #define BCK2_BCKUP_SHIFT 0
150*4882a593Smuzhiyun
151*4882a593Smuzhiyun
152*4882a593Smuzhiyun /*Register BCK3 (0x80) register.RegisterDescription */
153*4882a593Smuzhiyun #define BCK3_BCKUP_MASK 0xFF
154*4882a593Smuzhiyun #define BCK3_BCKUP_SHIFT 0
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun /*Register BCK4 (0x80) register.RegisterDescription */
158*4882a593Smuzhiyun #define BCK4_BCKUP_MASK 0xFF
159*4882a593Smuzhiyun #define BCK4_BCKUP_SHIFT 0
160*4882a593Smuzhiyun
161*4882a593Smuzhiyun
162*4882a593Smuzhiyun /*Register BCK5 (0x80) register.RegisterDescription */
163*4882a593Smuzhiyun #define BCK5_BCKUP_MASK 0xFF
164*4882a593Smuzhiyun #define BCK5_BCKUP_SHIFT 0
165*4882a593Smuzhiyun
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun /*Register PUADEN (0x80) register.RegisterDescription */
168*4882a593Smuzhiyun #define PUADEN_EN3P_MASK 0x80
169*4882a593Smuzhiyun #define PUADEN_EN3P_SHIFT 7
170*4882a593Smuzhiyun #define PUADEN_I2CCTLP_MASK 0x40
171*4882a593Smuzhiyun #define PUADEN_I2CCTLP_SHIFT 6
172*4882a593Smuzhiyun #define PUADEN_I2CSRP_MASK 0x20
173*4882a593Smuzhiyun #define PUADEN_I2CSRP_SHIFT 5
174*4882a593Smuzhiyun #define PUADEN_PWRONP_MASK 0x10
175*4882a593Smuzhiyun #define PUADEN_PWRONP_SHIFT 4
176*4882a593Smuzhiyun #define PUADEN_SLEEPP_MASK 0x08
177*4882a593Smuzhiyun #define PUADEN_SLEEPP_SHIFT 3
178*4882a593Smuzhiyun #define PUADEN_PWRHOLDP_MASK 0x04
179*4882a593Smuzhiyun #define PUADEN_PWRHOLDP_SHIFT 2
180*4882a593Smuzhiyun #define PUADEN_BOOT1P_MASK 0x02
181*4882a593Smuzhiyun #define PUADEN_BOOT1P_SHIFT 1
182*4882a593Smuzhiyun #define PUADEN_BOOT0P_MASK 0x01
183*4882a593Smuzhiyun #define PUADEN_BOOT0P_SHIFT 0
184*4882a593Smuzhiyun
185*4882a593Smuzhiyun
186*4882a593Smuzhiyun /*Register REF (0x80) register.RegisterDescription */
187*4882a593Smuzhiyun #define REF_VMBCH_SEL_MASK 0x0C
188*4882a593Smuzhiyun #define REF_VMBCH_SEL_SHIFT 2
189*4882a593Smuzhiyun #define REF_ST_MASK 0x03
190*4882a593Smuzhiyun #define REF_ST_SHIFT 0
191*4882a593Smuzhiyun
192*4882a593Smuzhiyun
193*4882a593Smuzhiyun /*Register VRTC (0x80) register.RegisterDescription */
194*4882a593Smuzhiyun #define VRTC_VRTC_OFFMASK_MASK 0x08
195*4882a593Smuzhiyun #define VRTC_VRTC_OFFMASK_SHIFT 3
196*4882a593Smuzhiyun #define VRTC_ST_MASK 0x03
197*4882a593Smuzhiyun #define VRTC_ST_SHIFT 0
198*4882a593Smuzhiyun
199*4882a593Smuzhiyun
200*4882a593Smuzhiyun /*Register VIO (0x80) register.RegisterDescription */
201*4882a593Smuzhiyun #define VIO_ILMAX_MASK 0xC0
202*4882a593Smuzhiyun #define VIO_ILMAX_SHIFT 6
203*4882a593Smuzhiyun #define VIO_SEL_MASK 0x0C
204*4882a593Smuzhiyun #define VIO_SEL_SHIFT 2
205*4882a593Smuzhiyun #define VIO_ST_MASK 0x03
206*4882a593Smuzhiyun #define VIO_ST_SHIFT 0
207*4882a593Smuzhiyun
208*4882a593Smuzhiyun
209*4882a593Smuzhiyun /*Register VDD1 (0x80) register.RegisterDescription */
210*4882a593Smuzhiyun #define VDD1_VGAIN_SEL_MASK 0xC0
211*4882a593Smuzhiyun #define VDD1_VGAIN_SEL_SHIFT 6
212*4882a593Smuzhiyun #define VDD1_ILMAX_MASK 0x20
213*4882a593Smuzhiyun #define VDD1_ILMAX_SHIFT 5
214*4882a593Smuzhiyun #define VDD1_TSTEP_MASK 0x1C
215*4882a593Smuzhiyun #define VDD1_TSTEP_SHIFT 2
216*4882a593Smuzhiyun #define VDD1_ST_MASK 0x03
217*4882a593Smuzhiyun #define VDD1_ST_SHIFT 0
218*4882a593Smuzhiyun
219*4882a593Smuzhiyun
220*4882a593Smuzhiyun /*Register VDD1_OP (0x80) register.RegisterDescription */
221*4882a593Smuzhiyun #define VDD1_OP_CMD_MASK 0x80
222*4882a593Smuzhiyun #define VDD1_OP_CMD_SHIFT 7
223*4882a593Smuzhiyun #define VDD1_OP_SEL_MASK 0x7F
224*4882a593Smuzhiyun #define VDD1_OP_SEL_SHIFT 0
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun
227*4882a593Smuzhiyun /*Register VDD1_SR (0x80) register.RegisterDescription */
228*4882a593Smuzhiyun #define VDD1_SR_SEL_MASK 0x7F
229*4882a593Smuzhiyun #define VDD1_SR_SEL_SHIFT 0
230*4882a593Smuzhiyun
231*4882a593Smuzhiyun
232*4882a593Smuzhiyun /*Register VDD2 (0x80) register.RegisterDescription */
233*4882a593Smuzhiyun #define VDD2_VGAIN_SEL_MASK 0xC0
234*4882a593Smuzhiyun #define VDD2_VGAIN_SEL_SHIFT 6
235*4882a593Smuzhiyun #define VDD2_ILMAX_MASK 0x20
236*4882a593Smuzhiyun #define VDD2_ILMAX_SHIFT 5
237*4882a593Smuzhiyun #define VDD2_TSTEP_MASK 0x1C
238*4882a593Smuzhiyun #define VDD2_TSTEP_SHIFT 2
239*4882a593Smuzhiyun #define VDD2_ST_MASK 0x03
240*4882a593Smuzhiyun #define VDD2_ST_SHIFT 0
241*4882a593Smuzhiyun
242*4882a593Smuzhiyun
243*4882a593Smuzhiyun /*Register VDD2_OP (0x80) register.RegisterDescription */
244*4882a593Smuzhiyun #define VDD2_OP_CMD_MASK 0x80
245*4882a593Smuzhiyun #define VDD2_OP_CMD_SHIFT 7
246*4882a593Smuzhiyun #define VDD2_OP_SEL_MASK 0x7F
247*4882a593Smuzhiyun #define VDD2_OP_SEL_SHIFT 0
248*4882a593Smuzhiyun
249*4882a593Smuzhiyun /*Register VDD2_SR (0x80) register.RegisterDescription */
250*4882a593Smuzhiyun #define VDD2_SR_SEL_MASK 0x7F
251*4882a593Smuzhiyun #define VDD2_SR_SEL_SHIFT 0
252*4882a593Smuzhiyun
253*4882a593Smuzhiyun
254*4882a593Smuzhiyun /*Registers VDD1, VDD2 voltage values definitions */
255*4882a593Smuzhiyun #define VDD1_2_NUM_VOLT_FINE 73
256*4882a593Smuzhiyun #define VDD1_2_NUM_VOLT_COARSE 3
257*4882a593Smuzhiyun #define VDD1_2_MIN_VOLT 6000
258*4882a593Smuzhiyun #define VDD1_2_OFFSET 125
259*4882a593Smuzhiyun
260*4882a593Smuzhiyun
261*4882a593Smuzhiyun /*Register VDD3 (0x80) register.RegisterDescription */
262*4882a593Smuzhiyun #define VDD3_CKINEN_MASK 0x04
263*4882a593Smuzhiyun #define VDD3_CKINEN_SHIFT 2
264*4882a593Smuzhiyun #define VDD3_ST_MASK 0x03
265*4882a593Smuzhiyun #define VDD3_ST_SHIFT 0
266*4882a593Smuzhiyun #define VDDCTRL_MIN_VOLT 6000
267*4882a593Smuzhiyun #define VDDCTRL_OFFSET 125
268*4882a593Smuzhiyun
269*4882a593Smuzhiyun /*Registers VDIG (0x80) to VDAC register.RegisterDescription */
270*4882a593Smuzhiyun #define LDO_SEL_MASK 0x0C
271*4882a593Smuzhiyun #define LDO_SEL_SHIFT 2
272*4882a593Smuzhiyun #define LDO_ST_MASK 0x03
273*4882a593Smuzhiyun #define LDO_ST_SHIFT 0
274*4882a593Smuzhiyun #define LDO_ST_ON_BIT 0x01
275*4882a593Smuzhiyun #define LDO_ST_MODE_BIT 0x02
276*4882a593Smuzhiyun
277*4882a593Smuzhiyun
278*4882a593Smuzhiyun /* Registers LDO1 to LDO8 in tps65910 */
279*4882a593Smuzhiyun #define LDO1_SEL_MASK 0xFC
280*4882a593Smuzhiyun #define LDO3_SEL_MASK 0x7C
281*4882a593Smuzhiyun #define LDO_MIN_VOLT 1000
282*4882a593Smuzhiyun #define LDO_MAX_VOLT 3300
283*4882a593Smuzhiyun
284*4882a593Smuzhiyun
285*4882a593Smuzhiyun /*Register VDIG1 (0x80) register.RegisterDescription */
286*4882a593Smuzhiyun #define VDIG1_SEL_MASK 0x0C
287*4882a593Smuzhiyun #define VDIG1_SEL_SHIFT 2
288*4882a593Smuzhiyun #define VDIG1_ST_MASK 0x03
289*4882a593Smuzhiyun #define VDIG1_ST_SHIFT 0
290*4882a593Smuzhiyun
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun /*Register VDIG2 (0x80) register.RegisterDescription */
293*4882a593Smuzhiyun #define VDIG2_SEL_MASK 0x0C
294*4882a593Smuzhiyun #define VDIG2_SEL_SHIFT 2
295*4882a593Smuzhiyun #define VDIG2_ST_MASK 0x03
296*4882a593Smuzhiyun #define VDIG2_ST_SHIFT 0
297*4882a593Smuzhiyun
298*4882a593Smuzhiyun
299*4882a593Smuzhiyun /*Register VAUX1 (0x80) register.RegisterDescription */
300*4882a593Smuzhiyun #define VAUX1_SEL_MASK 0x0C
301*4882a593Smuzhiyun #define VAUX1_SEL_SHIFT 2
302*4882a593Smuzhiyun #define VAUX1_ST_MASK 0x03
303*4882a593Smuzhiyun #define VAUX1_ST_SHIFT 0
304*4882a593Smuzhiyun
305*4882a593Smuzhiyun
306*4882a593Smuzhiyun /*Register VAUX2 (0x80) register.RegisterDescription */
307*4882a593Smuzhiyun #define VAUX2_SEL_MASK 0x0C
308*4882a593Smuzhiyun #define VAUX2_SEL_SHIFT 2
309*4882a593Smuzhiyun #define VAUX2_ST_MASK 0x03
310*4882a593Smuzhiyun #define VAUX2_ST_SHIFT 0
311*4882a593Smuzhiyun
312*4882a593Smuzhiyun
313*4882a593Smuzhiyun /*Register VAUX33 (0x80) register.RegisterDescription */
314*4882a593Smuzhiyun #define VAUX33_SEL_MASK 0x0C
315*4882a593Smuzhiyun #define VAUX33_SEL_SHIFT 2
316*4882a593Smuzhiyun #define VAUX33_ST_MASK 0x03
317*4882a593Smuzhiyun #define VAUX33_ST_SHIFT 0
318*4882a593Smuzhiyun
319*4882a593Smuzhiyun
320*4882a593Smuzhiyun /*Register VMMC (0x80) register.RegisterDescription */
321*4882a593Smuzhiyun #define VMMC_SEL_MASK 0x0C
322*4882a593Smuzhiyun #define VMMC_SEL_SHIFT 2
323*4882a593Smuzhiyun #define VMMC_ST_MASK 0x03
324*4882a593Smuzhiyun #define VMMC_ST_SHIFT 0
325*4882a593Smuzhiyun
326*4882a593Smuzhiyun
327*4882a593Smuzhiyun /*Register VPLL (0x80) register.RegisterDescription */
328*4882a593Smuzhiyun #define VPLL_SEL_MASK 0x0C
329*4882a593Smuzhiyun #define VPLL_SEL_SHIFT 2
330*4882a593Smuzhiyun #define VPLL_ST_MASK 0x03
331*4882a593Smuzhiyun #define VPLL_ST_SHIFT 0
332*4882a593Smuzhiyun
333*4882a593Smuzhiyun
334*4882a593Smuzhiyun /*Register VDAC (0x80) register.RegisterDescription */
335*4882a593Smuzhiyun #define VDAC_SEL_MASK 0x0C
336*4882a593Smuzhiyun #define VDAC_SEL_SHIFT 2
337*4882a593Smuzhiyun #define VDAC_ST_MASK 0x03
338*4882a593Smuzhiyun #define VDAC_ST_SHIFT 0
339*4882a593Smuzhiyun
340*4882a593Smuzhiyun
341*4882a593Smuzhiyun /*Register THERM (0x80) register.RegisterDescription */
342*4882a593Smuzhiyun #define THERM_THERM_HD_MASK 0x20
343*4882a593Smuzhiyun #define THERM_THERM_HD_SHIFT 5
344*4882a593Smuzhiyun #define THERM_THERM_TS_MASK 0x10
345*4882a593Smuzhiyun #define THERM_THERM_TS_SHIFT 4
346*4882a593Smuzhiyun #define THERM_THERM_HDSEL_MASK 0x0C
347*4882a593Smuzhiyun #define THERM_THERM_HDSEL_SHIFT 2
348*4882a593Smuzhiyun #define THERM_RSVD1_MASK 0x02
349*4882a593Smuzhiyun #define THERM_RSVD1_SHIFT 1
350*4882a593Smuzhiyun #define THERM_THERM_STATE_MASK 0x01
351*4882a593Smuzhiyun #define THERM_THERM_STATE_SHIFT 0
352*4882a593Smuzhiyun
353*4882a593Smuzhiyun
354*4882a593Smuzhiyun /*Register BBCH (0x80) register.RegisterDescription */
355*4882a593Smuzhiyun #define BBCH_BBSEL_MASK 0x06
356*4882a593Smuzhiyun #define BBCH_BBSEL_SHIFT 1
357*4882a593Smuzhiyun
358*4882a593Smuzhiyun
359*4882a593Smuzhiyun /*Register DCDCCTRL (0x80) register.RegisterDescription */
360*4882a593Smuzhiyun #define DCDCCTRL_VDD2_PSKIP_MASK 0x20
361*4882a593Smuzhiyun #define DCDCCTRL_VDD2_PSKIP_SHIFT 5
362*4882a593Smuzhiyun #define DCDCCTRL_VDD1_PSKIP_MASK 0x10
363*4882a593Smuzhiyun #define DCDCCTRL_VDD1_PSKIP_SHIFT 4
364*4882a593Smuzhiyun #define DCDCCTRL_VIO_PSKIP_MASK 0x08
365*4882a593Smuzhiyun #define DCDCCTRL_VIO_PSKIP_SHIFT 3
366*4882a593Smuzhiyun #define DCDCCTRL_DCDCCKEXT_MASK 0x04
367*4882a593Smuzhiyun #define DCDCCTRL_DCDCCKEXT_SHIFT 2
368*4882a593Smuzhiyun #define DCDCCTRL_DCDCCKSYNC_MASK 0x03
369*4882a593Smuzhiyun #define DCDCCTRL_DCDCCKSYNC_SHIFT 0
370*4882a593Smuzhiyun
371*4882a593Smuzhiyun
372*4882a593Smuzhiyun /*Register DEVCTRL (0x80) register.RegisterDescription */
373*4882a593Smuzhiyun #define DEVCTRL_PWR_OFF_MASK 0x80
374*4882a593Smuzhiyun #define DEVCTRL_PWR_OFF_SHIFT 7
375*4882a593Smuzhiyun #define DEVCTRL_RTC_PWDN_MASK 0x40
376*4882a593Smuzhiyun #define DEVCTRL_RTC_PWDN_SHIFT 6
377*4882a593Smuzhiyun #define DEVCTRL_CK32K_CTRL_MASK 0x20
378*4882a593Smuzhiyun #define DEVCTRL_CK32K_CTRL_SHIFT 5
379*4882a593Smuzhiyun #define DEVCTRL_SR_CTL_I2C_SEL_MASK 0x10
380*4882a593Smuzhiyun #define DEVCTRL_SR_CTL_I2C_SEL_SHIFT 4
381*4882a593Smuzhiyun #define DEVCTRL_DEV_OFF_RST_MASK 0x08
382*4882a593Smuzhiyun #define DEVCTRL_DEV_OFF_RST_SHIFT 3
383*4882a593Smuzhiyun #define DEVCTRL_DEV_ON_MASK 0x04
384*4882a593Smuzhiyun #define DEVCTRL_DEV_ON_SHIFT 2
385*4882a593Smuzhiyun #define DEVCTRL_DEV_SLP_MASK 0x02
386*4882a593Smuzhiyun #define DEVCTRL_DEV_SLP_SHIFT 1
387*4882a593Smuzhiyun #define DEVCTRL_DEV_OFF_MASK 0x01
388*4882a593Smuzhiyun #define DEVCTRL_DEV_OFF_SHIFT 0
389*4882a593Smuzhiyun
390*4882a593Smuzhiyun
391*4882a593Smuzhiyun /*Register DEVCTRL2 (0x80) register.RegisterDescription */
392*4882a593Smuzhiyun #define DEVCTRL2_TSLOT_LENGTH_MASK 0x30
393*4882a593Smuzhiyun #define DEVCTRL2_TSLOT_LENGTH_SHIFT 4
394*4882a593Smuzhiyun #define DEVCTRL2_SLEEPSIG_POL_MASK 0x08
395*4882a593Smuzhiyun #define DEVCTRL2_SLEEPSIG_POL_SHIFT 3
396*4882a593Smuzhiyun #define DEVCTRL2_PWON_LP_OFF_MASK 0x04
397*4882a593Smuzhiyun #define DEVCTRL2_PWON_LP_OFF_SHIFT 2
398*4882a593Smuzhiyun #define DEVCTRL2_PWON_LP_RST_MASK 0x02
399*4882a593Smuzhiyun #define DEVCTRL2_PWON_LP_RST_SHIFT 1
400*4882a593Smuzhiyun #define DEVCTRL2_IT_POL_MASK 0x01
401*4882a593Smuzhiyun #define DEVCTRL2_IT_POL_SHIFT 0
402*4882a593Smuzhiyun
403*4882a593Smuzhiyun
404*4882a593Smuzhiyun /*Register SLEEP_KEEP_LDO_ON (0x80) register.RegisterDescription */
405*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VDAC_KEEPON_MASK 0x80
406*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VDAC_KEEPON_SHIFT 7
407*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VPLL_KEEPON_MASK 0x40
408*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VPLL_KEEPON_SHIFT 6
409*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VAUX33_KEEPON_MASK 0x20
410*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VAUX33_KEEPON_SHIFT 5
411*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VAUX2_KEEPON_MASK 0x10
412*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VAUX2_KEEPON_SHIFT 4
413*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VAUX1_KEEPON_MASK 0x08
414*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VAUX1_KEEPON_SHIFT 3
415*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VDIG2_KEEPON_MASK 0x04
416*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VDIG2_KEEPON_SHIFT 2
417*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VDIG1_KEEPON_MASK 0x02
418*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VDIG1_KEEPON_SHIFT 1
419*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VMMC_KEEPON_MASK 0x01
420*4882a593Smuzhiyun #define SLEEP_KEEP_LDO_ON_VMMC_KEEPON_SHIFT 0
421*4882a593Smuzhiyun
422*4882a593Smuzhiyun
423*4882a593Smuzhiyun /*Register SLEEP_KEEP_RES_ON (0x80) register.RegisterDescription */
424*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_THERM_KEEPON_MASK 0x80
425*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_THERM_KEEPON_SHIFT 7
426*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_CLKOUT32K_KEEPON_MASK 0x40
427*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_CLKOUT32K_KEEPON_SHIFT 6
428*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_VRTC_KEEPON_MASK 0x20
429*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_VRTC_KEEPON_SHIFT 5
430*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_I2CHS_KEEPON_MASK 0x10
431*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_I2CHS_KEEPON_SHIFT 4
432*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_VDD3_KEEPON_MASK 0x08
433*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_VDD3_KEEPON_SHIFT 3
434*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_VDD2_KEEPON_MASK 0x04
435*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_VDD2_KEEPON_SHIFT 2
436*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_VDD1_KEEPON_MASK 0x02
437*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_VDD1_KEEPON_SHIFT 1
438*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_VIO_KEEPON_MASK 0x01
439*4882a593Smuzhiyun #define SLEEP_KEEP_RES_ON_VIO_KEEPON_SHIFT 0
440*4882a593Smuzhiyun
441*4882a593Smuzhiyun
442*4882a593Smuzhiyun /*Register SLEEP_SET_LDO_OFF (0x80) register.RegisterDescription */
443*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VDAC_SETOFF_MASK 0x80
444*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VDAC_SETOFF_SHIFT 7
445*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VPLL_SETOFF_MASK 0x40
446*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VPLL_SETOFF_SHIFT 6
447*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VAUX33_SETOFF_MASK 0x20
448*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VAUX33_SETOFF_SHIFT 5
449*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VAUX2_SETOFF_MASK 0x10
450*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VAUX2_SETOFF_SHIFT 4
451*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VAUX1_SETOFF_MASK 0x08
452*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VAUX1_SETOFF_SHIFT 3
453*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VDIG2_SETOFF_MASK 0x04
454*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VDIG2_SETOFF_SHIFT 2
455*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VDIG1_SETOFF_MASK 0x02
456*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VDIG1_SETOFF_SHIFT 1
457*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VMMC_SETOFF_MASK 0x01
458*4882a593Smuzhiyun #define SLEEP_SET_LDO_OFF_VMMC_SETOFF_SHIFT 0
459*4882a593Smuzhiyun
460*4882a593Smuzhiyun
461*4882a593Smuzhiyun /*Register SLEEP_SET_RES_OFF (0x80) register.RegisterDescription */
462*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_DEFAULT_VOLT_MASK 0x80
463*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_DEFAULT_VOLT_SHIFT 7
464*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_RSVD_MASK 0x60
465*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_RSVD_SHIFT 5
466*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_SPARE_SETOFF_MASK 0x10
467*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_SPARE_SETOFF_SHIFT 4
468*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_VDD3_SETOFF_MASK 0x08
469*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_VDD3_SETOFF_SHIFT 3
470*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_VDD2_SETOFF_MASK 0x04
471*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_VDD2_SETOFF_SHIFT 2
472*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_VDD1_SETOFF_MASK 0x02
473*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_VDD1_SETOFF_SHIFT 1
474*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_VIO_SETOFF_MASK 0x01
475*4882a593Smuzhiyun #define SLEEP_SET_RES_OFF_VIO_SETOFF_SHIFT 0
476*4882a593Smuzhiyun
477*4882a593Smuzhiyun
478*4882a593Smuzhiyun /*Register EN1_LDO_ASS (0x80) register.RegisterDescription */
479*4882a593Smuzhiyun #define EN1_LDO_ASS_VDAC_EN1_MASK 0x80
480*4882a593Smuzhiyun #define EN1_LDO_ASS_VDAC_EN1_SHIFT 7
481*4882a593Smuzhiyun #define EN1_LDO_ASS_VPLL_EN1_MASK 0x40
482*4882a593Smuzhiyun #define EN1_LDO_ASS_VPLL_EN1_SHIFT 6
483*4882a593Smuzhiyun #define EN1_LDO_ASS_VAUX33_EN1_MASK 0x20
484*4882a593Smuzhiyun #define EN1_LDO_ASS_VAUX33_EN1_SHIFT 5
485*4882a593Smuzhiyun #define EN1_LDO_ASS_VAUX2_EN1_MASK 0x10
486*4882a593Smuzhiyun #define EN1_LDO_ASS_VAUX2_EN1_SHIFT 4
487*4882a593Smuzhiyun #define EN1_LDO_ASS_VAUX1_EN1_MASK 0x08
488*4882a593Smuzhiyun #define EN1_LDO_ASS_VAUX1_EN1_SHIFT 3
489*4882a593Smuzhiyun #define EN1_LDO_ASS_VDIG2_EN1_MASK 0x04
490*4882a593Smuzhiyun #define EN1_LDO_ASS_VDIG2_EN1_SHIFT 2
491*4882a593Smuzhiyun #define EN1_LDO_ASS_VDIG1_EN1_MASK 0x02
492*4882a593Smuzhiyun #define EN1_LDO_ASS_VDIG1_EN1_SHIFT 1
493*4882a593Smuzhiyun #define EN1_LDO_ASS_VMMC_EN1_MASK 0x01
494*4882a593Smuzhiyun #define EN1_LDO_ASS_VMMC_EN1_SHIFT 0
495*4882a593Smuzhiyun
496*4882a593Smuzhiyun
497*4882a593Smuzhiyun /*Register EN1_SMPS_ASS (0x80) register.RegisterDescription */
498*4882a593Smuzhiyun #define EN1_SMPS_ASS_RSVD_MASK 0xE0
499*4882a593Smuzhiyun #define EN1_SMPS_ASS_RSVD_SHIFT 5
500*4882a593Smuzhiyun #define EN1_SMPS_ASS_SPARE_EN1_MASK 0x10
501*4882a593Smuzhiyun #define EN1_SMPS_ASS_SPARE_EN1_SHIFT 4
502*4882a593Smuzhiyun #define EN1_SMPS_ASS_VDD3_EN1_MASK 0x08
503*4882a593Smuzhiyun #define EN1_SMPS_ASS_VDD3_EN1_SHIFT 3
504*4882a593Smuzhiyun #define EN1_SMPS_ASS_VDD2_EN1_MASK 0x04
505*4882a593Smuzhiyun #define EN1_SMPS_ASS_VDD2_EN1_SHIFT 2
506*4882a593Smuzhiyun #define EN1_SMPS_ASS_VDD1_EN1_MASK 0x02
507*4882a593Smuzhiyun #define EN1_SMPS_ASS_VDD1_EN1_SHIFT 1
508*4882a593Smuzhiyun #define EN1_SMPS_ASS_VIO_EN1_MASK 0x01
509*4882a593Smuzhiyun #define EN1_SMPS_ASS_VIO_EN1_SHIFT 0
510*4882a593Smuzhiyun
511*4882a593Smuzhiyun
512*4882a593Smuzhiyun /*Register EN2_LDO_ASS (0x80) register.RegisterDescription */
513*4882a593Smuzhiyun #define EN2_LDO_ASS_VDAC_EN2_MASK 0x80
514*4882a593Smuzhiyun #define EN2_LDO_ASS_VDAC_EN2_SHIFT 7
515*4882a593Smuzhiyun #define EN2_LDO_ASS_VPLL_EN2_MASK 0x40
516*4882a593Smuzhiyun #define EN2_LDO_ASS_VPLL_EN2_SHIFT 6
517*4882a593Smuzhiyun #define EN2_LDO_ASS_VAUX33_EN2_MASK 0x20
518*4882a593Smuzhiyun #define EN2_LDO_ASS_VAUX33_EN2_SHIFT 5
519*4882a593Smuzhiyun #define EN2_LDO_ASS_VAUX2_EN2_MASK 0x10
520*4882a593Smuzhiyun #define EN2_LDO_ASS_VAUX2_EN2_SHIFT 4
521*4882a593Smuzhiyun #define EN2_LDO_ASS_VAUX1_EN2_MASK 0x08
522*4882a593Smuzhiyun #define EN2_LDO_ASS_VAUX1_EN2_SHIFT 3
523*4882a593Smuzhiyun #define EN2_LDO_ASS_VDIG2_EN2_MASK 0x04
524*4882a593Smuzhiyun #define EN2_LDO_ASS_VDIG2_EN2_SHIFT 2
525*4882a593Smuzhiyun #define EN2_LDO_ASS_VDIG1_EN2_MASK 0x02
526*4882a593Smuzhiyun #define EN2_LDO_ASS_VDIG1_EN2_SHIFT 1
527*4882a593Smuzhiyun #define EN2_LDO_ASS_VMMC_EN2_MASK 0x01
528*4882a593Smuzhiyun #define EN2_LDO_ASS_VMMC_EN2_SHIFT 0
529*4882a593Smuzhiyun
530*4882a593Smuzhiyun
531*4882a593Smuzhiyun /*Register EN2_SMPS_ASS (0x80) register.RegisterDescription */
532*4882a593Smuzhiyun #define EN2_SMPS_ASS_RSVD_MASK 0xE0
533*4882a593Smuzhiyun #define EN2_SMPS_ASS_RSVD_SHIFT 5
534*4882a593Smuzhiyun #define EN2_SMPS_ASS_SPARE_EN2_MASK 0x10
535*4882a593Smuzhiyun #define EN2_SMPS_ASS_SPARE_EN2_SHIFT 4
536*4882a593Smuzhiyun #define EN2_SMPS_ASS_VDD3_EN2_MASK 0x08
537*4882a593Smuzhiyun #define EN2_SMPS_ASS_VDD3_EN2_SHIFT 3
538*4882a593Smuzhiyun #define EN2_SMPS_ASS_VDD2_EN2_MASK 0x04
539*4882a593Smuzhiyun #define EN2_SMPS_ASS_VDD2_EN2_SHIFT 2
540*4882a593Smuzhiyun #define EN2_SMPS_ASS_VDD1_EN2_MASK 0x02
541*4882a593Smuzhiyun #define EN2_SMPS_ASS_VDD1_EN2_SHIFT 1
542*4882a593Smuzhiyun #define EN2_SMPS_ASS_VIO_EN2_MASK 0x01
543*4882a593Smuzhiyun #define EN2_SMPS_ASS_VIO_EN2_SHIFT 0
544*4882a593Smuzhiyun
545*4882a593Smuzhiyun
546*4882a593Smuzhiyun /*Register EN3_LDO_ASS (0x80) register.RegisterDescription */
547*4882a593Smuzhiyun #define EN3_LDO_ASS_VDAC_EN3_MASK 0x80
548*4882a593Smuzhiyun #define EN3_LDO_ASS_VDAC_EN3_SHIFT 7
549*4882a593Smuzhiyun #define EN3_LDO_ASS_VPLL_EN3_MASK 0x40
550*4882a593Smuzhiyun #define EN3_LDO_ASS_VPLL_EN3_SHIFT 6
551*4882a593Smuzhiyun #define EN3_LDO_ASS_VAUX33_EN3_MASK 0x20
552*4882a593Smuzhiyun #define EN3_LDO_ASS_VAUX33_EN3_SHIFT 5
553*4882a593Smuzhiyun #define EN3_LDO_ASS_VAUX2_EN3_MASK 0x10
554*4882a593Smuzhiyun #define EN3_LDO_ASS_VAUX2_EN3_SHIFT 4
555*4882a593Smuzhiyun #define EN3_LDO_ASS_VAUX1_EN3_MASK 0x08
556*4882a593Smuzhiyun #define EN3_LDO_ASS_VAUX1_EN3_SHIFT 3
557*4882a593Smuzhiyun #define EN3_LDO_ASS_VDIG2_EN3_MASK 0x04
558*4882a593Smuzhiyun #define EN3_LDO_ASS_VDIG2_EN3_SHIFT 2
559*4882a593Smuzhiyun #define EN3_LDO_ASS_VDIG1_EN3_MASK 0x02
560*4882a593Smuzhiyun #define EN3_LDO_ASS_VDIG1_EN3_SHIFT 1
561*4882a593Smuzhiyun #define EN3_LDO_ASS_VMMC_EN3_MASK 0x01
562*4882a593Smuzhiyun #define EN3_LDO_ASS_VMMC_EN3_SHIFT 0
563*4882a593Smuzhiyun
564*4882a593Smuzhiyun
565*4882a593Smuzhiyun /*Register SPARE (0x80) register.RegisterDescription */
566*4882a593Smuzhiyun #define SPARE_SPARE_MASK 0xFF
567*4882a593Smuzhiyun #define SPARE_SPARE_SHIFT 0
568*4882a593Smuzhiyun
569*4882a593Smuzhiyun #define TPS65910_INT_STS_RTC_PERIOD_IT_MASK 0x80
570*4882a593Smuzhiyun #define TPS65910_INT_STS_RTC_PERIOD_IT_SHIFT 7
571*4882a593Smuzhiyun #define TPS65910_INT_STS_RTC_ALARM_IT_MASK 0x40
572*4882a593Smuzhiyun #define TPS65910_INT_STS_RTC_ALARM_IT_SHIFT 6
573*4882a593Smuzhiyun #define TPS65910_INT_STS_HOTDIE_IT_MASK 0x20
574*4882a593Smuzhiyun #define TPS65910_INT_STS_HOTDIE_IT_SHIFT 5
575*4882a593Smuzhiyun #define TPS65910_INT_STS_PWRHOLD_F_IT_MASK 0x10
576*4882a593Smuzhiyun #define TPS65910_INT_STS_PWRHOLD_F_IT_SHIFT 4
577*4882a593Smuzhiyun #define TPS65910_INT_STS_PWRON_LP_IT_MASK 0x08
578*4882a593Smuzhiyun #define TPS65910_INT_STS_PWRON_LP_IT_SHIFT 3
579*4882a593Smuzhiyun #define TPS65910_INT_STS_PWRON_IT_MASK 0x04
580*4882a593Smuzhiyun #define TPS65910_INT_STS_PWRON_IT_SHIFT 2
581*4882a593Smuzhiyun #define TPS65910_INT_STS_VMBHI_IT_MASK 0x02
582*4882a593Smuzhiyun #define TPS65910_INT_STS_VMBHI_IT_SHIFT 1
583*4882a593Smuzhiyun #define TPS65910_INT_STS_VMBDCH_IT_MASK 0x01
584*4882a593Smuzhiyun #define TPS65910_INT_STS_VMBDCH_IT_SHIFT 0
585*4882a593Smuzhiyun
586*4882a593Smuzhiyun #define TPS65910_INT_MSK_RTC_PERIOD_IT_MSK_MASK 0x80
587*4882a593Smuzhiyun #define TPS65910_INT_MSK_RTC_PERIOD_IT_MSK_SHIFT 7
588*4882a593Smuzhiyun #define TPS65910_INT_MSK_RTC_ALARM_IT_MSK_MASK 0x40
589*4882a593Smuzhiyun #define TPS65910_INT_MSK_RTC_ALARM_IT_MSK_SHIFT 6
590*4882a593Smuzhiyun #define TPS65910_INT_MSK_HOTDIE_IT_MSK_MASK 0x20
591*4882a593Smuzhiyun #define TPS65910_INT_MSK_HOTDIE_IT_MSK_SHIFT 5
592*4882a593Smuzhiyun #define TPS65910_INT_MSK_PWRHOLD_IT_MSK_MASK 0x10
593*4882a593Smuzhiyun #define TPS65910_INT_MSK_PWRHOLD_IT_MSK_SHIFT 4
594*4882a593Smuzhiyun #define TPS65910_INT_MSK_PWRON_LP_IT_MSK_MASK 0x08
595*4882a593Smuzhiyun #define TPS65910_INT_MSK_PWRON_LP_IT_MSK_SHIFT 3
596*4882a593Smuzhiyun #define TPS65910_INT_MSK_PWRON_IT_MSK_MASK 0x04
597*4882a593Smuzhiyun #define TPS65910_INT_MSK_PWRON_IT_MSK_SHIFT 2
598*4882a593Smuzhiyun #define TPS65910_INT_MSK_VMBHI_IT_MSK_MASK 0x02
599*4882a593Smuzhiyun #define TPS65910_INT_MSK_VMBHI_IT_MSK_SHIFT 1
600*4882a593Smuzhiyun #define TPS65910_INT_MSK_VMBDCH_IT_MSK_MASK 0x01
601*4882a593Smuzhiyun #define TPS65910_INT_MSK_VMBDCH_IT_MSK_SHIFT 0
602*4882a593Smuzhiyun
603*4882a593Smuzhiyun #define TPS65910_INT_STS2_GPIO0_F_IT_SHIFT 2
604*4882a593Smuzhiyun #define TPS65910_INT_STS2_GPIO0_F_IT_MASK 0x02
605*4882a593Smuzhiyun #define TPS65910_INT_STS2_GPIO0_R_IT_SHIFT 1
606*4882a593Smuzhiyun #define TPS65910_INT_STS2_GPIO0_R_IT_MASK 0x01
607*4882a593Smuzhiyun
608*4882a593Smuzhiyun #define TPS65910_INT_MSK2_GPIO0_F_IT_MSK_SHIFT 2
609*4882a593Smuzhiyun #define TPS65910_INT_MSK2_GPIO0_F_IT_MSK_MASK 0x02
610*4882a593Smuzhiyun #define TPS65910_INT_MSK2_GPIO0_R_IT_MSK_SHIFT 1
611*4882a593Smuzhiyun #define TPS65910_INT_MSK2_GPIO0_R_IT_MSK_MASK 0x01
612*4882a593Smuzhiyun
613*4882a593Smuzhiyun /*Register INT_STS (0x80) register.RegisterDescription */
614*4882a593Smuzhiyun #define INT_STS_RTC_PERIOD_IT_MASK 0x80
615*4882a593Smuzhiyun #define INT_STS_RTC_PERIOD_IT_SHIFT 7
616*4882a593Smuzhiyun #define INT_STS_RTC_ALARM_IT_MASK 0x40
617*4882a593Smuzhiyun #define INT_STS_RTC_ALARM_IT_SHIFT 6
618*4882a593Smuzhiyun #define INT_STS_HOTDIE_IT_MASK 0x20
619*4882a593Smuzhiyun #define INT_STS_HOTDIE_IT_SHIFT 5
620*4882a593Smuzhiyun #define INT_STS_PWRHOLD_R_IT_MASK 0x10
621*4882a593Smuzhiyun #define INT_STS_PWRHOLD_R_IT_SHIFT 4
622*4882a593Smuzhiyun #define INT_STS_PWRON_LP_IT_MASK 0x08
623*4882a593Smuzhiyun #define INT_STS_PWRON_LP_IT_SHIFT 3
624*4882a593Smuzhiyun #define INT_STS_PWRON_IT_MASK 0x04
625*4882a593Smuzhiyun #define INT_STS_PWRON_IT_SHIFT 2
626*4882a593Smuzhiyun #define INT_STS_VMBHI_IT_MASK 0x02
627*4882a593Smuzhiyun #define INT_STS_VMBHI_IT_SHIFT 1
628*4882a593Smuzhiyun #define INT_STS_PWRHOLD_F_IT_MASK 0x01
629*4882a593Smuzhiyun #define INT_STS_PWRHOLD_F_IT_SHIFT 0
630*4882a593Smuzhiyun
631*4882a593Smuzhiyun
632*4882a593Smuzhiyun /*Register INT_MSK (0x80) register.RegisterDescription */
633*4882a593Smuzhiyun #define INT_MSK_RTC_PERIOD_IT_MSK_MASK 0x80
634*4882a593Smuzhiyun #define INT_MSK_RTC_PERIOD_IT_MSK_SHIFT 7
635*4882a593Smuzhiyun #define INT_MSK_RTC_ALARM_IT_MSK_MASK 0x40
636*4882a593Smuzhiyun #define INT_MSK_RTC_ALARM_IT_MSK_SHIFT 6
637*4882a593Smuzhiyun #define INT_MSK_HOTDIE_IT_MSK_MASK 0x20
638*4882a593Smuzhiyun #define INT_MSK_HOTDIE_IT_MSK_SHIFT 5
639*4882a593Smuzhiyun #define INT_MSK_PWRHOLD_R_IT_MSK_MASK 0x10
640*4882a593Smuzhiyun #define INT_MSK_PWRHOLD_R_IT_MSK_SHIFT 4
641*4882a593Smuzhiyun #define INT_MSK_PWRON_LP_IT_MSK_MASK 0x08
642*4882a593Smuzhiyun #define INT_MSK_PWRON_LP_IT_MSK_SHIFT 3
643*4882a593Smuzhiyun #define INT_MSK_PWRON_IT_MSK_MASK 0x04
644*4882a593Smuzhiyun #define INT_MSK_PWRON_IT_MSK_SHIFT 2
645*4882a593Smuzhiyun #define INT_MSK_VMBHI_IT_MSK_MASK 0x02
646*4882a593Smuzhiyun #define INT_MSK_VMBHI_IT_MSK_SHIFT 1
647*4882a593Smuzhiyun #define INT_MSK_PWRHOLD_F_IT_MSK_MASK 0x01
648*4882a593Smuzhiyun #define INT_MSK_PWRHOLD_F_IT_MSK_SHIFT 0
649*4882a593Smuzhiyun
650*4882a593Smuzhiyun
651*4882a593Smuzhiyun /*Register INT_STS2 (0x80) register.RegisterDescription */
652*4882a593Smuzhiyun #define INT_STS2_GPIO3_F_IT_MASK 0x80
653*4882a593Smuzhiyun #define INT_STS2_GPIO3_F_IT_SHIFT 7
654*4882a593Smuzhiyun #define INT_STS2_GPIO3_R_IT_MASK 0x40
655*4882a593Smuzhiyun #define INT_STS2_GPIO3_R_IT_SHIFT 6
656*4882a593Smuzhiyun #define INT_STS2_GPIO2_F_IT_MASK 0x20
657*4882a593Smuzhiyun #define INT_STS2_GPIO2_F_IT_SHIFT 5
658*4882a593Smuzhiyun #define INT_STS2_GPIO2_R_IT_MASK 0x10
659*4882a593Smuzhiyun #define INT_STS2_GPIO2_R_IT_SHIFT 4
660*4882a593Smuzhiyun #define INT_STS2_GPIO1_F_IT_MASK 0x08
661*4882a593Smuzhiyun #define INT_STS2_GPIO1_F_IT_SHIFT 3
662*4882a593Smuzhiyun #define INT_STS2_GPIO1_R_IT_MASK 0x04
663*4882a593Smuzhiyun #define INT_STS2_GPIO1_R_IT_SHIFT 2
664*4882a593Smuzhiyun #define INT_STS2_GPIO0_F_IT_MASK 0x02
665*4882a593Smuzhiyun #define INT_STS2_GPIO0_F_IT_SHIFT 1
666*4882a593Smuzhiyun #define INT_STS2_GPIO0_R_IT_MASK 0x01
667*4882a593Smuzhiyun #define INT_STS2_GPIO0_R_IT_SHIFT 0
668*4882a593Smuzhiyun
669*4882a593Smuzhiyun
670*4882a593Smuzhiyun /*Register INT_MSK2 (0x80) register.RegisterDescription */
671*4882a593Smuzhiyun #define INT_MSK2_GPIO3_F_IT_MSK_MASK 0x80
672*4882a593Smuzhiyun #define INT_MSK2_GPIO3_F_IT_MSK_SHIFT 7
673*4882a593Smuzhiyun #define INT_MSK2_GPIO3_R_IT_MSK_MASK 0x40
674*4882a593Smuzhiyun #define INT_MSK2_GPIO3_R_IT_MSK_SHIFT 6
675*4882a593Smuzhiyun #define INT_MSK2_GPIO2_F_IT_MSK_MASK 0x20
676*4882a593Smuzhiyun #define INT_MSK2_GPIO2_F_IT_MSK_SHIFT 5
677*4882a593Smuzhiyun #define INT_MSK2_GPIO2_R_IT_MSK_MASK 0x10
678*4882a593Smuzhiyun #define INT_MSK2_GPIO2_R_IT_MSK_SHIFT 4
679*4882a593Smuzhiyun #define INT_MSK2_GPIO1_F_IT_MSK_MASK 0x08
680*4882a593Smuzhiyun #define INT_MSK2_GPIO1_F_IT_MSK_SHIFT 3
681*4882a593Smuzhiyun #define INT_MSK2_GPIO1_R_IT_MSK_MASK 0x04
682*4882a593Smuzhiyun #define INT_MSK2_GPIO1_R_IT_MSK_SHIFT 2
683*4882a593Smuzhiyun #define INT_MSK2_GPIO0_F_IT_MSK_MASK 0x02
684*4882a593Smuzhiyun #define INT_MSK2_GPIO0_F_IT_MSK_SHIFT 1
685*4882a593Smuzhiyun #define INT_MSK2_GPIO0_R_IT_MSK_MASK 0x01
686*4882a593Smuzhiyun #define INT_MSK2_GPIO0_R_IT_MSK_SHIFT 0
687*4882a593Smuzhiyun
688*4882a593Smuzhiyun
689*4882a593Smuzhiyun /*Register INT_STS3 (0x80) register.RegisterDescription */
690*4882a593Smuzhiyun #define INT_STS3_PWRDN_IT_MASK 0x80
691*4882a593Smuzhiyun #define INT_STS3_PWRDN_IT_SHIFT 7
692*4882a593Smuzhiyun #define INT_STS3_VMBCH2_L_IT_MASK 0x40
693*4882a593Smuzhiyun #define INT_STS3_VMBCH2_L_IT_SHIFT 6
694*4882a593Smuzhiyun #define INT_STS3_VMBCH2_H_IT_MASK 0x20
695*4882a593Smuzhiyun #define INT_STS3_VMBCH2_H_IT_SHIFT 5
696*4882a593Smuzhiyun #define INT_STS3_WTCHDG_IT_MASK 0x10
697*4882a593Smuzhiyun #define INT_STS3_WTCHDG_IT_SHIFT 4
698*4882a593Smuzhiyun #define INT_STS3_GPIO5_F_IT_MASK 0x08
699*4882a593Smuzhiyun #define INT_STS3_GPIO5_F_IT_SHIFT 3
700*4882a593Smuzhiyun #define INT_STS3_GPIO5_R_IT_MASK 0x04
701*4882a593Smuzhiyun #define INT_STS3_GPIO5_R_IT_SHIFT 2
702*4882a593Smuzhiyun #define INT_STS3_GPIO4_F_IT_MASK 0x02
703*4882a593Smuzhiyun #define INT_STS3_GPIO4_F_IT_SHIFT 1
704*4882a593Smuzhiyun #define INT_STS3_GPIO4_R_IT_MASK 0x01
705*4882a593Smuzhiyun #define INT_STS3_GPIO4_R_IT_SHIFT 0
706*4882a593Smuzhiyun
707*4882a593Smuzhiyun
708*4882a593Smuzhiyun /*Register INT_MSK3 (0x80) register.RegisterDescription */
709*4882a593Smuzhiyun #define INT_MSK3_PWRDN_IT_MSK_MASK 0x80
710*4882a593Smuzhiyun #define INT_MSK3_PWRDN_IT_MSK_SHIFT 7
711*4882a593Smuzhiyun #define INT_MSK3_VMBCH2_L_IT_MSK_MASK 0x40
712*4882a593Smuzhiyun #define INT_MSK3_VMBCH2_L_IT_MSK_SHIFT 6
713*4882a593Smuzhiyun #define INT_MSK3_VMBCH2_H_IT_MSK_MASK 0x20
714*4882a593Smuzhiyun #define INT_MSK3_VMBCH2_H_IT_MSK_SHIFT 5
715*4882a593Smuzhiyun #define INT_MSK3_WTCHDG_IT_MSK_MASK 0x10
716*4882a593Smuzhiyun #define INT_MSK3_WTCHDG_IT_MSK_SHIFT 4
717*4882a593Smuzhiyun #define INT_MSK3_GPIO5_F_IT_MSK_MASK 0x08
718*4882a593Smuzhiyun #define INT_MSK3_GPIO5_F_IT_MSK_SHIFT 3
719*4882a593Smuzhiyun #define INT_MSK3_GPIO5_R_IT_MSK_MASK 0x04
720*4882a593Smuzhiyun #define INT_MSK3_GPIO5_R_IT_MSK_SHIFT 2
721*4882a593Smuzhiyun #define INT_MSK3_GPIO4_F_IT_MSK_MASK 0x02
722*4882a593Smuzhiyun #define INT_MSK3_GPIO4_F_IT_MSK_SHIFT 1
723*4882a593Smuzhiyun #define INT_MSK3_GPIO4_R_IT_MSK_MASK 0x01
724*4882a593Smuzhiyun #define INT_MSK3_GPIO4_R_IT_MSK_SHIFT 0
725*4882a593Smuzhiyun
726*4882a593Smuzhiyun
727*4882a593Smuzhiyun /*Register GPIO (0x80) register.RegisterDescription */
728*4882a593Smuzhiyun #define GPIO_SLEEP_MASK 0x80
729*4882a593Smuzhiyun #define GPIO_SLEEP_SHIFT 7
730*4882a593Smuzhiyun #define GPIO_DEB_MASK 0x10
731*4882a593Smuzhiyun #define GPIO_DEB_SHIFT 4
732*4882a593Smuzhiyun #define GPIO_PUEN_MASK 0x08
733*4882a593Smuzhiyun #define GPIO_PUEN_SHIFT 3
734*4882a593Smuzhiyun #define GPIO_CFG_MASK 0x04
735*4882a593Smuzhiyun #define GPIO_CFG_SHIFT 2
736*4882a593Smuzhiyun #define GPIO_STS_MASK 0x02
737*4882a593Smuzhiyun #define GPIO_STS_SHIFT 1
738*4882a593Smuzhiyun #define GPIO_SET_MASK 0x01
739*4882a593Smuzhiyun #define GPIO_SET_SHIFT 0
740*4882a593Smuzhiyun
741*4882a593Smuzhiyun
742*4882a593Smuzhiyun /*Register JTAGVERNUM (0x80) register.RegisterDescription */
743*4882a593Smuzhiyun #define JTAGVERNUM_VERNUM_MASK 0x0F
744*4882a593Smuzhiyun #define JTAGVERNUM_VERNUM_SHIFT 0
745*4882a593Smuzhiyun
746*4882a593Smuzhiyun
747*4882a593Smuzhiyun /* Register VDDCTRL (0x27) bit definitions */
748*4882a593Smuzhiyun #define VDDCTRL_ST_MASK 0x03
749*4882a593Smuzhiyun #define VDDCTRL_ST_SHIFT 0
750*4882a593Smuzhiyun
751*4882a593Smuzhiyun
752*4882a593Smuzhiyun /*Register VDDCTRL_OP (0x28) bit definitios */
753*4882a593Smuzhiyun #define VDDCTRL_OP_CMD_MASK 0x80
754*4882a593Smuzhiyun #define VDDCTRL_OP_CMD_SHIFT 7
755*4882a593Smuzhiyun #define VDDCTRL_OP_SEL_MASK 0x7F
756*4882a593Smuzhiyun #define VDDCTRL_OP_SEL_SHIFT 0
757*4882a593Smuzhiyun
758*4882a593Smuzhiyun
759*4882a593Smuzhiyun /*Register VDDCTRL_SR (0x29) bit definitions */
760*4882a593Smuzhiyun #define VDDCTRL_SR_SEL_MASK 0x7F
761*4882a593Smuzhiyun #define VDDCTRL_SR_SEL_SHIFT 0
762*4882a593Smuzhiyun
763*4882a593Smuzhiyun
764*4882a593Smuzhiyun /* IRQ Definitions */
765*4882a593Smuzhiyun #define TPS65910_IRQ_VBAT_VMBDCH 0
766*4882a593Smuzhiyun #define TPS65910_IRQ_VBAT_VMHI 1
767*4882a593Smuzhiyun #define TPS65910_IRQ_PWRON 2
768*4882a593Smuzhiyun #define TPS65910_IRQ_PWRON_LP 3
769*4882a593Smuzhiyun #define TPS65910_IRQ_PWRHOLD 4
770*4882a593Smuzhiyun #define TPS65910_IRQ_HOTDIE 5
771*4882a593Smuzhiyun #define TPS65910_IRQ_RTC_ALARM 6
772*4882a593Smuzhiyun #define TPS65910_IRQ_RTC_PERIOD 7
773*4882a593Smuzhiyun #define TPS65910_IRQ_GPIO_R 8
774*4882a593Smuzhiyun #define TPS65910_IRQ_GPIO_F 9
775*4882a593Smuzhiyun #define TPS65910_NUM_IRQ 10
776*4882a593Smuzhiyun
777*4882a593Smuzhiyun #define TPS65911_IRQ_PWRHOLD_F 0
778*4882a593Smuzhiyun #define TPS65911_IRQ_VBAT_VMHI 1
779*4882a593Smuzhiyun #define TPS65911_IRQ_PWRON 2
780*4882a593Smuzhiyun #define TPS65911_IRQ_PWRON_LP 3
781*4882a593Smuzhiyun #define TPS65911_IRQ_PWRHOLD_R 4
782*4882a593Smuzhiyun #define TPS65911_IRQ_HOTDIE 5
783*4882a593Smuzhiyun #define TPS65911_IRQ_RTC_ALARM 6
784*4882a593Smuzhiyun #define TPS65911_IRQ_RTC_PERIOD 7
785*4882a593Smuzhiyun #define TPS65911_IRQ_GPIO0_R 8
786*4882a593Smuzhiyun #define TPS65911_IRQ_GPIO0_F 9
787*4882a593Smuzhiyun #define TPS65911_IRQ_GPIO1_R 10
788*4882a593Smuzhiyun #define TPS65911_IRQ_GPIO1_F 11
789*4882a593Smuzhiyun #define TPS65911_IRQ_GPIO2_R 12
790*4882a593Smuzhiyun #define TPS65911_IRQ_GPIO2_F 13
791*4882a593Smuzhiyun #define TPS65911_IRQ_GPIO3_R 14
792*4882a593Smuzhiyun #define TPS65911_IRQ_GPIO3_F 15
793*4882a593Smuzhiyun #define TPS65911_IRQ_GPIO4_R 16
794*4882a593Smuzhiyun #define TPS65911_IRQ_GPIO4_F 17
795*4882a593Smuzhiyun #define TPS65911_IRQ_GPIO5_R 18
796*4882a593Smuzhiyun #define TPS65911_IRQ_GPIO5_F 19
797*4882a593Smuzhiyun #define TPS65911_IRQ_WTCHDG 20
798*4882a593Smuzhiyun #define TPS65911_IRQ_VMBCH2_H 21
799*4882a593Smuzhiyun #define TPS65911_IRQ_VMBCH2_L 22
800*4882a593Smuzhiyun #define TPS65911_IRQ_PWRDN 23
801*4882a593Smuzhiyun
802*4882a593Smuzhiyun #define TPS65911_NUM_IRQ 24
803*4882a593Smuzhiyun
804*4882a593Smuzhiyun /* GPIO Register Definitions */
805*4882a593Smuzhiyun #define TPS65910_GPIO_DEB BIT(2)
806*4882a593Smuzhiyun #define TPS65910_GPIO_PUEN BIT(3)
807*4882a593Smuzhiyun #define TPS65910_GPIO_CFG BIT(2)
808*4882a593Smuzhiyun #define TPS65910_GPIO_STS BIT(1)
809*4882a593Smuzhiyun #define TPS65910_GPIO_SET BIT(0)
810*4882a593Smuzhiyun
811*4882a593Smuzhiyun /* Max number of TPS65910/11 GPIOs */
812*4882a593Smuzhiyun #define TPS65910_NUM_GPIO 6
813*4882a593Smuzhiyun #define TPS65911_NUM_GPIO 9
814*4882a593Smuzhiyun #define TPS6591X_MAX_NUM_GPIO 9
815*4882a593Smuzhiyun
816*4882a593Smuzhiyun /* Regulator Index Definitions */
817*4882a593Smuzhiyun #define TPS65910_REG_VRTC 0
818*4882a593Smuzhiyun #define TPS65910_REG_VIO 1
819*4882a593Smuzhiyun #define TPS65910_REG_VDD1 2
820*4882a593Smuzhiyun #define TPS65910_REG_VDD2 3
821*4882a593Smuzhiyun #define TPS65910_REG_VDD3 4
822*4882a593Smuzhiyun #define TPS65910_REG_VDIG1 5
823*4882a593Smuzhiyun #define TPS65910_REG_VDIG2 6
824*4882a593Smuzhiyun #define TPS65910_REG_VPLL 7
825*4882a593Smuzhiyun #define TPS65910_REG_VDAC 8
826*4882a593Smuzhiyun #define TPS65910_REG_VAUX1 9
827*4882a593Smuzhiyun #define TPS65910_REG_VAUX2 10
828*4882a593Smuzhiyun #define TPS65910_REG_VAUX33 11
829*4882a593Smuzhiyun #define TPS65910_REG_VMMC 12
830*4882a593Smuzhiyun #define TPS65910_REG_VBB 13
831*4882a593Smuzhiyun
832*4882a593Smuzhiyun #define TPS65911_REG_VDDCTRL 4
833*4882a593Smuzhiyun #define TPS65911_REG_LDO1 5
834*4882a593Smuzhiyun #define TPS65911_REG_LDO2 6
835*4882a593Smuzhiyun #define TPS65911_REG_LDO3 7
836*4882a593Smuzhiyun #define TPS65911_REG_LDO4 8
837*4882a593Smuzhiyun #define TPS65911_REG_LDO5 9
838*4882a593Smuzhiyun #define TPS65911_REG_LDO6 10
839*4882a593Smuzhiyun #define TPS65911_REG_LDO7 11
840*4882a593Smuzhiyun #define TPS65911_REG_LDO8 12
841*4882a593Smuzhiyun
842*4882a593Smuzhiyun /* Max number of TPS65910/11 regulators */
843*4882a593Smuzhiyun #define TPS65910_NUM_REGS 14
844*4882a593Smuzhiyun
845*4882a593Smuzhiyun /* External sleep controls through EN1/EN2/EN3/SLEEP inputs */
846*4882a593Smuzhiyun #define TPS65910_SLEEP_CONTROL_EXT_INPUT_EN1 0x1
847*4882a593Smuzhiyun #define TPS65910_SLEEP_CONTROL_EXT_INPUT_EN2 0x2
848*4882a593Smuzhiyun #define TPS65910_SLEEP_CONTROL_EXT_INPUT_EN3 0x4
849*4882a593Smuzhiyun #define TPS65911_SLEEP_CONTROL_EXT_INPUT_SLEEP 0x8
850*4882a593Smuzhiyun
851*4882a593Smuzhiyun /*
852*4882a593Smuzhiyun * Sleep keepon data: Maintains the state in sleep mode
853*4882a593Smuzhiyun * @therm_keepon: Keep on the thermal monitoring in sleep state.
854*4882a593Smuzhiyun * @clkout32k_keepon: Keep on the 32KHz clock output in sleep state.
855*4882a593Smuzhiyun * @i2chs_keepon: Keep on high speed internal clock in sleep state.
856*4882a593Smuzhiyun */
857*4882a593Smuzhiyun struct tps65910_sleep_keepon_data {
858*4882a593Smuzhiyun unsigned therm_keepon:1;
859*4882a593Smuzhiyun unsigned clkout32k_keepon:1;
860*4882a593Smuzhiyun unsigned i2chs_keepon:1;
861*4882a593Smuzhiyun };
862*4882a593Smuzhiyun
863*4882a593Smuzhiyun /**
864*4882a593Smuzhiyun * struct tps65910_board
865*4882a593Smuzhiyun * Board platform data may be used to initialize regulators.
866*4882a593Smuzhiyun */
867*4882a593Smuzhiyun
868*4882a593Smuzhiyun struct tps65910_board {
869*4882a593Smuzhiyun int gpio_base;
870*4882a593Smuzhiyun int irq;
871*4882a593Smuzhiyun int irq_base;
872*4882a593Smuzhiyun int vmbch_threshold;
873*4882a593Smuzhiyun int vmbch2_threshold;
874*4882a593Smuzhiyun bool en_ck32k_xtal;
875*4882a593Smuzhiyun bool en_dev_slp;
876*4882a593Smuzhiyun bool pm_off;
877*4882a593Smuzhiyun struct tps65910_sleep_keepon_data slp_keepon;
878*4882a593Smuzhiyun bool en_gpio_sleep[TPS6591X_MAX_NUM_GPIO];
879*4882a593Smuzhiyun unsigned long regulator_ext_sleep_control[TPS65910_NUM_REGS];
880*4882a593Smuzhiyun struct regulator_init_data *tps65910_pmic_init_data[TPS65910_NUM_REGS];
881*4882a593Smuzhiyun };
882*4882a593Smuzhiyun
883*4882a593Smuzhiyun /**
884*4882a593Smuzhiyun * struct tps65910 - tps65910 sub-driver chip access routines
885*4882a593Smuzhiyun */
886*4882a593Smuzhiyun
887*4882a593Smuzhiyun struct tps65910 {
888*4882a593Smuzhiyun struct device *dev;
889*4882a593Smuzhiyun struct i2c_client *i2c_client;
890*4882a593Smuzhiyun struct regmap *regmap;
891*4882a593Smuzhiyun unsigned long id;
892*4882a593Smuzhiyun
893*4882a593Smuzhiyun /* Client devices */
894*4882a593Smuzhiyun struct tps65910_pmic *pmic;
895*4882a593Smuzhiyun struct tps65910_rtc *rtc;
896*4882a593Smuzhiyun struct tps65910_power *power;
897*4882a593Smuzhiyun
898*4882a593Smuzhiyun /* Device node parsed board data */
899*4882a593Smuzhiyun struct tps65910_board *of_plat_data;
900*4882a593Smuzhiyun
901*4882a593Smuzhiyun /* IRQ Handling */
902*4882a593Smuzhiyun int chip_irq;
903*4882a593Smuzhiyun struct regmap_irq_chip_data *irq_data;
904*4882a593Smuzhiyun };
905*4882a593Smuzhiyun
906*4882a593Smuzhiyun struct tps65910_platform_data {
907*4882a593Smuzhiyun int irq;
908*4882a593Smuzhiyun int irq_base;
909*4882a593Smuzhiyun };
910*4882a593Smuzhiyun
tps65910_chip_id(struct tps65910 * tps65910)911*4882a593Smuzhiyun static inline int tps65910_chip_id(struct tps65910 *tps65910)
912*4882a593Smuzhiyun {
913*4882a593Smuzhiyun return tps65910->id;
914*4882a593Smuzhiyun }
915*4882a593Smuzhiyun
tps65910_reg_read(struct tps65910 * tps65910,u8 reg,unsigned int * val)916*4882a593Smuzhiyun static inline int tps65910_reg_read(struct tps65910 *tps65910, u8 reg,
917*4882a593Smuzhiyun unsigned int *val)
918*4882a593Smuzhiyun {
919*4882a593Smuzhiyun return regmap_read(tps65910->regmap, reg, val);
920*4882a593Smuzhiyun }
921*4882a593Smuzhiyun
tps65910_reg_write(struct tps65910 * tps65910,u8 reg,unsigned int val)922*4882a593Smuzhiyun static inline int tps65910_reg_write(struct tps65910 *tps65910, u8 reg,
923*4882a593Smuzhiyun unsigned int val)
924*4882a593Smuzhiyun {
925*4882a593Smuzhiyun return regmap_write(tps65910->regmap, reg, val);
926*4882a593Smuzhiyun }
927*4882a593Smuzhiyun
tps65910_reg_set_bits(struct tps65910 * tps65910,u8 reg,u8 mask)928*4882a593Smuzhiyun static inline int tps65910_reg_set_bits(struct tps65910 *tps65910, u8 reg,
929*4882a593Smuzhiyun u8 mask)
930*4882a593Smuzhiyun {
931*4882a593Smuzhiyun return regmap_update_bits(tps65910->regmap, reg, mask, mask);
932*4882a593Smuzhiyun }
933*4882a593Smuzhiyun
tps65910_reg_clear_bits(struct tps65910 * tps65910,u8 reg,u8 mask)934*4882a593Smuzhiyun static inline int tps65910_reg_clear_bits(struct tps65910 *tps65910, u8 reg,
935*4882a593Smuzhiyun u8 mask)
936*4882a593Smuzhiyun {
937*4882a593Smuzhiyun return regmap_update_bits(tps65910->regmap, reg, mask, 0);
938*4882a593Smuzhiyun }
939*4882a593Smuzhiyun
tps65910_reg_update_bits(struct tps65910 * tps65910,u8 reg,u8 mask,u8 val)940*4882a593Smuzhiyun static inline int tps65910_reg_update_bits(struct tps65910 *tps65910, u8 reg,
941*4882a593Smuzhiyun u8 mask, u8 val)
942*4882a593Smuzhiyun {
943*4882a593Smuzhiyun return regmap_update_bits(tps65910->regmap, reg, mask, val);
944*4882a593Smuzhiyun }
945*4882a593Smuzhiyun
tps65910_irq_get_virq(struct tps65910 * tps65910,int irq)946*4882a593Smuzhiyun static inline int tps65910_irq_get_virq(struct tps65910 *tps65910, int irq)
947*4882a593Smuzhiyun {
948*4882a593Smuzhiyun return regmap_irq_get_virq(tps65910->irq_data, irq);
949*4882a593Smuzhiyun }
950*4882a593Smuzhiyun
951*4882a593Smuzhiyun #endif /* __LINUX_MFD_TPS65910_H */
952