OSDN Git Service

mmc: core: Fix the timing related checks in partial_init
authorSahitya Tummala <stummala@codeaurora.org>
Wed, 27 Apr 2016 10:47:44 +0000 (16:17 +0530)
committerKyle Yan <kyan@codeaurora.org>
Tue, 14 Jun 2016 02:06:28 +0000 (19:06 -0700)
If the card (which is a eMMC 5.1 complaint card) is scaled down
to HS200, then the current logic in partial_init doesn't invoke
tuning due to these invalid checks.

Change-Id: I1e5cbb6a2dfff129acdb27e27ea090d58197f41c
Signed-off-by: Sahitya Tummala <stummala@codeaurora.org>
drivers/mmc/core/mmc.c

index 99caaf8..78dae06 100644 (file)
@@ -2562,12 +2562,12 @@ static int mmc_partial_init(struct mmc_host *host)
 
        mmc_host_clk_hold(host);
 
-       if (mmc_card_hs200(card) || mmc_card_hs400(card)) {
+       if (mmc_card_hs400(card)) {
                if (card->ext_csd.strobe_support && host->ops->enhanced_strobe)
                        err = host->ops->enhanced_strobe(host);
-               else
-                       err = host->ops->execute_tuning(host,
-                               MMC_SEND_TUNING_BLOCK_HS200);
+       } else if (mmc_card_hs200(card) && host->ops->execute_tuning) {
+               err = host->ops->execute_tuning(host,
+                       MMC_SEND_TUNING_BLOCK_HS200);
                if (err)
                        pr_warn("%s: %s: tuning execution failed (%d)\n",
                                mmc_hostname(host), __func__, err);