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/os05a20.c | 23 +++++++----------------
1 files changed, 7 insertions(+), 16 deletions(-)
diff --git a/kernel/drivers/media/i2c/os05a20.c b/kernel/drivers/media/i2c/os05a20.c
index b8addf7..f399814 100644
--- a/kernel/drivers/media/i2c/os05a20.c
+++ b/kernel/drivers/media/i2c/os05a20.c
@@ -106,14 +106,6 @@
#define MIRROR_BIT_MASK BIT(2)
#define FLIP_BIT_MASK BIT(2)
-enum os05a20_max_pad {
- PAD0,
- PAD1,
- PAD2,
- PAD3,
- PAD_MAX,
-};
-
struct regval {
u16 addr;
u8 val;
@@ -682,7 +674,7 @@
.vc[PAD0] = V4L2_MBUS_CSI2_CHANNEL_1,
.vc[PAD1] = V4L2_MBUS_CSI2_CHANNEL_0,//L->csi wr0
.vc[PAD2] = V4L2_MBUS_CSI2_CHANNEL_1,
- .vc[PAD3] = V4L2_MBUS_CSI2_CHANNEL_1,//M->csi wr2 //����̶���֡
+ .vc[PAD3] = V4L2_MBUS_CSI2_CHANNEL_1,//M->csi wr2
},
};
@@ -928,14 +920,12 @@
struct os05a20 *os05a20 = to_os05a20(sd);
const struct os05a20_mode *mode = os05a20->cur_mode;
- mutex_lock(&os05a20->mutex);
fi->interval = mode->max_fps;
- mutex_unlock(&os05a20->mutex);
return 0;
}
-static int os05a20_g_mbus_config(struct v4l2_subdev *sd,
+static int os05a20_g_mbus_config(struct v4l2_subdev *sd, unsigned int pad_id,
struct v4l2_mbus_config *config)
{
struct os05a20 *os05a20 = to_os05a20(sd);
@@ -952,7 +942,7 @@
V4L2_MBUS_CSI2_CONTINUOUS_CLOCK |
V4L2_MBUS_CSI2_CHANNEL_1;
- config->type = V4L2_MBUS_CSI2;
+ config->type = V4L2_MBUS_CSI2_DPHY;
config->flags = val;
return 0;
@@ -1526,7 +1516,6 @@
static const struct v4l2_subdev_video_ops os05a20_video_ops = {
.s_stream = os05a20_s_stream,
.g_frame_interval = os05a20_g_frame_interval,
- .g_mbus_config = os05a20_g_mbus_config,
};
static const struct v4l2_subdev_pad_ops os05a20_pad_ops = {
@@ -1535,6 +1524,7 @@
.enum_frame_interval = os05a20_enum_frame_interval,
.get_fmt = os05a20_get_fmt,
.set_fmt = os05a20_set_fmt,
+ .get_mbus_config = os05a20_g_mbus_config,
};
static const struct v4l2_subdev_ops os05a20_subdev_ops = {
@@ -1573,7 +1563,7 @@
switch (ctrl->id) {
case V4L2_CID_EXPOSURE:
if (os05a20->cur_mode->hdr_mode != NO_HDR)
- return 0;
+ goto ctrl_end;
ret = os05a20_write_reg(os05a20->client,
OS05A20_REG_EXP_LONG_H,
OS05A20_REG_VALUE_16BIT,
@@ -1583,7 +1573,7 @@
break;
case V4L2_CID_ANALOGUE_GAIN:
if (os05a20->cur_mode->hdr_mode != NO_HDR)
- return 0;
+ goto ctrl_end;
if (ctrl->val > 1984) {// >15.5x
dgain = ctrl->val * 10 / 155;
again = 1984;
@@ -1642,6 +1632,7 @@
break;
}
+ctrl_end:
pm_runtime_put(&client->dev);
return ret;
--
Gitblit v1.6.2