media: rkisp1: isp: Pass mbus type and flags to rkisp1_config_cif()
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tue, 14 Jun 2022 19:10:58 +0000 (20:10 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Sun, 17 Jul 2022 11:14:08 +0000 (12:14 +0100)
To prepare for the removal of the active_sensor field from the
rkisp1_device structure, pass the media bus type of flag to the
rkisp1_config_cif() function instead of accessing them through
active_sensor.

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 faf80197edbf0083efb4a4db84e68da0e10bac3b..501996fffca0785e91cf395476748836db731de9 100644 (file)
@@ -136,15 +136,14 @@ static void rkisp1_config_ism(struct rkisp1_device *rkisp1)
 /*
  * configure ISP blocks with input format, size......
  */
-static int rkisp1_config_isp(struct rkisp1_device *rkisp1)
+static int rkisp1_config_isp(struct rkisp1_device *rkisp1,
+                            enum v4l2_mbus_type mbus_type, u32 mbus_flags)
 {
        u32 isp_ctrl = 0, irq_mask = 0, acq_mult = 0, signal = 0;
        const struct rkisp1_mbus_info *src_fmt, *sink_fmt;
-       struct rkisp1_sensor_async *sensor;
        struct v4l2_mbus_framefmt *sink_frm;
        struct v4l2_rect *sink_crop;
 
-       sensor = rkisp1->active_sensor;
        sink_fmt = rkisp1->isp.sink_fmt;
        src_fmt = rkisp1->isp.src_fmt;
        sink_frm = rkisp1_isp_get_pad_fmt(&rkisp1->isp, NULL,
@@ -157,7 +156,7 @@ static int rkisp1_config_isp(struct rkisp1_device *rkisp1)
        if (sink_fmt->pixel_enc == V4L2_PIXEL_ENC_BAYER) {
                acq_mult = 1;
                if (src_fmt->pixel_enc == V4L2_PIXEL_ENC_BAYER) {
-                       if (sensor->mbus_type == V4L2_MBUS_BT656)
+                       if (mbus_type == V4L2_MBUS_BT656)
                                isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_RAW_PICT_ITU656;
                        else
                                isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_RAW_PICT;
@@ -165,17 +164,17 @@ static int rkisp1_config_isp(struct rkisp1_device *rkisp1)
                        rkisp1_write(rkisp1, RKISP1_CIF_ISP_DEMOSAIC,
                                     RKISP1_CIF_ISP_DEMOSAIC_TH(0xc));
 
-                       if (sensor->mbus_type == V4L2_MBUS_BT656)
+                       if (mbus_type == V4L2_MBUS_BT656)
                                isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_BAYER_ITU656;
                        else
                                isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_BAYER_ITU601;
                }
        } else if (sink_fmt->pixel_enc == V4L2_PIXEL_ENC_YUV) {
                acq_mult = 2;
-               if (sensor->mbus_type == V4L2_MBUS_CSI2_DPHY) {
+               if (mbus_type == V4L2_MBUS_CSI2_DPHY) {
                        isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_ITU601;
                } else {
-                       if (sensor->mbus_type == V4L2_MBUS_BT656)
+                       if (mbus_type == V4L2_MBUS_BT656)
                                isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_ITU656;
                        else
                                isp_ctrl = RKISP1_CIF_ISP_CTRL_ISP_MODE_ITU601;
@@ -185,17 +184,16 @@ static int rkisp1_config_isp(struct rkisp1_device *rkisp1)
        }
 
        /* Set up input acquisition properties */
-       if (sensor->mbus_type == V4L2_MBUS_BT656 ||
-           sensor->mbus_type == V4L2_MBUS_PARALLEL) {
-               if (sensor->mbus_flags & V4L2_MBUS_PCLK_SAMPLE_RISING)
+       if (mbus_type == V4L2_MBUS_BT656 || mbus_type == V4L2_MBUS_PARALLEL) {
+               if (mbus_flags & V4L2_MBUS_PCLK_SAMPLE_RISING)
                        signal = RKISP1_CIF_ISP_ACQ_PROP_POS_EDGE;
        }
 
-       if (sensor->mbus_type == V4L2_MBUS_PARALLEL) {
-               if (sensor->mbus_flags & V4L2_MBUS_VSYNC_ACTIVE_LOW)
+       if (mbus_type == V4L2_MBUS_PARALLEL) {
+               if (mbus_flags & V4L2_MBUS_VSYNC_ACTIVE_LOW)
                        signal |= RKISP1_CIF_ISP_ACQ_PROP_VSYNC_LOW;
 
-               if (sensor->mbus_flags & V4L2_MBUS_HSYNC_ACTIVE_LOW)
+               if (mbus_flags & V4L2_MBUS_HSYNC_ACTIVE_LOW)
                        signal |= RKISP1_CIF_ISP_ACQ_PROP_HSYNC_LOW;
        }
 
@@ -265,17 +263,17 @@ static int rkisp1_config_dvp(struct rkisp1_device *rkisp1)
 }
 
 /* Configure MUX */
-static int rkisp1_config_path(struct rkisp1_device *rkisp1)
+static int rkisp1_config_path(struct rkisp1_device *rkisp1,
+                             enum v4l2_mbus_type mbus_type)
 {
-       struct rkisp1_sensor_async *sensor = rkisp1->active_sensor;
        u32 dpcl = rkisp1_read(rkisp1, RKISP1_CIF_VI_DPCL);
        int ret = 0;
 
-       if (sensor->mbus_type == V4L2_MBUS_BT656 ||
-           sensor->mbus_type == V4L2_MBUS_PARALLEL) {
+       if (mbus_type == V4L2_MBUS_BT656 ||
+           mbus_type == V4L2_MBUS_PARALLEL) {
                ret = rkisp1_config_dvp(rkisp1);
                dpcl |= RKISP1_CIF_VI_DPCL_IF_SEL_PARALLEL;
-       } else if (sensor->mbus_type == V4L2_MBUS_CSI2_DPHY) {
+       } else if (mbus_type == V4L2_MBUS_CSI2_DPHY) {
                dpcl |= RKISP1_CIF_VI_DPCL_IF_SEL_MIPI;
        }
 
@@ -285,14 +283,15 @@ static int rkisp1_config_path(struct rkisp1_device *rkisp1)
 }
 
 /* Hardware configure Entry */
-static int rkisp1_config_cif(struct rkisp1_device *rkisp1)
+static int rkisp1_config_cif(struct rkisp1_device *rkisp1,
+                            enum v4l2_mbus_type mbus_type, u32 mbus_flags)
 {
        int ret;
 
-       ret = rkisp1_config_isp(rkisp1);
+       ret = rkisp1_config_isp(rkisp1, mbus_type, mbus_flags);
        if (ret)
                return ret;
-       ret = rkisp1_config_path(rkisp1);
+       ret = rkisp1_config_path(rkisp1, mbus_type);
        if (ret)
                return ret;
        rkisp1_config_ism(rkisp1);
@@ -777,7 +776,8 @@ static int rkisp1_isp_s_stream(struct v4l2_subdev *sd, int enable)
 
        rkisp1->isp.frame_sequence = -1;
        mutex_lock(&isp->ops_lock);
-       ret = rkisp1_config_cif(rkisp1);
+       ret = rkisp1_config_cif(rkisp1, rkisp1->active_sensor->mbus_type,
+                               rkisp1->active_sensor->mbus_flags);
        if (ret)
                goto mutex_unlock;