]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
mmc: Fix HS400 bus_test/ext_csd execution sequence
authorNaveen Kumar Arepalli <naveenk@nvidia.com>
Fri, 16 Jan 2015 04:01:57 +0000 (09:31 +0530)
committerNaveen Kumar Arepalli <naveenk@nvidia.com>
Mon, 19 Jan 2015 09:41:29 +0000 (01:41 -0800)
-For HS400 mode execute mmc_compare_ext_csds/mmc_bus_test only
after complete init of HS400 mode.
-Currently test is being executed before setting HS400 mode clock
and dll calibration, this may lead to CRC errors.

Bug 1558879

Change-Id: I81dac752a452c152ac745d33bbd3ec8ef321d021
Signed-off-by: Naveen Kumar Arepalli <naveenk@nvidia.com>
Reviewed-on: http://git-master/r/673025
Reviewed-by: Venu Byravarasu <vbyravarasu@nvidia.com>
drivers/mmc/core/mmc.c

index 9c99cc4ecb72514442463b1247372c2d05b8d09a..98173aebe64bc68a069bd2c886cbe76ccca452a2 100644 (file)
@@ -972,11 +972,6 @@ static int mmc_select_hs400(struct mmc_card *card)
        mmc_set_timing(host, MMC_TIMING_MMC_HS400);
        mmc_set_bus_width(host, MMC_BUS_WIDTH_8);
 
-       if (!(host->caps & MMC_CAP_BUS_WIDTH_TEST))
-               err = mmc_compare_ext_csds(card, MMC_BUS_WIDTH_8);
-       else
-               err = mmc_bus_test(card, MMC_BUS_WIDTH_8);
-
        return err;
 }
 
@@ -1548,6 +1543,10 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
                mmc_host_clk_hold(card->host);
                card->host->ops->post_init(card->host);
                mmc_host_clk_release(card->host);
+               if (host->caps & MMC_CAP_BUS_WIDTH_TEST)
+                       err = mmc_bus_test(card, MMC_BUS_WIDTH_8);
+               else
+                       err = mmc_compare_ext_csds(card, MMC_BUS_WIDTH_8);
        }
        return 0;