[mesa-freeworld] Add patch numbers to match fedora
by Leigh Scott
commit b5e9ec2ff4c5b0166f9d995132af39a2b937e286
Author: Leigh Scott <leigh123linux(a)gmail.com>
Date: Mon Jul 1 17:53:55 2024 +0100
Add patch numbers to match fedora
mesa-freeworld.spec | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
---
diff --git a/mesa-freeworld.spec b/mesa-freeworld.spec
index 537a921..0a2195a 100644
--- a/mesa-freeworld.spec
+++ b/mesa-freeworld.spec
@@ -83,8 +83,8 @@ Source1: Mesa-MLAA-License-Clarification-Email.txt
Source2: org.mesa3d.vaapi.freeworld.metainfo.xml
Source3: org.mesa3d.vdpau.freeworld.metainfo.xml
-Patch: 0001-llvmpipe-Init-eglQueryDmaBufModifiersEXT-num_modifie.patch
-Patch: 0001-Revert-ac-radeonsi-remove-has_syncobj-has_fence_to_h.patch
+Patch11: 0001-llvmpipe-Init-eglQueryDmaBufModifiersEXT-num_modifie.patch
+Patch12: 0001-Revert-ac-radeonsi-remove-has_syncobj-has_fence_to_h.patch
BuildRequires: meson >= 1.3.0
BuildRequires: gcc
4 months, 3 weeks
[mesa-freeworld] (11 commits) ...Merge branch 'master' into f40
by Leigh Scott
Summary of changes:
aa6bae3... temporarily BuildRequire llvm17 to match Fedora's build env (*)
7a0a04f... Update to 24.0.3 (*)
940cdc0... Update to 24.0.4 (*)
74f4614... merge master (Update to 24.0.5) (*)
075f60f... sync with master: update to 24.0.6 (*)
dc7f155... Update to 24.0.7 (*)
ddaa461... Update to 24.0.8 (*)
8698a45... Update to 24.0.9 (*)
be35bfb... sync with rawhide (*)
c0d5aab... sync with rawhide (*)
d871c00... Merge branch 'master' into f40 (*)
(*) This commit already existed in another branch; no separate mail sent
4 months, 4 weeks
[mesa-freeworld/f40: 18/18] Merge branch 'master' into f40
by Leigh Scott
commit d871c00eb42d1856d238d0251f632172745f7d80
Merge: c0d5aab e1955ee
Author: Leigh Scott <leigh123linux(a)gmail.com>
Date: Mon Jul 1 16:53:41 2024 +0100
Merge branch 'master' into f40
...adeonsi-remove-has_syncobj-has_fence_to_h.patch | 153 +++++++++++++++++++++
...it-eglQueryDmaBufModifiersEXT-num_modifie.patch | 41 ++++++
mesa-freeworld.spec | 11 +-
3 files changed, 203 insertions(+), 2 deletions(-)
---
diff --cc mesa-freeworld.spec
index 9faa56b,83cd083..537a921
--- a/mesa-freeworld.spec
+++ b/mesa-freeworld.spec
@@@ -341,7 -344,11 +344,11 @@@ rm -fr %{buildroot}%{_libdir}/libVkLaye
%endif
%changelog
- * Thu Jun 20 2024 Thorsten Leemhuis <fedora(a)leemhuis.info> - 24.1.1-2
+ * Mon Jul 01 2024 Leigh Scott <leigh123linux(a)gmail.com> - 24.1.2-2
+ - Fix mutter crash when calling eglQueryDmaBufModifiersEXT
+ - Fix GNOME and KDE crash with some AMD GPUs
+
-* Thu Jun 20 2024 Thorsten Leemhuis <fedora(a)leemhuis.info> - 24.1.1-2
++* Thu Jun 20 2024 Thorsten Leemhuis <fedora(a)leemhuis.info> - 24.1.2-1
- Update to 24.1.2
* Thu Jun 06 2024 Thorsten Leemhuis <fedora(a)leemhuis.info> - 24.1.1-1
4 months, 4 weeks
[mesa-freeworld/f40] (18 commits) ...Merge branch 'master' into f40
by Leigh Scott
Summary of changes:
28e07f7... Update to 24.0.2 (*)
9012c0e... Disable nvk explicitly to avoid BR on rust-packaging (*)
6e7da87... Update to 24.0.3 (*)
b2af03a... Update to 24.0.4 (*)
123f1b8... Update to 24.0.5 (*)
b60a244... Update to 24.0.6 (*)
d627217... Update to 24.1.0-rc2 (*)
2c78522... Update to 24.1.0-rc3 (*)
52ea462... cleanup and sync with mesa.spec from fedora (*)
59917e8... Update to 24.1.0-rc4 (*)
ff4ea14... disable teflon on ix86, too (*)
4c96967... fix date in changelog (*)
3ce010d... avoid "warning: Macro expanded in comment on line 30: %{ix8 (*)
0b29e3d... Update to 24.1.0 (*)
e12239b... Update to 24.1.1 (*)
5d2911a... Update to 24.1.2 (*)
e1955ee... Add the fedora backports (*)
d871c00... Merge branch 'master' into f40
(*) This commit already existed in another branch; no separate mail sent
4 months, 4 weeks
[mesa-freeworld] Add the fedora backports
by Leigh Scott
commit e1955eec72638e5c9cbb78f4f9cca18f86649450
Author: Leigh Scott <leigh123linux(a)gmail.com>
Date: Mon Jul 1 16:46:39 2024 +0100
Add the fedora backports
...adeonsi-remove-has_syncobj-has_fence_to_h.patch | 153 +++++++++++++++++++++
...it-eglQueryDmaBufModifiersEXT-num_modifie.patch | 41 ++++++
mesa-freeworld.spec | 9 +-
3 files changed, 202 insertions(+), 1 deletion(-)
---
diff --git a/0001-Revert-ac-radeonsi-remove-has_syncobj-has_fence_to_h.patch b/0001-Revert-ac-radeonsi-remove-has_syncobj-has_fence_to_h.patch
new file mode 100644
index 0000000..2460001
--- /dev/null
+++ b/0001-Revert-ac-radeonsi-remove-has_syncobj-has_fence_to_h.patch
@@ -0,0 +1,153 @@
+From fddf49504e1bebb7efc52c1a0516300c0f217f18 Mon Sep 17 00:00:00 2001
+From: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer(a)amd.com>
+Date: Wed, 26 Jun 2024 12:11:48 +0200
+Subject: [PATCH] Revert "ac, radeonsi: remove has_syncobj,
+ has_fence_to_handle"
+
+This reverts commit 02fe3c32cdfc3cf48cd691d6321978b8d4c3e61b.
+
+Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11352
+---
+ src/amd/common/ac_gpu_info.c | 12 ++++++++++++
+ src/amd/common/ac_gpu_info.h | 2 ++
+ src/gallium/drivers/r600/r600_pipe_common.c | 1 +
+ src/gallium/drivers/radeonsi/si_fence.c | 10 ++++++++++
+ src/gallium/drivers/radeonsi/si_get.c | 8 ++++++--
+ 5 files changed, 31 insertions(+), 2 deletions(-)
+
+diff --git a/src/amd/common/ac_gpu_info.c b/src/amd/common/ac_gpu_info.c
+index 78febf796b4..3f711bd45ec 100644
+--- a/src/amd/common/ac_gpu_info.c
++++ b/src/amd/common/ac_gpu_info.c
+@@ -355,6 +355,14 @@ static intptr_t readlink(const char *path, char *buf, size_t bufsiz)
+
+ #define CIK_TILE_MODE_COLOR_2D 14
+
++static bool has_syncobj(int fd)
++{
++ uint64_t value;
++ if (drmGetCap(fd, DRM_CAP_SYNCOBJ, &value))
++ return false;
++ return value ? true : false;
++}
++
+ static bool has_timeline_syncobj(int fd)
+ {
+ uint64_t value;
+@@ -1068,7 +1076,9 @@ bool ac_query_gpu_info(int fd, void *dev_p, struct radeon_info *info,
+ info->memory_freq_mhz_effective *= ac_memory_ops_per_clock(info->vram_type);
+
+ info->has_userptr = true;
++ info->has_syncobj = has_syncobj(fd);
+ info->has_timeline_syncobj = has_timeline_syncobj(fd);
++ info->has_fence_to_handle = info->has_syncobj;
+ info->has_local_buffers = true;
+ info->has_bo_metadata = true;
+ info->has_eqaa_surface_allocator = info->gfx_level < GFX11;
+@@ -1974,7 +1984,9 @@ void ac_print_gpu_info(const struct radeon_info *info, FILE *f)
+ fprintf(f, "Kernel & winsys capabilities:\n");
+ fprintf(f, " drm = %i.%i.%i\n", info->drm_major, info->drm_minor, info->drm_patchlevel);
+ fprintf(f, " has_userptr = %i\n", info->has_userptr);
++ fprintf(f, " has_syncobj = %u\n", info->has_syncobj);
+ fprintf(f, " has_timeline_syncobj = %u\n", info->has_timeline_syncobj);
++ fprintf(f, " has_fence_to_handle = %u\n", info->has_fence_to_handle);
+ fprintf(f, " has_local_buffers = %u\n", info->has_local_buffers);
+ fprintf(f, " has_bo_metadata = %u\n", info->has_bo_metadata);
+ fprintf(f, " has_eqaa_surface_allocator = %u\n", info->has_eqaa_surface_allocator);
+diff --git a/src/amd/common/ac_gpu_info.h b/src/amd/common/ac_gpu_info.h
+index 68fbe909a97..40670d87770 100644
+--- a/src/amd/common/ac_gpu_info.h
++++ b/src/amd/common/ac_gpu_info.h
+@@ -218,7 +218,9 @@ struct radeon_info {
+ uint32_t max_submitted_ibs[AMD_NUM_IP_TYPES];
+ bool is_amdgpu;
+ bool has_userptr;
++ bool has_syncobj;
+ bool has_timeline_syncobj;
++ bool has_fence_to_handle;
+ bool has_local_buffers;
+ bool has_bo_metadata;
+ bool has_eqaa_surface_allocator;
+diff --git a/src/gallium/drivers/r600/r600_pipe_common.c b/src/gallium/drivers/r600/r600_pipe_common.c
+index aaa171a07ed..5a10aad5907 100644
+--- a/src/gallium/drivers/r600/r600_pipe_common.c
++++ b/src/gallium/drivers/r600/r600_pipe_common.c
+@@ -1338,6 +1338,7 @@ bool r600_common_screen_init(struct r600_common_screen *rscreen,
+ printf("drm = %i.%i.%i\n", rscreen->info.drm_major,
+ rscreen->info.drm_minor, rscreen->info.drm_patchlevel);
+ printf("has_userptr = %i\n", rscreen->info.has_userptr);
++ printf("has_syncobj = %u\n", rscreen->info.has_syncobj);
+
+ printf("r600_max_quad_pipes = %i\n", rscreen->info.r600_max_quad_pipes);
+ printf("max_gpu_freq_mhz = %i\n", rscreen->info.max_gpu_freq_mhz);
+diff --git a/src/gallium/drivers/radeonsi/si_fence.c b/src/gallium/drivers/radeonsi/si_fence.c
+index a1ae9125e00..1d2406df9fd 100644
+--- a/src/gallium/drivers/radeonsi/si_fence.c
++++ b/src/gallium/drivers/radeonsi/si_fence.c
+@@ -374,10 +374,16 @@ static void si_create_fence_fd(struct pipe_context *ctx, struct pipe_fence_handl
+
+ switch (type) {
+ case PIPE_FD_TYPE_NATIVE_SYNC:
++ if (!sscreen->info.has_fence_to_handle)
++ goto finish;
++
+ sfence->gfx = ws->fence_import_sync_file(ws, fd);
+ break;
+
+ case PIPE_FD_TYPE_SYNCOBJ:
++ if (!sscreen->info.has_syncobj)
++ goto finish;
++
+ sfence->gfx = ws->fence_import_syncobj(ws, fd);
+ break;
+
+@@ -385,6 +391,7 @@ static void si_create_fence_fd(struct pipe_context *ctx, struct pipe_fence_handl
+ unreachable("bad fence fd type when importing");
+ }
+
++finish:
+ if (!sfence->gfx) {
+ FREE(sfence);
+ return;
+@@ -400,6 +407,9 @@ static int si_fence_get_fd(struct pipe_screen *screen, struct pipe_fence_handle
+ struct si_fence *sfence = (struct si_fence *)fence;
+ int gfx_fd = -1;
+
++ if (!sscreen->info.has_fence_to_handle)
++ return -1;
++
+ util_queue_fence_wait(&sfence->ready);
+
+ /* Deferred fences aren't supported. */
+diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c
+index a9ac90dca52..3c8a75e9583 100644
+--- a/src/gallium/drivers/radeonsi/si_get.c
++++ b/src/gallium/drivers/radeonsi/si_get.c
+@@ -168,8 +168,6 @@ static int si_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
+ case PIPE_CAP_ALLOW_GLTHREAD_BUFFER_SUBDATA_OPT: /* TODO: remove if it's slow */
+ case PIPE_CAP_NULL_TEXTURES:
+ case PIPE_CAP_HAS_CONST_BW:
+- case PIPE_CAP_FENCE_SIGNAL:
+- case PIPE_CAP_NATIVE_FENCE_FD:
+ case PIPE_CAP_CL_GL_SHARING:
+ return 1;
+
+@@ -287,9 +285,15 @@ static int si_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
+ PIPE_CONTEXT_PRIORITY_MEDIUM |
+ PIPE_CONTEXT_PRIORITY_HIGH;
+
++ case PIPE_CAP_FENCE_SIGNAL:
++ return sscreen->info.has_syncobj;
++
+ case PIPE_CAP_CONSTBUF0_FLAGS:
+ return SI_RESOURCE_FLAG_32BIT;
+
++ case PIPE_CAP_NATIVE_FENCE_FD:
++ return sscreen->info.has_fence_to_handle;
++
+ case PIPE_CAP_DRAW_PARAMETERS:
+ case PIPE_CAP_MULTI_DRAW_INDIRECT:
+ case PIPE_CAP_MULTI_DRAW_INDIRECT_PARAMS:
+--
+2.45.2
+
diff --git a/0001-llvmpipe-Init-eglQueryDmaBufModifiersEXT-num_modifie.patch b/0001-llvmpipe-Init-eglQueryDmaBufModifiersEXT-num_modifie.patch
new file mode 100644
index 0000000..ba224c2
--- /dev/null
+++ b/0001-llvmpipe-Init-eglQueryDmaBufModifiersEXT-num_modifie.patch
@@ -0,0 +1,41 @@
+From 1f3ea20998329788f6a14166d8ba9b3948b7e864 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= <jexposit(a)redhat.com>
+Date: Thu, 27 Jun 2024 13:07:11 +0200
+Subject: [PATCH] llvmpipe: Init eglQueryDmaBufModifiersEXT num_modifiers
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Initialize the number of modifiers when `max` is 0 as documented [1]:
+
+ If <max_formats> is 0, no formats are returned, but the total number
+ of formats is returned in <num_formats>, and no error is generated.
+
+[1] https://registry.khronos.org/EGL/extensions/EXT/EGL_EXT_image_dma_buf_imp...
+Fixes: d74ea2c117fe ("llvmpipe: Implement dmabuf handling")
+Signed-off-by: José Expósito <jexposit(a)redhat.com>
+---
+ src/gallium/drivers/llvmpipe/lp_texture.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/gallium/drivers/llvmpipe/lp_texture.c b/src/gallium/drivers/llvmpipe/lp_texture.c
+index 0044e689aab..30d5057cf9f 100644
+--- a/src/gallium/drivers/llvmpipe/lp_texture.c
++++ b/src/gallium/drivers/llvmpipe/lp_texture.c
+@@ -1724,10 +1724,10 @@ llvmpipe_resource_get_param(struct pipe_screen *screen,
+ static void
+ llvmpipe_query_dmabuf_modifiers(struct pipe_screen *pscreen, enum pipe_format format, int max, uint64_t *modifiers, unsigned int *external_only, int *count)
+ {
+- if (max) {
+- *count = 1;
++ *count = 1;
++
++ if (max)
+ *modifiers = DRM_FORMAT_MOD_LINEAR;
+- }
+ }
+
+ static bool
+--
+2.45.2
+
diff --git a/mesa-freeworld.spec b/mesa-freeworld.spec
index 9faa56b..83cd083 100644
--- a/mesa-freeworld.spec
+++ b/mesa-freeworld.spec
@@ -71,7 +71,7 @@ Name: %{srcname}-freeworld
Summary: Mesa graphics libraries
%global ver 24.1.2
Version: %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)}
-Release: 1%{?dist}
+Release: 2%{?dist}
License: MIT AND BSD-3-Clause AND SGI-B-2.0
URL: http://www.mesa3d.org
@@ -83,6 +83,9 @@ Source1: Mesa-MLAA-License-Clarification-Email.txt
Source2: org.mesa3d.vaapi.freeworld.metainfo.xml
Source3: org.mesa3d.vdpau.freeworld.metainfo.xml
+Patch: 0001-llvmpipe-Init-eglQueryDmaBufModifiersEXT-num_modifie.patch
+Patch: 0001-Revert-ac-radeonsi-remove-has_syncobj-has_fence_to_h.patch
+
BuildRequires: meson >= 1.3.0
BuildRequires: gcc
BuildRequires: gcc-c++
@@ -341,6 +344,10 @@ rm -fr %{buildroot}%{_libdir}/libVkLayer_MESA_device_select.so
%endif
%changelog
+* Mon Jul 01 2024 Leigh Scott <leigh123linux(a)gmail.com> - 24.1.2-2
+- Fix mutter crash when calling eglQueryDmaBufModifiersEXT
+- Fix GNOME and KDE crash with some AMD GPUs
+
* Thu Jun 20 2024 Thorsten Leemhuis <fedora(a)leemhuis.info> - 24.1.1-2
- Update to 24.1.2
4 months, 4 weeks
[nvidia-open-kmod/f40: 6/6] Merge branch 'master' into f40
by Leigh Scott
commit 015dd00d24c69ca07ff0618f284b72c95d2867d7
Merge: 7bbaad9 a745a2b
Author: Leigh Scott <leigh123linux(a)gmail.com>
Date: Thu Jun 27 22:03:36 2024 +0100
Merge branch 'master' into f40
nvidia-open-kmod.spec | 22 ++++++++++++++++------
sources | 2 +-
2 files changed, 17 insertions(+), 7 deletions(-)
---
4 months, 4 weeks
[intel-ipu6-kmod] Updated ipu6-driver to commit aecec2aaef069fea56aa921cf5d7e449bb7a0b82
by jwrdegoede
commit 52fdc49caa38c9c4d63642ef134f1f863ab9f758
Author: Hans de Goede <hdegoede(a)redhat.com>
Date: Thu Jun 27 18:25:51 2024 +0200
Updated ipu6-driver to commit aecec2aaef069fea56aa921cf5d7e449bb7a0b82
Adjust which modules are build to not conflict with upstreamed ivsc,
ov01a10, ov2740 and hi556 drivers
Fix building against 6.10 kernels
.gitignore | 2 +
0001-Skip-ljca-modules-for-the-kernel-6.7.patch | 53 --
0001-gc5035-Fix-compilation-with-kernels-6.8.patch | 96 +++
...ia-ipu6-Fix-compilation-with-kernels-6.10.patch | 68 ++
...efix-ipu6-modules-with-icamera-instead-of.patch | 84 +++
...just-which-modules-to-build-for-which-ker.patch | 773 +++++++++++++++++++++
1.patch | 107 ---
2.patch | 84 ---
3.patch | 22 -
4.patch | 56 --
5.patch | 117 ----
6.patch | 692 ------------------
intel-ipu6-kmod.rpmlintrc | 4 +
intel-ipu6-kmod.spec | 71 +-
sources | 2 +-
15 files changed, 1060 insertions(+), 1171 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index a5e3def..b3fe129 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,5 @@
/ipu6-drivers-fb4c170.tar.gz
/ivsc-driver-73a044d.tar.gz
/ivsc-driver-a6dccbb.tar.gz
+/ipu6-drivers-404740a.tar.gz
+/ipu6-drivers-aecec2a.tar.gz
diff --git a/0001-gc5035-Fix-compilation-with-kernels-6.8.patch b/0001-gc5035-Fix-compilation-with-kernels-6.8.patch
new file mode 100644
index 0000000..64d7cd1
--- /dev/null
+++ b/0001-gc5035-Fix-compilation-with-kernels-6.8.patch
@@ -0,0 +1,96 @@
+From 1e0c448f48540e08f621b324627feca927eb75fe Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Mon, 10 Jun 2024 13:41:16 +0200
+Subject: [PATCH 1/4] gc5035: Fix compilation with kernels >= 6.8
+
+For some reason the gc5035 driver has been disabled for kernels >= 6.8,
+but it is not upstream yet.
+
+Fix compilation with kernel >= 6.8 and re-enable the driver.
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ Makefile | 2 +-
+ drivers/media/i2c/gc5035.c | 19 +++++++++++++++++++
+ 2 files changed, 20 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 6286beade..4734c4497 100644
+--- a/Makefile
++++ b/Makefile
+@@ -83,10 +83,10 @@ export CONFIG_VIDEO_OV02E10 = m
+ export CONFIG_VIDEO_HM2170 = m
+ export CONFIG_VIDEO_HM2172 = m
+ export CONFIG_VIDEO_HI556 = m
++export CONFIG_VIDEO_GC5035 = m
+
+ ifeq ($(call version_lt,$(KERNEL_VERSION),$(KV_OV2740)),true)
+ export CONFIG_VIDEO_OV2740 = m
+-export CONFIG_VIDEO_GC5035 = m
+ endif
+ obj-y += drivers/media/i2c/
+
+diff --git a/drivers/media/i2c/gc5035.c b/drivers/media/i2c/gc5035.c
+index 16bbd4845..e825dfa7d 100644
+--- a/drivers/media/i2c/gc5035.c
++++ b/drivers/media/i2c/gc5035.c
+@@ -1497,7 +1497,11 @@ static int gc5035_set_fmt(struct v4l2_subdev *sd,
+
+ mutex_lock(&gc5035->mutex);
+ if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0)
+ *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad) = fmt->format;
++#else
++ *v4l2_subdev_state_get_format(sd_state, fmt->pad) = fmt->format;
++#endif
+ } else {
+ gc5035->cur_mode = mode;
+ h_blank = mode->hts_def - mode->width;
+@@ -1522,7 +1526,11 @@ static int gc5035_get_fmt(struct v4l2_subdev *sd,
+
+ mutex_lock(&gc5035->mutex);
+ if (fmt->which == V4L2_SUBDEV_FORMAT_TRY) {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 8, 0)
+ fmt->format = *v4l2_subdev_get_try_format(sd, sd_state, fmt->pad);
++#else
++ fmt->format = *v4l2_subdev_state_get_format(sd_state, fmt->pad);
++#endif
+ } else {
+ fmt->format.width = mode->width;
+ fmt->format.height = mode->height;
+@@ -1714,7 +1722,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,
+@@ -1730,6 +1740,12 @@ static const struct media_entity_operations gc5035_subdev_entity_ops = {
+ .link_validate = v4l2_subdev_link_validate,
+ };
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 8, 0)
++static const struct v4l2_subdev_internal_ops gc5035_internal_ops = {
++ .init_state = gc5035_entity_init_cfg,
++};
++#endif
++
+ static int gc5035_set_exposure(struct gc5035 *gc5035, u32 val)
+ {
+ u32 caltime = 0;
+@@ -2091,6 +2107,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");
+--
+2.45.1
+
diff --git a/0002-media-ipu6-Fix-compilation-with-kernels-6.10.patch b/0002-media-ipu6-Fix-compilation-with-kernels-6.10.patch
new file mode 100644
index 0000000..b5dc032
--- /dev/null
+++ b/0002-media-ipu6-Fix-compilation-with-kernels-6.10.patch
@@ -0,0 +1,68 @@
+From d28c18461df553e523e341ca24ca835767f39db8 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Tue, 11 Jun 2024 11:39:34 +0200
+Subject: [PATCH 2/4] media: ipu6: Fix compilation with kernels >= 6.10
+
+Fix compilation with kernels >= 6.10.
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/pci/intel/ipu-mmu.c | 1 +
+ drivers/media/pci/intel/ipu-psys.c | 16 ++++++++++++++++
+ drivers/media/pci/intel/ipu.c | 1 +
+ 3 files changed, 18 insertions(+)
+
+diff --git a/drivers/media/pci/intel/ipu-mmu.c b/drivers/media/pci/intel/ipu-mmu.c
+index a36a6ded8..b06c9f8c1 100644
+--- a/drivers/media/pci/intel/ipu-mmu.c
++++ b/drivers/media/pci/intel/ipu-mmu.c
+@@ -7,6 +7,7 @@
+ #include <linux/iova.h>
+ #include <linux/module.h>
+ #include <linux/sizes.h>
++#include <linux/vmalloc.h>
+
+ #include "ipu.h"
+ #include "ipu-platform.h"
+diff --git a/drivers/media/pci/intel/ipu-psys.c b/drivers/media/pci/intel/ipu-psys.c
+index b12ecf3fc..b93e47aaf 100644
+--- a/drivers/media/pci/intel/ipu-psys.c
++++ b/drivers/media/pci/intel/ipu-psys.c
+@@ -128,6 +128,22 @@ ipu_psys_lookup_kbuffer_by_kaddr(struct ipu_psys_fh *fh, void *kaddr)
+ return NULL;
+ }
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 10, 0)
++/* Dropped from 6.10, use our own copy for now */
++static int follow_pfn(struct vm_area_struct *vma, unsigned long address, unsigned long *pfn)
++{
++ spinlock_t *ptl;
++ pte_t *ptep;
++
++ if (follow_pte(vma, address, &ptep, &ptl))
++ return -EINVAL;
++
++ *pfn = pte_pfn(ptep_get(ptep));
++ pte_unmap_unlock(ptep, ptl);
++ return 0;
++}
++#endif
++
+ static int ipu_psys_get_userpages(struct ipu_dma_buf_attach *attach)
+ {
+ struct vm_area_struct *vma;
+diff --git a/drivers/media/pci/intel/ipu.c b/drivers/media/pci/intel/ipu.c
+index 33592a662..fc091a11a 100644
+--- a/drivers/media/pci/intel/ipu.c
++++ b/drivers/media/pci/intel/ipu.c
+@@ -15,6 +15,7 @@
+ #include <linux/timer.h>
+ #include <linux/sched.h>
+ #include <linux/version.h>
++#include <linux/vmalloc.h>
+
+ #include "ipu.h"
+ #include "ipu-buttress.h"
+--
+2.45.1
+
diff --git a/0003-Makefile-prefix-ipu6-modules-with-icamera-instead-of.patch b/0003-Makefile-prefix-ipu6-modules-with-icamera-instead-of.patch
new file mode 100644
index 0000000..b678afc
--- /dev/null
+++ b/0003-Makefile-prefix-ipu6-modules-with-icamera-instead-of.patch
@@ -0,0 +1,84 @@
+From 2ea9ccd5fc964251da4c4c47abd7321ce868e478 Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Mon, 10 Jun 2024 19:30:48 +0200
+Subject: [PATCH 3/4] Makefile: prefix ipu6 modules with icamera- instead of
+ intel-
+
+Now that IPU6 isys support has landed upstream, using an auxbus approach
+rather then the custom ipu6-bus, there is a conflict between the mainline
+intel-ipu6* kernel modules and the out of tree ipu6-drivers intel-ipu6*
+kernel modules.
+
+Rename the out of tree ipu6 modules to icamera-ipu6* so that both can be
+installed together and the user can easily switch by blacklisting one of
+the 2 sets of modules.
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ drivers/media/pci/intel/ipu6/Makefile | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/media/pci/intel/ipu6/Makefile b/drivers/media/pci/intel/ipu6/Makefile
+index 23f8cdba4..92cd9fe1b 100644
+--- a/drivers/media/pci/intel/ipu6/Makefile
++++ b/drivers/media/pci/intel/ipu6/Makefile
+@@ -8,7 +8,7 @@ endif
+ ccflags-y += -DIPU_TPG_FRAME_SYNC -DIPU_PSYS_GPC \
+ -DIPU_ISYS_GPC
+
+-intel-ipu6-objs += ../ipu.o \
++icamera-ipu6-objs += ../ipu.o \
+ ../ipu-bus.o \
+ ../ipu-dma.o \
+ ../ipu-mmu.o \
+@@ -18,12 +18,12 @@ intel-ipu6-objs += ../ipu.o \
+ ipu6.o \
+ ../ipu-fw-com.o
+ ifdef CONFIG_IPU_ISYS_BRIDGE
+-intel-ipu6-objs += ../cio2-bridge.o
++icamera-ipu6-objs += ../cio2-bridge.o
+ endif
+
+-obj-$(CONFIG_VIDEO_INTEL_IPU6) += intel-ipu6.o
++obj-$(CONFIG_VIDEO_INTEL_IPU6) += icamera-ipu6.o
+
+-intel-ipu6-isys-objs += ../ipu-isys.o \
++icamera-ipu6-isys-objs += ../ipu-isys.o \
+ ../ipu-isys-csi2.o \
+ ipu6-isys.o \
+ ipu6-isys-phy.o \
+@@ -36,26 +36,26 @@ intel-ipu6-isys-objs += ../ipu-isys.o \
+ ../ipu-isys-queue.o \
+ ../ipu-isys-subdev.o
+
+-obj-$(CONFIG_VIDEO_INTEL_IPU6) += intel-ipu6-isys.o
++obj-$(CONFIG_VIDEO_INTEL_IPU6) += icamera-ipu6-isys.o
+
+-intel-ipu6-psys-objs += ../ipu-psys.o \
++icamera-ipu6-psys-objs += ../ipu-psys.o \
+ ipu6-psys.o \
+ ipu-resources.o \
+ ipu6-psys-gpc.o \
+ ipu6-l-scheduler.o \
+ ipu6-ppg.o
+
+-intel-ipu6-psys-objs += ipu-fw-resources.o \
++icamera-ipu6-psys-objs += ipu-fw-resources.o \
+ ipu6-fw-resources.o \
+ ipu6se-fw-resources.o \
+ ipu6ep-fw-resources.o \
+ ../ipu-fw-psys.o
+
+ ifeq ($(CONFIG_COMPAT),y)
+-intel-ipu6-psys-objs += ../ipu-psys-compat32.o
++icamera-ipu6-psys-objs += ../ipu-psys-compat32.o
+ endif
+
+-obj-$(CONFIG_VIDEO_INTEL_IPU6) += intel-ipu6-psys.o
++obj-$(CONFIG_VIDEO_INTEL_IPU6) += icamera-ipu6-psys.o
+
+ ccflags-y += -I$(srcpath)/$(src)/../../../../../include/
+ ccflags-y += -I$(srcpath)/$(src)/../
+--
+2.45.1
+
diff --git a/0101-Makefile-Adjust-which-modules-to-build-for-which-ker.patch b/0101-Makefile-Adjust-which-modules-to-build-for-which-ker.patch
new file mode 100644
index 0000000..69bceb0
--- /dev/null
+++ b/0101-Makefile-Adjust-which-modules-to-build-for-which-ker.patch
@@ -0,0 +1,773 @@
+From 2c4ad1398dddfb307e8a40a714a6d5f70d6d14cb Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede(a)redhat.com>
+Date: Mon, 10 Jun 2024 13:05:53 +0200
+Subject: [PATCH 4/4] Makefile: Adjust which modules to build for which
+ kernel-versions for Fedora
+
+Fedora's kernels have not enabled various IPU6 related drivers as soon
+as they were mainlined. Instead they were enabled at later times.
+
+Fix the automatic disabling of certain modules to match when they were
+enabled in the Fedora kernels:
+
+Do not build ljca for kernels >= 6.7
+Do not build ivsc for kernels >= 6.10
+Do not build ov2740 for kernels >= 6.10 (1)
+Do not build ov01a10 for kernels >= 6.10
+Do not build hi556 for kernels >= 6.10 (2)
+Do not build cio2-bridge for kernels >= 6.10 (3)
+
+1) Also switch the Kconfig symbols for mainlined sensor drivers from
+CONFIG_VIDEO_FOO to CONFIG_ICAMERA_FOO to avoid these still being
+set when they should not because of the CONFIG_VIDEO_FOO symbols
+inherited from the base kernel.
+
+2) hi556 was enabled in earlier Fedora patches but the mainline version
+missed reset GPIO / clk / regulator support
+
+3) The mainline ipu6-bridge is only used for kernels >= 6.10 because it
+lacked ACPI HIDs for many of the still out of tree sensor drivers, see:
+https://lore.kernel.org/linux-media/20240610173418.16119-1-hdegoede@redhat.com/
+
+Signed-off-by: Hans de Goede <hdegoede(a)redhat.com>
+---
+ Makefile | 20 ++++++++++++--------
+ drivers/media/i2c/Makefile | 7 ++++---
+ drivers/media/i2c/hi556.c | 20 ++++++++++----------
+ drivers/media/i2c/hm2170.c | 20 ++++++++++----------
+ drivers/media/i2c/hm2172.c | 20 ++++++++++----------
+ drivers/media/i2c/ov01a10.c | 18 +++++++++---------
+ drivers/media/i2c/ov01a1s.c | 20 ++++++++++----------
+ drivers/media/i2c/ov02c10.c | 20 ++++++++++----------
+ drivers/media/i2c/ov02e10.c | 20 ++++++++++----------
+ 9 files changed, 85 insertions(+), 80 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 4734c4497..5d716eb61 100644
+--- a/Makefile
++++ b/Makefile
+@@ -20,15 +20,16 @@ version_lt = $(shell \
+ echo "false"; \
+ fi)
+
+-KV_IVSC := 6.6.0
+-KV_IPU_BRIDGE := 6.6.0
+-KV_OV2740 := 6.8.0
++KV_LJCA := 6.7.0
++KV_IVSC := 6.10.0
++KV_IPU_BRIDGE := 6.10.0
++KV_OV2740 := 6.10.0
+
+ KERNEL_SRC ?= /lib/modules/$(KERNELRELEASE)/build
+ MODSRC := $(shell pwd)
+
+-ifeq ($(call version_lt,$(KERNEL_VERSION),$(KV_IVSC)),true)
+-$(warning build ljca ivsc)
++ifeq ($(call version_lt,$(KERNEL_VERSION),$(KV_LJCA)),true)
++$(warning build ljca)
+ obj-m += ljca.o
+ ljca-y := drivers/mfd/ljca.o
+
+@@ -40,7 +41,10 @@ gpio-ljca-y := drivers/gpio/gpio-ljca.o
+
+ obj-m += i2c-ljca.o
+ i2c-ljca-y := drivers/i2c/busses/i2c-ljca.o
++endif
+
++ifeq ($(call version_lt,$(KERNEL_VERSION),$(KV_IVSC)),true)
++$(warning build ivsc)
+ obj-m += mei-vsc.o
+ mei-vsc-y := drivers/misc/mei/spi-vsc.o
+ mei-vsc-y += drivers/misc/mei/hw-vsc.o
+@@ -77,16 +81,16 @@ obj-y += drivers/media/pci/intel/
+
+ export CONFIG_VIDEO_HM11B1 = m
+ export CONFIG_VIDEO_OV01A1S = m
+-export CONFIG_VIDEO_OV01A10 = m
+ export CONFIG_VIDEO_OV02C10 = m
+ export CONFIG_VIDEO_OV02E10 = m
+ export CONFIG_VIDEO_HM2170 = m
+ export CONFIG_VIDEO_HM2172 = m
+-export CONFIG_VIDEO_HI556 = m
+ export CONFIG_VIDEO_GC5035 = m
+
+ ifeq ($(call version_lt,$(KERNEL_VERSION),$(KV_OV2740)),true)
+-export CONFIG_VIDEO_OV2740 = m
++export CONFIG_ICAMERA_OV2740 = m
++export CONFIG_ICAMERA_OV01A10 = m
++export CONFIG_ICAMERA_HI556 = m
+ endif
+ obj-y += drivers/media/i2c/
+
+diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
+index 1f395448b..f49609620 100644
+--- a/drivers/media/i2c/Makefile
++++ b/drivers/media/i2c/Makefile
+@@ -4,11 +4,12 @@
+ obj-$(CONFIG_VIDEO_HM11B1) += hm11b1.o
+ obj-$(CONFIG_VIDEO_GC5035) += gc5035.o
+ obj-$(CONFIG_VIDEO_OV01A1S) += ov01a1s.o
+-obj-$(CONFIG_VIDEO_OV01A10) += ov01a10.o
+ obj-$(CONFIG_VIDEO_OV02C10) += ov02c10.o
+ obj-$(CONFIG_VIDEO_OV02E10) += ov02e10.o
+-obj-$(CONFIG_VIDEO_OV2740) += ov2740.o
+ obj-$(CONFIG_VIDEO_HM2170) += hm2170.o
+ obj-$(CONFIG_VIDEO_HM2170) += hm2172.o
+-obj-$(CONFIG_VIDEO_HI556) += hi556.o
+ obj-$(CONFIG_POWER_CTRL_LOGIC) += power_ctrl_logic.o
++
++obj-$(CONFIG_ICAMERA_OV2740) += ov2740.o
++obj-$(CONFIG_ICAMERA_OV01A10) += ov01a10.o
++obj-$(CONFIG_ICAMERA_HI556) += hi556.o
+diff --git a/drivers/media/i2c/hi556.c b/drivers/media/i2c/hi556.c
+index 4fc020b65..2adb5a1fe 100644
+--- a/drivers/media/i2c/hi556.c
++++ b/drivers/media/i2c/hi556.c
+@@ -12,7 +12,7 @@
+ #include <media/v4l2-ctrls.h>
+ #include <media/v4l2-device.h>
+ #include <media/v4l2-fwnode.h>
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ #include <linux/vsc.h>
+
+@@ -510,7 +510,7 @@ struct hi556 {
+ /* Clock provider */
+ struct clk *img_clk;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ struct vsc_mipi_config conf;
+ struct vsc_camera_status status;
+@@ -527,7 +527,7 @@ struct hi556 {
+
+ /* True if the device has been identified */
+ bool identified;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ bool use_intel_vsc;
+ #endif
+@@ -704,7 +704,7 @@ static int hi556_set_ctrl(struct v4l2_ctrl *ctrl)
+ ret = hi556_test_pattern(hi556, ctrl->val);
+ break;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ case V4L2_CID_PRIVACY:
+ dev_dbg(&client->dev, "set privacy to %d", ctrl->val);
+@@ -732,7 +732,7 @@ static int hi556_init_controls(struct hi556 *hi556)
+ int ret;
+
+ ctrl_hdlr = &hi556->ctrl_handler;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ret = v4l2_ctrl_handler_init(ctrl_hdlr, 9);
+ #else
+@@ -771,7 +771,7 @@ static int hi556_init_controls(struct hi556 *hi556)
+ h_blank);
+ if (hi556->hblank)
+ hi556->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ hi556->privacy_status = v4l2_ctrl_new_std(ctrl_hdlr, &hi556_ctrl_ops,
+ V4L2_CID_PRIVACY, 0, 1, 1,
+@@ -836,7 +836,7 @@ static int hi556_identify_module(struct hi556 *hi556)
+ return 0;
+ }
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ static void hi556_vsc_privacy_callback(void *handle,
+ enum vsc_privacy_status status)
+@@ -936,7 +936,7 @@ static int hi556_power_off(struct device *dev)
+ struct hi556 *hi556 = to_hi556(sd);
+ int ret = 0;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ if (hi556->use_intel_vsc) {
+ ret = vsc_release_camera_sensor(&hi556->status);
+@@ -961,7 +961,7 @@ static int hi556_power_on(struct device *dev)
+ struct hi556 *hi556 = to_hi556(sd);
+ int ret;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ if (hi556->use_intel_vsc) {
+ hi556->conf.lane_num = HI556_DATA_LANES;
+@@ -1217,7 +1217,7 @@ static int hi556_get_pm_resources(struct device *dev)
+ struct hi556 *hi556 = to_hi556(sd);
+ int ret;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ acpi_handle handle = ACPI_HANDLE(dev);
+ struct acpi_handle_list dep_devices;
+diff --git a/drivers/media/i2c/hm2170.c b/drivers/media/i2c/hm2170.c
+index 102eec25a..2987e0cbe 100644
+--- a/drivers/media/i2c/hm2170.c
++++ b/drivers/media/i2c/hm2170.c
+@@ -13,7 +13,7 @@
+ #include <media/v4l2-ctrls.h>
+ #include <media/v4l2-device.h>
+ #include <media/v4l2-fwnode.h>
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ #include <linux/vsc.h>
+ #endif
+@@ -615,7 +615,7 @@ struct hm2170 {
+ struct v4l2_ctrl *vblank;
+ struct v4l2_ctrl *hblank;
+ struct v4l2_ctrl *exposure;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ struct vsc_mipi_config conf;
+ struct vsc_camera_status status;
+@@ -792,7 +792,7 @@ static int hm2170_set_ctrl(struct v4l2_ctrl *ctrl)
+ ret = hm2170_test_pattern(hm2170, ctrl->val);
+ break;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ case V4L2_CID_PRIVACY:
+ dev_dbg(&client->dev, "set privacy to %d", ctrl->val);
+@@ -825,7 +825,7 @@ static int hm2170_init_controls(struct hm2170 *hm2170)
+ int ret = 0;
+
+ ctrl_hdlr = &hm2170->ctrl_handler;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ret = v4l2_ctrl_handler_init(ctrl_hdlr, 9);
+ #else
+@@ -864,7 +864,7 @@ static int hm2170_init_controls(struct hm2170 *hm2170)
+ h_blank);
+ if (hm2170->hblank)
+ hm2170->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ hm2170->privacy_status = v4l2_ctrl_new_std(ctrl_hdlr, &hm2170_ctrl_ops,
+ V4L2_CID_PRIVACY, 0, 1, 1,
+@@ -904,7 +904,7 @@ static void hm2170_update_pad_format(const struct hm2170_mode *mode,
+ fmt->field = V4L2_FIELD_NONE;
+ }
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ static void hm2170_vsc_privacy_callback(void *handle,
+ enum vsc_privacy_status status)
+@@ -984,7 +984,7 @@ static int hm2170_set_stream(struct v4l2_subdev *sd, int enable)
+ return ret;
+ }
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ static int hm2170_power_off(struct device *dev)
+ {
+@@ -1323,7 +1323,7 @@ static int hm2170_probe(struct i2c_client *client)
+ }
+
+ v4l2_i2c_subdev_init(&hm2170->sd, client, &hm2170_subdev_ops);
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ hm2170->conf.lane_num = HM2170_DATA_LANES;
+ /* frequency unit 100k */
+@@ -1389,7 +1389,7 @@ probe_error_v4l2_ctrl_handler_free:
+ mutex_destroy(&hm2170->mutex);
+
+ probe_error_ret:
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ hm2170_power_off(&client->dev);
+ #endif
+@@ -1399,7 +1399,7 @@ probe_error_ret:
+
+ static const struct dev_pm_ops hm2170_pm_ops = {
+ SET_SYSTEM_SLEEP_PM_OPS(hm2170_suspend, hm2170_resume)
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ SET_RUNTIME_PM_OPS(hm2170_power_off, hm2170_power_on, NULL)
+ #endif
+diff --git a/drivers/media/i2c/hm2172.c b/drivers/media/i2c/hm2172.c
+index 3362d3151..8e1d1f883 100644
+--- a/drivers/media/i2c/hm2172.c
++++ b/drivers/media/i2c/hm2172.c
+@@ -15,7 +15,7 @@
+ #include <media/v4l2-fwnode.h>
+ #include <linux/clk.h>
+ #include <linux/gpio/consumer.h>
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ #include <linux/vsc.h>
+
+@@ -927,7 +927,7 @@ struct hm2172 {
+ struct gpio_desc *reset;
+ struct gpio_desc *handshake;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ struct vsc_mipi_config conf;
+ struct vsc_camera_status status;
+@@ -942,7 +942,7 @@ struct hm2172 {
+
+ /* Streaming on/off */
+ bool streaming;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ bool use_intel_vsc;
+ #endif
+@@ -1109,7 +1109,7 @@ static int hm2172_set_ctrl(struct v4l2_ctrl *ctrl)
+ ret = hm2172_test_pattern(hm2172, ctrl->val);
+ break;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ case V4L2_CID_PRIVACY:
+ dev_dbg(&client->dev, "set privacy to %d", ctrl->val);
+@@ -1142,7 +1142,7 @@ static int hm2172_init_controls(struct hm2172 *hm2172)
+ int ret = 0;
+
+ ctrl_hdlr = &hm2172->ctrl_handler;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ret = v4l2_ctrl_handler_init(ctrl_hdlr, 9);
+ #else
+@@ -1183,7 +1183,7 @@ static int hm2172_init_controls(struct hm2172 *hm2172)
+ if (hm2172->hblank)
+ hm2172->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ hm2172->privacy_status = v4l2_ctrl_new_std(ctrl_hdlr, &hm2172_ctrl_ops,
+ V4L2_CID_PRIVACY, 0, 1, 1,
+@@ -1223,7 +1223,7 @@ static void hm2172_update_pad_format(const struct hm2172_mode *mode,
+ fmt->field = V4L2_FIELD_NONE;
+ }
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ static void hm2172_vsc_privacy_callback(void *handle,
+ enum vsc_privacy_status status)
+@@ -1309,7 +1309,7 @@ static int hm2172_power_off(struct device *dev)
+ struct hm2172 *hm2172 = to_hm2172(sd);
+ int ret = 0;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ if (hm2172->use_intel_vsc) {
+ ret = vsc_release_camera_sensor(&hm2172->status);
+@@ -1336,7 +1336,7 @@ static int hm2172_power_on(struct device *dev)
+ struct hm2172 *hm2172 = to_hm2172(sd);
+ int ret;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ if (hm2172->use_intel_vsc) {
+ hm2172->conf.lane_num = HM2172_DATA_LANES;
+@@ -1392,7 +1392,7 @@ static int hm2172_get_pm_resources(struct device *dev)
+ struct hm2172 *hm2172 = to_hm2172(sd);
+ int ret = 0;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ acpi_handle handle = ACPI_HANDLE(dev);
+ struct acpi_handle_list dep_devices;
+diff --git a/drivers/media/i2c/ov01a10.c b/drivers/media/i2c/ov01a10.c
+index 78ae01811..31f1e7a3d 100644
+--- a/drivers/media/i2c/ov01a10.c
++++ b/drivers/media/i2c/ov01a10.c
+@@ -11,7 +11,7 @@
+ #include <media/v4l2-ctrls.h>
+ #include <media/v4l2-device.h>
+ #include <media/v4l2-fwnode.h>
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ #include <linux/vsc.h>
+ #endif
+@@ -296,7 +296,7 @@ struct ov01a10 {
+ /* To serialize asynchronus callbacks */
+ struct mutex mutex;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ struct vsc_mipi_config conf;
+ struct vsc_camera_status status;
+@@ -469,7 +469,7 @@ static int ov01a10_set_ctrl(struct v4l2_ctrl *ctrl)
+ ret = ov01a10_test_pattern(ov01a10, ctrl->val);
+ break;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ case V4L2_CID_PRIVACY:
+ dev_dbg(&client->dev, "set privacy to %d", ctrl->val);
+@@ -500,7 +500,7 @@ static int ov01a10_init_controls(struct ov01a10 *ov01a10)
+ int ret = 0;
+
+ ctrl_hdlr = &ov01a10->ctrl_handler;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ret = v4l2_ctrl_handler_init(ctrl_hdlr, 9);
+ #else
+@@ -539,7 +539,7 @@ static int ov01a10_init_controls(struct ov01a10 *ov01a10)
+ if (ov01a10->hblank)
+ ov01a10->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ov01a10->privacy_status = v4l2_ctrl_new_std(ctrl_hdlr,
+ &ov01a10_ctrl_ops,
+@@ -661,7 +661,7 @@ static int ov01a10_set_stream(struct v4l2_subdev *sd, int enable)
+ return ret;
+ }
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ static void ov01a10_vsc_privacy_callback(void *handle,
+ enum vsc_privacy_status status)
+@@ -1016,7 +1016,7 @@ static int ov01a10_probe(struct i2c_client *client)
+ return -ENOMEM;
+
+ v4l2_i2c_subdev_init(&ov01a10->sd, client, &ov01a10_subdev_ops);
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ov01a10->conf.lane_num = OV01A10_DATA_LANES;
+ /* frequency unit 100k */
+@@ -1082,7 +1082,7 @@ probe_error_v4l2_ctrl_handler_free:
+ mutex_destroy(&ov01a10->mutex);
+
+ probe_error_ret:
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ov01a10_power_off(&client->dev);
+ #endif
+@@ -1092,7 +1092,7 @@ probe_error_ret:
+
+ static const struct dev_pm_ops ov01a10_pm_ops = {
+ SET_SYSTEM_SLEEP_PM_OPS(ov01a10_suspend, ov01a10_resume)
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ SET_RUNTIME_PM_OPS(ov01a10_power_off, ov01a10_power_on, NULL)
+ #endif
+diff --git a/drivers/media/i2c/ov01a1s.c b/drivers/media/i2c/ov01a1s.c
+index f7cf2218c..85f9c684c 100644
+--- a/drivers/media/i2c/ov01a1s.c
++++ b/drivers/media/i2c/ov01a1s.c
+@@ -17,7 +17,7 @@
+ #elif IS_ENABLED(CONFIG_POWER_CTRL_LOGIC)
+ #include "power_ctrl_logic.h"
+ #endif
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ #include <linux/vsc.h>
+ #endif
+@@ -303,7 +303,7 @@ struct ov01a1s {
+ struct v4l2_ctrl *vblank;
+ struct v4l2_ctrl *hblank;
+ struct v4l2_ctrl *exposure;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ struct v4l2_ctrl *privacy_status;
+
+@@ -337,7 +337,7 @@ struct ov01a1s {
+ #if IS_ENABLED(CONFIG_INTEL_SKL_INT3472) || IS_ENABLED(CONFIG_POWER_CTRL_LOGIC)
+ OV01A1S_USE_INT3472 = 1,
+ #endif
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ OV01A1S_USE_INTEL_VSC = 2,
+ #endif
+@@ -508,7 +508,7 @@ static int ov01a1s_set_ctrl(struct v4l2_ctrl *ctrl)
+ ret = ov01a1s_test_pattern(ov01a1s, ctrl->val);
+ break;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ case V4L2_CID_PRIVACY:
+ dev_dbg(&client->dev, "set privacy to %d", ctrl->val);
+@@ -539,7 +539,7 @@ static int ov01a1s_init_controls(struct ov01a1s *ov01a1s)
+ int ret = 0;
+
+ ctrl_hdlr = &ov01a1s->ctrl_handler;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ret = v4l2_ctrl_handler_init(ctrl_hdlr, 9);
+ #else
+@@ -577,7 +577,7 @@ static int ov01a1s_init_controls(struct ov01a1s *ov01a1s)
+ 1, h_blank);
+ if (ov01a1s->hblank)
+ ov01a1s->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ov01a1s->privacy_status = v4l2_ctrl_new_std(ctrl_hdlr,
+ &ov01a1s_ctrl_ops,
+@@ -619,7 +619,7 @@ static void ov01a1s_update_pad_format(const struct ov01a1s_mode *mode,
+ fmt->field = V4L2_FIELD_NONE;
+ }
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ static void ov01a1s_vsc_privacy_callback(void *handle,
+ enum vsc_privacy_status status)
+@@ -729,7 +729,7 @@ static int ov01a1s_power_off(struct device *dev)
+ if (ov01a1s->power_type == OV01A1S_USE_INT3472)
+ ret = power_ctrl_logic_set_power(0);
+ #endif
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ if (ov01a1s->power_type == OV01A1S_USE_INTEL_VSC) {
+ ret = vsc_release_camera_sensor(&ov01a1s->status);
+@@ -764,7 +764,7 @@ static int ov01a1s_power_on(struct device *dev)
+ if (ov01a1s->power_type == OV01A1S_USE_INT3472)
+ ret = power_ctrl_logic_set_power(1);
+ #endif
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ if (ov01a1s->power_type == OV01A1S_USE_INTEL_VSC) {
+ ret = vsc_acquire_camera_sensor(&ov01a1s->conf,
+@@ -1125,7 +1125,7 @@ static int ov01a1s_parse_power(struct ov01a1s *ov01a1s)
+ {
+ int ret = 0;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ov01a1s->conf.lane_num = OV01A1S_DATA_LANES;
+ /* frequency unit 100k */
+diff --git a/drivers/media/i2c/ov02c10.c b/drivers/media/i2c/ov02c10.c
+index 40865f8e3..4f58d5ac9 100644
+--- a/drivers/media/i2c/ov02c10.c
++++ b/drivers/media/i2c/ov02c10.c
+@@ -13,7 +13,7 @@
+ #include <media/v4l2-ctrls.h>
+ #include <media/v4l2-device.h>
+ #include <media/v4l2-fwnode.h>
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ #include <linux/vsc.h>
+
+@@ -697,7 +697,7 @@ struct ov02c10 {
+ struct gpio_desc *reset;
+ struct gpio_desc *handshake;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ struct vsc_mipi_config conf;
+ struct vsc_camera_status status;
+@@ -717,7 +717,7 @@ IS_ENABLED(CONFIG_INTEL_VSC)
+
+ /* Module name index */
+ u8 module_name_index;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+
+ bool use_intel_vsc;
+@@ -857,7 +857,7 @@ static int ov02c10_set_ctrl(struct v4l2_ctrl *ctrl)
+ ret = ov02c10_test_pattern(ov02c10, ctrl->val);
+ break;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ case V4L2_CID_PRIVACY:
+ dev_dbg(&client->dev, "set privacy to %d", ctrl->val);
+@@ -888,7 +888,7 @@ static int ov02c10_init_controls(struct ov02c10 *ov02c10)
+ int ret = 0;
+
+ ctrl_hdlr = &ov02c10->ctrl_handler;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ret = v4l2_ctrl_handler_init(ctrl_hdlr, 9);
+ #else
+@@ -926,7 +926,7 @@ IS_ENABLED(CONFIG_INTEL_VSC)
+ 1, h_blank);
+ if (ov02c10->hblank)
+ ov02c10->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ov02c10->privacy_status = v4l2_ctrl_new_std(ctrl_hdlr,
+ &ov02c10_ctrl_ops,
+@@ -1102,7 +1102,7 @@ static int ov02c10_get_pm_resources(struct device *dev)
+ struct ov02c10 *ov02c10 = to_ov02c10(sd);
+ int ret;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ acpi_handle handle = ACPI_HANDLE(dev);
+ struct acpi_handle_list deps;
+@@ -1162,7 +1162,7 @@ IS_ENABLED(CONFIG_INTEL_VSC)
+ return 0;
+ }
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ static void ov02c10_vsc_privacy_callback(void *handle,
+ enum vsc_privacy_status status)
+@@ -1179,7 +1179,7 @@ static int ov02c10_power_off(struct device *dev)
+ struct ov02c10 *ov02c10 = to_ov02c10(sd);
+ int ret = 0;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ if (ov02c10->use_intel_vsc) {
+ ret = vsc_release_camera_sensor(&ov02c10->status);
+@@ -1206,7 +1206,7 @@ static int ov02c10_power_on(struct device *dev)
+ struct ov02c10 *ov02c10 = to_ov02c10(sd);
+ int ret;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ if (ov02c10->use_intel_vsc) {
+ ov02c10->conf.lane_num = ov02c10->mipi_lanes;
+diff --git a/drivers/media/i2c/ov02e10.c b/drivers/media/i2c/ov02e10.c
+index 916def90f..c5c373aa6 100644
+--- a/drivers/media/i2c/ov02e10.c
++++ b/drivers/media/i2c/ov02e10.c
+@@ -13,7 +13,7 @@
+ #include <media/v4l2-ctrls.h>
+ #include <media/v4l2-device.h>
+ #include <media/v4l2-fwnode.h>
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ #include <linux/vsc.h>
+
+@@ -289,7 +289,7 @@ struct ov02e10 {
+ struct gpio_desc *reset;
+ struct gpio_desc *handshake;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ struct vsc_mipi_config conf;
+ struct vsc_camera_status status;
+@@ -304,7 +304,7 @@ struct ov02e10 {
+
+ /* Streaming on/off */
+ bool streaming;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ bool use_intel_vsc;
+ #endif
+@@ -486,7 +486,7 @@ static int ov02e10_set_ctrl(struct v4l2_ctrl *ctrl)
+ ret = ov02e10_test_pattern(ov02e10, ctrl->val);
+ break;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ case V4L2_CID_PRIVACY:
+ dev_dbg(&client->dev, "set privacy to %d", ctrl->val);
+@@ -520,7 +520,7 @@ static int ov02e10_init_controls(struct ov02e10 *ov02e10)
+ int ret;
+
+ ctrl_hdlr = &ov02e10->ctrl_handler;
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ret = v4l2_ctrl_handler_init(ctrl_hdlr, 9);
+ #else
+@@ -561,7 +561,7 @@ static int ov02e10_init_controls(struct ov02e10 *ov02e10)
+ if (ov02e10->hblank)
+ ov02e10->hblank->flags |= V4L2_CTRL_FLAG_READ_ONLY;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ ov02e10->privacy_status = v4l2_ctrl_new_std(ctrl_hdlr, &ov02e10_ctrl_ops,
+ V4L2_CID_PRIVACY, 0, 1, 1,
+@@ -602,7 +602,7 @@ static void ov02e10_update_pad_format(const struct ov02e10_mode *mode,
+ fmt->field = V4L2_FIELD_NONE;
+ }
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ static void ov02e10_vsc_privacy_callback(void *handle,
+ enum vsc_privacy_status status)
+@@ -696,7 +696,7 @@ static int ov02e10_get_pm_resources(struct device *dev)
+ struct ov02e10 *ov02e10 = to_ov02e10(sd);
+ int ret;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ acpi_handle handle = ACPI_HANDLE(dev);
+ struct acpi_handle_list dep_devices;
+@@ -763,7 +763,7 @@ static int ov02e10_power_off(struct device *dev)
+ struct ov02e10 *ov02e10 = to_ov02e10(sd);
+ int ret = 0;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ if (ov02e10->use_intel_vsc) {
+ ret = vsc_release_camera_sensor(&ov02e10->status);
+@@ -790,7 +790,7 @@ static int ov02e10_power_on(struct device *dev)
+ struct ov02e10 *ov02e10 = to_ov02e10(sd);
+ int ret;
+
+-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 6, 0) && \
++#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 10, 0) && \
+ IS_ENABLED(CONFIG_INTEL_VSC)
+ if (ov02e10->use_intel_vsc) {
+ ov02e10->conf.lane_num = OV02E10_DATA_LANES;
+--
+2.45.1
+
diff --git a/intel-ipu6-kmod.rpmlintrc b/intel-ipu6-kmod.rpmlintrc
new file mode 100644
index 0000000..0560092
--- /dev/null
+++ b/intel-ipu6-kmod.rpmlintrc
@@ -0,0 +1,4 @@
+# these are all normal for the generated [a]kmod pkgs
+addFilter("W: no-documentation")
+addFilter("E: spelling-error")
+addFilter("E: no-binary")
diff --git a/intel-ipu6-kmod.spec b/intel-ipu6-kmod.spec
index cf960e1..2842736 100644
--- a/intel-ipu6-kmod.spec
+++ b/intel-ipu6-kmod.spec
@@ -3,8 +3,8 @@
%global debug_package %{nil}
%endif
-%global ipu6_commit fb4c17019c9ede9412065d61ecd352cdf1c0e7af
-%global ipu6_commitdate 20240226
+%global ipu6_commit aecec2aaef069fea56aa921cf5d7e449bb7a0b82
+%global ipu6_commitdate 20240624
%global ipu6_shortcommit %(c=%{ipu6_commit}; echo ${c:0:7})
%global ivsc_commit a6dccbbf5a955489d20d996234b6ebb481183ed7
@@ -16,24 +16,23 @@
Name: %{prjname}-kmod
Summary: Kernel module (kmod) for %{prjname}
Version: 0.0
-Release: 13.%{ipu6_commitdate}git%{ipu6_shortcommit}%{?dist}
+Release: 14.%{ipu6_commitdate}git%{ipu6_shortcommit}%{?dist}
License: GPLv2+
+URL: https://github.com/intel/ipu6-drivers
-URL: https://github.com/intel
Source0: %{url}/ivsc-driver/archive/%{ivsc_commit}/ivsc-driver-%{ivsc_shortcommit}.tar.gz
Source1: %{url}/ipu6-drivers/archive/%{ipu6_commit}/ipu6-drivers-%{ipu6_shortcommit}.tar.gz
-
# Patches
-# https://github.com/intel/ipu6-drivers/pull/213
-# https://github.com/intel/ipu6-drivers/pull/214
-Patch10: 1.patch
-Patch11: 2.patch
-Patch12: 3.patch
-Patch13: 4.patch
-Patch14: 5.patch
-Patch15: 6.patch
-Patch16: 0001-Skip-ljca-modules-for-the-kernel-6.7.patch
+# https://github.com/intel/ipu6-drivers/pull/239
+Patch1: 0001-gc5035-Fix-compilation-with-kernels-6.8.patch
+# https://github.com/intel/ipu6-drivers/pull/242
+Patch2: 0002-media-ipu6-Fix-compilation-with-kernels-6.10.patch
+# https://github.com/intel/ipu6-drivers/pull/243
+Patch3: 0003-Makefile-prefix-ipu6-modules-with-icamera-instead-of.patch
+
+# Downstream / Fedora specific patches
+Patch101: 0101-Makefile-Adjust-which-modules-to-build-for-which-ker.patch
BuildRequires: gcc
BuildRequires: elfutils-libelf-devel
@@ -44,11 +43,8 @@ BuildRequires: kmodtool
%{expand:%(kmodtool --target %{_target_cpu} --repo rpmfusion --kmodname %{prjname} %{?buildforkernels:--%{buildforkernels}} %{?kernels:--for-kernels "%{?kernels}"} 2>/dev/null) }
%description
-This enables intel IPU6 image processor. The package includes Intel IPU6 and iVSC drivers
-The source can be found from the following URL.
-https://github.com/intel/ipu6-drivers
-
-This package contains the kmod module for %{prjname}.
+This enables intel IPU6 image processor. The package includes Intel IPU6
+and iVSC drivers.
%prep
@@ -60,13 +56,10 @@ kmodtool --target %{_target_cpu} --repo rpmfusion --kmodname %{prjname} %{?buil
%setup -q -c -a 1
(cd ipu6-drivers-%{ipu6_commit}
-%patch 10 -p1
-%patch 11 -p1
-%patch 12 -p1
-%patch 13 -p1
-%patch 14 -p1
-%patch 15 -p1
-%patch 16 -p1
+%patch 1 -p1
+%patch 2 -p1
+%patch 3 -p1
+%patch 101 -p1
)
@@ -86,24 +79,24 @@ done
%install
for kernel_version in %{?kernel_versions}; do
- mkdir -p %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/
- install -D -m 755 _kmod_build_${kernel_version%%___*}/drivers/media/i2c/hi556.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/i2c/hi556.ko
- install -D -m 755 _kmod_build_${kernel_version%%___*}/drivers/media/i2c/hm11b1.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/i2c/hm11b1.ko
- install -D -m 755 _kmod_build_${kernel_version%%___*}/drivers/media/i2c/hm2170.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/i2c/hm2170.ko
- install -D -m 755 _kmod_build_${kernel_version%%___*}/drivers/media/i2c/ov01a10.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/i2c/ov01a10.ko
- install -D -m 755 _kmod_build_${kernel_version%%___*}/drivers/media/i2c/ov01a1s.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/i2c/ov01a1s.ko
- install -D -m 755 _kmod_build_${kernel_version%%___*}/drivers/media/i2c/ov02c10.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/i2c/ov02c10.ko
- install -D -m 755 _kmod_build_${kernel_version%%___*}/drivers/media/i2c/ov2740.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/i2c/ov2740.ko
- install -D -m 755 _kmod_build_${kernel_version%%___*}/drivers/media/pci/intel/ipu6/intel-ipu6-isys.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/pci/intel/ipu6/intel-ipu6-isys.ko
- install -D -m 755 _kmod_build_${kernel_version%%___*}/drivers/media/pci/intel/ipu6/intel-ipu6-psys.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/pci/intel/ipu6/intel-ipu6-psys.ko
- install -D -m 755 _kmod_build_${kernel_version%%___*}/drivers/media/pci/intel/ipu6/intel-ipu6.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/pci/intel/ipu6/intel-ipu6.ko
- install -D -m 755 _kmod_build_${kernel_version%%___*}/*.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}
- chmod a+x %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/*.ko
+ mkdir -p %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/i2c/
+ mkdir -p %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/pci/intel/ipu6/
+ install -m 755 _kmod_build_${kernel_version%%___*}/drivers/media/i2c/*.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/i2c/
+ install -m 755 _kmod_build_${kernel_version%%___*}/drivers/media/pci/intel/ipu6/*.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}/drivers/media/pci/intel/ipu6/
+ if [ -f _kmod_build_${kernel_version%%___*}/intel_vsc.ko* ]; then
+ install -m 755 _kmod_build_${kernel_version%%___*}/*.ko %{buildroot}%{kmodinstdir_prefix}/${kernel_version%%___*}/%{kmodinstdir_postfix}
+ fi
done
%{?akmod_install}
%changelog
+* Thu Jun 27 2024 Hans de Goede <hdegoede(a)redhat.com> - 0.0-14.20240624gitaecec2a
+- Updated ipu6-driver to commit aecec2aaef069fea56aa921cf5d7e449bb7a0b82
+- Adjust which modules are build to not conflict with upstreamed ivsc,
+ ov01a10, ov2740 and hi556 drivers
+- Fix building against 6.10 kernels
+
* Fri Apr 19 2024 Kate Hsuan <hpa(a)redhat.cpm> - 0.0-13.20240226gitfb4c170
- Update ivsc to commit a6dccbbf5a955489d20d996234b6ebb481183ed7
- ivsc: Update mei_dev.h for kernel >= 6.8
diff --git a/sources b/sources
index ccd6367..82186ae 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-SHA512 (ipu6-drivers-fb4c170.tar.gz) = 1722fb07428844303f5b8f6694691f19db90651119db5cd90e665019101c3b6c46e82232a9bf87abaf2c982ce01bf7a672d584b03eab5c9810bf74840e02f055
+SHA512 (ipu6-drivers-aecec2a.tar.gz) = dca9049029cc36583e7cea8bb1f91e51f6487cc63494e4e36961f1a08d0f4ef60c1938452efa17a4d9d1ec0523e76e148b1b5b37e9d0d56da24d3272eb07d09a
SHA512 (ivsc-driver-a6dccbb.tar.gz) = 10e0c4c24d9f7e3ffb99aa36808663fec3b6a020b22c1625da2548c5939ee0ae532a0f7e48ed5701b67233bb430e0dce65ea64870b253d83ba586ff427d35551
4 months, 4 weeks
[nvidia-kmod/f40] (4 commits) ...Merge branch 'master' into f40
by Leigh Scott
Summary of changes:
27c29be... Update to 555.42.02 beta (*)
b18f29a... Update to 555.52.04 beta (*)
1f1630d... Update to 555.58 release (*)
782739f... Merge branch 'master' into f40
(*) This commit already existed in another branch; no separate mail sent
4 months, 4 weeks