diff -Nru ipu6-drivers-0~git202311240921.07f0612e/debian/changelog ipu6-drivers-0~git202311240921.07f0612e/debian/changelog --- ipu6-drivers-0~git202311240921.07f0612e/debian/changelog 2023-12-02 00:45:55.000000000 +0800 +++ ipu6-drivers-0~git202311240921.07f0612e/debian/changelog 2024-02-21 22:02:47.000000000 +0800 @@ -1,3 +1,12 @@ +ipu6-drivers (0~git202311240921.07f0612e-0ubuntu2) noble; urgency=medium + + [ You-Sheng Yang ] + * Failed to build against v6.8-rcX: multiple failures (LP: #2054496) + - backport: replace strlcpy with strscpy + - backport: Switch to stream-aware state functions + + -- You-Sheng Yang Wed, 21 Feb 2024 22:02:47 +0800 + ipu6-drivers (0~git202311240921.07f0612e-0ubuntu1) noble; urgency=medium * Intel IPU6 camera support for Dell MayaBay MLK (LP: #2044991) diff -Nru ipu6-drivers-0~git202311240921.07f0612e/debian/patches/0012-backport-replace-strlcpy-with-strscpy.patch ipu6-drivers-0~git202311240921.07f0612e/debian/patches/0012-backport-replace-strlcpy-with-strscpy.patch --- ipu6-drivers-0~git202311240921.07f0612e/debian/patches/0012-backport-replace-strlcpy-with-strscpy.patch 1970-01-01 08:00:00.000000000 +0800 +++ ipu6-drivers-0~git202311240921.07f0612e/debian/patches/0012-backport-replace-strlcpy-with-strscpy.patch 2024-02-21 22:02:47.000000000 +0800 @@ -0,0 +1,109 @@ +From: You-Sheng Yang +Date: Wed, 21 Feb 2024 14:51:02 +0800 +Subject: backport: replace strlcpy with strscpy + +BugLink: https://bugs.launchpad.net/bug/2054516 + +With Linux v6.8-rcX commit d26270061ae6 ("string: Remove strlcpy()"), +strlcpy should be replaced by strscpy introduced in v4.3, commit +30035e45753b ("string: provide strscpy()"). + +Signed-off-by: You-Sheng Yang +--- + Makefile | 3 ++- + backport-include/linux/string.h | 10 ++++++++++ + drivers/media/pci/intel/ipu-isys-video.c | 6 +++--- + drivers/media/pci/intel/ipu-isys.c | 4 ++-- + drivers/media/pci/intel/ipu-psys.c | 2 +- + 5 files changed, 18 insertions(+), 7 deletions(-) + create mode 100644 backport-include/linux/string.h + +diff --git a/Makefile b/Makefile +index 3eb9b59..1874cb1 100644 +--- a/Makefile ++++ b/Makefile +@@ -28,8 +28,9 @@ KERNELRELEASE ?= $(shell uname -r) + KERNEL_SRC ?= /lib/modules/$(KERNELRELEASE)/build + MODSRC := $(shell pwd) + ++NOSTDINC_FLAGS += \ ++ -I$(src)/backport-include + subdir-ccflags-y += \ +- -I$(src)/backport-include/ \ + -I$(src)/include/ \ + -DCONFIG_VIDEO_V4L2_SUBDEV_API=1 + +diff --git a/backport-include/linux/string.h b/backport-include/linux/string.h +new file mode 100644 +index 0000000..c039a8a +--- /dev/null ++++ b/backport-include/linux/string.h +@@ -0,0 +1,10 @@ ++#ifndef __BACKPORT_LINUX_STRING_H ++#define __BACKPORT_LINUX_STRING_H ++#include_next ++#include ++ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0) ++#define strscpy strlcpy ++#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0) */ ++ ++#endif /* __BACKPORT_LINUX_STRING_H */ +diff --git a/drivers/media/pci/intel/ipu-isys-video.c b/drivers/media/pci/intel/ipu-isys-video.c +index 3ee79af..11f17cd 100644 +--- a/drivers/media/pci/intel/ipu-isys-video.c ++++ b/drivers/media/pci/intel/ipu-isys-video.c +@@ -359,8 +359,8 @@ int ipu_isys_vidioc_querycap(struct file *file, void *fh, + { + struct ipu_isys_video *av = video_drvdata(file); + +- strlcpy(cap->driver, IPU_ISYS_NAME, sizeof(cap->driver)); +- strlcpy(cap->card, av->isys->media_dev.model, sizeof(cap->card)); ++ strscpy(cap->driver, IPU_ISYS_NAME, sizeof(cap->driver)); ++ strscpy(cap->card, av->isys->media_dev.model, sizeof(cap->card)); + snprintf(cap->bus_info, sizeof(cap->bus_info), "PCI:%s", + av->isys->media_dev.bus_info); + return 0; +@@ -586,7 +586,7 @@ static int vidioc_enum_input(struct file *file, void *fh, + { + if (input->index > 0) + return -EINVAL; +- strlcpy(input->name, "camera", sizeof(input->name)); ++ strscpy(input->name, "camera", sizeof(input->name)); + input->type = V4L2_INPUT_TYPE_CAMERA; + + return 0; +diff --git a/drivers/media/pci/intel/ipu-isys.c b/drivers/media/pci/intel/ipu-isys.c +index 3cc38d4..ac90ce4 100644 +--- a/drivers/media/pci/intel/ipu-isys.c ++++ b/drivers/media/pci/intel/ipu-isys.c +@@ -976,14 +976,14 @@ static int isys_register_devices(struct ipu_isys *isys) + #else + isys->media_dev.link_notify = v4l2_pipeline_link_notify; + #endif +- strlcpy(isys->media_dev.model, ++ strscpy(isys->media_dev.model, + IPU_MEDIA_DEV_MODEL_NAME, sizeof(isys->media_dev.model)); + #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0) + isys->media_dev.driver_version = LINUX_VERSION_CODE; + #endif + snprintf(isys->media_dev.bus_info, sizeof(isys->media_dev.bus_info), + "pci:%s", dev_name(isys->adev->dev.parent->parent)); +- strlcpy(isys->v4l2_dev.name, isys->media_dev.model, ++ strscpy(isys->v4l2_dev.name, isys->media_dev.model, + sizeof(isys->v4l2_dev.name)); + + #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) +diff --git a/drivers/media/pci/intel/ipu-psys.c b/drivers/media/pci/intel/ipu-psys.c +index 8e8e200..a698edb 100644 +--- a/drivers/media/pci/intel/ipu-psys.c ++++ b/drivers/media/pci/intel/ipu-psys.c +@@ -1647,7 +1647,7 @@ static int ipu_psys_probe(struct ipu_bus_device *adev) + } + + /* Add the hw stepping information to caps */ +- strlcpy(psys->caps.dev_model, IPU_MEDIA_DEV_MODEL_NAME, ++ strscpy(psys->caps.dev_model, IPU_MEDIA_DEV_MODEL_NAME, + sizeof(psys->caps.dev_model)); + + pm_runtime_set_autosuspend_delay(&psys->adev->dev, diff -Nru ipu6-drivers-0~git202311240921.07f0612e/debian/patches/0013-backport-Switch-to-stream-aware-state-functions.patch ipu6-drivers-0~git202311240921.07f0612e/debian/patches/0013-backport-Switch-to-stream-aware-state-functions.patch --- ipu6-drivers-0~git202311240921.07f0612e/debian/patches/0013-backport-Switch-to-stream-aware-state-functions.patch 1970-01-01 08:00:00.000000000 +0800 +++ ipu6-drivers-0~git202311240921.07f0612e/debian/patches/0013-backport-Switch-to-stream-aware-state-functions.patch 2024-02-21 22:02:47.000000000 +0800 @@ -0,0 +1,511 @@ +From: You-Sheng Yang +Date: Wed, 21 Feb 2024 21:46:53 +0800 +Subject: backport: Switch to stream-aware state functions + +BugLink: https://bugs.launchpad.net/bug/2054516 + +With Linux v6.8-rcX commit bc0e8d91feec ("media: v4l: subdev: Switch to +stream-aware state functions"), +v4l2_subdev_get_try_{format,crop,compose} are renamed to +v4l2_subdev_state_get_{format,crop,compose}. + +Signed-off-by: You-Sheng Yang +--- + backport-include/media/v4l2-subdev.h | 18 ++++++++++++++++++ + drivers/media/i2c/gc5035.c | 4 ++-- + drivers/media/i2c/hi556.c | 8 +++----- + drivers/media/i2c/hm11b1.c | 7 +++---- + drivers/media/i2c/hm2170.c | 7 +++---- + drivers/media/i2c/hm2172.c | 7 +++---- + drivers/media/i2c/ov01a10.c | 7 +++---- + drivers/media/i2c/ov01a1s.c | 7 +++---- + drivers/media/i2c/ov02c10.c | 7 +++---- + drivers/media/i2c/ov02e10.c | 7 +++---- + drivers/media/i2c/ov08a10.c | 9 +++------ + drivers/media/i2c/ov13858_intel.c | 11 +++++------ + drivers/media/i2c/ov2740.c | 7 +++---- + drivers/media/i2c/ov8856.c | 7 +++---- + drivers/media/pci/intel/ipu-isys-subdev.c | 12 ++++++------ + 15 files changed, 64 insertions(+), 61 deletions(-) + create mode 100644 backport-include/media/v4l2-subdev.h + +diff --git a/backport-include/media/v4l2-subdev.h b/backport-include/media/v4l2-subdev.h +new file mode 100644 +index 0000000..e2e5d53 +--- /dev/null ++++ b/backport-include/media/v4l2-subdev.h +@@ -0,0 +1,18 @@ ++#ifndef __BACKPORT_MEDIA_V4L2_SUBDEV_H ++#define __BACKPORT_MEDIA_V4L2_SUBDEV_H ++#include_next ++#include ++ ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0) \ ++ && LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0) ++ ++#define v4l2_subdev_state_get_format(state, pad) \ ++ v4l2_subdev_get_try_format(sd, state, pad) ++#define v4l2_subdev_state_get_crop(state, pad) \ ++ v4l2_subdev_get_try_crop(sd, state, pad) ++#define v4l2_subdev_state_get_compose(state, pad) \ ++ v4l2_subdev_get_try_compose(sd, state, pad) ++ ++#endif /* KERNEL_VERSION(5, 14, 0) <= LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0) */ ++ ++#endif /* __BACKPORT_MEDIA_V4L2_SUBDEV_H */ +diff --git a/drivers/media/i2c/gc5035.c b/drivers/media/i2c/gc5035.c +index 16bbd48..c9f8f2b 100644 +--- a/drivers/media/i2c/gc5035.c ++++ b/drivers/media/i2c/gc5035.c +@@ -1497,7 +1497,7 @@ static int gc5035_set_fmt(struct v4l2_subdev *sd, + + mutex_lock(&gc5035->mutex); + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { +- *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format; ++ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = fmt->format; + } else { + gc5035->cur_mode = mode; + h_blank = mode->hts_def - mode->width; +@@ -1522,7 +1522,7 @@ static int gc5035_get_fmt(struct v4l2_subdev *sd, + + mutex_lock(&gc5035->mutex); + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { +- fmt->format = *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad); ++ fmt->format = *v4l2_subdev_state_get_format(sd_state, fmt->pad); + } else { + fmt->format.width = mode->width; + fmt->format.height = mode->height; +diff --git a/drivers/media/i2c/hi556.c b/drivers/media/i2c/hi556.c +index e268c94..4b606d5 100644 +--- a/drivers/media/i2c/hi556.c ++++ b/drivers/media/i2c/hi556.c +@@ -1059,7 +1059,7 @@ static int hi556_set_format(struct v4l2_subdev *sd, + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) + *v4l2_subdev_get_try_format(sd, cfg, fmt->pad) = fmt->format; + #else +- *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format; ++ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = fmt->format; + #endif + } else { + hi556->cur_mode = mode; +@@ -1102,9 +1102,7 @@ static int hi556_get_format(struct v4l2_subdev *sd, + fmt->format = + *v4l2_subdev_get_try_format(&hi556->sd, cfg, fmt->pad); + #else +- fmt->format = *v4l2_subdev_get_try_format(&hi556->sd, +- sd_state, +- fmt->pad); ++ fmt->format = *v4l2_subdev_state_get_format(sd_state, fmt->pad); + #endif + else + hi556_assign_pad_format(hi556->cur_mode, &fmt->format); +@@ -1162,7 +1160,7 @@ static int hi556_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) + v4l2_subdev_get_try_format(sd, fh->pad, 0)); + #else + hi556_assign_pad_format(&supported_modes[0], +- v4l2_subdev_get_try_format(sd, fh->state, 0)); ++ v4l2_subdev_state_get_format(fh->state, 0)); + #endif + mutex_unlock(&hi556->mutex); + +diff --git a/drivers/media/i2c/hm11b1.c b/drivers/media/i2c/hm11b1.c +index fa9da1b..316d00d 100644 +--- a/drivers/media/i2c/hm11b1.c ++++ b/drivers/media/i2c/hm11b1.c +@@ -921,7 +921,7 @@ static int hm11b1_set_format(struct v4l2_subdev *sd, + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) + *v4l2_subdev_get_try_format(sd, cfg, fmt->pad) = fmt->format; + #else +- *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format; ++ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = fmt->format; + #endif + } else { + hm11b1->cur_mode = mode; +@@ -962,8 +962,7 @@ static int hm11b1_get_format(struct v4l2_subdev *sd, + fmt->format = *v4l2_subdev_get_try_format(&hm11b1->sd, cfg, + fmt->pad); + #else +- fmt->format = *v4l2_subdev_get_try_format(&hm11b1->sd, +- sd_state, fmt->pad); ++ fmt->format = *v4l2_subdev_state_get_format(sd_state, fmt->pad); + #endif + else + hm11b1_update_pad_format(hm11b1->cur_mode, &fmt->format); +@@ -1020,7 +1019,7 @@ static int hm11b1_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) + v4l2_subdev_get_try_format(sd, fh->pad, 0)); + #else +- v4l2_subdev_get_try_format(sd, fh->state, 0)); ++ v4l2_subdev_state_get_format(fh->state, 0)); + #endif + mutex_unlock(&hm11b1->mutex); + +diff --git a/drivers/media/i2c/hm2170.c b/drivers/media/i2c/hm2170.c +index 284067e..dae3f4f 100644 +--- a/drivers/media/i2c/hm2170.c ++++ b/drivers/media/i2c/hm2170.c +@@ -1065,7 +1065,7 @@ static int hm2170_set_format(struct v4l2_subdev *sd, + mutex_lock(&hm2170->mutex); + hm2170_update_pad_format(mode, &fmt->format); + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { +- *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format; ++ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = fmt->format; + } else { + hm2170->cur_mode = mode; + __v4l2_ctrl_s_ctrl(hm2170->link_freq, mode->link_freq_index); +@@ -1097,8 +1097,7 @@ static int hm2170_get_format(struct v4l2_subdev *sd, + + mutex_lock(&hm2170->mutex); + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) +- fmt->format = *v4l2_subdev_get_try_format(&hm2170->sd, +- sd_state, fmt->pad); ++ fmt->format = *v4l2_subdev_state_get_format(sd_state, fmt->pad); + else + hm2170_update_pad_format(hm2170->cur_mode, &fmt->format); + +@@ -1145,7 +1144,7 @@ static int hm2170_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) + + mutex_lock(&hm2170->mutex); + hm2170_update_pad_format(&supported_modes[hm2170->rev][0], +- v4l2_subdev_get_try_format(sd, fh->state, 0)); ++ v4l2_subdev_state_get_format(fh->state, 0)); + mutex_unlock(&hm2170->mutex); + + return 0; +diff --git a/drivers/media/i2c/hm2172.c b/drivers/media/i2c/hm2172.c +index 3d8d58f..4eb8cab 100644 +--- a/drivers/media/i2c/hm2172.c ++++ b/drivers/media/i2c/hm2172.c +@@ -1494,7 +1494,7 @@ static int hm2172_set_format(struct v4l2_subdev *sd, + mutex_lock(&hm2172->mutex); + hm2172_update_pad_format(mode, &fmt->format); + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { +- *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format; ++ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = fmt->format; + } else { + hm2172->cur_mode = mode; + __v4l2_ctrl_s_ctrl(hm2172->link_freq, mode->link_freq_index); +@@ -1526,8 +1526,7 @@ static int hm2172_get_format(struct v4l2_subdev *sd, + + mutex_lock(&hm2172->mutex); + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) +- fmt->format = *v4l2_subdev_get_try_format(&hm2172->sd, +- sd_state, fmt->pad); ++ fmt->format = *v4l2_subdev_state_get_format(sd_state, fmt->pad); + else + hm2172_update_pad_format(hm2172->cur_mode, &fmt->format); + +@@ -1572,7 +1571,7 @@ static int hm2172_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) + + mutex_lock(&hm2172->mutex); + hm2172_update_pad_format(&supported_modes[0], +- v4l2_subdev_get_try_format(sd, fh->state, 0)); ++ v4l2_subdev_state_get_format(fh->state, 0)); + mutex_unlock(&hm2172->mutex); + + return 0; +diff --git a/drivers/media/i2c/ov01a10.c b/drivers/media/i2c/ov01a10.c +index e7ac490..a3a3fd0 100644 +--- a/drivers/media/i2c/ov01a10.c ++++ b/drivers/media/i2c/ov01a10.c +@@ -753,7 +753,7 @@ static int ov01a10_set_format(struct v4l2_subdev *sd, + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) + *v4l2_subdev_get_try_format(sd, cfg, fmt->pad) = fmt->format; + #else +- *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format; ++ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = fmt->format; + #endif + } else { + ov01a10->cur_mode = mode; +@@ -792,8 +792,7 @@ static int ov01a10_get_format(struct v4l2_subdev *sd, + fmt->format = *v4l2_subdev_get_try_format(&ov01a10->sd, cfg, + fmt->pad); + #else +- fmt->format = *v4l2_subdev_get_try_format(&ov01a10->sd, +- sd_state, fmt->pad); ++ fmt->format = *v4l2_subdev_state_get_format(sd_state, fmt->pad); + #endif + else + ov01a10_update_pad_format(ov01a10->cur_mode, &fmt->format); +@@ -851,7 +850,7 @@ static int ov01a10_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) + v4l2_subdev_get_try_format(sd, fh->pad, 0)); + #else + ov01a10_update_pad_format(&supported_modes[0], +- v4l2_subdev_get_try_format(sd, fh->state, 0)); ++ v4l2_subdev_state_get_format(fh->state, 0)); + #endif + mutex_unlock(&ov01a10->mutex); + +diff --git a/drivers/media/i2c/ov01a1s.c b/drivers/media/i2c/ov01a1s.c +index 8c8911b..15f98fd 100644 +--- a/drivers/media/i2c/ov01a1s.c ++++ b/drivers/media/i2c/ov01a1s.c +@@ -833,7 +833,7 @@ static int ov01a1s_set_format(struct v4l2_subdev *sd, + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) + *v4l2_subdev_get_try_format(sd, cfg, fmt->pad) = fmt->format; + #else +- *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format; ++ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = fmt->format; + #endif + } else { + ov01a1s->cur_mode = mode; +@@ -872,8 +872,7 @@ static int ov01a1s_get_format(struct v4l2_subdev *sd, + fmt->format = *v4l2_subdev_get_try_format(&ov01a1s->sd, cfg, + fmt->pad); + #else +- fmt->format = *v4l2_subdev_get_try_format(&ov01a1s->sd, +- sd_state, fmt->pad); ++ fmt->format = *v4l2_subdev_state_get_format(sd_state, fmt->pad); + #endif + else + ov01a1s_update_pad_format(ov01a1s->cur_mode, &fmt->format); +@@ -931,7 +930,7 @@ static int ov01a1s_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) + v4l2_subdev_get_try_format(sd, fh->pad, 0)); + #else + ov01a1s_update_pad_format(&supported_modes[0], +- v4l2_subdev_get_try_format(sd, fh->state, 0)); ++ v4l2_subdev_state_get_format(fh->state, 0)); + #endif + mutex_unlock(&ov01a1s->mutex); + +diff --git a/drivers/media/i2c/ov02c10.c b/drivers/media/i2c/ov02c10.c +index e9969da..a3bebbf 100644 +--- a/drivers/media/i2c/ov02c10.c ++++ b/drivers/media/i2c/ov02c10.c +@@ -1177,7 +1177,7 @@ static int ov02c10_set_format(struct v4l2_subdev *sd, + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) + *v4l2_subdev_get_try_format(sd, cfg, fmt->pad) = fmt->format; + #else +- *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format; ++ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = fmt->format; + #endif + } else { + ov02c10->cur_mode = mode; +@@ -1216,8 +1216,7 @@ static int ov02c10_get_format(struct v4l2_subdev *sd, + fmt->format = *v4l2_subdev_get_try_format(&ov02c10->sd, cfg, + fmt->pad); + #else +- fmt->format = *v4l2_subdev_get_try_format(&ov02c10->sd, +- sd_state, fmt->pad); ++ fmt->format = *v4l2_subdev_state_get_format(sd_state, fmt->pad); + #endif + else + ov02c10_update_pad_format(ov02c10->cur_mode, &fmt->format); +@@ -1275,7 +1274,7 @@ static int ov02c10_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) + v4l2_subdev_get_try_format(sd, fh->pad, 0)); + #else + ov02c10_update_pad_format(&supported_modes[0], +- v4l2_subdev_get_try_format(sd, fh->state, 0)); ++ v4l2_subdev_state_get_format(fh->state, 0)); + #endif + mutex_unlock(&ov02c10->mutex); + +diff --git a/drivers/media/i2c/ov02e10.c b/drivers/media/i2c/ov02e10.c +index fb7993b..3034f2d 100644 +--- a/drivers/media/i2c/ov02e10.c ++++ b/drivers/media/i2c/ov02e10.c +@@ -877,7 +877,7 @@ static int ov02e10_set_format(struct v4l2_subdev *sd, + mutex_lock(&ov02e10->mutex); + ov02e10_update_pad_format(mode, &fmt->format); + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { +- *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = ++ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = + fmt->format; + } else { + ov02e10->cur_mode = mode; +@@ -910,8 +910,7 @@ static int ov02e10_get_format(struct v4l2_subdev *sd, + + mutex_lock(&ov02e10->mutex); + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) +- fmt->format = *v4l2_subdev_get_try_format(&ov02e10->sd, +- sd_state, fmt->pad); ++ fmt->format = *v4l2_subdev_state_get_format(sd_state, fmt->pad); + else + ov02e10_update_pad_format(ov02e10->cur_mode, &fmt->format); + +@@ -956,7 +955,7 @@ static int ov02e10_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) + + mutex_lock(&ov02e10->mutex); + ov02e10_update_pad_format(&supported_modes[0], +- v4l2_subdev_get_try_format(sd, fh->state, 0)); ++ v4l2_subdev_state_get_format(fh->state, 0)); + mutex_unlock(&ov02e10->mutex); + + return 0; +diff --git a/drivers/media/i2c/ov08a10.c b/drivers/media/i2c/ov08a10.c +index c6e67ee..d09e68e 100644 +--- a/drivers/media/i2c/ov08a10.c ++++ b/drivers/media/i2c/ov08a10.c +@@ -859,8 +859,7 @@ static int ov08a10_set_format(struct v4l2_subdev *sd, + mutex_lock(&ov08a10->mutex); + ov08a10_update_pad_format(mode, &fmt->format); + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) { +- *v4l2_subdev_get_try_format(sd, sd_state, +- fmt->pad) = fmt->format; ++ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = fmt->format; + } else { + ov08a10->cur_mode = mode; + __v4l2_ctrl_s_ctrl(ov08a10->link_freq, mode->link_freq_index); +@@ -893,9 +892,7 @@ static int ov08a10_get_format(struct v4l2_subdev *sd, + + mutex_lock(&ov08a10->mutex); + if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) +- fmt->format = *v4l2_subdev_get_try_format(&ov08a10->sd, +- sd_state, +- fmt->pad); ++ fmt->format = *v4l2_subdev_state_get_format(sd_state, fmt->pad); + else + ov08a10_update_pad_format(ov08a10->cur_mode, &fmt->format); + +@@ -940,7 +937,7 @@ static int ov08a10_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) + + mutex_lock(&ov08a10->mutex); + ov08a10_update_pad_format(&supported_modes[0], +- v4l2_subdev_get_try_format(sd, fh->state, 0)); ++ v4l2_subdev_state_get_format(fh->state, 0)); + mutex_unlock(&ov08a10->mutex); + + return 0; +diff --git a/drivers/media/i2c/ov13858_intel.c b/drivers/media/i2c/ov13858_intel.c +index 596368b..a36b8d1 100644 +--- a/drivers/media/i2c/ov13858_intel.c ++++ b/drivers/media/i2c/ov13858_intel.c +@@ -1380,13 +1380,12 @@ static int ov13858_write_reg_list(struct ov13858 *ov13858, + static int ov13858_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) + { + struct ov13858 *ov13858 = to_ov13858(sd); +- struct v4l2_mbus_framefmt *try_fmt = v4l2_subdev_get_try_format(sd, ++ struct v4l2_mbus_framefmt *try_fmt; + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) +- fh->pad, ++ try_fmt = v4l2_subdev_get_try_format(sd, fh->pad, 0); + #else +- fh->state, ++ try_fmt = v4l2_subdev_state_get_format(fh->state, 0); + #endif +- 0); + + mutex_lock(&ov13858->mutex); + +@@ -1582,7 +1581,7 @@ static int ov13858_do_get_pad_format(struct ov13858 *ov13858, + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) + framefmt = v4l2_subdev_get_try_format(sd, cfg, fmt->pad); + #else +- framefmt = v4l2_subdev_get_try_format(sd, sd_state, fmt->pad); ++ framefmt = v4l2_subdev_state_get_format(sd_state, fmt->pad); + #endif + fmt->format = *framefmt; + } else { +@@ -1647,7 +1646,7 @@ ov13858_set_pad_format(struct v4l2_subdev *sd, + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) + framefmt = v4l2_subdev_get_try_format(sd, cfg, fmt->pad); + #else +- framefmt = v4l2_subdev_get_try_format(sd, sd_state, fmt->pad); ++ framefmt = v4l2_subdev_state_get_format(sd_state, fmt->pad); + #endif + *framefmt = fmt->format; + } else { +diff --git a/drivers/media/i2c/ov2740.c b/drivers/media/i2c/ov2740.c +index f117173..2a217c2 100644 +--- a/drivers/media/i2c/ov2740.c ++++ b/drivers/media/i2c/ov2740.c +@@ -1116,7 +1116,7 @@ static int ov2740_set_format(struct v4l2_subdev *sd, + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) + *v4l2_subdev_get_try_format(sd, cfg, fmt->pad) = fmt->format; + #else +- *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format; ++ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = fmt->format; + #endif + } else { + ov2740->cur_mode = mode; +@@ -1158,8 +1158,7 @@ static int ov2740_get_format(struct v4l2_subdev *sd, + cfg, + fmt->pad); + #else +- fmt->format = *v4l2_subdev_get_try_format(&ov2740->sd, +- sd_state, ++ fmt->format = *v4l2_subdev_state_get_format(sd_state, + fmt->pad); + #endif + else +@@ -1232,7 +1231,7 @@ static int ov2740_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) + v4l2_subdev_get_try_format(sd, fh->pad, 0)); + #else + ov2740_update_pad_format(ov2740->cur_mode, +- v4l2_subdev_get_try_format(sd, fh->state, 0)); ++ v4l2_subdev_state_get_format(fh->state, 0)); + #endif + mutex_unlock(&ov2740->mutex); + +diff --git a/drivers/media/i2c/ov8856.c b/drivers/media/i2c/ov8856.c +index b1e938e..89b45ce 100644 +--- a/drivers/media/i2c/ov8856.c ++++ b/drivers/media/i2c/ov8856.c +@@ -1044,7 +1044,7 @@ static int ov8856_set_format(struct v4l2_subdev *sd, + #if LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) + *v4l2_subdev_get_try_format(sd, cfg, fmt->pad) = fmt->format; + #else +- *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format; ++ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = fmt->format; + #endif + } else { + ov8856->cur_mode = mode; +@@ -1086,8 +1086,7 @@ static int ov8856_get_format(struct v4l2_subdev *sd, + fmt->format = *v4l2_subdev_get_try_format(&ov8856->sd, cfg, + fmt->pad); + #else +- fmt->format = *v4l2_subdev_get_try_format(&ov8856->sd, +- sd_state, fmt->pad); ++ fmt->format = *v4l2_subdev_state_get_format(sd_state, fmt->pad); + #endif + else + ov8856_update_pad_format(ov8856->cur_mode, &fmt->format); +@@ -1146,7 +1145,7 @@ static int ov8856_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) + v4l2_subdev_get_try_format(sd, fh->pad, 0)); + #else + ov8856_update_pad_format(&supported_modes[0], +- v4l2_subdev_get_try_format(sd, fh->state, 0)); ++ v4l2_subdev_state_get_format(fh->state, 0)); + #endif + mutex_unlock(&ov8856->mutex); + +diff --git a/drivers/media/pci/intel/ipu-isys-subdev.c b/drivers/media/pci/intel/ipu-isys-subdev.c +index b9f48d4..e097755 100644 +--- a/drivers/media/pci/intel/ipu-isys-subdev.c ++++ b/drivers/media/pci/intel/ipu-isys-subdev.c +@@ -163,7 +163,7 @@ struct v4l2_mbus_framefmt *__ipu_isys_get_ffmt(struct v4l2_subdev *sd, + #elif LINUX_VERSION_CODE < KERNEL_VERSION(5, 14, 0) + return v4l2_subdev_get_try_format(sd, cfg, pad); + #else +- return v4l2_subdev_get_try_format(sd, state, pad); ++ return v4l2_subdev_state_get_format(state, pad); + #endif + } + +@@ -201,9 +201,9 @@ struct v4l2_rect *__ipu_isys_get_selection(struct v4l2_subdev *sd, + return v4l2_subdev_get_try_compose(sd, cfg, pad); + #else + case V4L2_SEL_TGT_CROP: +- return v4l2_subdev_get_try_crop(sd, state, pad); ++ return v4l2_subdev_state_get_crop(state, pad); + case V4L2_SEL_TGT_COMPOSE: +- return v4l2_subdev_get_try_compose(sd, state, pad); ++ return v4l2_subdev_state_get_compose(state, pad); + #endif + } + } +@@ -757,11 +757,11 @@ int ipu_isys_subdev_open(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) + v4l2_subdev_get_try_compose(sd, fh->pad, i); + #else + struct v4l2_mbus_framefmt *try_fmt = +- v4l2_subdev_get_try_format(sd, fh->state, i); ++ v4l2_subdev_state_get_format(fh->state, i); + struct v4l2_rect *try_crop = +- v4l2_subdev_get_try_crop(sd, fh->state, i); ++ v4l2_subdev_state_get_crop(fh->state, i); + struct v4l2_rect *try_compose = +- v4l2_subdev_get_try_compose(sd, fh->state, i); ++ v4l2_subdev_state_get_compose(fh->state, i); + #endif + + *try_fmt = asd->ffmt[i]; diff -Nru ipu6-drivers-0~git202311240921.07f0612e/debian/patches/0014-backport-media-v4l2-subdev-Rename-.init_cfg-operatio.patch ipu6-drivers-0~git202311240921.07f0612e/debian/patches/0014-backport-media-v4l2-subdev-Rename-.init_cfg-operatio.patch --- ipu6-drivers-0~git202311240921.07f0612e/debian/patches/0014-backport-media-v4l2-subdev-Rename-.init_cfg-operatio.patch 1970-01-01 08:00:00.000000000 +0800 +++ ipu6-drivers-0~git202311240921.07f0612e/debian/patches/0014-backport-media-v4l2-subdev-Rename-.init_cfg-operatio.patch 2024-02-21 22:02:47.000000000 +0800 @@ -0,0 +1,65 @@ +From: You-Sheng Yang +Date: Thu, 22 Feb 2024 14:31:58 +0800 +Subject: backport: media: v4l2-subdev: Rename .init_cfg() operation to + .init_state() + +BugLink: https://bugs.launchpad.net/bug/2054516 + +With Linux v6.8-rcX commit 5755be5f15d9 ("media: v4l2-subdev: Rename +.init_cfg() operation to .init_state()"), v4l2_subdev_pad_ops::init_cfg +is moved into v4l2_subdev_internal_ops::init_state. + +Signed-off-by: You-Sheng Yang +--- + drivers/media/i2c/gc5035.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/drivers/media/i2c/gc5035.c b/drivers/media/i2c/gc5035.c +index c9f8f2b..72f6a0f 100644 +--- a/drivers/media/i2c/gc5035.c ++++ b/drivers/media/i2c/gc5035.c +@@ -1686,7 +1686,11 @@ static int gc5035_runtime_suspend(struct device *dev) + return 0; + } + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0) + static int gc5035_entity_init_cfg(struct v4l2_subdev *subdev, ++#else ++static int gc5035_entity_init_state(struct v4l2_subdev *subdev, ++#endif + struct v4l2_subdev_state *sd_state) + { + struct v4l2_subdev_format fmt = { +@@ -1714,7 +1718,9 @@ static const struct v4l2_subdev_video_ops gc5035_video_ops = { + }; + + static const struct v4l2_subdev_pad_ops gc5035_pad_ops = { ++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0) + .init_cfg = gc5035_entity_init_cfg, ++#endif + .enum_mbus_code = gc5035_enum_mbus_code, + .enum_frame_size = gc5035_enum_frame_sizes, + .get_fmt = gc5035_get_fmt, +@@ -1726,6 +1732,12 @@ static const struct v4l2_subdev_ops gc5035_subdev_ops = { + .pad = &gc5035_pad_ops, + }; + ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 8, 0) ++static const struct v4l2_subdev_internal_ops gc5035_internal_ops = { ++ .init_state = gc5035_entity_init_state, ++}; ++#endif ++ + static const struct media_entity_operations gc5035_subdev_entity_ops = { + .link_validate = v4l2_subdev_link_validate, + }; +@@ -2091,6 +2103,9 @@ static int gc5035_probe(struct i2c_client *client) + mutex_init(&gc5035->mutex); + sd = &gc5035->subdev; + v4l2_i2c_subdev_init(sd, client, &gc5035_subdev_ops); ++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 8, 0) ++ sd->internal_ops = &gc5035_internal_ops; ++#endif + ret = gc5035_initialize_controls(gc5035); + if (ret) { + dev_err_probe(dev, ret, "Failed to initialize controls\n"); diff -Nru ipu6-drivers-0~git202311240921.07f0612e/debian/patches/series ipu6-drivers-0~git202311240921.07f0612e/debian/patches/series --- ipu6-drivers-0~git202311240921.07f0612e/debian/patches/series 2023-12-02 00:45:55.000000000 +0800 +++ ipu6-drivers-0~git202311240921.07f0612e/debian/patches/series 2024-02-21 22:02:47.000000000 +0800 @@ -6,3 +6,6 @@ fix-ftbfs-v5.19.patch 0007-dkms-add-CONFIG_VIDEO_V4L2_I2C-to-BUILD_EXCLUSIVE_CO.patch 0011-UBUNTU-SAUCE-i2c-compile-omitted-sensor-drivers.patch +0012-backport-replace-strlcpy-with-strscpy.patch +0013-backport-Switch-to-stream-aware-state-functions.patch +0014-backport-media-v4l2-subdev-Rename-.init_cfg-operatio.patch