mmc: sdio: Add high speed support to sdio_reset_comm()
Daniel Chen [Wed, 9 Dec 2009 17:45:36 +0000 (09:45 -0800)]
Signed-off-by: San Mehat <san@google.com>

drivers/mmc/core/sdio.c

index b400056..25565a5 100644 (file)
@@ -1258,7 +1258,28 @@ int sdio_reset_comm(struct mmc_card *card)
                        goto err;
        }
 
-       mmc_set_clock(host, card->cis.max_dtr);
+       /*
+        * Switch to high-speed (if supported).
+        */
+       err = sdio_enable_hs(card);
+       if (err)
+               goto err;
+
+       /*
+        * Change to the card's maximum speed.
+        */
+       if (mmc_card_highspeed(card)) {
+               /*
+                * The SDIO specification doesn't mention how
+                * the CIS transfer speed register relates to
+                * high-speed, but it seems that 50 MHz is
+                * mandatory.
+                */
+               mmc_set_clock(host, 50000000);
+       } else {
+               mmc_set_clock(host, card->cis.max_dtr);
+       }
+
        err = sdio_enable_wide(card);
        if (err)
                goto err;