[media] omap3isp: Don't fail streamon when the sensor doesn't implement s_stream
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Sat, 13 Aug 2011 16:09:11 +0000 (13:09 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 21 Sep 2011 18:30:00 +0000 (15:30 -0300)
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>
drivers/media/video/omap3isp/isp.c

index 5cea2bb..fda4be0 100644 (file)
@@ -732,7 +732,7 @@ static int isp_pipeline_enable(struct isp_pipeline *pipe,
        struct media_pad *pad;
        struct v4l2_subdev *subdev;
        unsigned long flags;
-       int ret = 0;
+       int ret;
 
        spin_lock_irqsave(&pipe->lock, flags);
        pipe->state &= ~(ISP_PIPELINE_IDLE_INPUT | ISP_PIPELINE_IDLE_OUTPUT);
@@ -756,7 +756,7 @@ static int isp_pipeline_enable(struct isp_pipeline *pipe,
 
                ret = v4l2_subdev_call(subdev, video, s_stream, mode);
                if (ret < 0 && ret != -ENOIOCTLCMD)
-                       break;
+                       return ret;
 
                if (subdev == &isp->isp_ccdc.subdev) {
                        v4l2_subdev_call(&isp->isp_aewb.subdev, video,
@@ -777,7 +777,7 @@ static int isp_pipeline_enable(struct isp_pipeline *pipe,
        if (pipe->do_propagation && mode == ISP_PIPELINE_STREAM_SINGLESHOT)
                atomic_inc(&pipe->frame_number);
 
-       return ret;
+       return 0;
 }
 
 static int isp_pipeline_wait_resizer(struct isp_device *isp)