media: rkisp1: isp: Start CSI-2 receiver before ISP
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tue, 14 Jun 2022 19:10:51 +0000 (20:10 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Sun, 17 Jul 2022 11:09:07 +0000 (12:09 +0100)
Make sure the ISP is ready to receive data before starting the CSI-2
receiver by starting it first. Similarly, stop the CSI-2 receiver before
the ISP when stopping streaming.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Dafna Hirschfeld <dafna@fastmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/rockchip/rkisp1/rkisp1-isp.c

index c05148dd32c0e16386f1003d03e941c78ef0d16c..81c4eb48baabacb3d08d8fb229609b53bbd7dbf0 100644 (file)
@@ -771,8 +771,9 @@ static int rkisp1_isp_s_stream(struct v4l2_subdev *sd, int enable)
                v4l2_subdev_call(rkisp1->active_sensor->sd, video, s_stream,
                                 false);
 
-               rkisp1_isp_stop(rkisp1);
                rkisp1_mipi_csi2_stop(&rkisp1->csi);
+               rkisp1_isp_stop(rkisp1);
+
                return 0;
        }
 
@@ -794,11 +795,13 @@ static int rkisp1_isp_s_stream(struct v4l2_subdev *sd, int enable)
        if (ret)
                goto mutex_unlock;
 
+       rkisp1_isp_start(rkisp1);
+
        ret = rkisp1_mipi_csi2_start(&rkisp1->csi, rkisp1->active_sensor);
-       if (ret)
+       if (ret) {
+               rkisp1_isp_stop(rkisp1);
                goto mutex_unlock;
-
-       rkisp1_isp_start(rkisp1);
+       }
 
        ret = v4l2_subdev_call(rkisp1->active_sensor->sd, video, s_stream,
                               true);