mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 11:26:02 +09:00
media: i2c: imx327 fixed bus-type error
Signed-off-by: Zefa Chen <zefa.chen@rock-chips.com> Change-Id: I22aec81da98aa49731283aebf273b2485df91e2d
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user