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 <[email protected]>
---
 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to