mmc: renesas_sdhi: only reset SCC when its pointer is populated
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Tue, 10 Nov 2020 14:20:55 +0000 (15:20 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 16 Nov 2020 11:46:50 +0000 (12:46 +0100)
Only re-initialize SCC and tuning when an SCC was found during probe().
This is currently a noop because all R-Car Gen2+ are considered to have
an SCC. But this will change in a later patch, so we need this
preparation.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Link: https://lore.kernel.org/r/20201110142058.36393-2-wsa+renesas@sang-engineering.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/renesas_sdhi_core.c

index acb9c81a4e4569354d8422601796750de89cb5a2..a395f835e836f961d187476e470ea20000555d74 100644 (file)
@@ -556,16 +556,18 @@ static void renesas_sdhi_reset(struct tmio_mmc_host *host)
 {
        struct renesas_sdhi *priv = host_to_priv(host);
 
-       renesas_sdhi_reset_scc(host, priv);
-       renesas_sdhi_reset_hs400_mode(host, priv);
-       priv->needs_adjust_hs400 = false;
+       if (priv->scc_ctl) {
+               renesas_sdhi_reset_scc(host, priv);
+               renesas_sdhi_reset_hs400_mode(host, priv);
+               priv->needs_adjust_hs400 = false;
 
-       sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, CLK_CTL_SCLKEN |
-                       sd_ctrl_read16(host, CTL_SD_CARD_CLK_CTL));
+               sd_ctrl_write16(host, CTL_SD_CARD_CLK_CTL, CLK_CTL_SCLKEN |
+                               sd_ctrl_read16(host, CTL_SD_CARD_CLK_CTL));
 
-       sd_scc_write32(host, priv, SH_MOBILE_SDHI_SCC_RVSCNTL,
-                      ~SH_MOBILE_SDHI_SCC_RVSCNTL_RVSEN &
-                      sd_scc_read32(host, priv, SH_MOBILE_SDHI_SCC_RVSCNTL));
+               sd_scc_write32(host, priv, SH_MOBILE_SDHI_SCC_RVSCNTL,
+                              ~SH_MOBILE_SDHI_SCC_RVSCNTL_RVSEN &
+                              sd_scc_read32(host, priv, SH_MOBILE_SDHI_SCC_RVSCNTL));
+       }
 
        if (host->pdata->flags & TMIO_MMC_MIN_RCAR2)
                sd_ctrl_write32_as_16_and_16(host, CTL_IRQ_MASK,