From 9370bb92b2d16684ee45cf24e879c93c509162da Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Thu, 19 Dec 2024 01:47:39 +0000
Subject: [PATCH] add wifi6 8852be driver

---
 kernel/drivers/media/i2c/os08a20.c |   15 ++++++---------
 1 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/kernel/drivers/media/i2c/os08a20.c b/kernel/drivers/media/i2c/os08a20.c
index fd49d42..3194a61 100644
--- a/kernel/drivers/media/i2c/os08a20.c
+++ b/kernel/drivers/media/i2c/os08a20.c
@@ -43,7 +43,7 @@
 #endif
 
 /* pixel rate = link frequency * 2 * lanes / BITS_PER_SAMPLE */
-#define MIPI_FREQ	360000000U
+#define MIPI_FREQ	480000000U
 #define OS08A20_PIXEL_RATE		(MIPI_FREQ * 2LL * 4LL / 10)
 #define OS08A20_XVCLK_FREQ		24000000
 
@@ -684,9 +684,7 @@
 	struct os08a20 *os08a20 = to_os08a20(sd);
 	const struct os08a20_mode *mode = os08a20->cur_mode;
 
-	mutex_lock(&os08a20->mutex);
 	fi->interval = mode->max_fps;
-	mutex_unlock(&os08a20->mutex);
 
 	return 0;
 }
@@ -1107,9 +1105,7 @@
 	if (fie->index >= os08a20->cfg_num)
 		return -EINVAL;
 
-	if (fie->code != OS08A20_MEDIA_BUS_FMT)
-		return -EINVAL;
-
+	fie->code = OS08A20_MEDIA_BUS_FMT;
 	fie->width = supported_modes[fie->index].width;
 	fie->height = supported_modes[fie->index].height;
 	fie->interval = supported_modes[fie->index].max_fps;
@@ -1118,6 +1114,7 @@
 }
 
 static int os08a20_g_mbus_config(struct v4l2_subdev *sd,
+				unsigned int pad_id,
 				struct v4l2_mbus_config *config)
 {
 	u32 val = 0;
@@ -1125,7 +1122,7 @@
 	val = 1 << (OS08A20_LANES - 1) |
 	      V4L2_MBUS_CSI2_CHANNEL_0 |
 	      V4L2_MBUS_CSI2_CONTINUOUS_CLOCK;
-	config->type = V4L2_MBUS_CSI2;
+	config->type = V4L2_MBUS_CSI2_DPHY;
 	config->flags = val;
 
 	return 0;
@@ -1153,7 +1150,6 @@
 static const struct v4l2_subdev_video_ops os08a20_video_ops = {
 	.s_stream = os08a20_s_stream,
 	.g_frame_interval = os08a20_g_frame_interval,
-	.g_mbus_config = os08a20_g_mbus_config,
 };
 
 static const struct v4l2_subdev_pad_ops os08a20_pad_ops = {
@@ -1162,6 +1158,7 @@
 	.enum_frame_interval = os08a20_enum_frame_interval,
 	.get_fmt = os08a20_get_fmt,
 	.set_fmt = os08a20_set_fmt,
+	.get_mbus_config = os08a20_g_mbus_config,
 };
 
 static const struct v4l2_subdev_ops os08a20_subdev_ops = {
@@ -1606,4 +1603,4 @@
 module_exit(sensor_mod_exit);
 
 MODULE_DESCRIPTION("OmniVision os08a20 sensor driver");
-MODULE_LICENSE("GPL v2");
+MODULE_LICENSE("GPL");

--
Gitblit v1.6.2