media: verisilicon: Hook the (TRY_)DECODER_CMD stateless ioctls
authorPaul Kocialkowski <paul.kocialkowski@bootlin.com>
Thu, 9 Nov 2023 20:16:39 +0000 (21:16 +0100)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Thu, 23 Nov 2023 12:57:20 +0000 (13:57 +0100)
The (TRY_)DECODER_CMD ioctls are used to support flushing when holding
capture buffers is supported. This is the case of this driver but the
ioctls were never hooked to the ioctl ops.

Add them to correctly support flushing.

Fixes: 340ce50f75a6 ("media: hantro: Enable HOLD_CAPTURE_BUF for H.264")
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Reviewed-by: Daniel Almeida <daniel.almeida@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/verisilicon/hantro_drv.c
drivers/media/platform/verisilicon/hantro_v4l2.c

index 7f5b82eb664985019a0a6f92f76b75dd4013c35c..db3df6cc4513be898bff642e5c0d5bd255370064 100644 (file)
@@ -907,6 +907,8 @@ static int hantro_add_func(struct hantro_dev *vpu, unsigned int funcid)
 
        if (funcid == MEDIA_ENT_F_PROC_VIDEO_ENCODER) {
                vpu->encoder = func;
+               v4l2_disable_ioctl(vfd, VIDIOC_TRY_DECODER_CMD);
+               v4l2_disable_ioctl(vfd, VIDIOC_DECODER_CMD);
        } else {
                vpu->decoder = func;
                v4l2_disable_ioctl(vfd, VIDIOC_TRY_ENCODER_CMD);
index 27a1e77cca38a8a0f9cb0e14bb3052e01272cef5..941fa23c211a533e807f7e92ddc81116c07ffe77 100644 (file)
@@ -767,6 +767,9 @@ const struct v4l2_ioctl_ops hantro_ioctl_ops = {
        .vidioc_g_selection = vidioc_g_selection,
        .vidioc_s_selection = vidioc_s_selection,
 
+       .vidioc_decoder_cmd = v4l2_m2m_ioctl_stateless_decoder_cmd,
+       .vidioc_try_decoder_cmd = v4l2_m2m_ioctl_stateless_try_decoder_cmd,
+
        .vidioc_try_encoder_cmd = v4l2_m2m_ioctl_try_encoder_cmd,
        .vidioc_encoder_cmd = vidioc_encoder_cmd,
 };