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 ee3463e774f8..694c44e487ed 100644 --- a/drivers/dma/edma.c +++ b/drivers/dma/edma.c | |||
@@ -1518,8 +1518,17 @@ static irqreturn_t dma_ccerr_handler(int irq, void *data) | |||
1518 | 1518 | ||
1519 | dev_vdbg(ecc->dev, "dma_ccerr_handler\n"); | 1519 | dev_vdbg(ecc->dev, "dma_ccerr_handler\n"); |
1520 | 1520 | ||
1521 | if (!edma_error_pending(ecc)) | 1521 | if (!edma_error_pending(ecc)) { |
1522 | /* | ||
1523 | * The registers indicate no pending error event but the irq | ||
1524 | * handler has been called. | ||
1525 | * Ask eDMA to re-evaluate the error registers. | ||
1526 | */ | ||
1527 | dev_err(ecc->dev, "%s: Error interrupt without error event!\n", | ||
1528 | __func__); | ||
1529 | edma_write(ecc, EDMA_EEVAL, 1); | ||
1522 | return IRQ_NONE; | 1530 | return IRQ_NONE; |
1531 | } | ||
1523 | 1532 | ||
1524 | while (1) { | 1533 | while (1) { |
1525 | /* Event missed register(s) */ | 1534 | /* Event missed register(s) */ |