media: bcm2835-unicam: Always service interrupts
authorDave Stevenson <dave.stevenson@raspberrypi.com>
Wed, 13 May 2020 17:28:27 +0000 (18:28 +0100)
committerpopcornmix <popcornmix@gmail.com>
Wed, 1 Jul 2020 15:34:14 +0000 (16:34 +0100)
From when bringing up the driver, there was a check in the isr
to ignore interrupts (claiming them handled) should the driver
not be streaming.

The VPU now will not register a camera driver if it finds a
CSI2 node enabled in device tree, therefore this flawed check is
redundant.

https://github.com/raspberrypi/linux/issues/3602

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
drivers/media/platform/bcm2835/bcm2835-unicam.c

index 9adfb2d..9c0b937 100644 (file)
@@ -772,12 +772,6 @@ static bool unicam_all_nodes_streaming(struct unicam_device *dev)
        return ret;
 }
 
-static bool unicam_all_nodes_disabled(struct unicam_device *dev)
-{
-       return !dev->node[IMAGE_PAD].streaming &&
-              !dev->node[METADATA_PAD].streaming;
-}
-
 static void unicam_queue_event_sof(struct unicam_device *unicam)
 {
        struct v4l2_event event = {
@@ -805,15 +799,6 @@ static irqreturn_t unicam_isr(int irq, void *dev)
        u32 ista, sta;
        u64 ts;
 
-       /*
-        * Don't service interrupts if not streaming.
-        * Avoids issues if the VPU should enable the
-        * peripheral without the kernel knowing (that
-        * shouldn't happen, but causes issues if it does).
-        */
-       if (unicam_all_nodes_disabled(unicam))
-               return IRQ_NONE;
-
        sta = reg_read(unicam, UNICAM_STA);
        /* Write value back to clear the interrupts */
        reg_write(unicam, UNICAM_STA, sta);