diff mbox

[6/6] rcar-vin: failed start_streaming didn't call s_stream(0)

Message ID 1461330222-34096-7-git-send-email-hverkuil@xs4all.nl (mailing list archive)
State New, archived
Headers show

Commit Message

Hans Verkuil April 22, 2016, 1:03 p.m. UTC
From: Hans Verkuil <hans.verkuil@cisco.com>

This can leave adv7180 in an inconsistent state

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Cc: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
---
 drivers/media/platform/rcar-vin/rcar-dma.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Niklas Söderlund April 22, 2016, 6:57 p.m. UTC | #1
Hi Hans,

Acked-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>

On 2016-04-22 15:03:42 +0200, Hans Verkuil wrote:
> From: Hans Verkuil <hans.verkuil@cisco.com>
> 
> This can leave adv7180 in an inconsistent state
> 
> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
> Cc: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> ---
>  drivers/media/platform/rcar-vin/rcar-dma.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c b/drivers/media/platform/rcar-vin/rcar-dma.c
> index 644ec9b..087c30c 100644
> --- a/drivers/media/platform/rcar-vin/rcar-dma.c
> +++ b/drivers/media/platform/rcar-vin/rcar-dma.c
> @@ -1058,8 +1058,10 @@ static int rvin_start_streaming(struct vb2_queue *vq, unsigned int count)
>  	ret = rvin_capture_start(vin);
>  out:
>  	/* Return all buffers if something went wrong */
> -	if (ret)
> +	if (ret) {
>  		return_all_buffers(vin, VB2_BUF_STATE_QUEUED);
> +		v4l2_subdev_call(sd, video, s_stream, 0);
> +	}
>  
>  	spin_unlock_irqrestore(&vin->qlock, flags);
>  
> -- 
> 2.8.0.rc3
>
diff mbox

Patch

diff --git a/drivers/media/platform/rcar-vin/rcar-dma.c b/drivers/media/platform/rcar-vin/rcar-dma.c
index 644ec9b..087c30c 100644
--- a/drivers/media/platform/rcar-vin/rcar-dma.c
+++ b/drivers/media/platform/rcar-vin/rcar-dma.c
@@ -1058,8 +1058,10 @@  static int rvin_start_streaming(struct vb2_queue *vq, unsigned int count)
 	ret = rvin_capture_start(vin);
 out:
 	/* Return all buffers if something went wrong */
-	if (ret)
+	if (ret) {
 		return_all_buffers(vin, VB2_BUF_STATE_QUEUED);
+		v4l2_subdev_call(sd, video, s_stream, 0);
+	}
 
 	spin_unlock_irqrestore(&vin->qlock, flags);