diff options
Diffstat (limited to 'recipes-kernel/kernel-modules/kernel-module-isp-vvcam/0001-video-add-v4l2-fh-compat-for-pre-6.18-kernels.patch')
| -rw-r--r-- | recipes-kernel/kernel-modules/kernel-module-isp-vvcam/0001-video-add-v4l2-fh-compat-for-pre-6.18-kernels.patch | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/recipes-kernel/kernel-modules/kernel-module-isp-vvcam/0001-video-add-v4l2-fh-compat-for-pre-6.18-kernels.patch b/recipes-kernel/kernel-modules/kernel-module-isp-vvcam/0001-video-add-v4l2-fh-compat-for-pre-6.18-kernels.patch new file mode 100644 index 000000000..4a784eee2 --- /dev/null +++ b/recipes-kernel/kernel-modules/kernel-module-isp-vvcam/0001-video-add-v4l2-fh-compat-for-pre-6.18-kernels.patch | |||
| @@ -0,0 +1,88 @@ | |||
| 1 | From 35d5a732cc4b53897a0e6188fae5e9c8fd1b97a1 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Ernest Van Hoecke <ernest.vanhoecke@toradex.com> | ||
| 3 | Date: Mon, 11 May 2026 16:00:30 +0000 | ||
| 4 | Subject: [PATCH] video: add v4l2_fh compat for pre-6.18 kernels | ||
| 5 | |||
| 6 | Linux v6.18 added file_to_v4l2_fh() and changed v4l2_fh_add() and | ||
| 7 | v4l2_fh_del() to take the file pointer so the helpers can manage | ||
| 8 | file->private_data internally. | ||
| 9 | |||
| 10 | The relevant upstream commits are: | ||
| 11 | 618882c92681 ("media: Wrap file->private_data access with a helper function") | ||
| 12 | 47f4b1acb4d5 ("media: Set file->private_data in v4l2_fh_add()") | ||
| 13 | 277966749f46 ("media: Reset file->private_data to NULL in v4l2_fh_del()") | ||
| 14 | |||
| 15 | Add a small compatibility layer for older kernels that keeps | ||
| 16 | file->private_data management in this driver. | ||
| 17 | |||
| 18 | Upstream-Status: Inappropriate | ||
| 19 | Signed-off-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com> | ||
| 20 | --- | ||
| 21 | video/video.c | 30 +++++++++++++++++++++++++++--- | ||
| 22 | 1 file changed, 27 insertions(+), 3 deletions(-) | ||
| 23 | |||
| 24 | diff --git a/video/video.c b/video/video.c | ||
| 25 | index bccf466b05f5..ce8c7d725150 100644 | ||
| 26 | --- a/video/video.c | ||
| 27 | +++ b/video/video.c | ||
| 28 | @@ -69,6 +69,30 @@ | ||
| 29 | #include "vvdefs.h" | ||
| 30 | #include "vvsensor.h" | ||
| 31 | |||
| 32 | +#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 18, 0) | ||
| 33 | +static inline struct v4l2_fh *viv_file_to_v4l2_fh(struct file *file) | ||
| 34 | +{ | ||
| 35 | + return file->private_data; | ||
| 36 | +} | ||
| 37 | + | ||
| 38 | +static inline void viv_v4l2_fh_add(struct v4l2_fh *fh, struct file *file) | ||
| 39 | +{ | ||
| 40 | + file->private_data = fh; | ||
| 41 | + v4l2_fh_add(fh); | ||
| 42 | +} | ||
| 43 | + | ||
| 44 | +static inline void viv_v4l2_fh_del(struct v4l2_fh *fh, struct file *file) | ||
| 45 | +{ | ||
| 46 | + v4l2_fh_del(fh); | ||
| 47 | + file->private_data = NULL; | ||
| 48 | +} | ||
| 49 | + | ||
| 50 | +#define file_to_v4l2_fh(file) viv_file_to_v4l2_fh(file) | ||
| 51 | +#else | ||
| 52 | +#define viv_v4l2_fh_add(fh, file) v4l2_fh_add(fh, file) | ||
| 53 | +#define viv_v4l2_fh_del(fh, file) v4l2_fh_del(fh, file) | ||
| 54 | +#endif | ||
| 55 | + | ||
| 56 | #define DEF_PLANE_NO (0) | ||
| 57 | |||
| 58 | static struct viv_video_device *vvdev[VIDEO_NODE_NUM]; | ||
| 59 | @@ -573,7 +597,7 @@ static int video_open(struct file *file) | ||
| 60 | handle = kzalloc(sizeof(*handle), GFP_KERNEL); | ||
| 61 | |||
| 62 | v4l2_fh_init(&handle->vfh, dev->video); | ||
| 63 | - v4l2_fh_add(&handle->vfh, file); | ||
| 64 | + viv_v4l2_fh_add(&handle->vfh, file); | ||
| 65 | |||
| 66 | handle->vdev = dev; | ||
| 67 | handle->queue.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; | ||
| 68 | @@ -589,7 +613,7 @@ static int video_open(struct file *file) | ||
| 69 | rc = vb2_queue_init(&handle->queue); | ||
| 70 | if (rc) { | ||
| 71 | pr_err("can't init vb queue\n"); | ||
| 72 | - v4l2_fh_del(&handle->vfh, file); | ||
| 73 | + viv_v4l2_fh_del(&handle->vfh, file); | ||
| 74 | v4l2_fh_exit(&handle->vfh); | ||
| 75 | kfree(handle); | ||
| 76 | return rc; | ||
| 77 | @@ -654,7 +678,7 @@ static int video_close(struct file *file) | ||
| 78 | vb2_buffer_done(vb, VB2_BUF_STATE_ERROR); | ||
| 79 | } | ||
| 80 | |||
| 81 | - v4l2_fh_del(&handle->vfh, file); | ||
| 82 | + viv_v4l2_fh_del(&handle->vfh, file); | ||
| 83 | v4l2_fh_exit(&handle->vfh); | ||
| 84 | |||
| 85 | { | ||
| 86 | -- | ||
| 87 | 2.43.0 | ||
| 88 | |||
