diff options
Diffstat (limited to 'drivers/dma/edma.c')
-rw-r--r-- | drivers/dma/edma.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/dma/edma.c b/drivers/dma/edma.c index 04070baab78a..8181ed131386 100644 --- a/drivers/dma/edma.c +++ b/drivers/dma/edma.c | |||
@@ -1537,8 +1537,17 @@ static irqreturn_t dma_ccerr_handler(int irq, void *data) | |||
1537 | 1537 | ||
1538 | dev_vdbg(ecc->dev, "dma_ccerr_handler\n"); | 1538 | dev_vdbg(ecc->dev, "dma_ccerr_handler\n"); |
1539 | 1539 | ||
1540 | if (!edma_error_pending(ecc)) | 1540 | if (!edma_error_pending(ecc)) { |
1541 | /* | ||
1542 | * The registers indicate no pending error event but the irq | ||
1543 | * handler has been called. | ||
1544 | * Ask eDMA to re-evaluate the error registers. | ||
1545 | */ | ||
1546 | dev_err(ecc->dev, "%s: Error interrupt without error event!\n", | ||
1547 | __func__); | ||
1548 | edma_write(ecc, EDMA_EEVAL, 1); | ||
1541 | return IRQ_NONE; | 1549 | return IRQ_NONE; |
1550 | } | ||
1542 | 1551 | ||
1543 | while (1) { | 1552 | while (1) { |
1544 | /* Event missed register(s) */ | 1553 | /* Event missed register(s) */ |