diff options
Diffstat (limited to 'target/linux/s3c24xx/patches/0162-fix-glamo-mci-power-setting-timeout-waiting-for-pcf5.patch')
-rwxr-xr-x | target/linux/s3c24xx/patches/0162-fix-glamo-mci-power-setting-timeout-waiting-for-pcf5.patch | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/target/linux/s3c24xx/patches/0162-fix-glamo-mci-power-setting-timeout-waiting-for-pcf5.patch b/target/linux/s3c24xx/patches/0162-fix-glamo-mci-power-setting-timeout-waiting-for-pcf5.patch new file mode 100755 index 0000000000..0402bff766 --- /dev/null +++ b/target/linux/s3c24xx/patches/0162-fix-glamo-mci-power-setting-timeout-waiting-for-pcf5.patch @@ -0,0 +1,46 @@ +From 98c8ab6ee24e43f1a9fdd941695917b426227b85 Mon Sep 17 00:00:00 2001 +From: Andy Green <andy@openmoko.com> +Date: Fri, 25 Jul 2008 23:06:12 +0100 +Subject: [PATCH] fix-glamo-mci-power-setting-timeout-waiting-for-pcf50633.patch + +Glamo MCI power setting stuff spins on pcf50633 +but it won't hurt if it gives up after a second or +two instead of stalling the resume silently. + +Signed-off-by: Andy Green <andy@openmoko.com> +--- + arch/arm/mach-s3c2440/mach-gta02.c | 11 +++++++++-- + 1 files changed, 9 insertions(+), 2 deletions(-) + +diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c +index 5980ea9..69a952a 100644 +--- a/arch/arm/mach-s3c2440/mach-gta02.c ++++ b/arch/arm/mach-s3c2440/mach-gta02.c +@@ -1265,6 +1265,7 @@ static void + gta02_glamo_mmc_set_power(unsigned char power_mode, unsigned short vdd) + { + int mv = 1650; ++ int timeout = 100; + + printk(KERN_DEBUG "mmc_set_power(power_mode=%u, vdd=%u\n", + power_mode, vdd); +@@ -1281,8 +1282,14 @@ gta02_glamo_mmc_set_power(unsigned char power_mode, unsigned short vdd) + case MMC_POWER_ON: + case MMC_POWER_UP: + /* depend on pcf50633 driver init + not suspended */ +- while (pcf50633_ready(pcf50633_global)) +- msleep(1); ++ while (pcf50633_ready(pcf50633_global) && (timeout--)) ++ msleep(5); ++ ++ if (!timeout) { ++ printk(KERN_ERR"gta02_glamo_mmc_set_power " ++ "BAILING on timeout\n"); ++ return; ++ } + /* select and set the voltage */ + if (vdd > 7) { + mv += 300 + 100 * (vdd - 8); +-- +1.5.6.3 + |