summaryrefslogtreecommitdiff
path: root/drivers/mmc/core/mmc_ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mmc/core/mmc_ops.c')
-rw-r--r--drivers/mmc/core/mmc_ops.c8
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;