mmc: sdhci-msm: Reset host->pwr and POWER_CONTROL register

When the SD card is removed regulators are never turned ON.
Reset host->pwr and POWER_CONTROL register accordingly.

Change-Id: I6fb9d357c54d172fb3447e4f0b7ceaaf48c9dbf7
Signed-off-by: Sarthak Garg <sartgarg@codeaurora.org>
Signed-off-by: Ram Prakash Gupta <rampraka@codeaurora.org>
This commit is contained in:
Sarthak Garg 2020-10-29 14:38:25 +05:30 • committed by Gerrit - the friendly Code Review server
commit 2f7816b16d

View file

@ -1857,14 +1857,6 @@ static void sdhci_msm_check_power_status(struct sdhci_host *host, u32 req_type)
return;
}
if (mmc->card && mmc->ops->get_cd && !mmc->ops->get_cd(mmc) &&
(req_type & REQ_BUS_ON)) {
pr_debug(
"%s: Regulators are never turned on when SD card is removed so do not wait for pwr irq\n",
mmc_hostname(host->mmc));
return;
}
if ((req_type & msm_host->curr_pwr_state) ||
(req_type & msm_host->curr_io_level))
done = true;
@ -1882,6 +1874,13 @@ static void sdhci_msm_check_power_status(struct sdhci_host *host, u32 req_type)
"%s: pwr_irq for req: (%d) timed out\n",
mmc_hostname(host->mmc), req_type);
}
if (mmc->card && mmc->ops->get_cd && !mmc->ops->get_cd(mmc) &&
(req_type & REQ_BUS_ON)) {
host->pwr = 0;
sdhci_writeb(host, 0, SDHCI_POWER_CONTROL);
}
pr_debug("%s: %s: request %d done\n", mmc_hostname(host->mmc),
__func__, req_type);
}