1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Functions and registers to access AXP20X power management chip.
8 #ifndef __LINUX_MFD_AXP20X_H
9 #define __LINUX_MFD_AXP20X_H
11 #include <linux/regmap.h>
13 enum axp20x_variants {
28 #define AXP20X_DATACACHE(m) (0x04 + (m))
31 #define AXP152_PWR_OP_MODE 0x01
32 #define AXP152_LDO3456_DC1234_CTRL 0x12
33 #define AXP152_ALDO_OP_MODE 0x13
34 #define AXP152_LDO0_CTRL 0x15
35 #define AXP152_DCDC2_V_OUT 0x23
36 #define AXP152_DCDC2_V_RAMP 0x25
37 #define AXP152_DCDC1_V_OUT 0x26
38 #define AXP152_DCDC3_V_OUT 0x27
39 #define AXP152_ALDO12_V_OUT 0x28
40 #define AXP152_DLDO1_V_OUT 0x29
41 #define AXP152_DLDO2_V_OUT 0x2a
42 #define AXP152_DCDC4_V_OUT 0x2b
43 #define AXP152_V_OFF 0x31
44 #define AXP152_OFF_CTRL 0x32
45 #define AXP152_PEK_KEY 0x36
46 #define AXP152_DCDC_FREQ 0x37
47 #define AXP152_DCDC_MODE 0x80
49 #define AXP20X_PWR_INPUT_STATUS 0x00
50 #define AXP20X_PWR_OP_MODE 0x01
51 #define AXP20X_USB_OTG_STATUS 0x02
52 #define AXP20X_PWR_OUT_CTRL 0x12
53 #define AXP20X_DCDC2_V_OUT 0x23
54 #define AXP20X_DCDC2_LDO3_V_RAMP 0x25
55 #define AXP20X_DCDC3_V_OUT 0x27
56 #define AXP20X_LDO24_V_OUT 0x28
57 #define AXP20X_LDO3_V_OUT 0x29
58 #define AXP20X_VBUS_IPSOUT_MGMT 0x30
59 #define AXP20X_V_OFF 0x31
60 #define AXP20X_OFF_CTRL 0x32
61 #define AXP20X_CHRG_CTRL1 0x33
62 #define AXP20X_CHRG_CTRL2 0x34
63 #define AXP20X_CHRG_BAK_CTRL 0x35
64 #define AXP20X_PEK_KEY 0x36
65 #define AXP20X_DCDC_FREQ 0x37
66 #define AXP20X_V_LTF_CHRG 0x38
67 #define AXP20X_V_HTF_CHRG 0x39
68 #define AXP20X_APS_WARN_L1 0x3a
69 #define AXP20X_APS_WARN_L2 0x3b
70 #define AXP20X_V_LTF_DISCHRG 0x3c
71 #define AXP20X_V_HTF_DISCHRG 0x3d
73 #define AXP22X_PWR_OUT_CTRL1 0x10
74 #define AXP22X_PWR_OUT_CTRL2 0x12
75 #define AXP22X_PWR_OUT_CTRL3 0x13
76 #define AXP22X_DLDO1_V_OUT 0x15
77 #define AXP22X_DLDO2_V_OUT 0x16
78 #define AXP22X_DLDO3_V_OUT 0x17
79 #define AXP22X_DLDO4_V_OUT 0x18
80 #define AXP22X_ELDO1_V_OUT 0x19
81 #define AXP22X_ELDO2_V_OUT 0x1a
82 #define AXP22X_ELDO3_V_OUT 0x1b
83 #define AXP22X_DC5LDO_V_OUT 0x1c
84 #define AXP22X_DCDC1_V_OUT 0x21
85 #define AXP22X_DCDC2_V_OUT 0x22
86 #define AXP22X_DCDC3_V_OUT 0x23
87 #define AXP22X_DCDC4_V_OUT 0x24
88 #define AXP22X_DCDC5_V_OUT 0x25
89 #define AXP22X_DCDC23_V_RAMP_CTRL 0x27
90 #define AXP22X_ALDO1_V_OUT 0x28
91 #define AXP22X_ALDO2_V_OUT 0x29
92 #define AXP22X_ALDO3_V_OUT 0x2a
93 #define AXP22X_CHRG_CTRL3 0x35
95 #define AXP806_STARTUP_SRC 0x00
96 #define AXP806_CHIP_ID 0x03
97 #define AXP806_PWR_OUT_CTRL1 0x10
98 #define AXP806_PWR_OUT_CTRL2 0x11
99 #define AXP806_DCDCA_V_CTRL 0x12
100 #define AXP806_DCDCB_V_CTRL 0x13
101 #define AXP806_DCDCC_V_CTRL 0x14
102 #define AXP806_DCDCD_V_CTRL 0x15
103 #define AXP806_DCDCE_V_CTRL 0x16
104 #define AXP806_ALDO1_V_CTRL 0x17
105 #define AXP806_ALDO2_V_CTRL 0x18
106 #define AXP806_ALDO3_V_CTRL 0x19
107 #define AXP806_DCDC_MODE_CTRL1 0x1a
108 #define AXP806_DCDC_MODE_CTRL2 0x1b
109 #define AXP806_DCDC_FREQ_CTRL 0x1c
110 #define AXP806_BLDO1_V_CTRL 0x20
111 #define AXP806_BLDO2_V_CTRL 0x21
112 #define AXP806_BLDO3_V_CTRL 0x22
113 #define AXP806_BLDO4_V_CTRL 0x23
114 #define AXP806_CLDO1_V_CTRL 0x24
115 #define AXP806_CLDO2_V_CTRL 0x25
116 #define AXP806_CLDO3_V_CTRL 0x26
117 #define AXP806_VREF_TEMP_WARN_L 0xf3
118 #define AXP806_BUS_ADDR_EXT 0xfe
119 #define AXP806_REG_ADDR_EXT 0xff
121 #define AXP803_POLYPHASE_CTRL 0x14
122 #define AXP803_FLDO1_V_OUT 0x1c
123 #define AXP803_FLDO2_V_OUT 0x1d
124 #define AXP803_DCDC1_V_OUT 0x20
125 #define AXP803_DCDC2_V_OUT 0x21
126 #define AXP803_DCDC3_V_OUT 0x22
127 #define AXP803_DCDC4_V_OUT 0x23
128 #define AXP803_DCDC5_V_OUT 0x24
129 #define AXP803_DCDC6_V_OUT 0x25
130 #define AXP803_DCDC_FREQ_CTRL 0x3b
132 /* Other DCDC regulator control registers are the same as AXP803 */
133 #define AXP813_DCDC7_V_OUT 0x26
135 #define AXP15060_STARTUP_SRC 0x00
136 #define AXP15060_PWR_OUT_CTRL1 0x10
137 #define AXP15060_PWR_OUT_CTRL2 0x11
138 #define AXP15060_PWR_OUT_CTRL3 0x12
139 #define AXP15060_DCDC1_V_CTRL 0x13
140 #define AXP15060_DCDC2_V_CTRL 0x14
141 #define AXP15060_DCDC3_V_CTRL 0x15
142 #define AXP15060_DCDC4_V_CTRL 0x16
143 #define AXP15060_DCDC5_V_CTRL 0x17
144 #define AXP15060_DCDC6_V_CTRL 0x18
145 #define AXP15060_ALDO1_V_CTRL 0x19
146 #define AXP15060_DCDC_MODE_CTRL1 0x1a
147 #define AXP15060_DCDC_MODE_CTRL2 0x1b
148 #define AXP15060_OUTPUT_MONITOR_DISCHARGE 0x1e
149 #define AXP15060_IRQ_PWROK_VOFF 0x1f
150 #define AXP15060_ALDO2_V_CTRL 0x20
151 #define AXP15060_ALDO3_V_CTRL 0x21
152 #define AXP15060_ALDO4_V_CTRL 0x22
153 #define AXP15060_ALDO5_V_CTRL 0x23
154 #define AXP15060_BLDO1_V_CTRL 0x24
155 #define AXP15060_BLDO2_V_CTRL 0x25
156 #define AXP15060_BLDO3_V_CTRL 0x26
157 #define AXP15060_BLDO4_V_CTRL 0x27
158 #define AXP15060_BLDO5_V_CTRL 0x28
159 #define AXP15060_CLDO1_V_CTRL 0x29
160 #define AXP15060_CLDO2_V_CTRL 0x2a
161 #define AXP15060_CLDO3_V_CTRL 0x2b
162 #define AXP15060_CLDO4_V_CTRL 0x2d
163 #define AXP15060_CPUSLDO_V_CTRL 0x2e
164 #define AXP15060_PWR_WAKEUP_CTRL 0x31
165 #define AXP15060_PWR_DISABLE_DOWN_SEQ 0x32
166 #define AXP15060_PEK_KEY 0x36
169 #define AXP152_IRQ1_EN 0x40
170 #define AXP152_IRQ2_EN 0x41
171 #define AXP152_IRQ3_EN 0x42
172 #define AXP152_IRQ1_STATE 0x48
173 #define AXP152_IRQ2_STATE 0x49
174 #define AXP152_IRQ3_STATE 0x4a
176 #define AXP20X_IRQ1_EN 0x40
177 #define AXP20X_IRQ2_EN 0x41
178 #define AXP20X_IRQ3_EN 0x42
179 #define AXP20X_IRQ4_EN 0x43
180 #define AXP20X_IRQ5_EN 0x44
181 #define AXP20X_IRQ6_EN 0x45
182 #define AXP20X_IRQ1_STATE 0x48
183 #define AXP20X_IRQ2_STATE 0x49
184 #define AXP20X_IRQ3_STATE 0x4a
185 #define AXP20X_IRQ4_STATE 0x4b
186 #define AXP20X_IRQ5_STATE 0x4c
187 #define AXP20X_IRQ6_STATE 0x4d
189 #define AXP15060_IRQ1_EN 0x40
190 #define AXP15060_IRQ2_EN 0x41
191 #define AXP15060_IRQ1_STATE 0x48
192 #define AXP15060_IRQ2_STATE 0x49
195 #define AXP20X_ACIN_V_ADC_H 0x56
196 #define AXP20X_ACIN_V_ADC_L 0x57
197 #define AXP20X_ACIN_I_ADC_H 0x58
198 #define AXP20X_ACIN_I_ADC_L 0x59
199 #define AXP20X_VBUS_V_ADC_H 0x5a
200 #define AXP20X_VBUS_V_ADC_L 0x5b
201 #define AXP20X_VBUS_I_ADC_H 0x5c
202 #define AXP20X_VBUS_I_ADC_L 0x5d
203 #define AXP20X_TEMP_ADC_H 0x5e
204 #define AXP20X_TEMP_ADC_L 0x5f
205 #define AXP20X_TS_IN_H 0x62
206 #define AXP20X_TS_IN_L 0x63
207 #define AXP20X_GPIO0_V_ADC_H 0x64
208 #define AXP20X_GPIO0_V_ADC_L 0x65
209 #define AXP20X_GPIO1_V_ADC_H 0x66
210 #define AXP20X_GPIO1_V_ADC_L 0x67
211 #define AXP20X_PWR_BATT_H 0x70
212 #define AXP20X_PWR_BATT_M 0x71
213 #define AXP20X_PWR_BATT_L 0x72
214 #define AXP20X_BATT_V_H 0x78
215 #define AXP20X_BATT_V_L 0x79
216 #define AXP20X_BATT_CHRG_I_H 0x7a
217 #define AXP20X_BATT_CHRG_I_L 0x7b
218 #define AXP20X_BATT_DISCHRG_I_H 0x7c
219 #define AXP20X_BATT_DISCHRG_I_L 0x7d
220 #define AXP20X_IPSOUT_V_HIGH_H 0x7e
221 #define AXP20X_IPSOUT_V_HIGH_L 0x7f
224 #define AXP20X_DCDC_MODE 0x80
225 #define AXP20X_ADC_EN1 0x82
226 #define AXP20X_ADC_EN2 0x83
227 #define AXP20X_ADC_RATE 0x84
228 #define AXP20X_GPIO10_IN_RANGE 0x85
229 #define AXP20X_GPIO1_ADC_IRQ_RIS 0x86
230 #define AXP20X_GPIO1_ADC_IRQ_FAL 0x87
231 #define AXP20X_TIMER_CTRL 0x8a
232 #define AXP20X_VBUS_MON 0x8b
233 #define AXP20X_OVER_TMP 0x8f
235 #define AXP22X_PWREN_CTRL1 0x8c
236 #define AXP22X_PWREN_CTRL2 0x8d
239 #define AXP152_GPIO0_CTRL 0x90
240 #define AXP152_GPIO1_CTRL 0x91
241 #define AXP152_GPIO2_CTRL 0x92
242 #define AXP152_GPIO3_CTRL 0x93
243 #define AXP152_LDOGPIO2_V_OUT 0x96
244 #define AXP152_GPIO_INPUT 0x97
245 #define AXP152_PWM0_FREQ_X 0x98
246 #define AXP152_PWM0_FREQ_Y 0x99
247 #define AXP152_PWM0_DUTY_CYCLE 0x9a
248 #define AXP152_PWM1_FREQ_X 0x9b
249 #define AXP152_PWM1_FREQ_Y 0x9c
250 #define AXP152_PWM1_DUTY_CYCLE 0x9d
252 #define AXP20X_GPIO0_CTRL 0x90
253 #define AXP20X_LDO5_V_OUT 0x91
254 #define AXP20X_GPIO1_CTRL 0x92
255 #define AXP20X_GPIO2_CTRL 0x93
256 #define AXP20X_GPIO20_SS 0x94
257 #define AXP20X_GPIO3_CTRL 0x95
259 #define AXP22X_LDO_IO0_V_OUT 0x91
260 #define AXP22X_LDO_IO1_V_OUT 0x93
261 #define AXP22X_GPIO_STATE 0x94
262 #define AXP22X_GPIO_PULL_DOWN 0x95
264 #define AXP15060_CLDO4_GPIO2_MODESET 0x2c
267 #define AXP20X_CHRG_CC_31_24 0xb0
268 #define AXP20X_CHRG_CC_23_16 0xb1
269 #define AXP20X_CHRG_CC_15_8 0xb2
270 #define AXP20X_CHRG_CC_7_0 0xb3
271 #define AXP20X_DISCHRG_CC_31_24 0xb4
272 #define AXP20X_DISCHRG_CC_23_16 0xb5
273 #define AXP20X_DISCHRG_CC_15_8 0xb6
274 #define AXP20X_DISCHRG_CC_7_0 0xb7
275 #define AXP20X_CC_CTRL 0xb8
276 #define AXP20X_FG_RES 0xb9
279 #define AXP20X_RDC_H 0xba
280 #define AXP20X_RDC_L 0xbb
281 #define AXP20X_OCV(m) (0xc0 + (m))
282 #define AXP20X_OCV_MAX 0xf
284 /* AXP22X specific registers */
285 #define AXP22X_PMIC_TEMP_H 0x56
286 #define AXP22X_PMIC_TEMP_L 0x57
287 #define AXP22X_TS_ADC_H 0x58
288 #define AXP22X_TS_ADC_L 0x59
289 #define AXP22X_BATLOW_THRES1 0xe6
291 /* AXP288/AXP803 specific registers */
292 #define AXP288_POWER_REASON 0x02
293 #define AXP288_BC_GLOBAL 0x2c
294 #define AXP288_BC_VBUS_CNTL 0x2d
295 #define AXP288_BC_USB_STAT 0x2e
296 #define AXP288_BC_DET_STAT 0x2f
297 #define AXP288_PMIC_ADC_H 0x56
298 #define AXP288_PMIC_ADC_L 0x57
299 #define AXP288_TS_ADC_H 0x58
300 #define AXP288_TS_ADC_L 0x59
301 #define AXP288_GP_ADC_H 0x5a
302 #define AXP288_GP_ADC_L 0x5b
303 #define AXP288_ADC_TS_PIN_CTRL 0x84
304 #define AXP288_RT_BATT_V_H 0xa0
305 #define AXP288_RT_BATT_V_L 0xa1
307 #define AXP813_ACIN_PATH_CTRL 0x3a
308 #define AXP813_ADC_RATE 0x85
311 #define AXP288_FG_RDC1_REG 0xba
312 #define AXP288_FG_RDC0_REG 0xbb
313 #define AXP288_FG_OCVH_REG 0xbc
314 #define AXP288_FG_OCVL_REG 0xbd
315 #define AXP288_FG_OCV_CURVE_REG 0xc0
316 #define AXP288_FG_DES_CAP1_REG 0xe0
317 #define AXP288_FG_DES_CAP0_REG 0xe1
318 #define AXP288_FG_CC_MTR1_REG 0xe2
319 #define AXP288_FG_CC_MTR0_REG 0xe3
320 #define AXP288_FG_OCV_CAP_REG 0xe4
321 #define AXP288_FG_CC_CAP_REG 0xe5
322 #define AXP288_FG_LOW_CAP_REG 0xe6
323 #define AXP288_FG_TUNE0 0xe8
324 #define AXP288_FG_TUNE1 0xe9
325 #define AXP288_FG_TUNE2 0xea
326 #define AXP288_FG_TUNE3 0xeb
327 #define AXP288_FG_TUNE4 0xec
328 #define AXP288_FG_TUNE5 0xed
492 AXP152_IRQ_LDO0IN_CONNECT = 1,
493 AXP152_IRQ_LDO0IN_REMOVAL,
494 AXP152_IRQ_ALDO0IN_CONNECT,
495 AXP152_IRQ_ALDO0IN_REMOVAL,
496 AXP152_IRQ_DCDC1_V_LOW,
497 AXP152_IRQ_DCDC2_V_LOW,
498 AXP152_IRQ_DCDC3_V_LOW,
499 AXP152_IRQ_DCDC4_V_LOW,
500 AXP152_IRQ_PEK_SHORT,
503 /* out of bit order to make sure the press event is handled first */
504 AXP152_IRQ_PEK_FAL_EDGE,
505 AXP152_IRQ_PEK_RIS_EDGE,
506 AXP152_IRQ_GPIO3_INPUT,
507 AXP152_IRQ_GPIO2_INPUT,
508 AXP152_IRQ_GPIO1_INPUT,
509 AXP152_IRQ_GPIO0_INPUT,
513 AXP20X_IRQ_ACIN_OVER_V = 1,
514 AXP20X_IRQ_ACIN_PLUGIN,
515 AXP20X_IRQ_ACIN_REMOVAL,
516 AXP20X_IRQ_VBUS_OVER_V,
517 AXP20X_IRQ_VBUS_PLUGIN,
518 AXP20X_IRQ_VBUS_REMOVAL,
519 AXP20X_IRQ_VBUS_V_LOW,
520 AXP20X_IRQ_BATT_PLUGIN,
521 AXP20X_IRQ_BATT_REMOVAL,
522 AXP20X_IRQ_BATT_ENT_ACT_MODE,
523 AXP20X_IRQ_BATT_EXIT_ACT_MODE,
525 AXP20X_IRQ_CHARG_DONE,
526 AXP20X_IRQ_BATT_TEMP_HIGH,
527 AXP20X_IRQ_BATT_TEMP_LOW,
528 AXP20X_IRQ_DIE_TEMP_HIGH,
529 AXP20X_IRQ_CHARG_I_LOW,
530 AXP20X_IRQ_DCDC1_V_LONG,
531 AXP20X_IRQ_DCDC2_V_LONG,
532 AXP20X_IRQ_DCDC3_V_LONG,
533 AXP20X_IRQ_PEK_SHORT = 22,
535 AXP20X_IRQ_N_OE_PWR_ON,
536 AXP20X_IRQ_N_OE_PWR_OFF,
537 AXP20X_IRQ_VBUS_VALID,
538 AXP20X_IRQ_VBUS_NOT_VALID,
539 AXP20X_IRQ_VBUS_SESS_VALID,
540 AXP20X_IRQ_VBUS_SESS_END,
541 AXP20X_IRQ_LOW_PWR_LVL1,
542 AXP20X_IRQ_LOW_PWR_LVL2,
544 /* out of bit order to make sure the press event is handled first */
545 AXP20X_IRQ_PEK_FAL_EDGE,
546 AXP20X_IRQ_PEK_RIS_EDGE,
547 AXP20X_IRQ_GPIO3_INPUT,
548 AXP20X_IRQ_GPIO2_INPUT,
549 AXP20X_IRQ_GPIO1_INPUT,
550 AXP20X_IRQ_GPIO0_INPUT,
554 AXP22X_IRQ_ACIN_OVER_V = 1,
555 AXP22X_IRQ_ACIN_PLUGIN,
556 AXP22X_IRQ_ACIN_REMOVAL,
557 AXP22X_IRQ_VBUS_OVER_V,
558 AXP22X_IRQ_VBUS_PLUGIN,
559 AXP22X_IRQ_VBUS_REMOVAL,
560 AXP22X_IRQ_VBUS_V_LOW,
561 AXP22X_IRQ_BATT_PLUGIN,
562 AXP22X_IRQ_BATT_REMOVAL,
563 AXP22X_IRQ_BATT_ENT_ACT_MODE,
564 AXP22X_IRQ_BATT_EXIT_ACT_MODE,
566 AXP22X_IRQ_CHARG_DONE,
567 AXP22X_IRQ_BATT_TEMP_HIGH,
568 AXP22X_IRQ_BATT_TEMP_LOW,
569 AXP22X_IRQ_DIE_TEMP_HIGH,
570 AXP22X_IRQ_PEK_SHORT,
572 AXP22X_IRQ_LOW_PWR_LVL1,
573 AXP22X_IRQ_LOW_PWR_LVL2,
575 /* out of bit order to make sure the press event is handled first */
576 AXP22X_IRQ_PEK_FAL_EDGE,
577 AXP22X_IRQ_PEK_RIS_EDGE,
578 AXP22X_IRQ_GPIO1_INPUT,
579 AXP22X_IRQ_GPIO0_INPUT,
583 AXP288_IRQ_VBUS_FALL = 2,
584 AXP288_IRQ_VBUS_RISE,
586 AXP288_IRQ_FALLING_ALT,
587 AXP288_IRQ_RISING_ALT,
589 AXP288_IRQ_DONE = 10,
591 AXP288_IRQ_SAFE_QUIT,
592 AXP288_IRQ_SAFE_ENTER,
616 AXP288_IRQ_BC_USB_CHNG,
620 AXP803_IRQ_ACIN_OVER_V = 1,
621 AXP803_IRQ_ACIN_PLUGIN,
622 AXP803_IRQ_ACIN_REMOVAL,
623 AXP803_IRQ_VBUS_OVER_V,
624 AXP803_IRQ_VBUS_PLUGIN,
625 AXP803_IRQ_VBUS_REMOVAL,
626 AXP803_IRQ_BATT_PLUGIN,
627 AXP803_IRQ_BATT_REMOVAL,
628 AXP803_IRQ_BATT_ENT_ACT_MODE,
629 AXP803_IRQ_BATT_EXIT_ACT_MODE,
631 AXP803_IRQ_CHARG_DONE,
632 AXP803_IRQ_BATT_CHG_TEMP_HIGH,
633 AXP803_IRQ_BATT_CHG_TEMP_HIGH_END,
634 AXP803_IRQ_BATT_CHG_TEMP_LOW,
635 AXP803_IRQ_BATT_CHG_TEMP_LOW_END,
636 AXP803_IRQ_BATT_ACT_TEMP_HIGH,
637 AXP803_IRQ_BATT_ACT_TEMP_HIGH_END,
638 AXP803_IRQ_BATT_ACT_TEMP_LOW,
639 AXP803_IRQ_BATT_ACT_TEMP_LOW_END,
640 AXP803_IRQ_DIE_TEMP_HIGH,
642 AXP803_IRQ_LOW_PWR_LVL1,
643 AXP803_IRQ_LOW_PWR_LVL2,
645 /* out of bit order to make sure the press event is handled first */
646 AXP803_IRQ_PEK_FAL_EDGE,
647 AXP803_IRQ_PEK_RIS_EDGE,
648 AXP803_IRQ_PEK_SHORT,
650 AXP803_IRQ_PEK_OVER_OFF,
651 AXP803_IRQ_GPIO1_INPUT,
652 AXP803_IRQ_GPIO0_INPUT,
653 AXP803_IRQ_BC_USB_CHNG,
658 AXP806_IRQ_DIE_TEMP_HIGH_LV1,
659 AXP806_IRQ_DIE_TEMP_HIGH_LV2,
660 AXP806_IRQ_DCDCA_V_LOW,
661 AXP806_IRQ_DCDCB_V_LOW,
662 AXP806_IRQ_DCDCC_V_LOW,
663 AXP806_IRQ_DCDCD_V_LOW,
664 AXP806_IRQ_DCDCE_V_LOW,
666 AXP806_IRQ_POK_SHORT,
673 AXP809_IRQ_ACIN_OVER_V = 1,
674 AXP809_IRQ_ACIN_PLUGIN,
675 AXP809_IRQ_ACIN_REMOVAL,
676 AXP809_IRQ_VBUS_OVER_V,
677 AXP809_IRQ_VBUS_PLUGIN,
678 AXP809_IRQ_VBUS_REMOVAL,
679 AXP809_IRQ_VBUS_V_LOW,
680 AXP809_IRQ_BATT_PLUGIN,
681 AXP809_IRQ_BATT_REMOVAL,
682 AXP809_IRQ_BATT_ENT_ACT_MODE,
683 AXP809_IRQ_BATT_EXIT_ACT_MODE,
685 AXP809_IRQ_CHARG_DONE,
686 AXP809_IRQ_BATT_CHG_TEMP_HIGH,
687 AXP809_IRQ_BATT_CHG_TEMP_HIGH_END,
688 AXP809_IRQ_BATT_CHG_TEMP_LOW,
689 AXP809_IRQ_BATT_CHG_TEMP_LOW_END,
690 AXP809_IRQ_BATT_ACT_TEMP_HIGH,
691 AXP809_IRQ_BATT_ACT_TEMP_HIGH_END,
692 AXP809_IRQ_BATT_ACT_TEMP_LOW,
693 AXP809_IRQ_BATT_ACT_TEMP_LOW_END,
694 AXP809_IRQ_DIE_TEMP_HIGH,
695 AXP809_IRQ_LOW_PWR_LVL1,
696 AXP809_IRQ_LOW_PWR_LVL2,
698 /* out of bit order to make sure the press event is handled first */
699 AXP809_IRQ_PEK_FAL_EDGE,
700 AXP809_IRQ_PEK_RIS_EDGE,
701 AXP809_IRQ_PEK_SHORT,
703 AXP809_IRQ_PEK_OVER_OFF,
704 AXP809_IRQ_GPIO1_INPUT,
705 AXP809_IRQ_GPIO0_INPUT,
709 AXP15060_IRQ_DIE_TEMP_HIGH_LV1 = 1,
710 AXP15060_IRQ_DIE_TEMP_HIGH_LV2,
711 AXP15060_IRQ_DCDC1_V_LOW,
712 AXP15060_IRQ_DCDC2_V_LOW,
713 AXP15060_IRQ_DCDC3_V_LOW,
714 AXP15060_IRQ_DCDC4_V_LOW,
715 AXP15060_IRQ_DCDC5_V_LOW,
716 AXP15060_IRQ_DCDC6_V_LOW,
717 AXP15060_IRQ_PEK_LONG,
718 AXP15060_IRQ_PEK_SHORT,
719 AXP15060_IRQ_GPIO1_INPUT,
720 AXP15060_IRQ_PEK_FAL_EDGE,
721 AXP15060_IRQ_PEK_RIS_EDGE,
722 AXP15060_IRQ_GPIO2_INPUT,
728 unsigned long irq_flags;
729 struct regmap *regmap;
730 struct regmap_irq_chip_data *regmap_irqc;
733 const struct mfd_cell *cells;
734 const struct regmap_config *regmap_cfg;
735 const struct regmap_irq_chip *regmap_irq_chip;
738 /* generic helper function for reading 9-16 bit wide regs */
739 static inline int axp20x_read_variable_width(struct regmap *regmap,
740 unsigned int reg, unsigned int width)
742 unsigned int reg_val, result;
745 err = regmap_read(regmap, reg, ®_val);
749 result = reg_val << (width - 8);
751 err = regmap_read(regmap, reg + 1, ®_val);
761 * axp20x_match_device(): Setup axp20x variant related fields
763 * @axp20x: axp20x device to setup (.dev field must be set)
764 * @dev: device associated with this axp20x device
766 * This lets the axp20x core configure the mfd cells and register maps
769 int axp20x_match_device(struct axp20x_dev *axp20x);
772 * axp20x_device_probe(): Probe a configured axp20x device
774 * @axp20x: axp20x device to probe (must be configured)
776 * This function lets the axp20x core register the axp20x mfd devices
777 * and irqchip. The axp20x device passed in must be fully configured
778 * with axp20x_match_device, its irq set, and regmap created.
780 int axp20x_device_probe(struct axp20x_dev *axp20x);
783 * axp20x_device_remove(): Remove a axp20x device
785 * @axp20x: axp20x device to remove
787 * This tells the axp20x core to remove the associated mfd devices
789 void axp20x_device_remove(struct axp20x_dev *axp20x);
791 #endif /* __LINUX_MFD_AXP20X_H */