This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: v4l2-dev: handle V4L2_CAP_EDID
Author:  Erling Ljunggren <hljun...@cisco.com>
Date:    Wed Sep 28 13:21:47 2022 +0200

When the V4L2_CAP_EDID capability flag is set,
ioctls for enum inputs/outputs and get/set edid are automatically set.

Signed-off-by: Erling Ljunggren <hljun...@cisco.com>
Signed-off-by: Hans Verkuil <hverkuil-ci...@xs4all.nl>
Reviewed-by: Sebastian Fricke <sebastian.fri...@collabora.com>
Reviewed-by: Ricardo Ribalda <riba...@chromium.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+hua...@kernel.org>

 drivers/media/v4l2-core/v4l2-dev.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

---

diff --git a/drivers/media/v4l2-core/v4l2-dev.c 
b/drivers/media/v4l2-core/v4l2-dev.c
index be2ba7ca5de2..570ba00e00b3 100644
--- a/drivers/media/v4l2-core/v4l2-dev.c
+++ b/drivers/media/v4l2-core/v4l2-dev.c
@@ -557,6 +557,7 @@ static void determine_valid_ioctls(struct video_device 
*vdev)
        bool is_tx = vdev->vfl_dir != VFL_DIR_RX;
        bool is_io_mc = vdev->device_caps & V4L2_CAP_IO_MC;
        bool has_streaming = vdev->device_caps & V4L2_CAP_STREAMING;
+       bool is_edid =  vdev->device_caps & V4L2_CAP_EDID;
 
        bitmap_zero(valid_ioctls, BASE_VIDIOC_PRIVATE);
 
@@ -784,6 +785,20 @@ static void determine_valid_ioctls(struct video_device 
*vdev)
                SET_VALID_IOCTL(ops, VIDIOC_S_TUNER, vidioc_s_tuner);
                SET_VALID_IOCTL(ops, VIDIOC_S_HW_FREQ_SEEK, 
vidioc_s_hw_freq_seek);
        }
+       if (is_edid) {
+               SET_VALID_IOCTL(ops, VIDIOC_G_EDID, vidioc_g_edid);
+               if (is_tx) {
+                       SET_VALID_IOCTL(ops, VIDIOC_G_OUTPUT, vidioc_g_output);
+                       SET_VALID_IOCTL(ops, VIDIOC_S_OUTPUT, vidioc_s_output);
+                       SET_VALID_IOCTL(ops, VIDIOC_ENUMOUTPUT, 
vidioc_enum_output);
+               }
+               if (is_rx) {
+                       SET_VALID_IOCTL(ops, VIDIOC_ENUMINPUT, 
vidioc_enum_input);
+                       SET_VALID_IOCTL(ops, VIDIOC_G_INPUT, vidioc_g_input);
+                       SET_VALID_IOCTL(ops, VIDIOC_S_INPUT, vidioc_s_input);
+                       SET_VALID_IOCTL(ops, VIDIOC_S_EDID, vidioc_s_edid);
+               }
+       }
 
        bitmap_andnot(vdev->valid_ioctls, valid_ioctls, vdev->valid_ioctls,
                        BASE_VIDIOC_PRIVATE);

Reply via email to