diff options
author | Olivier Clergeaud <olivier.clergeaud@stericsson.com> | 2012-05-14 10:50:29 -0400 |
---|---|---|
committer | Lee Jones <lee.jones@linaro.org> | 2013-01-23 09:39:13 -0500 |
commit | 006f82d67cba34d44adcfd0b3698836ffc463d85 (patch) | |
tree | 7fe7f9caef55fb4210c6f4046d7504bd7a82f120 /drivers/power/pm2301_charger.h | |
parent | 2fa5b0f4a5fff1fe77665ac380ca4322df42fe8d (diff) |
pm2301: Clean-up PM2301 interrupt management
Fix the way interrupts are handled within the PM2301 charging driver.
Signed-off-by: Rajkumar Kasirajan <rajkumar.kasirajan@stericsson.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Reviewed-by: Olivier CLERGEAUD <olivier.clergeaud@stericsson.com>
Reviewed-by: Marcus COOPER <marcus.xm.cooper@stericsson.com>
Reviewed-by: Michel JAOUEN <michel.jaouen@stericsson.com>
Tested-by: Michel JAOUEN <michel.jaouen@stericsson.com>
Diffstat (limited to 'drivers/power/pm2301_charger.h')
-rw-r--r-- | drivers/power/pm2301_charger.h | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/drivers/power/pm2301_charger.h b/drivers/power/pm2301_charger.h index bef38a3552b5..419014714c2f 100644 --- a/drivers/power/pm2301_charger.h +++ b/drivers/power/pm2301_charger.h | |||
@@ -34,6 +34,8 @@ | |||
34 | #define WD_TIMER 0x30 /* 4min */ | 34 | #define WD_TIMER 0x30 /* 4min */ |
35 | #define WD_KICK_INTERVAL (60 * HZ) | 35 | #define WD_KICK_INTERVAL (60 * HZ) |
36 | 36 | ||
37 | #define PM2XXX_NUM_INT_REG 0x6 | ||
38 | |||
37 | /* Constant voltage/current */ | 39 | /* Constant voltage/current */ |
38 | #define PM2XXX_CONST_CURR 0x0 | 40 | #define PM2XXX_CONST_CURR 0x0 |
39 | #define PM2XXX_CONST_VOLT 0x1 | 41 | #define PM2XXX_CONST_VOLT 0x1 |
@@ -237,12 +239,32 @@ | |||
237 | #define PM2XXX_VPWR2_OVV_10 0x2 | 239 | #define PM2XXX_VPWR2_OVV_10 0x2 |
238 | #define PM2XXX_VPWR2_OVV_NONE 0x3 | 240 | #define PM2XXX_VPWR2_OVV_NONE 0x3 |
239 | 241 | ||
242 | /* Input charger drop VPWR2 */ | ||
243 | #define PM2XXX_VPWR2_HW_OPT_EN (0x1<<4) | ||
244 | #define PM2XXX_VPWR2_HW_OPT_DIS (0x0<<4) | ||
245 | |||
246 | #define PM2XXX_VPWR2_VALID_EN (0x1<<3) | ||
247 | #define PM2XXX_VPWR2_VALID_DIS (0x0<<3) | ||
248 | |||
249 | #define PM2XXX_VPWR2_DROP_EN (0x1<<2) | ||
250 | #define PM2XXX_VPWR2_DROP_DIS (0x0<<2) | ||
251 | |||
240 | /* Input charger voltage VPWR1 */ | 252 | /* Input charger voltage VPWR1 */ |
241 | #define PM2XXX_VPWR1_OVV_6_0 0x0 | 253 | #define PM2XXX_VPWR1_OVV_6_0 0x0 |
242 | #define PM2XXX_VPWR1_OVV_6_3 0x1 | 254 | #define PM2XXX_VPWR1_OVV_6_3 0x1 |
243 | #define PM2XXX_VPWR1_OVV_10 0x2 | 255 | #define PM2XXX_VPWR1_OVV_10 0x2 |
244 | #define PM2XXX_VPWR1_OVV_NONE 0x3 | 256 | #define PM2XXX_VPWR1_OVV_NONE 0x3 |
245 | 257 | ||
258 | /* Input charger drop VPWR1 */ | ||
259 | #define PM2XXX_VPWR1_HW_OPT_EN (0x1<<4) | ||
260 | #define PM2XXX_VPWR1_HW_OPT_DIS (0x0<<4) | ||
261 | |||
262 | #define PM2XXX_VPWR1_VALID_EN (0x1<<3) | ||
263 | #define PM2XXX_VPWR1_VALID_DIS (0x0<<3) | ||
264 | |||
265 | #define PM2XXX_VPWR1_DROP_EN (0x1<<2) | ||
266 | #define PM2XXX_VPWR1_DROP_DIS (0x0<<2) | ||
267 | |||
246 | /* Battery low level comparator control register */ | 268 | /* Battery low level comparator control register */ |
247 | #define PM2XXX_VBAT_LOW_MONITORING_DIS 0x0 | 269 | #define PM2XXX_VBAT_LOW_MONITORING_DIS 0x0 |
248 | #define PM2XXX_VBAT_LOW_MONITORING_ENA 0x1 | 270 | #define PM2XXX_VBAT_LOW_MONITORING_ENA 0x1 |
@@ -446,6 +468,11 @@ struct pm2xxx_charger_event_flags { | |||
446 | bool chgwdexp; | 468 | bool chgwdexp; |
447 | }; | 469 | }; |
448 | 470 | ||
471 | struct pm2xxx_interrupts { | ||
472 | u8 reg[PM2XXX_NUM_INT_REG]; | ||
473 | int (*handler[PM2XXX_NUM_INT_REG])(void *, int); | ||
474 | }; | ||
475 | |||
449 | struct pm2xxx_config { | 476 | struct pm2xxx_config { |
450 | struct i2c_client *pm2xxx_i2c; | 477 | struct i2c_client *pm2xxx_i2c; |
451 | struct i2c_device_id *pm2xxx_id; | 478 | struct i2c_device_id *pm2xxx_id; |
@@ -467,7 +494,7 @@ struct pm2xxx_charger { | |||
467 | int old_vbat; | 494 | int old_vbat; |
468 | int failure_case; | 495 | int failure_case; |
469 | int failure_input_ovv; | 496 | int failure_input_ovv; |
470 | u8 pm2_int[6]; | 497 | struct pm2xxx_interrupts *pm2_int; |
471 | struct ab8500_gpadc *gpadc; | 498 | struct ab8500_gpadc *gpadc; |
472 | struct regulator *regu; | 499 | struct regulator *regu; |
473 | struct pm2xxx_bm_data *bat; | 500 | struct pm2xxx_bm_data *bat; |