]> git.baikalelectronics.ru Git - kernel.git/commitdiff
media: mediatek: vcodec: Fix v4l2 compliance decoder cmd test fail
authorYunfei Dong <yunfei.dong@mediatek.com>
Sat, 23 Apr 2022 07:35:31 +0000 (09:35 +0200)
committerMauro Carvalho Chehab <mchehab@kernel.org>
Fri, 13 May 2022 12:39:18 +0000 (14:39 +0200)
Will return -EINVAL using standard framework api when test stateless
decoder with cmd VIDIOC_(TRY)DECODER_CMD. Disable them to adjust v4l2
compliance test for user driver(GStreamer/Chrome) won't use decoder cmd.

Fixes: 30a1c0ef0478 ("media: mtk-vcodec: vdec: support stateless API")
Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c
drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec_drv.c

index 130ecef2e766462abea9181714b12d3346e89600..c8ee5e2b4f6990d40dc7e07eccbf878aca1514cf 100644 (file)
@@ -47,14 +47,7 @@ static struct mtk_q_data *mtk_vdec_get_q_data(struct mtk_vcodec_ctx *ctx,
 static int vidioc_try_decoder_cmd(struct file *file, void *priv,
                                struct v4l2_decoder_cmd *cmd)
 {
-       struct mtk_vcodec_ctx *ctx = fh_to_ctx(priv);
-
-       /* Use M2M stateless helper if relevant */
-       if (ctx->dev->vdec_pdata->uses_stateless_api)
-               return v4l2_m2m_ioctl_stateless_try_decoder_cmd(file, priv,
-                                                               cmd);
-       else
-               return v4l2_m2m_ioctl_try_decoder_cmd(file, priv, cmd);
+       return v4l2_m2m_ioctl_try_decoder_cmd(file, priv, cmd);
 }
 
 
@@ -69,10 +62,6 @@ static int vidioc_decoder_cmd(struct file *file, void *priv,
        if (ret)
                return ret;
 
-       /* Use M2M stateless helper if relevant */
-       if (ctx->dev->vdec_pdata->uses_stateless_api)
-               return v4l2_m2m_ioctl_stateless_decoder_cmd(file, priv, cmd);
-
        mtk_v4l2_debug(1, "decoder cmd=%u", cmd->cmd);
        dst_vq = v4l2_m2m_get_vq(ctx->m2m_ctx,
                                V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE);
index df7b25e9cbc8818fc2d1a3b25e7cec4df2f5c4d5..7e93e1c55158ec518eaf45f02cef330f4aa69cbf 100644 (file)
@@ -400,6 +400,9 @@ static int mtk_vcodec_probe(struct platform_device *pdev)
        }
 
        if (dev->vdec_pdata->uses_stateless_api) {
+               v4l2_disable_ioctl(vfd_dec, VIDIOC_DECODER_CMD);
+               v4l2_disable_ioctl(vfd_dec, VIDIOC_TRY_DECODER_CMD);
+
                dev->mdev_dec.dev = &pdev->dev;
                strscpy(dev->mdev_dec.model, MTK_VCODEC_DEC_NAME,
                        sizeof(dev->mdev_dec.model));