Adding capture formats to support V4L2_PIX_FMT_MS21. This format has
one plane and only be used for secure video playback at current period.

Signed-off-by: Yunfei Dong <yunfei.d...@mediatek.com>
---
 .../platform/mediatek/vcodec/decoder/mtk_vcodec_dec.c    | 4 +++-
 .../mediatek/vcodec/decoder/mtk_vcodec_dec_stateless.c   | 9 ++++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec.c 
b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec.c
index 9107707de6c4..192b01ff3ede 100644
--- a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec.c
+++ b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec.c
@@ -49,7 +49,9 @@ static bool mtk_vdec_get_cap_fmt(struct mtk_vcodec_dec_ctx 
*ctx, int format_inde
                num_frame_count++;
        }
 
-       if (num_frame_count == 1 || (!ctx->is_10bit_bitstream && fmt->fourcc == 
V4L2_PIX_FMT_MM21))
+       if ((!ctx->is_10bit_bitstream && fmt->fourcc == V4L2_PIX_FMT_MM21) ||
+           (ctx->is_secure_playback && fmt->fourcc == V4L2_PIX_FMT_MS21) ||
+           num_frame_count == 1)
                return true;
 
        q_data = &ctx->q_data[MTK_Q_DATA_SRC];
diff --git 
a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateless.c 
b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateless.c
index b903e39fee89..fbea00517565 100644
--- a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateless.c
+++ b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_stateless.c
@@ -229,7 +229,7 @@ static const struct mtk_stateless_control 
mtk_stateless_controls[] = {
 
 #define NUM_CTRLS ARRAY_SIZE(mtk_stateless_controls)
 
-static struct mtk_video_fmt mtk_video_formats[9];
+static struct mtk_video_fmt mtk_video_formats[10];
 
 static struct mtk_video_fmt default_out_format;
 static struct mtk_video_fmt default_cap_format;
@@ -770,6 +770,11 @@ static void mtk_vcodec_add_formats(unsigned int fourcc,
                mtk_video_formats[count_formats].type = MTK_FMT_FRAME;
                mtk_video_formats[count_formats].num_planes = 2;
                break;
+       case V4L2_PIX_FMT_MS21:
+               mtk_video_formats[count_formats].fourcc = fourcc;
+               mtk_video_formats[count_formats].type = MTK_FMT_FRAME;
+               mtk_video_formats[count_formats].num_planes = 1;
+               break;
        default:
                mtk_v4l2_vdec_err(ctx, "Can not add unsupported format type");
                return;
@@ -798,6 +803,8 @@ static void mtk_vcodec_get_supported_formats(struct 
mtk_vcodec_dec_ctx *ctx)
                cap_format_count++;
        }
        if (ctx->dev->dec_capability & MTK_VDEC_FORMAT_MM21) {
+               mtk_vcodec_add_formats(V4L2_PIX_FMT_MS21, ctx);
+               cap_format_count++;
                mtk_vcodec_add_formats(V4L2_PIX_FMT_MM21, ctx);
                cap_format_count++;
        }
-- 
2.18.0

Reply via email to