mmc: tmio: improve bringing HW to a sane state with MMC_POWER_OFF
authorWolfram Sang <wsa+renesas@sang-engineering.com>
Wed, 25 Nov 2020 20:49:53 +0000 (21:49 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Fri, 4 Dec 2020 11:33:59 +0000 (12:33 +0100)
Further testing of error cases revealed that downgrade is not enough, so
we need to reset the SCC which is done by calling the custom reset
function. This reset function can distinguish between the various SDHI
variants, so protecting the call with MIN_RCAR2 is enough here.

Fixes: 24ce2d7b8bea ("mmc: tmio: bring tuning HW to a sane state with MMC_POWER_OFF")
Reported-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Link: https://lore.kernel.org/r/20201125204953.3344-1-wsa+renesas@sang-engineering.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/tmio_mmc_core.c

index cb4149fd12e07841c364130aea9d2a8cb6ac9da7..ac4e7874a3f13557da45c858c4ae8bda344ad559 100644 (file)
@@ -927,9 +927,9 @@ static void tmio_mmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
        switch (ios->power_mode) {
        case MMC_POWER_OFF:
                tmio_mmc_power_off(host);
-               /* Downgrade ensures a sane state for tuning HW (e.g. SCC) */
-               if (host->mmc->ops->hs400_downgrade)
-                       host->mmc->ops->hs400_downgrade(host->mmc);
+               /* For R-Car Gen2+, we need to reset SDHI specific SCC */
+               if (host->pdata->flags & TMIO_MMC_MIN_RCAR2)
+                       host->reset(host);
                host->set_clock(host, 0);
                break;
        case MMC_POWER_UP: