File 0011-UBUNTU-SAUCE-i2c-compile-omitted-sensor-drivers.patch of Package intel-ipu6

From: You-Sheng Yang <vicamo.yang@canonical.com>
Date: Tue, 17 Oct 2023 16:07:55 +0800
Subject: UBUNTU: SAUCE: i2c: compile omitted sensor drivers

Signed-off-by: You-Sheng Yang <vicamo.yang@canonical.com>
---
 Makefile                          |  3 +++
 dkms.conf                         | 27 ++++++++++++++++-----
 drivers/media/i2c/Makefile        |  6 ++++-
 drivers/media/i2c/ov13858_intel.c | 49 +++++++++++++++++++++++++++++++++------
 4 files changed, 71 insertions(+), 14 deletions(-)

diff --git a/Makefile b/Makefile
index 6578727..77298b4 100644
--- a/Makefile
+++ b/Makefile
@@ -48,6 +48,9 @@ export CONFIG_VIDEO_OV01A1S = m
 export CONFIG_VIDEO_OV01A10 = m
 export CONFIG_VIDEO_OV02C10 = m
 export CONFIG_VIDEO_OV02E10 = m
+export CONFIG_VIDEO_OV08A10 = m
+export CONFIG_VIDEO_OV13858 = m
+export CONFIG_VIDEO_OV8856 = m
 export CONFIG_VIDEO_HM2170 = m
 export CONFIG_VIDEO_HM2172 = m
 export CONFIG_VIDEO_HI556 = m
diff --git a/dkms.conf b/dkms.conf
index 13d886c..30b7b6b 100644
--- a/dkms.conf
+++ b/dkms.conf
@@ -76,13 +76,28 @@ BUILT_MODULE_NAME[10]="hi556"
 BUILT_MODULE_LOCATION[10]="drivers/media/i2c"
 DEST_MODULE_LOCATION[10]="/updates"
 
+BUILT_MODULE_NAME[11]="ov08a10"
+BUILT_MODULE_LOCATION[11]="drivers/media/i2c"
+DEST_MODULE_LOCATION[11]="/updates"
+
+BUILT_MODULE_NAME[12]="ov13858"
+BUILT_MODULE_LOCATION[12]="drivers/media/i2c"
+DEST_MODULE_LOCATION[12]="/updates"
+
+BUILT_MODULE_NAME[13]="ov8856"
+BUILT_MODULE_LOCATION[13]="drivers/media/i2c"
+DEST_MODULE_LOCATION[13]="/updates"
 
 if version_lt ${KERNEL_VERSION} 6.8.0; then
-    BUILT_MODULE_NAME[11]="ov2740"
-    BUILT_MODULE_LOCATION[11]="drivers/media/i2c"
-    DEST_MODULE_LOCATION[11]="/updates"
+    BUILT_MODULE_NAME[14]="ov2740"
+    BUILT_MODULE_LOCATION[14]="drivers/media/i2c"
+    DEST_MODULE_LOCATION[14]="/updates"
+
+    BUILT_MODULE_NAME[15]="gc5035"
+    BUILT_MODULE_LOCATION[15]="drivers/media/i2c"
+    DEST_MODULE_LOCATION[15]="/updates"
 else
-    BUILT_MODULE_NAME[11]="ov05c10"
-    BUILT_MODULE_LOCATION[11]="drivers/media/i2c"
-    DEST_MODULE_LOCATION[11]="/updates"
+    BUILT_MODULE_NAME[14]="ov05c10"
+    BUILT_MODULE_LOCATION[14]="drivers/media/i2c"
+    DEST_MODULE_LOCATION[14]="/updates"
 fi
diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
index b4fa255..1be7831 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
@@ -8,8 +8,12 @@ obj-$(CONFIG_VIDEO_OV01A10) += ov01a10.o
 obj-$(CONFIG_VIDEO_OV02C10) += ov02c10.o
 obj-$(CONFIG_VIDEO_OV02E10) += ov02e10.o
 obj-$(CONFIG_VIDEO_OV05C10) += ov05c10.o
+obj-$(CONFIG_VIDEO_OV08A10) += ov08a10.o
+obj-$(CONFIG_VIDEO_OV13858) += ov13858.o
+ov13858-objs += ov13858_intel.o
 obj-$(CONFIG_VIDEO_OV2740) += ov2740.o
+obj-$(CONFIG_VIDEO_OV8856) += ov8856.o
 obj-$(CONFIG_VIDEO_HM2170) += hm2170.o
-obj-$(CONFIG_VIDEO_HM2170) += hm2172.o
+obj-$(CONFIG_VIDEO_HM2172) += hm2172.o
 obj-$(CONFIG_VIDEO_HI556) += hi556.o
 obj-$(CONFIG_POWER_CTRL_LOGIC) += power_ctrl_logic.o
diff --git a/drivers/media/i2c/ov13858_intel.c b/drivers/media/i2c/ov13858_intel.c
index 4e57428..8b8a3ba 100644
--- a/drivers/media/i2c/ov13858_intel.c
+++ b/drivers/media/i2c/ov13858_intel.c
@@ -1382,11 +1382,15 @@ static int ov13858_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh)
 	struct ov13858 *ov13858 = to_ov13858(sd);
 #if LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0)
 	struct v4l2_mbus_framefmt *try_fmt = v4l2_subdev_get_try_format(sd,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)
 									fh->pad,
+#else
+									fh->state,
+#endif
 									0);
 #else
 	struct v4l2_mbus_framefmt *try_fmt = v4l2_subdev_state_get_format(
-									fh->pad,
+									fh->state,
 									0);
 #endif
 
@@ -1522,7 +1526,11 @@ static const struct v4l2_ctrl_ops ov13858_ctrl_ops = {
 };
 
 static int ov13858_enum_mbus_code(struct v4l2_subdev *sd,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)
 				  struct v4l2_subdev_pad_config *cfg,
+#else
+				  struct v4l2_subdev_state *sd_state,
+#endif
 				  struct v4l2_subdev_mbus_code_enum *code)
 {
 	/* Only one bayer order(GRBG) is supported */
@@ -1535,7 +1543,11 @@ static int ov13858_enum_mbus_code(struct v4l2_subdev *sd,
 }
 
 static int ov13858_enum_frame_size(struct v4l2_subdev *sd,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)
 				   struct v4l2_subdev_pad_config *cfg,
+#else
+				   struct v4l2_subdev_state *sd_state,
+#endif
 				   struct v4l2_subdev_frame_size_enum *fse)
 {
 	if (fse->index >= ARRAY_SIZE(supported_modes))
@@ -1562,17 +1574,21 @@ static void ov13858_update_pad_format(const struct ov13858_mode *mode,
 }
 
 static int ov13858_do_get_pad_format(struct ov13858 *ov13858,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)
 				     struct v4l2_subdev_pad_config *cfg,
+#else
+				     struct v4l2_subdev_state *sd_state,
+#endif
 				     struct v4l2_subdev_format *fmt)
 {
 	struct v4l2_mbus_framefmt *framefmt;
 	struct v4l2_subdev *sd = &ov13858->sd;
 
 	if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) {
-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)
 		framefmt = v4l2_subdev_get_try_format(sd, cfg, fmt->pad);
 #else
-		framefmt = v4l2_subdev_state_get_format(cfg, fmt->pad);
+		framefmt = v4l2_subdev_get_try_format(sd, sd_state, fmt->pad);
 #endif
 		fmt->format = *framefmt;
 	} else {
@@ -1583,14 +1599,22 @@ static int ov13858_do_get_pad_format(struct ov13858 *ov13858,
 }
 
 static int ov13858_get_pad_format(struct v4l2_subdev *sd,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)
 				  struct v4l2_subdev_pad_config *cfg,
+#else
+				  struct v4l2_subdev_state *sd_state,
+#endif
 				  struct v4l2_subdev_format *fmt)
 {
 	struct ov13858 *ov13858 = to_ov13858(sd);
 	int ret;
 
 	mutex_lock(&ov13858->mutex);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)
 	ret = ov13858_do_get_pad_format(ov13858, cfg, fmt);
+#else
+	ret = ov13858_do_get_pad_format(ov13858, sd_state, fmt);
+#endif
 	mutex_unlock(&ov13858->mutex);
 
 	return ret;
@@ -1598,7 +1622,11 @@ static int ov13858_get_pad_format(struct v4l2_subdev *sd,
 
 static int
 ov13858_set_pad_format(struct v4l2_subdev *sd,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)
 		       struct v4l2_subdev_pad_config *cfg,
+#else
+		       struct v4l2_subdev_state *sd_state,
+#endif
 		       struct v4l2_subdev_format *fmt)
 {
 	struct ov13858 *ov13858 = to_ov13858(sd);
@@ -1622,10 +1650,10 @@ ov13858_set_pad_format(struct v4l2_subdev *sd,
 				      fmt->format.width, fmt->format.height);
 	ov13858_update_pad_format(mode, fmt);
 	if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) {
-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0)
 		framefmt = v4l2_subdev_get_try_format(sd, cfg, fmt->pad);
 #else
-		framefmt = v4l2_subdev_state_get_format(cfg, fmt->pad);
+		framefmt = v4l2_subdev_get_try_format(sd, sd_state, fmt->pad);
 #endif
 		*framefmt = fmt->format;
 	} else {
@@ -1958,8 +1986,7 @@ static void ov13858_free_controls(struct ov13858 *ov13858)
 	mutex_destroy(&ov13858->mutex);
 }
 
-static int ov13858_probe(struct i2c_client *client,
-			 const struct i2c_device_id *devid)
+static int ov13858_probe(struct i2c_client *client)
 {
 	struct ov13858 *ov13858;
 	int ret;
@@ -2004,7 +2031,11 @@ static int ov13858_probe(struct i2c_client *client,
 		goto error_handler_free;
 	}
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 13, 0)
 	ret = v4l2_async_register_subdev_sensor_common(&ov13858->sd);
+#else
+	ret = v4l2_async_register_subdev_sensor(&ov13858->sd);
+#endif
 	if (ret < 0)
 		goto error_media_entity;
 
@@ -2074,7 +2105,11 @@ static struct i2c_driver ov13858_i2c_driver = {
 		.pm = &ov13858_pm_ops,
 		.acpi_match_table = ACPI_PTR(ov13858_acpi_ids),
 	},
+#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0)
+	.probe_new = ov13858_probe,
+#else
 	.probe = ov13858_probe,
+#endif
 	.remove = ov13858_remove,
 	.id_table = ov13858_id_table,
 };
openSUSE Build Service is sponsored by