media: coda: Clear the interrupt reason
authorEzequiel Garcia <ezequiel@collabora.com>
Thu, 2 May 2019 22:00:45 +0000 (18:00 -0400)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Tue, 28 May 2019 16:23:15 +0000 (12:23 -0400)
This commit clears the interrupt reason (INT_REASON) register
on the interrupt handler. Without this clearing, the CODA hardware
has been observed to get completely stalled on CODA980 variants,
requiring a pretty deep hardware reset.

The datasheet specifies that the INT_REASON register is set
by the CODA hardware, and should be cleared by the host.

While the CODA versions that are currently supported by this driver
don't seem to need this change, it's a really small change,
so it seems a wise thing to do to avoid hitting some
rare race-condition in the hardware.

Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/platform/coda/coda-bit.c

index 19055c6488cc16b88c98d6607e119fd6a8a2b6bf..a5b2891392b8bfe69061fb4b8c6a7e64b95022dd 100644 (file)
@@ -2341,6 +2341,7 @@ irqreturn_t coda_irq_handler(int irq, void *data)
 
        /* read status register to attend the IRQ */
        coda_read(dev, CODA_REG_BIT_INT_STATUS);
+       coda_write(dev, 0, CODA_REG_BIT_INT_REASON);
        coda_write(dev, CODA_REG_BIT_INT_CLEAR_SET,
                      CODA_REG_BIT_INT_CLEAR);