From 46e5caa4bef65658480e2fc42e628f0c775922a3 Mon Sep 17 00:00:00 2001 From: Jarkko Lavinen Date: Wed, 26 Mar 2008 16:10:02 -0400 Subject: [PATCH] --- yaml --- r: 91789 b: refs/heads/master c: 9d7c6eee523c78b6ea4b56bd3927860d850616e5 h: refs/heads/master i: 91787: 074f02aa8cb5bd8e997e717c869e3025405cb8a2 v: v3 --- [refs] | 2 +- trunk/drivers/mmc/host/omap.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index b08d673f0eb5..f8dd7ec3682f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0f602ec79ac4fd2a42075c5a170086ded439f36d +refs/heads/master: 9d7c6eee523c78b6ea4b56bd3927860d850616e5 diff --git a/trunk/drivers/mmc/host/omap.c b/trunk/drivers/mmc/host/omap.c index ab0974d261e5..14759e9f42ad 100644 --- a/trunk/drivers/mmc/host/omap.c +++ b/trunk/drivers/mmc/host/omap.c @@ -1276,11 +1276,17 @@ static void mmc_omap_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) OMAP_MMC_WRITE(host, CON, dsor); slot->saved_con = dsor; if (ios->power_mode == MMC_POWER_ON) { + /* worst case at 400kHz, 80 cycles makes 200 microsecs */ + int usecs = 250; + /* Send clock cycles, poll completion */ OMAP_MMC_WRITE(host, IE, 0); OMAP_MMC_WRITE(host, STAT, 0xffff); OMAP_MMC_WRITE(host, CMD, 1 << 7); - while ((OMAP_MMC_READ(host, STAT) & 1) == 0); + while (usecs > 0 && (OMAP_MMC_READ(host, STAT) & 1) == 0) { + udelay(1); + usecs--; + } OMAP_MMC_WRITE(host, STAT, 1); }