openwrt/target/linux/s3c24xx/patches-2.6.26/0162-fix-glamo-mci-power-setting-timeout-waiting-for-pcf5.patch

47 lines
1.5 KiB
Diff
Raw Normal View History

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