media: v4l2-dev.c: check for V4L2_CAP_STREAMING to enable streaming ioctls
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 1 Feb 2023 11:48:54 +0000 (12:48 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Sun, 19 Mar 2023 21:10:23 +0000 (22:10 +0100)
Rather than checking which device type it is, just check the STREAMING
cap since that indicates support for streaming ioctls.

Some drivers only support READWRITE (typically MPEG encoders).

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/v4l2-core/v4l2-dev.c

index 397d553..f812794 100644 (file)
@@ -556,6 +556,7 @@ static void determine_valid_ioctls(struct video_device *vdev)
        bool is_rx = vdev->vfl_dir != VFL_DIR_TX;
        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;
 
        bitmap_zero(valid_ioctls, BASE_VIDIOC_PRIVATE);
 
@@ -708,8 +709,8 @@ static void determine_valid_ioctls(struct video_device *vdev)
                SET_VALID_IOCTL(ops, VIDIOC_TRY_FMT, vidioc_try_fmt_sdr_out);
        }
 
-       if (is_vid || is_vbi || is_sdr || is_tch || is_meta) {
-               /* ioctls valid for video, vbi, sdr, touch and metadata */
+       if (has_streaming) {
+               /* ioctls valid for streaming I/O */
                SET_VALID_IOCTL(ops, VIDIOC_REQBUFS, vidioc_reqbufs);
                SET_VALID_IOCTL(ops, VIDIOC_QUERYBUF, vidioc_querybuf);
                SET_VALID_IOCTL(ops, VIDIOC_QBUF, vidioc_qbuf);