aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/power/pm2301_charger.h
diff options
context:
space:
mode:
authorOlivier Clergeaud <olivier.clergeaud@stericsson.com>2012-05-14 10:50:29 -0400
committerLee Jones <lee.jones@linaro.org>2013-01-23 09:39:13 -0500
commit006f82d67cba34d44adcfd0b3698836ffc463d85 (patch)
tree7fe7f9caef55fb4210c6f4046d7504bd7a82f120 /drivers/power/pm2301_charger.h
parent2fa5b0f4a5fff1fe77665ac380ca4322df42fe8d (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.h29
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
471struct pm2xxx_interrupts {
472 u8 reg[PM2XXX_NUM_INT_REG];
473 int (*handler[PM2XXX_NUM_INT_REG])(void *, int);
474};
475
449struct pm2xxx_config { 476struct 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;