0001
0002
0003
0004
0005
0006
0007
0008 #ifndef __LINUX_MFD_AXP20X_H
0009 #define __LINUX_MFD_AXP20X_H
0010
0011 #include <linux/regmap.h>
0012
0013 enum axp20x_variants {
0014 AXP152_ID = 0,
0015 AXP202_ID,
0016 AXP209_ID,
0017 AXP221_ID,
0018 AXP223_ID,
0019 AXP288_ID,
0020 AXP803_ID,
0021 AXP806_ID,
0022 AXP809_ID,
0023 AXP813_ID,
0024 NR_AXP20X_VARIANTS,
0025 };
0026
0027 #define AXP20X_DATACACHE(m) (0x04 + (m))
0028
0029
0030 #define AXP152_PWR_OP_MODE 0x01
0031 #define AXP152_LDO3456_DC1234_CTRL 0x12
0032 #define AXP152_ALDO_OP_MODE 0x13
0033 #define AXP152_LDO0_CTRL 0x15
0034 #define AXP152_DCDC2_V_OUT 0x23
0035 #define AXP152_DCDC2_V_RAMP 0x25
0036 #define AXP152_DCDC1_V_OUT 0x26
0037 #define AXP152_DCDC3_V_OUT 0x27
0038 #define AXP152_ALDO12_V_OUT 0x28
0039 #define AXP152_DLDO1_V_OUT 0x29
0040 #define AXP152_DLDO2_V_OUT 0x2a
0041 #define AXP152_DCDC4_V_OUT 0x2b
0042 #define AXP152_V_OFF 0x31
0043 #define AXP152_OFF_CTRL 0x32
0044 #define AXP152_PEK_KEY 0x36
0045 #define AXP152_DCDC_FREQ 0x37
0046 #define AXP152_DCDC_MODE 0x80
0047
0048 #define AXP20X_PWR_INPUT_STATUS 0x00
0049 #define AXP20X_PWR_OP_MODE 0x01
0050 #define AXP20X_USB_OTG_STATUS 0x02
0051 #define AXP20X_PWR_OUT_CTRL 0x12
0052 #define AXP20X_DCDC2_V_OUT 0x23
0053 #define AXP20X_DCDC2_LDO3_V_RAMP 0x25
0054 #define AXP20X_DCDC3_V_OUT 0x27
0055 #define AXP20X_LDO24_V_OUT 0x28
0056 #define AXP20X_LDO3_V_OUT 0x29
0057 #define AXP20X_VBUS_IPSOUT_MGMT 0x30
0058 #define AXP20X_V_OFF 0x31
0059 #define AXP20X_OFF_CTRL 0x32
0060 #define AXP20X_CHRG_CTRL1 0x33
0061 #define AXP20X_CHRG_CTRL2 0x34
0062 #define AXP20X_CHRG_BAK_CTRL 0x35
0063 #define AXP20X_PEK_KEY 0x36
0064 #define AXP20X_DCDC_FREQ 0x37
0065 #define AXP20X_V_LTF_CHRG 0x38
0066 #define AXP20X_V_HTF_CHRG 0x39
0067 #define AXP20X_APS_WARN_L1 0x3a
0068 #define AXP20X_APS_WARN_L2 0x3b
0069 #define AXP20X_V_LTF_DISCHRG 0x3c
0070 #define AXP20X_V_HTF_DISCHRG 0x3d
0071
0072 #define AXP22X_PWR_OUT_CTRL1 0x10
0073 #define AXP22X_PWR_OUT_CTRL2 0x12
0074 #define AXP22X_PWR_OUT_CTRL3 0x13
0075 #define AXP22X_DLDO1_V_OUT 0x15
0076 #define AXP22X_DLDO2_V_OUT 0x16
0077 #define AXP22X_DLDO3_V_OUT 0x17
0078 #define AXP22X_DLDO4_V_OUT 0x18
0079 #define AXP22X_ELDO1_V_OUT 0x19
0080 #define AXP22X_ELDO2_V_OUT 0x1a
0081 #define AXP22X_ELDO3_V_OUT 0x1b
0082 #define AXP22X_DC5LDO_V_OUT 0x1c
0083 #define AXP22X_DCDC1_V_OUT 0x21
0084 #define AXP22X_DCDC2_V_OUT 0x22
0085 #define AXP22X_DCDC3_V_OUT 0x23
0086 #define AXP22X_DCDC4_V_OUT 0x24
0087 #define AXP22X_DCDC5_V_OUT 0x25
0088 #define AXP22X_DCDC23_V_RAMP_CTRL 0x27
0089 #define AXP22X_ALDO1_V_OUT 0x28
0090 #define AXP22X_ALDO2_V_OUT 0x29
0091 #define AXP22X_ALDO3_V_OUT 0x2a
0092 #define AXP22X_CHRG_CTRL3 0x35
0093
0094 #define AXP806_STARTUP_SRC 0x00
0095 #define AXP806_CHIP_ID 0x03
0096 #define AXP806_PWR_OUT_CTRL1 0x10
0097 #define AXP806_PWR_OUT_CTRL2 0x11
0098 #define AXP806_DCDCA_V_CTRL 0x12
0099 #define AXP806_DCDCB_V_CTRL 0x13
0100 #define AXP806_DCDCC_V_CTRL 0x14
0101 #define AXP806_DCDCD_V_CTRL 0x15
0102 #define AXP806_DCDCE_V_CTRL 0x16
0103 #define AXP806_ALDO1_V_CTRL 0x17
0104 #define AXP806_ALDO2_V_CTRL 0x18
0105 #define AXP806_ALDO3_V_CTRL 0x19
0106 #define AXP806_DCDC_MODE_CTRL1 0x1a
0107 #define AXP806_DCDC_MODE_CTRL2 0x1b
0108 #define AXP806_DCDC_FREQ_CTRL 0x1c
0109 #define AXP806_BLDO1_V_CTRL 0x20
0110 #define AXP806_BLDO2_V_CTRL 0x21
0111 #define AXP806_BLDO3_V_CTRL 0x22
0112 #define AXP806_BLDO4_V_CTRL 0x23
0113 #define AXP806_CLDO1_V_CTRL 0x24
0114 #define AXP806_CLDO2_V_CTRL 0x25
0115 #define AXP806_CLDO3_V_CTRL 0x26
0116 #define AXP806_VREF_TEMP_WARN_L 0xf3
0117 #define AXP806_BUS_ADDR_EXT 0xfe
0118 #define AXP806_REG_ADDR_EXT 0xff
0119
0120 #define AXP803_POLYPHASE_CTRL 0x14
0121 #define AXP803_FLDO1_V_OUT 0x1c
0122 #define AXP803_FLDO2_V_OUT 0x1d
0123 #define AXP803_DCDC1_V_OUT 0x20
0124 #define AXP803_DCDC2_V_OUT 0x21
0125 #define AXP803_DCDC3_V_OUT 0x22
0126 #define AXP803_DCDC4_V_OUT 0x23
0127 #define AXP803_DCDC5_V_OUT 0x24
0128 #define AXP803_DCDC6_V_OUT 0x25
0129 #define AXP803_DCDC_FREQ_CTRL 0x3b
0130
0131
0132 #define AXP813_DCDC7_V_OUT 0x26
0133
0134
0135 #define AXP152_IRQ1_EN 0x40
0136 #define AXP152_IRQ2_EN 0x41
0137 #define AXP152_IRQ3_EN 0x42
0138 #define AXP152_IRQ1_STATE 0x48
0139 #define AXP152_IRQ2_STATE 0x49
0140 #define AXP152_IRQ3_STATE 0x4a
0141
0142 #define AXP20X_IRQ1_EN 0x40
0143 #define AXP20X_IRQ2_EN 0x41
0144 #define AXP20X_IRQ3_EN 0x42
0145 #define AXP20X_IRQ4_EN 0x43
0146 #define AXP20X_IRQ5_EN 0x44
0147 #define AXP20X_IRQ6_EN 0x45
0148 #define AXP20X_IRQ1_STATE 0x48
0149 #define AXP20X_IRQ2_STATE 0x49
0150 #define AXP20X_IRQ3_STATE 0x4a
0151 #define AXP20X_IRQ4_STATE 0x4b
0152 #define AXP20X_IRQ5_STATE 0x4c
0153 #define AXP20X_IRQ6_STATE 0x4d
0154
0155
0156 #define AXP20X_ACIN_V_ADC_H 0x56
0157 #define AXP20X_ACIN_V_ADC_L 0x57
0158 #define AXP20X_ACIN_I_ADC_H 0x58
0159 #define AXP20X_ACIN_I_ADC_L 0x59
0160 #define AXP20X_VBUS_V_ADC_H 0x5a
0161 #define AXP20X_VBUS_V_ADC_L 0x5b
0162 #define AXP20X_VBUS_I_ADC_H 0x5c
0163 #define AXP20X_VBUS_I_ADC_L 0x5d
0164 #define AXP20X_TEMP_ADC_H 0x5e
0165 #define AXP20X_TEMP_ADC_L 0x5f
0166 #define AXP20X_TS_IN_H 0x62
0167 #define AXP20X_TS_IN_L 0x63
0168 #define AXP20X_GPIO0_V_ADC_H 0x64
0169 #define AXP20X_GPIO0_V_ADC_L 0x65
0170 #define AXP20X_GPIO1_V_ADC_H 0x66
0171 #define AXP20X_GPIO1_V_ADC_L 0x67
0172 #define AXP20X_PWR_BATT_H 0x70
0173 #define AXP20X_PWR_BATT_M 0x71
0174 #define AXP20X_PWR_BATT_L 0x72
0175 #define AXP20X_BATT_V_H 0x78
0176 #define AXP20X_BATT_V_L 0x79
0177 #define AXP20X_BATT_CHRG_I_H 0x7a
0178 #define AXP20X_BATT_CHRG_I_L 0x7b
0179 #define AXP20X_BATT_DISCHRG_I_H 0x7c
0180 #define AXP20X_BATT_DISCHRG_I_L 0x7d
0181 #define AXP20X_IPSOUT_V_HIGH_H 0x7e
0182 #define AXP20X_IPSOUT_V_HIGH_L 0x7f
0183
0184
0185 #define AXP20X_DCDC_MODE 0x80
0186 #define AXP20X_ADC_EN1 0x82
0187 #define AXP20X_ADC_EN2 0x83
0188 #define AXP20X_ADC_RATE 0x84
0189 #define AXP20X_GPIO10_IN_RANGE 0x85
0190 #define AXP20X_GPIO1_ADC_IRQ_RIS 0x86
0191 #define AXP20X_GPIO1_ADC_IRQ_FAL 0x87
0192 #define AXP20X_TIMER_CTRL 0x8a
0193 #define AXP20X_VBUS_MON 0x8b
0194 #define AXP20X_OVER_TMP 0x8f
0195
0196 #define AXP22X_PWREN_CTRL1 0x8c
0197 #define AXP22X_PWREN_CTRL2 0x8d
0198
0199
0200 #define AXP152_GPIO0_CTRL 0x90
0201 #define AXP152_GPIO1_CTRL 0x91
0202 #define AXP152_GPIO2_CTRL 0x92
0203 #define AXP152_GPIO3_CTRL 0x93
0204 #define AXP152_LDOGPIO2_V_OUT 0x96
0205 #define AXP152_GPIO_INPUT 0x97
0206 #define AXP152_PWM0_FREQ_X 0x98
0207 #define AXP152_PWM0_FREQ_Y 0x99
0208 #define AXP152_PWM0_DUTY_CYCLE 0x9a
0209 #define AXP152_PWM1_FREQ_X 0x9b
0210 #define AXP152_PWM1_FREQ_Y 0x9c
0211 #define AXP152_PWM1_DUTY_CYCLE 0x9d
0212
0213 #define AXP20X_GPIO0_CTRL 0x90
0214 #define AXP20X_LDO5_V_OUT 0x91
0215 #define AXP20X_GPIO1_CTRL 0x92
0216 #define AXP20X_GPIO2_CTRL 0x93
0217 #define AXP20X_GPIO20_SS 0x94
0218 #define AXP20X_GPIO3_CTRL 0x95
0219
0220 #define AXP22X_LDO_IO0_V_OUT 0x91
0221 #define AXP22X_LDO_IO1_V_OUT 0x93
0222 #define AXP22X_GPIO_STATE 0x94
0223 #define AXP22X_GPIO_PULL_DOWN 0x95
0224
0225
0226 #define AXP20X_CHRG_CC_31_24 0xb0
0227 #define AXP20X_CHRG_CC_23_16 0xb1
0228 #define AXP20X_CHRG_CC_15_8 0xb2
0229 #define AXP20X_CHRG_CC_7_0 0xb3
0230 #define AXP20X_DISCHRG_CC_31_24 0xb4
0231 #define AXP20X_DISCHRG_CC_23_16 0xb5
0232 #define AXP20X_DISCHRG_CC_15_8 0xb6
0233 #define AXP20X_DISCHRG_CC_7_0 0xb7
0234 #define AXP20X_CC_CTRL 0xb8
0235 #define AXP20X_FG_RES 0xb9
0236
0237
0238 #define AXP20X_RDC_H 0xba
0239 #define AXP20X_RDC_L 0xbb
0240 #define AXP20X_OCV(m) (0xc0 + (m))
0241 #define AXP20X_OCV_MAX 0xf
0242
0243
0244 #define AXP22X_PMIC_TEMP_H 0x56
0245 #define AXP22X_PMIC_TEMP_L 0x57
0246 #define AXP22X_TS_ADC_H 0x58
0247 #define AXP22X_TS_ADC_L 0x59
0248 #define AXP22X_BATLOW_THRES1 0xe6
0249
0250
0251 #define AXP288_POWER_REASON 0x02
0252 #define AXP288_BC_GLOBAL 0x2c
0253 #define AXP288_BC_VBUS_CNTL 0x2d
0254 #define AXP288_BC_USB_STAT 0x2e
0255 #define AXP288_BC_DET_STAT 0x2f
0256 #define AXP288_PMIC_ADC_H 0x56
0257 #define AXP288_PMIC_ADC_L 0x57
0258 #define AXP288_TS_ADC_H 0x58
0259 #define AXP288_TS_ADC_L 0x59
0260 #define AXP288_GP_ADC_H 0x5a
0261 #define AXP288_GP_ADC_L 0x5b
0262 #define AXP288_ADC_TS_PIN_CTRL 0x84
0263 #define AXP288_RT_BATT_V_H 0xa0
0264 #define AXP288_RT_BATT_V_L 0xa1
0265
0266 #define AXP813_ACIN_PATH_CTRL 0x3a
0267 #define AXP813_ADC_RATE 0x85
0268
0269
0270 #define AXP288_FG_RDC1_REG 0xba
0271 #define AXP288_FG_RDC0_REG 0xbb
0272 #define AXP288_FG_OCVH_REG 0xbc
0273 #define AXP288_FG_OCVL_REG 0xbd
0274 #define AXP288_FG_OCV_CURVE_REG 0xc0
0275 #define AXP288_FG_DES_CAP1_REG 0xe0
0276 #define AXP288_FG_DES_CAP0_REG 0xe1
0277 #define AXP288_FG_CC_MTR1_REG 0xe2
0278 #define AXP288_FG_CC_MTR0_REG 0xe3
0279 #define AXP288_FG_OCV_CAP_REG 0xe4
0280 #define AXP288_FG_CC_CAP_REG 0xe5
0281 #define AXP288_FG_LOW_CAP_REG 0xe6
0282 #define AXP288_FG_TUNE0 0xe8
0283 #define AXP288_FG_TUNE1 0xe9
0284 #define AXP288_FG_TUNE2 0xea
0285 #define AXP288_FG_TUNE3 0xeb
0286 #define AXP288_FG_TUNE4 0xec
0287 #define AXP288_FG_TUNE5 0xed
0288
0289
0290 enum {
0291 AXP20X_LDO1 = 0,
0292 AXP20X_LDO2,
0293 AXP20X_LDO3,
0294 AXP20X_LDO4,
0295 AXP20X_LDO5,
0296 AXP20X_DCDC2,
0297 AXP20X_DCDC3,
0298 AXP20X_REG_ID_MAX,
0299 };
0300
0301 enum {
0302 AXP22X_DCDC1 = 0,
0303 AXP22X_DCDC2,
0304 AXP22X_DCDC3,
0305 AXP22X_DCDC4,
0306 AXP22X_DCDC5,
0307 AXP22X_DC1SW,
0308 AXP22X_DC5LDO,
0309 AXP22X_ALDO1,
0310 AXP22X_ALDO2,
0311 AXP22X_ALDO3,
0312 AXP22X_ELDO1,
0313 AXP22X_ELDO2,
0314 AXP22X_ELDO3,
0315 AXP22X_DLDO1,
0316 AXP22X_DLDO2,
0317 AXP22X_DLDO3,
0318 AXP22X_DLDO4,
0319 AXP22X_RTC_LDO,
0320 AXP22X_LDO_IO0,
0321 AXP22X_LDO_IO1,
0322 AXP22X_REG_ID_MAX,
0323 };
0324
0325 enum {
0326 AXP806_DCDCA = 0,
0327 AXP806_DCDCB,
0328 AXP806_DCDCC,
0329 AXP806_DCDCD,
0330 AXP806_DCDCE,
0331 AXP806_ALDO1,
0332 AXP806_ALDO2,
0333 AXP806_ALDO3,
0334 AXP806_BLDO1,
0335 AXP806_BLDO2,
0336 AXP806_BLDO3,
0337 AXP806_BLDO4,
0338 AXP806_CLDO1,
0339 AXP806_CLDO2,
0340 AXP806_CLDO3,
0341 AXP806_SW,
0342 AXP806_REG_ID_MAX,
0343 };
0344
0345 enum {
0346 AXP809_DCDC1 = 0,
0347 AXP809_DCDC2,
0348 AXP809_DCDC3,
0349 AXP809_DCDC4,
0350 AXP809_DCDC5,
0351 AXP809_DC1SW,
0352 AXP809_DC5LDO,
0353 AXP809_ALDO1,
0354 AXP809_ALDO2,
0355 AXP809_ALDO3,
0356 AXP809_ELDO1,
0357 AXP809_ELDO2,
0358 AXP809_ELDO3,
0359 AXP809_DLDO1,
0360 AXP809_DLDO2,
0361 AXP809_RTC_LDO,
0362 AXP809_LDO_IO0,
0363 AXP809_LDO_IO1,
0364 AXP809_SW,
0365 AXP809_REG_ID_MAX,
0366 };
0367
0368 enum {
0369 AXP803_DCDC1 = 0,
0370 AXP803_DCDC2,
0371 AXP803_DCDC3,
0372 AXP803_DCDC4,
0373 AXP803_DCDC5,
0374 AXP803_DCDC6,
0375 AXP803_DC1SW,
0376 AXP803_ALDO1,
0377 AXP803_ALDO2,
0378 AXP803_ALDO3,
0379 AXP803_DLDO1,
0380 AXP803_DLDO2,
0381 AXP803_DLDO3,
0382 AXP803_DLDO4,
0383 AXP803_ELDO1,
0384 AXP803_ELDO2,
0385 AXP803_ELDO3,
0386 AXP803_FLDO1,
0387 AXP803_FLDO2,
0388 AXP803_RTC_LDO,
0389 AXP803_LDO_IO0,
0390 AXP803_LDO_IO1,
0391 AXP803_REG_ID_MAX,
0392 };
0393
0394 enum {
0395 AXP813_DCDC1 = 0,
0396 AXP813_DCDC2,
0397 AXP813_DCDC3,
0398 AXP813_DCDC4,
0399 AXP813_DCDC5,
0400 AXP813_DCDC6,
0401 AXP813_DCDC7,
0402 AXP813_ALDO1,
0403 AXP813_ALDO2,
0404 AXP813_ALDO3,
0405 AXP813_DLDO1,
0406 AXP813_DLDO2,
0407 AXP813_DLDO3,
0408 AXP813_DLDO4,
0409 AXP813_ELDO1,
0410 AXP813_ELDO2,
0411 AXP813_ELDO3,
0412 AXP813_FLDO1,
0413 AXP813_FLDO2,
0414 AXP813_FLDO3,
0415 AXP813_RTC_LDO,
0416 AXP813_LDO_IO0,
0417 AXP813_LDO_IO1,
0418 AXP813_SW,
0419 AXP813_REG_ID_MAX,
0420 };
0421
0422
0423 enum {
0424 AXP152_IRQ_LDO0IN_CONNECT = 1,
0425 AXP152_IRQ_LDO0IN_REMOVAL,
0426 AXP152_IRQ_ALDO0IN_CONNECT,
0427 AXP152_IRQ_ALDO0IN_REMOVAL,
0428 AXP152_IRQ_DCDC1_V_LOW,
0429 AXP152_IRQ_DCDC2_V_LOW,
0430 AXP152_IRQ_DCDC3_V_LOW,
0431 AXP152_IRQ_DCDC4_V_LOW,
0432 AXP152_IRQ_PEK_SHORT,
0433 AXP152_IRQ_PEK_LONG,
0434 AXP152_IRQ_TIMER,
0435 AXP152_IRQ_PEK_RIS_EDGE,
0436 AXP152_IRQ_PEK_FAL_EDGE,
0437 AXP152_IRQ_GPIO3_INPUT,
0438 AXP152_IRQ_GPIO2_INPUT,
0439 AXP152_IRQ_GPIO1_INPUT,
0440 AXP152_IRQ_GPIO0_INPUT,
0441 };
0442
0443 enum {
0444 AXP20X_IRQ_ACIN_OVER_V = 1,
0445 AXP20X_IRQ_ACIN_PLUGIN,
0446 AXP20X_IRQ_ACIN_REMOVAL,
0447 AXP20X_IRQ_VBUS_OVER_V,
0448 AXP20X_IRQ_VBUS_PLUGIN,
0449 AXP20X_IRQ_VBUS_REMOVAL,
0450 AXP20X_IRQ_VBUS_V_LOW,
0451 AXP20X_IRQ_BATT_PLUGIN,
0452 AXP20X_IRQ_BATT_REMOVAL,
0453 AXP20X_IRQ_BATT_ENT_ACT_MODE,
0454 AXP20X_IRQ_BATT_EXIT_ACT_MODE,
0455 AXP20X_IRQ_CHARG,
0456 AXP20X_IRQ_CHARG_DONE,
0457 AXP20X_IRQ_BATT_TEMP_HIGH,
0458 AXP20X_IRQ_BATT_TEMP_LOW,
0459 AXP20X_IRQ_DIE_TEMP_HIGH,
0460 AXP20X_IRQ_CHARG_I_LOW,
0461 AXP20X_IRQ_DCDC1_V_LONG,
0462 AXP20X_IRQ_DCDC2_V_LONG,
0463 AXP20X_IRQ_DCDC3_V_LONG,
0464 AXP20X_IRQ_PEK_SHORT = 22,
0465 AXP20X_IRQ_PEK_LONG,
0466 AXP20X_IRQ_N_OE_PWR_ON,
0467 AXP20X_IRQ_N_OE_PWR_OFF,
0468 AXP20X_IRQ_VBUS_VALID,
0469 AXP20X_IRQ_VBUS_NOT_VALID,
0470 AXP20X_IRQ_VBUS_SESS_VALID,
0471 AXP20X_IRQ_VBUS_SESS_END,
0472 AXP20X_IRQ_LOW_PWR_LVL1,
0473 AXP20X_IRQ_LOW_PWR_LVL2,
0474 AXP20X_IRQ_TIMER,
0475 AXP20X_IRQ_PEK_RIS_EDGE,
0476 AXP20X_IRQ_PEK_FAL_EDGE,
0477 AXP20X_IRQ_GPIO3_INPUT,
0478 AXP20X_IRQ_GPIO2_INPUT,
0479 AXP20X_IRQ_GPIO1_INPUT,
0480 AXP20X_IRQ_GPIO0_INPUT,
0481 };
0482
0483 enum axp22x_irqs {
0484 AXP22X_IRQ_ACIN_OVER_V = 1,
0485 AXP22X_IRQ_ACIN_PLUGIN,
0486 AXP22X_IRQ_ACIN_REMOVAL,
0487 AXP22X_IRQ_VBUS_OVER_V,
0488 AXP22X_IRQ_VBUS_PLUGIN,
0489 AXP22X_IRQ_VBUS_REMOVAL,
0490 AXP22X_IRQ_VBUS_V_LOW,
0491 AXP22X_IRQ_BATT_PLUGIN,
0492 AXP22X_IRQ_BATT_REMOVAL,
0493 AXP22X_IRQ_BATT_ENT_ACT_MODE,
0494 AXP22X_IRQ_BATT_EXIT_ACT_MODE,
0495 AXP22X_IRQ_CHARG,
0496 AXP22X_IRQ_CHARG_DONE,
0497 AXP22X_IRQ_BATT_TEMP_HIGH,
0498 AXP22X_IRQ_BATT_TEMP_LOW,
0499 AXP22X_IRQ_DIE_TEMP_HIGH,
0500 AXP22X_IRQ_PEK_SHORT,
0501 AXP22X_IRQ_PEK_LONG,
0502 AXP22X_IRQ_LOW_PWR_LVL1,
0503 AXP22X_IRQ_LOW_PWR_LVL2,
0504 AXP22X_IRQ_TIMER,
0505 AXP22X_IRQ_PEK_RIS_EDGE,
0506 AXP22X_IRQ_PEK_FAL_EDGE,
0507 AXP22X_IRQ_GPIO1_INPUT,
0508 AXP22X_IRQ_GPIO0_INPUT,
0509 };
0510
0511 enum axp288_irqs {
0512 AXP288_IRQ_VBUS_FALL = 2,
0513 AXP288_IRQ_VBUS_RISE,
0514 AXP288_IRQ_OV,
0515 AXP288_IRQ_FALLING_ALT,
0516 AXP288_IRQ_RISING_ALT,
0517 AXP288_IRQ_OV_ALT,
0518 AXP288_IRQ_DONE = 10,
0519 AXP288_IRQ_CHARGING,
0520 AXP288_IRQ_SAFE_QUIT,
0521 AXP288_IRQ_SAFE_ENTER,
0522 AXP288_IRQ_ABSENT,
0523 AXP288_IRQ_APPEND,
0524 AXP288_IRQ_QWBTU,
0525 AXP288_IRQ_WBTU,
0526 AXP288_IRQ_QWBTO,
0527 AXP288_IRQ_WBTO,
0528 AXP288_IRQ_QCBTU,
0529 AXP288_IRQ_CBTU,
0530 AXP288_IRQ_QCBTO,
0531 AXP288_IRQ_CBTO,
0532 AXP288_IRQ_WL2,
0533 AXP288_IRQ_WL1,
0534 AXP288_IRQ_GPADC,
0535 AXP288_IRQ_OT = 31,
0536 AXP288_IRQ_GPIO0,
0537 AXP288_IRQ_GPIO1,
0538 AXP288_IRQ_POKO,
0539 AXP288_IRQ_POKL,
0540 AXP288_IRQ_POKS,
0541 AXP288_IRQ_POKN,
0542 AXP288_IRQ_POKP,
0543 AXP288_IRQ_TIMER,
0544 AXP288_IRQ_MV_CHNG,
0545 AXP288_IRQ_BC_USB_CHNG,
0546 };
0547
0548 enum axp803_irqs {
0549 AXP803_IRQ_ACIN_OVER_V = 1,
0550 AXP803_IRQ_ACIN_PLUGIN,
0551 AXP803_IRQ_ACIN_REMOVAL,
0552 AXP803_IRQ_VBUS_OVER_V,
0553 AXP803_IRQ_VBUS_PLUGIN,
0554 AXP803_IRQ_VBUS_REMOVAL,
0555 AXP803_IRQ_BATT_PLUGIN,
0556 AXP803_IRQ_BATT_REMOVAL,
0557 AXP803_IRQ_BATT_ENT_ACT_MODE,
0558 AXP803_IRQ_BATT_EXIT_ACT_MODE,
0559 AXP803_IRQ_CHARG,
0560 AXP803_IRQ_CHARG_DONE,
0561 AXP803_IRQ_BATT_CHG_TEMP_HIGH,
0562 AXP803_IRQ_BATT_CHG_TEMP_HIGH_END,
0563 AXP803_IRQ_BATT_CHG_TEMP_LOW,
0564 AXP803_IRQ_BATT_CHG_TEMP_LOW_END,
0565 AXP803_IRQ_BATT_ACT_TEMP_HIGH,
0566 AXP803_IRQ_BATT_ACT_TEMP_HIGH_END,
0567 AXP803_IRQ_BATT_ACT_TEMP_LOW,
0568 AXP803_IRQ_BATT_ACT_TEMP_LOW_END,
0569 AXP803_IRQ_DIE_TEMP_HIGH,
0570 AXP803_IRQ_GPADC,
0571 AXP803_IRQ_LOW_PWR_LVL1,
0572 AXP803_IRQ_LOW_PWR_LVL2,
0573 AXP803_IRQ_TIMER,
0574 AXP803_IRQ_PEK_RIS_EDGE,
0575 AXP803_IRQ_PEK_FAL_EDGE,
0576 AXP803_IRQ_PEK_SHORT,
0577 AXP803_IRQ_PEK_LONG,
0578 AXP803_IRQ_PEK_OVER_OFF,
0579 AXP803_IRQ_GPIO1_INPUT,
0580 AXP803_IRQ_GPIO0_INPUT,
0581 AXP803_IRQ_BC_USB_CHNG,
0582 AXP803_IRQ_MV_CHNG,
0583 };
0584
0585 enum axp806_irqs {
0586 AXP806_IRQ_DIE_TEMP_HIGH_LV1,
0587 AXP806_IRQ_DIE_TEMP_HIGH_LV2,
0588 AXP806_IRQ_DCDCA_V_LOW,
0589 AXP806_IRQ_DCDCB_V_LOW,
0590 AXP806_IRQ_DCDCC_V_LOW,
0591 AXP806_IRQ_DCDCD_V_LOW,
0592 AXP806_IRQ_DCDCE_V_LOW,
0593 AXP806_IRQ_POK_LONG,
0594 AXP806_IRQ_POK_SHORT,
0595 AXP806_IRQ_WAKEUP,
0596 AXP806_IRQ_POK_FALL,
0597 AXP806_IRQ_POK_RISE,
0598 };
0599
0600 enum axp809_irqs {
0601 AXP809_IRQ_ACIN_OVER_V = 1,
0602 AXP809_IRQ_ACIN_PLUGIN,
0603 AXP809_IRQ_ACIN_REMOVAL,
0604 AXP809_IRQ_VBUS_OVER_V,
0605 AXP809_IRQ_VBUS_PLUGIN,
0606 AXP809_IRQ_VBUS_REMOVAL,
0607 AXP809_IRQ_VBUS_V_LOW,
0608 AXP809_IRQ_BATT_PLUGIN,
0609 AXP809_IRQ_BATT_REMOVAL,
0610 AXP809_IRQ_BATT_ENT_ACT_MODE,
0611 AXP809_IRQ_BATT_EXIT_ACT_MODE,
0612 AXP809_IRQ_CHARG,
0613 AXP809_IRQ_CHARG_DONE,
0614 AXP809_IRQ_BATT_CHG_TEMP_HIGH,
0615 AXP809_IRQ_BATT_CHG_TEMP_HIGH_END,
0616 AXP809_IRQ_BATT_CHG_TEMP_LOW,
0617 AXP809_IRQ_BATT_CHG_TEMP_LOW_END,
0618 AXP809_IRQ_BATT_ACT_TEMP_HIGH,
0619 AXP809_IRQ_BATT_ACT_TEMP_HIGH_END,
0620 AXP809_IRQ_BATT_ACT_TEMP_LOW,
0621 AXP809_IRQ_BATT_ACT_TEMP_LOW_END,
0622 AXP809_IRQ_DIE_TEMP_HIGH,
0623 AXP809_IRQ_LOW_PWR_LVL1,
0624 AXP809_IRQ_LOW_PWR_LVL2,
0625 AXP809_IRQ_TIMER,
0626 AXP809_IRQ_PEK_RIS_EDGE,
0627 AXP809_IRQ_PEK_FAL_EDGE,
0628 AXP809_IRQ_PEK_SHORT,
0629 AXP809_IRQ_PEK_LONG,
0630 AXP809_IRQ_PEK_OVER_OFF,
0631 AXP809_IRQ_GPIO1_INPUT,
0632 AXP809_IRQ_GPIO0_INPUT,
0633 };
0634
0635 struct axp20x_dev {
0636 struct device *dev;
0637 int irq;
0638 unsigned long irq_flags;
0639 struct regmap *regmap;
0640 struct regmap_irq_chip_data *regmap_irqc;
0641 long variant;
0642 int nr_cells;
0643 const struct mfd_cell *cells;
0644 const struct regmap_config *regmap_cfg;
0645 const struct regmap_irq_chip *regmap_irq_chip;
0646 };
0647
0648
0649 static inline int axp20x_read_variable_width(struct regmap *regmap,
0650 unsigned int reg, unsigned int width)
0651 {
0652 unsigned int reg_val, result;
0653 int err;
0654
0655 err = regmap_read(regmap, reg, ®_val);
0656 if (err)
0657 return err;
0658
0659 result = reg_val << (width - 8);
0660
0661 err = regmap_read(regmap, reg + 1, ®_val);
0662 if (err)
0663 return err;
0664
0665 result |= reg_val;
0666
0667 return result;
0668 }
0669
0670
0671
0672
0673
0674
0675
0676
0677
0678
0679 int axp20x_match_device(struct axp20x_dev *axp20x);
0680
0681
0682
0683
0684
0685
0686
0687
0688
0689
0690 int axp20x_device_probe(struct axp20x_dev *axp20x);
0691
0692
0693
0694
0695
0696
0697
0698
0699 void axp20x_device_remove(struct axp20x_dev *axp20x);
0700
0701 #endif