Quoting Niklas Söderlund (2021-11-23 15:54:43) > Before reading which slot was captured to by examining the module status > (VnMS) register, make sure something was captured at all by examining > the interrupt status register (VnINTS). > > Failing this a buffer maybe completed before it was captured too. > > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx> > --- > drivers/media/platform/rcar-vin/rcar-dma.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c b/drivers/media/platform/rcar-vin/rcar-dma.c > index 25ead9333d0046e7..87ccbdc3d11a0f2d 100644 > --- a/drivers/media/platform/rcar-vin/rcar-dma.c > +++ b/drivers/media/platform/rcar-vin/rcar-dma.c > @@ -111,6 +111,9 @@ > #define VNIE_FIE (1 << 4) > #define VNIE_EFE (1 << 1) > > +/* Video n Interrupt Status Register bits */ > +#define VNINTS_FIS (1 << 4) > + > /* Video n Data Mode Register bits */ > #define VNDMR_A8BIT(n) (((n) & 0xff) << 24) > #define VNDMR_A8BIT_MASK (0xff << 24) > @@ -1005,6 +1008,10 @@ static irqreturn_t rvin_irq(int irq, void *data) > rvin_ack_interrupt(vin); > handled = 1; > > + /* Nothing to do if nothing was captured. */ > + if (!(int_status & VNINTS_FIS)) Does this deserve a warning or debug print? It sounds like it may be somewhat spurious or unexpected if it occurs? -- Kieran > + goto done; > + > /* Nothing to do if capture status is 'STOPPED' */ > if (vin->state == STOPPED) { > vin_dbg(vin, "IRQ while state stopped\n"); > -- > 2.34.0 >