media: imx: imx7_mipi_csis: Make source .s_power() optional
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Mon, 15 Feb 2021 04:27:28 +0000 (05:27 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 11 Mar 2021 10:59:52 +0000 (11:59 +0100)
The .s_power() subdev operation is optional, don't error out when the
source doesn't implement it.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Rui Miguel Silva <rmfrfs@gmail.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/staging/media/imx/imx7-mipi-csis.c

index 381eda94398a9d6b53e0ac61769a861f9ffcef71..c153a77c3784fbea5db1b3e151e7ff3a56ef202f 100644 (file)
@@ -627,7 +627,7 @@ static int mipi_csis_s_stream(struct v4l2_subdev *mipi_sd, int enable)
                        return ret;
                }
                ret = v4l2_subdev_call(state->src_sd, core, s_power, 1);
-               if (ret < 0)
+               if (ret < 0 && ret != -ENOIOCTLCMD)
                        return ret;
        }
 
@@ -649,6 +649,8 @@ static int mipi_csis_s_stream(struct v4l2_subdev *mipi_sd, int enable)
        } else {
                v4l2_subdev_call(state->src_sd, video, s_stream, 0);
                ret = v4l2_subdev_call(state->src_sd, core, s_power, 0);
+               if (ret == -ENOIOCTLCMD)
+                       ret = 0;
                mipi_csis_stop_stream(state);
                state->flags &= ~ST_STREAMING;
                if (state->debug)