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 <[EMAIL PROTECTED]>
---

 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 07ecc57..1983c4b 100644
--- a/arch/arm/mach-s3c2440/mach-gta02.c
+++ b/arch/arm/mach-s3c2440/mach-gta02.c
@@ -1268,6 +1268,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);
@@ -1284,8 +1285,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);


Reply via email to