Thread (32 messages) 32 messages, 3 authors, 2026-03-19

Re: [PATCH v7 05/10] media: mediatek: vcodec: Add Decoder profile & level Initialization

From: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Date: 2026-01-28 13:34:18
Also in: linux-devicetree, linux-media, linux-mediatek, lkml

Hi,

Le mercredi 28 janvier 2026 à 07:45 +0000, Kyrie Wu (吴晗) a écrit :
On Tue, 2026-01-27 at 13:07 +0100, AngeloGioacchino Del Regno wrote:
quoted
Il 27/01/26 03:42, Kyrie Wu ha scritto:
quoted
This commit initializes codec profile & level for VDEC. It sets
default values for H264, H265, and VP9 codecs across multiple
chipset configurations.
The previous patch "Refactor decoder profile and level handling" will
break the
driver if this patch is not also applied at the same time.

The change looks good, but you should squash 05/10 in 04/10, and
assign the params
that you're adding here along with the refactoring, so that you get
one single
patch that, if applied, doesn't break anything as it doesn't depend
on additional
(future, as this is number 5) patch.

Please squash

Cheers,
Angelo
Dear Angelo,

The 04/10 and 05/10 were designed in one patch in v6,
but Nicolas thought that refactor patch and configuration
were two different changes, should separate them in this
comments: 
https://patchwork.linuxtv.org/project/linux-media/patch/20251202074038.3173-5-kyrie.wu@mediatek.com/

In my mind, refactor profile and level setting and assign
former ICs' parameters could merge into same patch. The
configuration of MT8189 should split to another one, because
it is a new setting.
I had assumed you'd be able to refactor without breaking it. Give me enough time
to read again the patches since I don't remember all the details.

Nicolas
Do you agree with my opinion? I look forward to your further reply.

Thanks.

Regards,
Kyrie.

quoted
quoted
Signed-off-by: Kyrie Wu <redacted>
---
  .../vcodec/decoder/mtk_vcodec_dec_stateful.c  | 12 +++
  .../vcodec/decoder/mtk_vcodec_dec_stateless.c | 84
+++++++++++++++++++
  2 files changed, 96 insertions(+)

diff --git
a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_sta
teful.c
b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_sta
teful.c
index 8ddb61670dc6..a47906b9d717 100644
---
a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_sta
teful.c
+++
b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_sta
teful.c
@@ -619,4 +619,16 @@ const struct mtk_vcodec_dec_pdata
mtk_vdec_8173_pdata = {
  	.is_subdev_supported = false,
  	.hw_arch = MTK_VDEC_PURE_SINGLE_CORE,
  	.chip_name = 8173,
+	.h264_params = {
+		.level = V4L2_MPEG_VIDEO_H264_LEVEL_4_1,
+		.profile = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
+	},
+	.h265_params = {
+		.level = V4L2_MPEG_VIDEO_HEVC_LEVEL_4,
+		.profile =
V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE,
+	},
+	.vp9_params = {
+		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_4_0,
+		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_1,
+	},
  };
diff --git
a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_sta
teless.c
b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_sta
teless.c
index a1f419202a24..b571c4ed3f79 100644
---
a/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_sta
teless.c
+++
b/drivers/media/platform/mediatek/vcodec/decoder/mtk_vcodec_dec_sta
teless.c
@@ -830,6 +830,18 @@ const struct mtk_vcodec_dec_pdata
mtk_vdec_8183_pdata = {
  	.is_subdev_supported = false,
  	.hw_arch = MTK_VDEC_PURE_SINGLE_CORE,
  	.chip_name = 8183,
+	.h264_params = {
+		.level = V4L2_MPEG_VIDEO_H264_LEVEL_4_2,
+		.profile = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
+	},
+	.h265_params = {
+		.level = V4L2_MPEG_VIDEO_HEVC_LEVEL_4,
+		.profile =
V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE,
+	},
+	.vp9_params = {
+		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_4_0,
+		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_1,
+	},
  };
  
  /* This platform data is used for one lat and one core
architecture. */
@@ -869,24 +881,72 @@ const struct mtk_vcodec_dec_pdata
mtk_vdec_8188_pdata = {
  	MTK_STATELESS_DEC_DATA,
  	.hw_arch = MTK_VDEC_LAT_SINGLE_CORE,
  	.chip_name = 8188,
+	.h264_params = {
+		.level = V4L2_MPEG_VIDEO_H264_LEVEL_5_2,
+		.profile = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10,
+	},
+	.h265_params = {
+		.level = V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1,
+		.profile = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10,
+	},
+	.vp9_params = {
+		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_5_1,
+		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_2,
+	},
  };
  
  const struct mtk_vcodec_dec_pdata mtk_vdec_8192_pdata = {
  	MTK_STATELESS_DEC_DATA,
  	.hw_arch = MTK_VDEC_LAT_SINGLE_CORE,
  	.chip_name = 8192,
+	.h264_params = {
+		.level = V4L2_MPEG_VIDEO_H264_LEVEL_5_2,
+		.profile = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
+	},
+	.h265_params = {
+		.level = V4L2_MPEG_VIDEO_HEVC_LEVEL_4,
+		.profile =
V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE,
+	},
+	.vp9_params = {
+		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_5_1,
+		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_1,
+	},
  };
  
  const struct mtk_vcodec_dec_pdata mtk_vdec_8195_pdata = {
  	MTK_STATELESS_DEC_DATA,
  	.hw_arch = MTK_VDEC_LAT_SINGLE_CORE,
  	.chip_name = 8195,
+	.h264_params = {
+		.level = V4L2_MPEG_VIDEO_H264_LEVEL_6_0,
+		.profile = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10,
+	},
+	.h265_params = {
+		.level = V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2,
+		.profile = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10,
+	},
+	.vp9_params = {
+		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_5_2,
+		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_2,
+	},
  };
  
  const struct mtk_vcodec_dec_pdata mtk_vdec_8196_pdata = {
  	MTK_STATELESS_DEC_DATA,
  	.hw_arch = MTK_VDEC_LAT_SINGLE_CORE,
  	.chip_name = 8196,
+	.h264_params = {
+		.level = V4L2_MPEG_VIDEO_H264_LEVEL_6_0,
+		.profile = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10,
+	},
+	.h265_params = {
+		.level = V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2,
+		.profile = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10,
+	},
+	.vp9_params = {
+		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_5_2,
+		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_2,
+	},
  };
  
  const struct mtk_vcodec_dec_pdata mtk_vdec_single_core_pdata = {
@@ -910,6 +970,18 @@ const struct mtk_vcodec_dec_pdata
mtk_vdec_8186_pdata = {
  	MTK_STATELESS_DEC_DATA,
  	.hw_arch = MTK_VDEC_PURE_SINGLE_CORE,
  	.chip_name = 8186,
+	.h264_params = {
+		.level = V4L2_MPEG_VIDEO_H264_LEVEL_4_2,
+		.profile = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
+	},
+	.h265_params = {
+		.level = V4L2_MPEG_VIDEO_HEVC_LEVEL_4,
+		.profile =
V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE,
+	},
+	.vp9_params = {
+		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_4_1,
+		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_1,
+	},
  };
  
  const struct mtk_vcodec_dec_pdata mtk_vdec_8189_pdata = {
@@ -928,4 +1000,16 @@ const struct mtk_vcodec_dec_pdata
mtk_vdec_8189_pdata = {
  	.is_subdev_supported = true,
  	.hw_arch = MTK_VDEC_PURE_SINGLE_CORE,
  	.chip_name = 8189,
+	.h264_params = {
+		.level = V4L2_MPEG_VIDEO_H264_LEVEL_5_2,
+		.profile = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10,
+	},
+	.h265_params = {
+		.level = V4L2_MPEG_VIDEO_HEVC_LEVEL_4,
+		.profile =
V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE,
+	},
+	.vp9_params = {
+		.level = V4L2_MPEG_VIDEO_VP9_LEVEL_5_2,
+		.profile = V4L2_MPEG_VIDEO_VP9_PROFILE_2,
+	},
  };

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help