aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/s3c24xx/patches-2.6.24/1183-fix-glamo-mci-power-setting-timeout-waiting-for-pcf5.patch
blob: 843c53d8bdaf7e2c82b81edcfa6e8dd70c24ed31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
From 8f4ffd81a902d5499228ce79fcf38c90df52f0e4 Mon Sep 17 00:00:00 2001
From: Andy Green <andy@openmoko.com>
Date: Wed, 2 Jul 2008 22:39:41 +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.5