As discussed earlier on LKML:

http://lkml.org/lkml/2006/5/4/44

Signed-off-by: Tony Lindgren <[EMAIL PROTECTED]>

Index: linux-2.6.20/drivers/mmc/omap.c
===================================================================
--- linux-2.6.20.orig/drivers/mmc/omap.c        2007-04-24 15:22:12.000000000 
-0400
+++ linux-2.6.20/drivers/mmc/omap.c     2007-04-24 15:22:15.000000000 -0400
@@ -970,8 +970,10 @@ static void mmc_omap_set_ios(struct mmc_
                mmc_omap_power(host, 0);
                break;
        case MMC_POWER_UP:
-       case MMC_POWER_ON:
+               /* Cannot touch dsor yet, just power up MMC */
                mmc_omap_power(host, 1);
+               return;
+       case MMC_POWER_ON:
                dsor |= 1 << 11;
                break;
        }
@@ -987,7 +989,7 @@ static void mmc_omap_set_ios(struct mmc_
         * Writing to the CON register twice seems to do the trick. */
        for (i = 0; i < 2; i++)
                OMAP_MMC_WRITE(host, CON, dsor);
-       if (ios->power_mode == MMC_POWER_UP) {
+       if (ios->power_mode == MMC_POWER_ON) {
                /* Send clock cycles, poll completion */
                OMAP_MMC_WRITE(host, IE, 0);
                OMAP_MMC_WRITE(host, STAT, 0xffff);

Reply via email to