diff options
-rw-r--r-- | drivers/mmc/host/atmel-mci.c | 4 |
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); |