Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 881d926d authored by Maya Erez's avatar Maya Erez Committed by Chris Ball
Browse files

mmc: core: move the cache disabling operation to mmc_suspend



Cache control is an eMMC feature and in therefore should be
part of MMC's bus resume operations, performed in mmc_suspend,
rather than in the generic mmc_suspend_host().

Signed-off-by: default avatarMaya Erez <merez@codeaurora.org>
Acked-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Signed-off-by: default avatarChris Ball <cjb@laptop.org>
parent f9e37137
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -2486,6 +2486,7 @@ EXPORT_SYMBOL(mmc_flush_cache);
 * Turn the cache ON/OFF.
 * Turning the cache OFF shall trigger flushing of the data
 * to the non-volatile storage.
 * This function should be called with host claimed
 */
int mmc_cache_ctrl(struct mmc_host *host, u8 enable)
{
@@ -2497,7 +2498,6 @@ int mmc_cache_ctrl(struct mmc_host *host, u8 enable)
			mmc_card_is_removable(host))
		return err;

	mmc_claim_host(host);
	if (card && mmc_card_mmc(card) &&
			(card->ext_csd.cache_size > 0)) {
		enable = !!enable;
@@ -2515,7 +2515,6 @@ int mmc_cache_ctrl(struct mmc_host *host, u8 enable)
				card->ext_csd.cache_ctrl = enable;
		}
	}
	mmc_release_host(host);

	return err;
}
@@ -2534,10 +2533,6 @@ int mmc_suspend_host(struct mmc_host *host)
	cancel_delayed_work(&host->detect);
	mmc_flush_scheduled_work();

	err = mmc_cache_ctrl(host, 0);
	if (err)
		goto out;

	mmc_bus_get(host);
	if (host->bus_ops && !host->bus_dead) {
		if (host->bus_ops->suspend) {
+7 −1
Original line number Diff line number Diff line
@@ -1379,6 +1379,11 @@ static int mmc_suspend(struct mmc_host *host)
	BUG_ON(!host->card);

	mmc_claim_host(host);

	err = mmc_cache_ctrl(host, 0);
	if (err)
		goto out;

	if (mmc_can_poweroff_notify(host->card))
		err = mmc_poweroff_notify(host->card, EXT_CSD_POWER_OFF_SHORT);
	else if (mmc_card_can_sleep(host))
@@ -1386,8 +1391,9 @@ static int mmc_suspend(struct mmc_host *host)
	else if (!mmc_host_is_spi(host))
		err = mmc_deselect_cards(host);
	host->card->state &= ~(MMC_STATE_HIGHSPEED | MMC_STATE_HIGHSPEED_200);
	mmc_release_host(host);

out:
	mmc_release_host(host);
	return err;
}