Commit 24ce2d7b authored by Wolfram Sang's avatar Wolfram Sang Committed by Ulf Hansson
Browse files

mmc: tmio: bring tuning HW to a sane state with MMC_POWER_OFF



When powering off a card, we need to disable the tuning HW (like SCC for
the Renesas SDHI) to get to a sane state and allow for re-tuning new
cards. This was hidden before because we wrongly did that in hw_reset()
before which was an unintended use of hw_reset(). Now that we corrected
the use of hw_reset() meanwhile, we revealed this shortcoming and need
to fix it properly by explicitly calling the downgrade callback.

Fixes: 6e7d4de1 ("mmc: renesas_sdhi: move wrong 'hw_reset' to 'reset'")
Suggested-by: default avatarTakeshi Saito <takeshi.saito.xv@renesas.com>
Reviewed-by: default avatarTakeshi Saito <takeshi.saito.xv@renesas.com>
Signed-off-by: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: default avatarNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Reviewed-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Tested-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Link: https://lore.kernel.org/r/20201106072549.1495-3-wsa+renesas@sang-engineering.com


Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 1023e290
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -927,6 +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);
		host->set_clock(host, 0);
		break;
	case MMC_POWER_UP: