|
@@ -327,9 +327,6 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
|
|
|
while (!(esdhc_read32(®s->irqstat) & (IRQSTAT_CC | IRQSTAT_CTOE)))
|
|
|
;
|
|
|
|
|
|
- if (data && (data->flags & MMC_DATA_READ))
|
|
|
- check_and_invalidate_dcache_range(cmd, data);
|
|
|
-
|
|
|
irqstat = esdhc_read32(®s->irqstat);
|
|
|
esdhc_write32(®s->irqstat, irqstat);
|
|
|
|
|
@@ -400,9 +397,10 @@ esdhc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
|
|
|
|
|
|
if (irqstat & DATA_ERR)
|
|
|
return COMM_ERR;
|
|
|
- } while (!(irqstat & IRQSTAT_TC) &&
|
|
|
- (esdhc_read32(®s->prsstat) & PRSSTAT_DLA));
|
|
|
+ } while ((irqstat & DATA_COMPLETE) != DATA_COMPLETE);
|
|
|
#endif
|
|
|
+ if (data->flags & MMC_DATA_READ)
|
|
|
+ check_and_invalidate_dcache_range(cmd, data);
|
|
|
}
|
|
|
|
|
|
esdhc_write32(®s->irqstat, -1);
|