Commit 006f82d6 authored by Olivier Clergeaud's avatar Olivier Clergeaud Committed by Lee Jones

pm2301: Clean-up PM2301 interrupt management

Fix the way interrupts are handled within the PM2301 charging driver.
Signed-off-by: default avatarRajkumar Kasirajan <rajkumar.kasirajan@stericsson.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
Reviewed-by: default avatarOlivier CLERGEAUD <olivier.clergeaud@stericsson.com>
Reviewed-by: default avatarMarcus COOPER <marcus.xm.cooper@stericsson.com>
Reviewed-by: default avatarMichel JAOUEN <michel.jaouen@stericsson.com>
Tested-by: default avatarMichel JAOUEN <michel.jaouen@stericsson.com>
parent 2fa5b0f4
This diff is collapsed.
...@@ -34,6 +34,8 @@ ...@@ -34,6 +34,8 @@
#define WD_TIMER 0x30 /* 4min */ #define WD_TIMER 0x30 /* 4min */
#define WD_KICK_INTERVAL (60 * HZ) #define WD_KICK_INTERVAL (60 * HZ)
#define PM2XXX_NUM_INT_REG 0x6
/* Constant voltage/current */ /* Constant voltage/current */
#define PM2XXX_CONST_CURR 0x0 #define PM2XXX_CONST_CURR 0x0
#define PM2XXX_CONST_VOLT 0x1 #define PM2XXX_CONST_VOLT 0x1
...@@ -237,12 +239,32 @@ ...@@ -237,12 +239,32 @@
#define PM2XXX_VPWR2_OVV_10 0x2 #define PM2XXX_VPWR2_OVV_10 0x2
#define PM2XXX_VPWR2_OVV_NONE 0x3 #define PM2XXX_VPWR2_OVV_NONE 0x3
/* Input charger drop VPWR2 */
#define PM2XXX_VPWR2_HW_OPT_EN (0x1<<4)
#define PM2XXX_VPWR2_HW_OPT_DIS (0x0<<4)
#define PM2XXX_VPWR2_VALID_EN (0x1<<3)
#define PM2XXX_VPWR2_VALID_DIS (0x0<<3)
#define PM2XXX_VPWR2_DROP_EN (0x1<<2)
#define PM2XXX_VPWR2_DROP_DIS (0x0<<2)
/* Input charger voltage VPWR1 */ /* Input charger voltage VPWR1 */
#define PM2XXX_VPWR1_OVV_6_0 0x0 #define PM2XXX_VPWR1_OVV_6_0 0x0
#define PM2XXX_VPWR1_OVV_6_3 0x1 #define PM2XXX_VPWR1_OVV_6_3 0x1
#define PM2XXX_VPWR1_OVV_10 0x2 #define PM2XXX_VPWR1_OVV_10 0x2
#define PM2XXX_VPWR1_OVV_NONE 0x3 #define PM2XXX_VPWR1_OVV_NONE 0x3
/* Input charger drop VPWR1 */
#define PM2XXX_VPWR1_HW_OPT_EN (0x1<<4)
#define PM2XXX_VPWR1_HW_OPT_DIS (0x0<<4)
#define PM2XXX_VPWR1_VALID_EN (0x1<<3)
#define PM2XXX_VPWR1_VALID_DIS (0x0<<3)
#define PM2XXX_VPWR1_DROP_EN (0x1<<2)
#define PM2XXX_VPWR1_DROP_DIS (0x0<<2)
/* Battery low level comparator control register */ /* Battery low level comparator control register */
#define PM2XXX_VBAT_LOW_MONITORING_DIS 0x0 #define PM2XXX_VBAT_LOW_MONITORING_DIS 0x0
#define PM2XXX_VBAT_LOW_MONITORING_ENA 0x1 #define PM2XXX_VBAT_LOW_MONITORING_ENA 0x1
...@@ -446,6 +468,11 @@ struct pm2xxx_charger_event_flags { ...@@ -446,6 +468,11 @@ struct pm2xxx_charger_event_flags {
bool chgwdexp; bool chgwdexp;
}; };
struct pm2xxx_interrupts {
u8 reg[PM2XXX_NUM_INT_REG];
int (*handler[PM2XXX_NUM_INT_REG])(void *, int);
};
struct pm2xxx_config { struct pm2xxx_config {
struct i2c_client *pm2xxx_i2c; struct i2c_client *pm2xxx_i2c;
struct i2c_device_id *pm2xxx_id; struct i2c_device_id *pm2xxx_id;
...@@ -467,7 +494,7 @@ struct pm2xxx_charger { ...@@ -467,7 +494,7 @@ struct pm2xxx_charger {
int old_vbat; int old_vbat;
int failure_case; int failure_case;
int failure_input_ovv; int failure_input_ovv;
u8 pm2_int[6]; struct pm2xxx_interrupts *pm2_int;
struct ab8500_gpadc *gpadc; struct ab8500_gpadc *gpadc;
struct regulator *regu; struct regulator *regu;
struct pm2xxx_bm_data *bat; struct pm2xxx_bm_data *bat;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment