From 2f7c68cb55ecb7331f2381deb497c27155f32faf Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 03 Jan 2024 09:43:39 +0000
Subject: [PATCH] update kernel to 5.10.198
---
kernel/drivers/media/i2c/imx327.c | 63 +++++++++++++++----------------
1 files changed, 31 insertions(+), 32 deletions(-)
diff --git a/kernel/drivers/media/i2c/imx327.c b/kernel/drivers/media/i2c/imx327.c
index e1ac7d1..41875c6 100644
--- a/kernel/drivers/media/i2c/imx327.c
+++ b/kernel/drivers/media/i2c/imx327.c
@@ -865,14 +865,12 @@
struct imx327 *imx327 = to_imx327(sd);
const struct imx327_mode *mode = imx327->cur_mode;
- mutex_lock(&imx327->mutex);
fi->interval = mode->max_fps;
- mutex_unlock(&imx327->mutex);
return 0;
}
-static int imx327_g_mbus_config(struct v4l2_subdev *sd,
+static int imx327_g_mbus_config(struct v4l2_subdev *sd, unsigned int pad_id,
struct v4l2_mbus_config *config)
{
struct imx327 *imx327 = to_imx327(sd);
@@ -881,10 +879,7 @@
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;
+ config->type = imx327->bus_cfg.bus_type;
config->flags = val;
return 0;
@@ -1145,7 +1140,7 @@
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 +1553,7 @@
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
@@ -1594,7 +1589,6 @@
static const struct v4l2_subdev_video_ops imx327_video_ops = {
.s_stream = imx327_s_stream,
.g_frame_interval = imx327_g_frame_interval,
- .g_mbus_config = imx327_g_mbus_config,
};
static const struct v4l2_subdev_pad_ops imx327_pad_ops = {
@@ -1604,6 +1598,7 @@
.get_fmt = imx327_get_fmt,
.set_fmt = imx327_set_fmt,
.get_selection = imx327_get_selection,
+ .get_mbus_config = imx327_g_mbus_config,
};
static const struct v4l2_subdev_ops imx327_subdev_ops = {
@@ -1640,29 +1635,33 @@
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 +1892,7 @@
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 {
--
Gitblit v1.6.2