media: omap3isp: Ignore failure of stopping streaming on external subdev
authorSakari Ailus <sakari.ailus@linux.intel.com>
Thu, 17 Oct 2019 11:01:37 +0000 (13:01 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Fri, 3 Jan 2020 15:35:01 +0000 (16:35 +0100)
The isp was marked to have failed to stop if stopping streaming on an
external subdev failed. The return value from the external subdev should
be ignored instead as it is not part of the ISP and thus the ISP does not
need to be reset for that reason.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/platform/omap3isp/isp.c

index 327c5716922aceb5a2b2dbaf0592057c7394d9b9..a4ee6b86663e2dfb63d8e73bab68e95e07f4e67a 100644 (file)
@@ -810,6 +810,10 @@ static int isp_pipeline_disable(struct isp_pipeline *pipe)
 
                ret = v4l2_subdev_call(subdev, video, s_stream, 0);
 
+               /* Stop at the first external sub-device. */
+               if (subdev->dev != isp->dev)
+                       break;
+
                if (subdev == &isp->isp_res.subdev)
                        ret |= isp_pipeline_wait(isp, isp_pipeline_wait_resizer);
                else if (subdev == &isp->isp_prev.subdev)
@@ -837,10 +841,6 @@ static int isp_pipeline_disable(struct isp_pipeline *pipe)
                                                      &subdev->entity);
                        failure = -ETIMEDOUT;
                }
-
-               /* Stop at the first external sub-device. */
-               if (subdev->dev != isp->dev)
-                       break;
        }
 
        return failure;