diff options
Diffstat (limited to 'drivers/mmc/core/mmc_ops.c')
-rw-r--r-- | drivers/mmc/core/mmc_ops.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/mmc/core/mmc_ops.c b/drivers/mmc/core/mmc_ops.c index 2d9715378b42..f9a4e1ad4f01 100644 --- a/drivers/mmc/core/mmc_ops.c +++ b/drivers/mmc/core/mmc_ops.c @@ -965,12 +965,16 @@ int mmc_flush_cache(struct mmc_card *card) { int err = 0; + if (mmc_card_broken_cache_flush(card) && !card->written_flag) + return 0; + if (mmc_cache_enabled(card->host)) { err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_FLUSH_CACHE, 1, 0); if (err) - pr_err("%s: cache flush error %d\n", - mmc_hostname(card->host), err); + pr_err("%s: cache flush error %d\n", mmc_hostname(card->host), err); + else + card->written_flag = false; } return err; |