aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mmc/host/atmel-mci.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
index d45dfa259386..02529af7c747 100644
--- a/drivers/mmc/host/atmel-mci.c
+++ b/drivers/mmc/host/atmel-mci.c
@@ -694,6 +694,7 @@ static void atmci_start_request(struct atmel_mci *host,
694 694
695 host->pending_events = 0; 695 host->pending_events = 0;
696 host->completed_events = 0; 696 host->completed_events = 0;
697 host->data_status = 0;
697 698
698 if (host->need_reset) { 699 if (host->need_reset) {
699 mci_writel(host, CR, MCI_CR_SWRST); 700 mci_writel(host, CR, MCI_CR_SWRST);
@@ -1408,7 +1409,8 @@ static irqreturn_t atmci_interrupt(int irq, void *dev_id)
1408 if (pending & MCI_NOTBUSY) { 1409 if (pending & MCI_NOTBUSY) {
1409 mci_writel(host, IDR, 1410 mci_writel(host, IDR,
1410 ATMCI_DATA_ERROR_FLAGS | MCI_NOTBUSY); 1411 ATMCI_DATA_ERROR_FLAGS | MCI_NOTBUSY);
1411 host->data_status = status; 1412 if (!host->data_status)
1413 host->data_status = status;
1412 smp_wmb(); 1414 smp_wmb();
1413 atmci_set_pending(host, EVENT_DATA_COMPLETE); 1415 atmci_set_pending(host, EVENT_DATA_COMPLETE);
1414 tasklet_schedule(&host->tasklet); 1416 tasklet_schedule(&host->tasklet);