diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2011-08-13 12:09:11 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-09-21 14:30:00 -0400 |
commit | c62e2a19d2b8c884c6f3ab3bb29d6fde2e13d8ac (patch) | |
tree | cf690857d26790bd6f2c4100921c771f14d1a98f /drivers/media/video/omap3isp | |
parent | 1e393e90ab444dd24d28448e92bab099703fd006 (diff) |
[media] omap3isp: Don't fail streamon when the sensor doesn't implement s_stream
The code handles subdevs with no s_stream operation correctly, but
returns -ENOIOCTLCMD by mistake if the first subdev in the chain has no
s_stream operation. Return 0 in that case.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/omap3isp')
-rw-r--r-- | drivers/media/video/omap3isp/isp.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/media/video/omap3isp/isp.c b/drivers/media/video/omap3isp/isp.c index 5cea2bbd7014..fda4be0066ac 100644 --- a/drivers/media/video/omap3isp/isp.c +++ b/drivers/media/video/omap3isp/isp.c | |||
@@ -732,7 +732,7 @@ static int isp_pipeline_enable(struct isp_pipeline *pipe, | |||
732 | struct media_pad *pad; | 732 | struct media_pad *pad; |
733 | struct v4l2_subdev *subdev; | 733 | struct v4l2_subdev *subdev; |
734 | unsigned long flags; | 734 | unsigned long flags; |
735 | int ret = 0; | 735 | int ret; |
736 | 736 | ||
737 | spin_lock_irqsave(&pipe->lock, flags); | 737 | spin_lock_irqsave(&pipe->lock, flags); |
738 | pipe->state &= ~(ISP_PIPELINE_IDLE_INPUT | ISP_PIPELINE_IDLE_OUTPUT); | 738 | pipe->state &= ~(ISP_PIPELINE_IDLE_INPUT | ISP_PIPELINE_IDLE_OUTPUT); |
@@ -756,7 +756,7 @@ static int isp_pipeline_enable(struct isp_pipeline *pipe, | |||
756 | 756 | ||
757 | ret = v4l2_subdev_call(subdev, video, s_stream, mode); | 757 | ret = v4l2_subdev_call(subdev, video, s_stream, mode); |
758 | if (ret < 0 && ret != -ENOIOCTLCMD) | 758 | if (ret < 0 && ret != -ENOIOCTLCMD) |
759 | break; | 759 | return ret; |
760 | 760 | ||
761 | if (subdev == &isp->isp_ccdc.subdev) { | 761 | if (subdev == &isp->isp_ccdc.subdev) { |
762 | v4l2_subdev_call(&isp->isp_aewb.subdev, video, | 762 | v4l2_subdev_call(&isp->isp_aewb.subdev, video, |
@@ -777,7 +777,7 @@ static int isp_pipeline_enable(struct isp_pipeline *pipe, | |||
777 | if (pipe->do_propagation && mode == ISP_PIPELINE_STREAM_SINGLESHOT) | 777 | if (pipe->do_propagation && mode == ISP_PIPELINE_STREAM_SINGLESHOT) |
778 | atomic_inc(&pipe->frame_number); | 778 | atomic_inc(&pipe->frame_number); |
779 | 779 | ||
780 | return ret; | 780 | return 0; |
781 | } | 781 | } |
782 | 782 | ||
783 | static int isp_pipeline_wait_resizer(struct isp_device *isp) | 783 | static int isp_pipeline_wait_resizer(struct isp_device *isp) |