mmc: renesas_sdhi: skip SCC error check when retuning
authorMasaharu Hayakawa <masaharu.hayakawa.ry@renesas.com>
Wed, 29 Aug 2018 23:32:06 +0000 (01:32 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 8 Oct 2018 09:40:43 +0000 (11:40 +0200)
Checking for SCC error during retuning is unnecessary.

Signed-off-by: Masaharu Hayakawa <masaharu.hayakawa.ry@renesas.com>
[Niklas: fix small style issue]
Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/renesas_sdhi_core.c

index 38a9120..d3ac43c 100644 (file)
@@ -486,6 +486,19 @@ static int renesas_sdhi_select_tuning(struct tmio_mmc_host *host)
 static bool renesas_sdhi_check_scc_error(struct tmio_mmc_host *host)
 {
        struct renesas_sdhi *priv = host_to_priv(host);
+       bool use_4tap = host->pdata->flags & TMIO_MMC_HAVE_4TAP_HS400;
+
+       /*
+        * Skip checking SCC errors when running on 4 taps in HS400 mode as
+        * any retuning would still result in the same 4 taps being used.
+        */
+       if (!(host->mmc->ios.timing == MMC_TIMING_UHS_SDR104) &&
+           !(host->mmc->ios.timing == MMC_TIMING_MMC_HS200) &&
+           !(host->mmc->ios.timing == MMC_TIMING_MMC_HS400 && !use_4tap))
+               return false;
+
+       if (mmc_doing_retune(host->mmc))
+               return false;
 
        /* Check SCC error */
        if (sd_scc_read32(host, priv, SH_MOBILE_SDHI_SCC_RVSCNTL) &