|
@@ -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);
|
|
|
}
|
|
|
|