From ecb29c9635cce77c326250b2893ee5ac3e10ab76 Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Mon, 28 Mar 2022 20:38:16 +0800 Subject: [PATCH] media: i2c: imx327 fixed bus-type error Signed-off-by: Zefa Chen Change-Id: I22aec81da98aa49731283aebf273b2485df91e2d --- drivers/media/i2c/imx327.c | 57 +++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/drivers/media/i2c/imx327.c b/drivers/media/i2c/imx327.c index 38c0ee34bcac..c69feba7f1ae 100644 --- a/drivers/media/i2c/imx327.c +++ b/drivers/media/i2c/imx327.c @@ -881,10 +881,7 @@ static int imx327_g_mbus_config(struct v4l2_subdev *sd, unsigned int pad_id, val = 1 << (IMX327_4LANES - 1) | V4L2_MBUS_CSI2_CHANNEL_0 | V4L2_MBUS_CSI2_CONTINUOUS_CLOCK; - if (imx327->bus_cfg.bus_type == 3) - config->type = V4L2_MBUS_CCP2; - else - config->type = V4L2_MBUS_CSI2_DPHY; + config->type = imx327->bus_cfg.bus_type; config->flags = val; return 0; @@ -1145,7 +1142,7 @@ static long imx327_ioctl(struct v4l2_subdev *sd, unsigned int cmd, void *arg) break; case RKMODULE_GET_LVDS_CFG: lvds_cfg = (struct rkmodule_lvds_cfg *)arg; - if (imx327->bus_cfg.bus_type == 3) + if (imx327->bus_cfg.bus_type == V4L2_MBUS_CCP2) memcpy(lvds_cfg, &imx327->cur_mode->lvds_cfg, sizeof(struct rkmodule_lvds_cfg)); else @@ -1558,7 +1555,7 @@ static int imx327_get_selection(struct v4l2_subdev *sd, if (sel->target == V4L2_SEL_TGT_CROP_BOUNDS) { sel->r.left = CROP_START(imx327->cur_mode->width, DST_WIDTH); sel->r.width = DST_WIDTH; - if (imx327->bus_cfg.bus_type == 3) { + if (imx327->bus_cfg.bus_type == V4L2_MBUS_CCP2) { if (imx327->cur_mode->hdr_mode == NO_HDR) sel->r.top = 21; else @@ -1640,29 +1637,33 @@ static int imx327_set_ctrl(struct v4l2_ctrl *ctrl) switch (ctrl->id) { case V4L2_CID_EXPOSURE: - shs1 = imx327->cur_vts - ctrl->val - 1; - ret = imx327_write_reg(imx327->client, - IMX327_REG_SHS1_H, - IMX327_REG_VALUE_08BIT, - IMX327_FETCH_HIGH_BYTE_EXP(shs1)); - ret |= imx327_write_reg(imx327->client, - IMX327_REG_SHS1_M, - IMX327_REG_VALUE_08BIT, - IMX327_FETCH_MID_BYTE_EXP(shs1)); - ret |= imx327_write_reg(imx327->client, - IMX327_REG_SHS1_L, - IMX327_REG_VALUE_08BIT, - IMX327_FETCH_LOW_BYTE_EXP(shs1)); - dev_dbg(&client->dev, "set exposure 0x%x, cur_vts 0x%x,shs1 0x%x\n", - ctrl->val, imx327->cur_vts, shs1); + if (imx327->cur_mode->hdr_mode == NO_HDR) { + shs1 = imx327->cur_vts - ctrl->val - 1; + ret = imx327_write_reg(imx327->client, + IMX327_REG_SHS1_H, + IMX327_REG_VALUE_08BIT, + IMX327_FETCH_HIGH_BYTE_EXP(shs1)); + ret |= imx327_write_reg(imx327->client, + IMX327_REG_SHS1_M, + IMX327_REG_VALUE_08BIT, + IMX327_FETCH_MID_BYTE_EXP(shs1)); + ret |= imx327_write_reg(imx327->client, + IMX327_REG_SHS1_L, + IMX327_REG_VALUE_08BIT, + IMX327_FETCH_LOW_BYTE_EXP(shs1)); + dev_dbg(&client->dev, "set exposure 0x%x, cur_vts 0x%x,shs1 0x%x\n", + ctrl->val, imx327->cur_vts, shs1); + } break; case V4L2_CID_ANALOGUE_GAIN: - ret = imx327_write_reg(imx327->client, - IMX327_REG_LF_GAIN, - IMX327_REG_VALUE_08BIT, - ctrl->val); - dev_dbg(&client->dev, "set analog gain 0x%x\n", - ctrl->val); + if (imx327->cur_mode->hdr_mode == NO_HDR) { + ret = imx327_write_reg(imx327->client, + IMX327_REG_LF_GAIN, + IMX327_REG_VALUE_08BIT, + ctrl->val); + dev_dbg(&client->dev, "set analog gain 0x%x\n", + ctrl->val); + } break; case V4L2_CID_VBLANK: vts = ctrl->val + imx327->cur_mode->height; @@ -1893,7 +1894,7 @@ static int imx327_probe(struct i2c_client *client, ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(endpoint), &imx327->bus_cfg); - if (imx327->bus_cfg.bus_type == 3) { + if (imx327->bus_cfg.bus_type == V4L2_MBUS_CCP2) { imx327->support_modes = lvds_supported_modes; imx327->support_modes_num = ARRAY_SIZE(lvds_supported_modes); } else {