|
@@ -2506,7 +2506,8 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
|
|
mci_writel(host, IDSTS64, SDMMC_IDMAC_INT_TI |
|
|
mci_writel(host, IDSTS64, SDMMC_IDMAC_INT_TI |
|
|
SDMMC_IDMAC_INT_RI);
|
|
SDMMC_IDMAC_INT_RI);
|
|
mci_writel(host, IDSTS64, SDMMC_IDMAC_INT_NI);
|
|
mci_writel(host, IDSTS64, SDMMC_IDMAC_INT_NI);
|
|
- host->dma_ops->complete((void *)host);
|
|
|
|
|
|
+ if (!test_bit(EVENT_DATA_ERROR, &host->pending_events))
|
|
|
|
+ host->dma_ops->complete((void *)host);
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
pending = mci_readl(host, IDSTS);
|
|
pending = mci_readl(host, IDSTS);
|
|
@@ -2514,7 +2515,8 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
|
|
mci_writel(host, IDSTS, SDMMC_IDMAC_INT_TI |
|
|
mci_writel(host, IDSTS, SDMMC_IDMAC_INT_TI |
|
|
SDMMC_IDMAC_INT_RI);
|
|
SDMMC_IDMAC_INT_RI);
|
|
mci_writel(host, IDSTS, SDMMC_IDMAC_INT_NI);
|
|
mci_writel(host, IDSTS, SDMMC_IDMAC_INT_NI);
|
|
- host->dma_ops->complete((void *)host);
|
|
|
|
|
|
+ if (!test_bit(EVENT_DATA_ERROR, &host->pending_events))
|
|
|
|
+ host->dma_ops->complete((void *)host);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|