From 19104094f6dcc618fdc930cad1dc4ab0c70dff00 Mon Sep 17 00:00:00 2001 From: Vladimir Koutny Date: Wed, 21 Jan 2009 20:02:05 +0000 Subject: fix GPS resume if powered on previously 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 --- arch/arm/plat-s3c24xx/neo1973_pm_gps.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'arch/arm/plat-s3c24xx') diff --git a/arch/arm/plat-s3c24xx/neo1973_pm_gps.c b/arch/arm/plat-s3c24xx/neo1973_pm_gps.c index 4d3f52d6fdd..4e48eb24def 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); -- cgit v1.2.3