OSDN Git Service

mmc: sdio: Fix enable_hs and enable_wide in sdio_reset_comm()
authorDmitry Shmidt <dimitrysh@google.com>
Thu, 7 Oct 2010 00:25:02 +0000 (17:25 -0700)
committerBrian Swetland <swetland@google.com>
Tue, 29 Mar 2011 20:57:59 +0000 (13:57 -0700)
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
drivers/mmc/core/sdio.c

index 05e4703..d789238 100644 (file)
@@ -899,7 +899,7 @@ int sdio_reset_comm(struct mmc_card *card)
        if (mmc_host_is_spi(host)) {
                err = mmc_spi_set_crc(host, use_spi_crc);
                if (err)
-               goto err;
+                       goto err;
        }
 
        if (!mmc_host_is_spi(host)) {
@@ -918,27 +918,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: