mmc: sdio: Fix enable_hs and enable_wide in sdio_reset_comm()
Dmitry Shmidt [Thu, 7 Oct 2010 00:25:02 +0000 (17:25 -0700)]
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>

drivers/mmc/core/sdio.c

index 01ce7ea..36e6122 100644 (file)
@@ -1271,27 +1271,22 @@ int sdio_reset_comm(struct mmc_card *card)
         * Switch to high-speed (if supported).
         */
        err = sdio_enable_hs(card);
-       if (err)
+       if (err > 0)
+               mmc_sd_go_highspeed(card);
+       else 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);
-       }
+       mmc_set_clock(host, mmc_sdio_get_max_clock(card));
 
-       err = sdio_enable_wide(card);
-       if (err)
+       err = sdio_enable_4bit_bus(card);
+       if (err > 0)
+               mmc_set_bus_width(host, MMC_BUS_WIDTH_4);
+       else if (err)
                goto err;
+
        mmc_release_host(host);
        return 0;
 err: