Merge "mmc: block: Disable clock scaling during shutdown"
This commit is contained in:
commit
b133f848d1
3 changed files with 24 additions and 6 deletions
|
@ -4695,10 +4695,6 @@ static int _mmc_blk_suspend(struct mmc_card *card, bool wait)
|
|||
static void mmc_blk_shutdown(struct mmc_card *card)
|
||||
{
|
||||
_mmc_blk_suspend(card, 1);
|
||||
|
||||
/* send power off notification */
|
||||
if (mmc_card_mmc(card))
|
||||
mmc_send_pon(card);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
|
|
|
@ -790,10 +790,15 @@ int mmc_resume_clk_scaling(struct mmc_host *host)
|
|||
if (!mmc_can_scale_clk(host))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* If clock scaling is already exited when resume is called, like
|
||||
* during mmc shutdown, it is not an error and should not fail the
|
||||
* API calling this.
|
||||
*/
|
||||
if (!host->clk_scaling.devfreq) {
|
||||
pr_err("%s: %s: no devfreq is assosiated with this device\n",
|
||||
pr_warn("%s: %s: no devfreq is assosiated with this device\n",
|
||||
mmc_hostname(host), __func__);
|
||||
return -EPERM;
|
||||
return 0;
|
||||
}
|
||||
|
||||
atomic_set(&host->clk_scaling.devfreq_abort, 0);
|
||||
|
|
|
@ -2933,6 +2933,22 @@ static int mmc_reset(struct mmc_host *host)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int mmc_shutdown(struct mmc_host *host)
|
||||
{
|
||||
struct mmc_card *card = host->card;
|
||||
|
||||
/*
|
||||
* Exit clock scaling so that it doesn't kick in after
|
||||
* power off notification is sent
|
||||
*/
|
||||
if (host->caps2 & MMC_CAP2_CLK_SCALE)
|
||||
mmc_exit_clk_scaling(card->host);
|
||||
/* send power off notification */
|
||||
if (mmc_card_mmc(card))
|
||||
mmc_send_pon(card);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct mmc_bus_ops mmc_ops = {
|
||||
.remove = mmc_remove,
|
||||
.detect = mmc_detect,
|
||||
|
@ -2943,6 +2959,7 @@ static const struct mmc_bus_ops mmc_ops = {
|
|||
.alive = mmc_alive,
|
||||
.change_bus_speed = mmc_change_bus_speed,
|
||||
.reset = mmc_reset,
|
||||
.shutdown = mmc_shutdown,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Reference in a new issue