[UPSTREAM PATCH] pcf50633-remove-unnecessary-state-save-during-suspend.patch

Balaji Rao balajirrao at openmoko.org
Fri Oct 31 18:22:25 CET 2008


We don't need to save state when we suspend as we don't put the PMU to
standby.

This improves the 'resume devices' time from 1.175s to 1.135 sec!
---
 drivers/i2c/chips/pcf50633.c |   40 ----------------------------------------
 1 files changed, 0 insertions(+), 40 deletions(-)

diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c
index a7a675c..7641f42 100644
--- a/drivers/i2c/chips/pcf50633.c
+++ b/drivers/i2c/chips/pcf50633.c
@@ -2060,23 +2060,6 @@ static int pcf50633_suspend(struct device *dev, pm_message_t state)
 
 	disable_irq(pcf->irq);
 
-	/* Save all registers that don't "survive" standby state */
-	pcf->standby_regs.ooctim2 = __reg_read(pcf, PCF50633_REG_OOCTIM2);
-
-	ret = i2c_smbus_read_i2c_block_data(pcf->client,
-					    PCF50633_REG_AUTOOUT,
-					    sizeof(pcf->standby_regs.misc),
-					    &pcf->standby_regs.misc[0]);
-	if (ret != sizeof(pcf->standby_regs.misc))
-		dev_err(dev, "Failed to save misc levels and enables :-(\n");
-
-	/* regulator voltages and enable states */
-	ret = i2c_smbus_read_i2c_block_data(pcf->client,
-					    PCF50633_REG_LDO1OUT,
-					    sizeof(pcf->standby_regs.ldo),
-					    &pcf->standby_regs.ldo[0]);
-	if (ret != sizeof(pcf->standby_regs.ldo))
-		dev_err(dev, "Failed to save LDO levels and enables :-(\n");
 	/* set interrupt masks so only those sources we want to wake
 	 * us are able to
 	 */
@@ -2149,28 +2132,6 @@ static int pcf50633_resume(struct device *dev)
 
 	pcf->suspend_state = PCF50633_SS_STARTING_RESUME;
 
-	/* these guys get reset while pcf50633 is suspend state, refresh */
-
-	__reg_write(pcf, PCF50633_REG_OOCTIM2, pcf->standby_regs.ooctim2);
-
-	memcpy(misc, pcf->standby_regs.misc, sizeof(pcf->standby_regs.misc));
-
-	/* regulator voltages and enable states */
-	ret = i2c_smbus_write_i2c_block_data(pcf->client,
-					     PCF50633_REG_AUTOOUT,
-					     sizeof(misc),
-					     &misc[0]);
-	if (ret)
-		dev_err(dev, "Failed to restore misc :-( %d\n", ret);
-
-	/* regulator voltages and enable states */
-	ret = i2c_smbus_write_i2c_block_data(pcf->client,
-					     PCF50633_REG_LDO1OUT,
-					     sizeof(pcf->standby_regs.ldo),
-					     &pcf->standby_regs.ldo[0]);
-	if (ret)
-		dev_err(dev, "Failed to restore LDOs :-( %d\n", ret);
-
 	memset(res, 0, sizeof(res));
 	/* not interested in second on resume */
 	res[0] = PCF50633_INT1_SECOND;
@@ -2179,7 +2140,6 @@ static int pcf50633_resume(struct device *dev)
 					     5, &res[0]);
 	if (ret)
 		dev_err(dev, "Failed to set int masks :-( %d\n", ret);
-
 	pcf->suspend_state = PCF50633_SS_COMPLETED_RESUME;
 
 	enable_irq(pcf->irq);




More information about the openmoko-kernel mailing list