mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
72 lines
3.0 KiB
Diff
72 lines
3.0 KiB
Diff
From 5f6bfab6da6531238e899fdf29efd6d0185adc3e Mon Sep 17 00:00:00 2001
|
|
From: Piotr Oniszczuk <piotr.oniszczuk@gmail.com>
|
|
Date: Mon, 14 Feb 2022 21:29:53 +0000
|
|
Subject: [PATCH] media: hantro: Add support for Hantro G1 on RK356x
|
|
|
|
RK356x has Hantro G1 video decoder capable to decode MPEG2/H.264/VP8
|
|
video formats.
|
|
|
|
This patch adds support for RK356x family in existing Hantro
|
|
video decoder kernel driver.
|
|
|
|
Tested on [1] with FFmpeg v4l2_request code taken from [2]
|
|
with MPEG2, H.642 and VP8 samples with results [3].
|
|
|
|
[1] https://github.com/warpme/minimyth2
|
|
[2] https://github.com/LibreELEC/LibreELEC.tv/blob/master/packages/multimedia/ffmpeg/patches/v4l2-request/ffmpeg-001-v4l2-request.patch
|
|
[3] https://github.com/warpme/minimyth2/blob/master/video-test-summary.txt
|
|
|
|
Signed-off-by: Piotr Oniszczuk <piotr.oniszczuk@gmail.com>
|
|
Reviewed-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
|
|
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
|
|
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
|
|
---
|
|
drivers/staging/media/hantro/hantro_drv.c | 1 +
|
|
drivers/staging/media/hantro/hantro_hw.h | 1 +
|
|
drivers/staging/media/hantro/rockchip_vpu_hw.c | 14 ++++++++++++++
|
|
3 files changed, 16 insertions(+)
|
|
|
|
--- a/drivers/staging/media/hantro/hantro_drv.c
|
|
+++ b/drivers/staging/media/hantro/hantro_drv.c
|
|
@@ -486,6 +486,7 @@ static const struct of_device_id of_hant
|
|
{ .compatible = "rockchip,rk3399-vpu", .data = &rk3399_vpu_variant, },
|
|
{ .compatible = "rockchip,rk3328-vpu", .data = &rk3328_vpu_variant, },
|
|
{ .compatible = "rockchip,rk3288-vpu", .data = &rk3288_vpu_variant, },
|
|
+ { .compatible = "rockchip,rk3568-vpu", .data = &rk3568_vpu_variant, },
|
|
#endif
|
|
#ifdef CONFIG_VIDEO_HANTRO_IMX8M
|
|
{ .compatible = "nxp,imx8mq-vpu", .data = &imx8mq_vpu_variant, },
|
|
--- a/drivers/staging/media/hantro/hantro_hw.h
|
|
+++ b/drivers/staging/media/hantro/hantro_hw.h
|
|
@@ -153,6 +153,7 @@ enum hantro_enc_fmt {
|
|
extern const struct hantro_variant rk3399_vpu_variant;
|
|
extern const struct hantro_variant rk3328_vpu_variant;
|
|
extern const struct hantro_variant rk3288_vpu_variant;
|
|
+extern const struct hantro_variant rk3568_vpu_variant;
|
|
extern const struct hantro_variant imx8mq_vpu_variant;
|
|
|
|
extern const struct hantro_postproc_regs hantro_g1_postproc_regs;
|
|
--- a/drivers/staging/media/hantro/rockchip_vpu_hw.c
|
|
+++ b/drivers/staging/media/hantro/rockchip_vpu_hw.c
|
|
@@ -551,6 +551,20 @@ const struct hantro_variant rk3399_vpu_v
|
|
.num_clocks = ARRAY_SIZE(rockchip_vpu_clk_names)
|
|
};
|
|
|
|
+const struct hantro_variant rk3568_vpu_variant = {
|
|
+ .dec_offset = 0x400,
|
|
+ .dec_fmts = rk3399_vpu_dec_fmts,
|
|
+ .num_dec_fmts = ARRAY_SIZE(rk3399_vpu_dec_fmts),
|
|
+ .codec = HANTRO_MPEG2_DECODER |
|
|
+ HANTRO_VP8_DECODER | HANTRO_H264_DECODER,
|
|
+ .codec_ops = rk3399_vpu_codec_ops,
|
|
+ .irqs = rockchip_vdpu2_irqs,
|
|
+ .num_irqs = ARRAY_SIZE(rockchip_vdpu2_irqs),
|
|
+ .init = rockchip_vpu_hw_init,
|
|
+ .clk_names = rockchip_vpu_clk_names,
|
|
+ .num_clocks = ARRAY_SIZE(rockchip_vpu_clk_names)
|
|
+};
|
|
+
|
|
const struct hantro_variant px30_vpu_variant = {
|
|
.enc_offset = 0x0,
|
|
.enc_fmts = rockchip_vpu_enc_fmts,
|