|
@@ -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) &
|