After the cache is disabled in suspend, enabling cache can be done by mmc_init_card in resume. Currently this call path has been changed. In case of sleep mode mmc_init_card isn't called. So mmc_cache_ctrl need to be replaced with mmc_flush_cache in suspend. Signed-off-by: Seungwon Jeon <tgih.jun@xxxxxxxxxxx> --- drivers/mmc/core/core.c | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c index 8a19143..70e25d8 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c @@ -2329,9 +2329,14 @@ EXPORT_SYMBOL(mmc_card_can_sleep); */ int mmc_flush_cache(struct mmc_card *card) { - struct mmc_host *host = card->host; + struct mmc_host *host; int err = 0; + if (!card) + return err; + + host = card->host; + if (!(host->caps2 & MMC_CAP2_CACHE_CTRL)) return err; @@ -2401,7 +2406,7 @@ int mmc_suspend_host(struct mmc_host *host) cancel_delayed_work(&host->detect); mmc_flush_scheduled_work(); if (mmc_try_claim_host(host)) { - err = mmc_cache_ctrl(host, 0); + err = mmc_flush_cache(host->card); mmc_do_release_host(host); } else { err = -EBUSY; -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html