diff options
author | Seungwon Jeon <[email protected]> | 2012-08-01 09:30:40 +0900 |
---|---|---|
committer | Chris Ball <[email protected]> | 2012-09-04 13:58:08 -0400 |
commit | 9b2026a12511439d906a5d8d302ae285ebe7378a (patch) | |
tree | f0c80f878b8290163dd9bc0d4d3371765effdd33 | |
parent | 182c90815993452f1902837cc342ac2c05ef13f5 (diff) |
mmc: dw_mmc: correct mishandling error interrupt
Datasheet of SYNOPSYS mentions that DTO(Data Transfer Over) interrupt
will be raised even if some error interrupts, however it is actually
found that DTO does not occur. SYNOPSYS has confirmed this issue.
Current implementation defers the call of tasklet_schedule until DTO
when the error interrupts is happened. This patch fixes error handling.
Signed-off-by: Seungwon Jeon <[email protected]>
Acked-by: Jaehoon Chung <[email protected]>
Acked-by: Will Newton <[email protected]>
Signed-off-by: Chris Ball <[email protected]>
-rw-r--r-- | drivers/mmc/host/dw_mmc.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index 7baed457dc3b..1a5db20133ee 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -1580,9 +1580,7 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id) host->data_status = pending; smp_wmb(); set_bit(EVENT_DATA_ERROR, &host->pending_events); - if (!(pending & (SDMMC_INT_DTO | SDMMC_INT_DCRC | - SDMMC_INT_SBE | SDMMC_INT_EBE))) - tasklet_schedule(&host->tasklet); + tasklet_schedule(&host->tasklet); } if (pending & SDMMC_INT_DATA_OVER) { |