aboutsummaryrefslogtreecommitdiff
path: root/drivers/i2c
diff options
context:
space:
mode:
authorAndy Green <andy@openmoko.com>2008-11-19 17:09:43 +0000
committerAndy Green <agreen@pads.home.warmcat.com>2008-11-19 17:09:43 +0000
commit433ad9e322020b611165198cf951ffb31160bb8e (patch)
tree2c9ec520cb45d818efd7fef714ea263e48dc7e98 /drivers/i2c
parentf2934eead77af67c0294989fbee252f3b41e3f82 (diff)
fix-reduce-wake-reasons-in-pcf50633.patch
Currently we are willing to wake from sleep from pcf50633 interrupts we don't actually do anything about even when we wake (somewhat puzzled). Let's disable some of these wake sources. Signed-off-by: Andy Green <andy@openmoko.com>
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/chips/pcf50633.c28
-rw-r--r--drivers/i2c/chips/pcf50633.h53
2 files changed, 6 insertions, 75 deletions
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,