media: coda: disable encoder ioctls for decoder devices
authorPhilipp Zabel <p.zabel@pengutronix.de>
Mon, 4 Apr 2022 16:35:29 +0000 (17:35 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Sun, 24 Apr 2022 07:44:00 +0000 (08:44 +0100)
Use v4l2_disable_ioctl() to disable the encoder ioctls
VIDIOC_ENUM_FRAMESIZES, VIDIOC_ENUM_FRAMEINTERVALS, VIDIOC_G_PARM, and
VIDIOC_S_PARM, to fix this v4l2-compliance test failure:

fail: v4l2-test-formats.cpp(1363): node->is_m2m && !is_stateful_enc
test VIDIOC_G/S_PARM: FAIL

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/chips-media/coda-common.c

index 57d23fd..c6f8f95 100644 (file)
@@ -1269,9 +1269,6 @@ static int coda_enum_framesizes(struct file *file, void *fh,
        struct coda_q_data *q_data_dst;
        const struct coda_codec *codec;
 
-       if (ctx->inst_type != CODA_INST_ENCODER)
-               return -ENOTTY;
-
        if (fsize->index)
                return -EINVAL;
 
@@ -2885,6 +2882,10 @@ static int coda_register_device(struct coda_dev *dev, int i)
        } else {
                v4l2_disable_ioctl(vfd, VIDIOC_ENCODER_CMD);
                v4l2_disable_ioctl(vfd, VIDIOC_TRY_ENCODER_CMD);
+               v4l2_disable_ioctl(vfd, VIDIOC_ENUM_FRAMESIZES);
+               v4l2_disable_ioctl(vfd, VIDIOC_ENUM_FRAMEINTERVALS);
+               v4l2_disable_ioctl(vfd, VIDIOC_G_PARM);
+               v4l2_disable_ioctl(vfd, VIDIOC_S_PARM);
        }
 
        ret = video_register_device(vfd, VFL_TYPE_VIDEO, 0);