diff options
-rw-r--r-- | arch/arm/mach-s3c2440/mach-gta02.c | 20 | ||||
-rw-r--r-- | drivers/i2c/chips/pcf50633.c | 28 | ||||
-rw-r--r-- | drivers/i2c/chips/pcf50633.h | 53 | ||||
-rw-r--r-- | include/linux/pcf50633.h | 56 |
4 files changed, 82 insertions, 75 deletions
diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c index 90b62c1d0d1..601f7bc9591 100644 --- a/arch/arm/mach-s3c2440/mach-gta02.c +++ b/arch/arm/mach-s3c2440/mach-gta02.c @@ -462,6 +462,26 @@ static struct pcf50633_platform_data gta02_pcf_pdata = { .r_fix_batt = 10000, .r_fix_batt_par = 10000, .r_sense_milli = 220, + .resumers = { + [0] = /* PCF50633_INT1_ADPINS | */ + /* PCF50633_INT1_ADPREM | */ + PCF50633_INT1_USBINS | + PCF50633_INT1_USBREM | + PCF50633_INT1_ALARM, + [1] = PCF50633_INT2_ONKEYF, + [2] = /* PCF50633_INT3_BATFULL | */ + /* PCF50633_INT3_CHGHALT | */ + /* PCF50633_INT3_THLIMON | */ + /* PCF50633_INT3_THLIMOFF | */ + /* PCF50633_INT3_USBLIMON | */ + /* PCF50633_INT3_USBLIMOFF | */ + PCF50633_INT3_ONKEY1S , + [3] = 0 /* | + PCF50633_INT4_LOWSYS | */ + /* PCF50633_INT4_LOWBAT | */ + /* PCF50633_INT4_HIGHTMP */, + [4] = 0 + }, .rails = { [PCF50633_REGULATOR_AUTO] = { .name = "io_3v3", diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c index d2ff2c156e8..8ba81d24254 100644 --- a/drivers/i2c/chips/pcf50633.c +++ b/drivers/i2c/chips/pcf50633.c @@ -1935,23 +1935,7 @@ int pcf50633_report_resumers(struct pcf50633_data *pcf, char *buf) #ifdef CONFIG_PM -#define INT1M_RESUMERS (PCF50633_INT1_ADPINS | \ - PCF50633_INT1_ADPREM | \ - PCF50633_INT1_USBINS | \ - PCF50633_INT1_USBREM | \ - PCF50633_INT1_ALARM) -#define INT2M_RESUMERS (PCF50633_INT2_ONKEYF) -#define INT3M_RESUMERS (PCF50633_INT3_BATFULL | \ - PCF50633_INT3_CHGHALT | \ - PCF50633_INT3_THLIMON | \ - PCF50633_INT3_THLIMOFF | \ - PCF50633_INT3_USBLIMON | \ - PCF50633_INT3_USBLIMOFF | \ - PCF50633_INT3_ONKEY1S) -#define INT4M_RESUMERS (PCF50633_INT4_LOWSYS | \ - PCF50633_INT4_LOWBAT | \ - PCF50633_INT4_HIGHTMP) -#define INT5M_RESUMERS (0) + static int pcf50633_suspend(struct device *dev, pm_message_t state) { @@ -2010,11 +1994,11 @@ static int pcf50633_suspend(struct device *dev, pm_message_t state) pcf->standby_regs.int3m = __reg_read(pcf, PCF50633_REG_INT3M); pcf->standby_regs.int4m = __reg_read(pcf, PCF50633_REG_INT4M); pcf->standby_regs.int5m = __reg_read(pcf, PCF50633_REG_INT5M); - __reg_write(pcf, PCF50633_REG_INT1M, ~INT1M_RESUMERS & 0xff); - __reg_write(pcf, PCF50633_REG_INT2M, ~INT2M_RESUMERS & 0xff); - __reg_write(pcf, PCF50633_REG_INT3M, ~INT3M_RESUMERS & 0xff); - __reg_write(pcf, PCF50633_REG_INT4M, ~INT4M_RESUMERS & 0xff); - __reg_write(pcf, PCF50633_REG_INT5M, ~INT5M_RESUMERS & 0xff); + __reg_write(pcf, PCF50633_REG_INT1M, ~pcf->pdata->resumers[0]); + __reg_write(pcf, PCF50633_REG_INT2M, ~pcf->pdata->resumers[1]); + __reg_write(pcf, PCF50633_REG_INT3M, ~pcf->pdata->resumers[2]); + __reg_write(pcf, PCF50633_REG_INT4M, ~pcf->pdata->resumers[3]); + __reg_write(pcf, PCF50633_REG_INT5M, ~pcf->pdata->resumers[4]); pcf->have_been_suspended = 1; diff --git a/drivers/i2c/chips/pcf50633.h b/drivers/i2c/chips/pcf50633.h index 93dfd999e68..5d54131db5a 100644 --- a/drivers/i2c/chips/pcf50633.h +++ b/drivers/i2c/chips/pcf50633.h @@ -125,59 +125,6 @@ enum pfc50633_regs { __NUM_PCF50633_REGS }; -enum pcf50633_reg_int1 { - PCF50633_INT1_ADPINS = 0x01, /* Adapter inserted */ - PCF50633_INT1_ADPREM = 0x02, /* Adapter removed */ - PCF50633_INT1_USBINS = 0x04, /* USB inserted */ - PCF50633_INT1_USBREM = 0x08, /* USB removed */ - /* reserved */ - PCF50633_INT1_ALARM = 0x40, /* RTC alarm time is reached */ - PCF50633_INT1_SECOND = 0x80, /* RTC periodic second interrupt */ -}; - -enum pcf50633_reg_int2 { - PCF50633_INT2_ONKEYR = 0x01, /* ONKEY rising edge */ - PCF50633_INT2_ONKEYF = 0x02, /* ONKEY falling edge */ - PCF50633_INT2_EXTON1R = 0x04, /* EXTON1 rising edge */ - PCF50633_INT2_EXTON1F = 0x08, /* EXTON1 falling edge */ - PCF50633_INT2_EXTON2R = 0x10, /* EXTON2 rising edge */ - PCF50633_INT2_EXTON2F = 0x20, /* EXTON2 falling edge */ - PCF50633_INT2_EXTON3R = 0x40, /* EXTON3 rising edge */ - PCF50633_INT2_EXTON3F = 0x80, /* EXTON3 falling edge */ -}; - -enum pcf50633_reg_int3 { - PCF50633_INT3_BATFULL = 0x01, /* Battery full */ - PCF50633_INT3_CHGHALT = 0x02, /* Charger halt */ - PCF50633_INT3_THLIMON = 0x04, - PCF50633_INT3_THLIMOFF = 0x08, - PCF50633_INT3_USBLIMON = 0x10, - PCF50633_INT3_USBLIMOFF = 0x20, - PCF50633_INT3_ADCRDY = 0x40, /* ADC conversion finished */ - PCF50633_INT3_ONKEY1S = 0x80, /* ONKEY pressed 1 second */ -}; - -enum pcf50633_reg_int4 { - PCF50633_INT4_LOWSYS = 0x01, - PCF50633_INT4_LOWBAT = 0x02, - PCF50633_INT4_HIGHTMP = 0x04, - PCF50633_INT4_AUTOPWRFAIL = 0x08, - PCF50633_INT4_DWN1PWRFAIL = 0x10, - PCF50633_INT4_DWN2PWRFAIL = 0x20, - PCF50633_INT4_LEDPWRFAIL = 0x40, - PCF50633_INT4_LEDOVP = 0x80, -}; - -enum pcf50633_reg_int5 { - PCF50633_INT5_LDO1PWRFAIL = 0x01, - PCF50633_INT5_LDO2PWRFAIL = 0x02, - PCF50633_INT5_LDO3PWRFAIL = 0x04, - PCF50633_INT5_LDO4PWRFAIL = 0x08, - PCF50633_INT5_LDO5PWRFAIL = 0x10, - PCF50633_INT5_LDO6PWRFAIL = 0x20, - PCF50633_INT5_HCLDOPWRFAIL = 0x40, - PCF50633_INT5_HCLDOOVL = 0x80, -}; enum pcf50633_reg_oocshdwn { PCF50633_OOCSHDWN_GOSTDBY = 0x01, diff --git a/include/linux/pcf50633.h b/include/linux/pcf50633.h index 39d919de70d..c0fdbe8cca2 100644 --- a/include/linux/pcf50633.h +++ b/include/linux/pcf50633.h @@ -20,6 +20,60 @@ enum pcf50633_regulator_id { __NUM_PCF50633_REGULATORS }; +enum pcf50633_reg_int1 { + PCF50633_INT1_ADPINS = 0x01, /* Adapter inserted */ + PCF50633_INT1_ADPREM = 0x02, /* Adapter removed */ + PCF50633_INT1_USBINS = 0x04, /* USB inserted */ + PCF50633_INT1_USBREM = 0x08, /* USB removed */ + /* reserved */ + PCF50633_INT1_ALARM = 0x40, /* RTC alarm time is reached */ + PCF50633_INT1_SECOND = 0x80, /* RTC periodic second interrupt */ +}; + +enum pcf50633_reg_int2 { + PCF50633_INT2_ONKEYR = 0x01, /* ONKEY rising edge */ + PCF50633_INT2_ONKEYF = 0x02, /* ONKEY falling edge */ + PCF50633_INT2_EXTON1R = 0x04, /* EXTON1 rising edge */ + PCF50633_INT2_EXTON1F = 0x08, /* EXTON1 falling edge */ + PCF50633_INT2_EXTON2R = 0x10, /* EXTON2 rising edge */ + PCF50633_INT2_EXTON2F = 0x20, /* EXTON2 falling edge */ + PCF50633_INT2_EXTON3R = 0x40, /* EXTON3 rising edge */ + PCF50633_INT2_EXTON3F = 0x80, /* EXTON3 falling edge */ +}; + +enum pcf50633_reg_int3 { + PCF50633_INT3_BATFULL = 0x01, /* Battery full */ + PCF50633_INT3_CHGHALT = 0x02, /* Charger halt */ + PCF50633_INT3_THLIMON = 0x04, + PCF50633_INT3_THLIMOFF = 0x08, + PCF50633_INT3_USBLIMON = 0x10, + PCF50633_INT3_USBLIMOFF = 0x20, + PCF50633_INT3_ADCRDY = 0x40, /* ADC conversion finished */ + PCF50633_INT3_ONKEY1S = 0x80, /* ONKEY pressed 1 second */ +}; + +enum pcf50633_reg_int4 { + PCF50633_INT4_LOWSYS = 0x01, + PCF50633_INT4_LOWBAT = 0x02, + PCF50633_INT4_HIGHTMP = 0x04, + PCF50633_INT4_AUTOPWRFAIL = 0x08, + PCF50633_INT4_DWN1PWRFAIL = 0x10, + PCF50633_INT4_DWN2PWRFAIL = 0x20, + PCF50633_INT4_LEDPWRFAIL = 0x40, + PCF50633_INT4_LEDOVP = 0x80, +}; + +enum pcf50633_reg_int5 { + PCF50633_INT5_LDO1PWRFAIL = 0x01, + PCF50633_INT5_LDO2PWRFAIL = 0x02, + PCF50633_INT5_LDO3PWRFAIL = 0x04, + PCF50633_INT5_LDO4PWRFAIL = 0x08, + PCF50633_INT5_LDO5PWRFAIL = 0x10, + PCF50633_INT5_LDO6PWRFAIL = 0x20, + PCF50633_INT5_HCLDOPWRFAIL = 0x40, + PCF50633_INT5_HCLDOOVL = 0x80, +}; + struct pcf50633_data; extern struct pcf50633_data *pcf50633_global; @@ -94,6 +148,8 @@ struct pcf50633_platform_data { unsigned int r_fix_batt_par; unsigned int r_sense_milli; + unsigned char resumers[5]; + struct { u_int8_t mbcc3; /* charger voltage / current */ } charger; |