Re: [PATCH] rcar-vin: Add check for completed capture before completing buffer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux