aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-s3c2440/mach-gta02.c20
-rw-r--r--drivers/i2c/chips/pcf50633.c28
-rw-r--r--drivers/i2c/chips/pcf50633.h53
-rw-r--r--include/linux/pcf50633.h56
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;