[PATCH v2] fix GPS resume if powered on previously

Vladimir Koutny vlado at moko.ksp.sk
Wed Jan 21 20:53:36 CET 2009


Fix re-enabling of GPS on resume

The call to gps_pwron_set(0) during suspend would clear power_was_on
flag so the on/off status was always lost. Additionally when enabling/
disabling the regulator check its actual state, not power_was_on flag
(they don't match on resume).

Signed-off-by: Vladimir Koutny <vlado at ksp.sk>

---

diff --git a/arch/arm/plat-s3c24xx/neo1973_pm_gps.c b/arch/arm/plat-s3c24xx/neo1973_pm_gps.c
index 4d3f52d..4e48eb2 100644
--- a/arch/arm/plat-s3c24xx/neo1973_pm_gps.c
+++ b/arch/arm/plat-s3c24xx/neo1973_pm_gps.c
@@ -295,14 +295,12 @@ static void gps_pwron_set(int on)
 			/* don't let RX from unpowered GPS float */
 			s3c2410_gpio_pullup(S3C2410_GPH5, 1);
 		}
-		if (on && !neo1973_gps.power_was_on)
+		if (on && !regulator_is_enabled(neo1973_gps.regulator))
 			regulator_enable(neo1973_gps.regulator);

-		if (!on && neo1973_gps.power_was_on)
+		if (!on && regulator_is_enabled(neo1973_gps.regulator))
 			regulator_disable(neo1973_gps.regulator);
 	}
-
-	neo1973_gps.power_was_on = !!on;
 }

 static int gps_pwron_get(void)
@@ -358,6 +356,7 @@ static ssize_t power_gps_write(struct device *dev,

 	if (!strcmp(attr->attr.name, "power_on")) {
 		gps_pwron_set(on);
+		neo1973_gps.power_was_on = !!on;
 #ifdef CONFIG_MACH_NEO1973_GTA01
 	} else if (!strcmp(attr->attr.name, "power_avdd_3v")) {
 		gps_power_3v_set(on);




More information about the openmoko-kernel mailing list