* [PATCH v6 1/5] dt-bindings: media: Document STM32MP25 VDEC & VENC video codecs
2024-01-09 8:51 [PATCH v6 0/5] Add support for video hardware codec of STMicroelectronics STM32 SoC series Hugues Fruchet
@ 2024-01-09 8:51 ` Hugues Fruchet
2024-01-09 21:49 ` Krzysztof Kozlowski
2024-01-09 8:51 ` [PATCH v6 2/5] media: hantro: add support for STM32MP25 VDEC Hugues Fruchet
` (3 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Hugues Fruchet @ 2024-01-09 8:51 UTC (permalink / raw)
To: Ezequiel Garcia, Philipp Zabel, Andrzej Pietrasiewicz,
Nicolas Dufresne, Sakari Ailus, Benjamin Gaignard,
Laurent Pinchart, Daniel Almeida, Benjamin Mugnier,
Heiko Stuebner, Mauro Carvalho Chehab, Hans Verkuil, linux-media,
Maxime Coquelin, Alexandre Torgue, linux-stm32, linux-arm-kernel,
linux-kernel, linux-rockchip
Cc: Hugues Fruchet, Marco Felsch, Adam Ford
Add STM32MP25 VDEC video decoder & VENC video encoder bindings.
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
---
.../media/st,stm32mp25-video-codec.yaml | 50 +++++++++++++++++++
1 file changed, 50 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/st,stm32mp25-video-codec.yaml
diff --git a/Documentation/devicetree/bindings/media/st,stm32mp25-video-codec.yaml b/Documentation/devicetree/bindings/media/st,stm32mp25-video-codec.yaml
new file mode 100644
index 000000000000..e167e3b1bec3
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/st,stm32mp25-video-codec.yaml
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/media/st,stm32mp25-video-codec.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STMicroelectronics STM32MP25 VDEC video decoder & VENC video encoder
+
+maintainers:
+ - Hugues Fruchet <hugues.fruchet@foss.st.com>
+
+description:
+ The STMicroelectronics STM32MP25 SOCs embeds a VDEC video hardware
+ decoder peripheral based on Verisilicon VC8000NanoD IP (former Hantro G1)
+ and a VENC video hardware encoder peripheral based on Verisilicon
+ VC8000NanoE IP (former Hantro H1).
+
+properties:
+ compatible:
+ enum:
+ - st,stm32mp25-vdec
+ - st,stm32mp25-venc
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ video-codec@580d0000 {
+ compatible = "st,stm32mp25-vdec";
+ reg = <0x580d0000 0x3c8>;
+ interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&ck_icn_p_vdec>;
+ };
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread* Re: [PATCH v6 1/5] dt-bindings: media: Document STM32MP25 VDEC & VENC video codecs
2024-01-09 8:51 ` [PATCH v6 1/5] dt-bindings: media: Document STM32MP25 VDEC & VENC video codecs Hugues Fruchet
@ 2024-01-09 21:49 ` Krzysztof Kozlowski
2024-01-10 9:15 ` Hugues FRUCHET
0 siblings, 1 reply; 9+ messages in thread
From: Krzysztof Kozlowski @ 2024-01-09 21:49 UTC (permalink / raw)
To: Hugues Fruchet, Ezequiel Garcia, Philipp Zabel,
Andrzej Pietrasiewicz, Nicolas Dufresne, Sakari Ailus,
Benjamin Gaignard, Laurent Pinchart, Daniel Almeida,
Benjamin Mugnier, Heiko Stuebner, Mauro Carvalho Chehab,
Hans Verkuil, linux-media, Maxime Coquelin, Alexandre Torgue,
linux-stm32, linux-arm-kernel, linux-kernel, linux-rockchip
Cc: Marco Felsch, Adam Ford
On 09/01/2024 09:51, Hugues Fruchet wrote:
> Add STM32MP25 VDEC video decoder & VENC video encoder bindings.
>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
Please use scripts/get_maintainers.pl to get a list of necessary people
and lists to CC. It might happen, that command when run on an older
kernel, gives you outdated entries. Therefore please be sure you base
your patches on recent Linux kernel.
You missed at least devicetree list (maybe more), so this won't be
tested by automated tooling.
Please kindly resend and include all necessary To/Cc entries.
While resending drop redundant blank line after SPDX. See all other
bindings and example-schema.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 1/5] dt-bindings: media: Document STM32MP25 VDEC & VENC video codecs
2024-01-09 21:49 ` Krzysztof Kozlowski
@ 2024-01-10 9:15 ` Hugues FRUCHET
2024-01-10 9:17 ` Krzysztof Kozlowski
0 siblings, 1 reply; 9+ messages in thread
From: Hugues FRUCHET @ 2024-01-10 9:15 UTC (permalink / raw)
To: Krzysztof Kozlowski, linux-rockchip, linux-arm-kernel,
linux-kernel, linux-media, linux-stm32
Cc: Marco Felsch, Heiko Stuebner, Adam Ford, Ezequiel Garcia,
Philipp Zabel, Andrzej Pietrasiewicz, Alexandre Torgue,
Maxime Coquelin, Mauro Carvalho Chehab, Nicolas Dufresne,
Sakari Ailus, Benjamin Mugnier, Benjamin Gaignard,
Laurent Pinchart, Daniel Almeida, Hans Verkuil
Hi Krzysztof,
On 1/9/24 22:49, Krzysztof Kozlowski wrote:
> On 09/01/2024 09:51, Hugues Fruchet wrote:
>> Add STM32MP25 VDEC video decoder & VENC video encoder bindings.
>>
>> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>> Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
>
> Please use scripts/get_maintainers.pl to get a list of necessary people
> and lists to CC. It might happen, that command when run on an older
> kernel, gives you outdated entries. Therefore please be sure you base
> your patches on recent Linux kernel.
>
> You missed at least devicetree list (maybe more), so this won't be
> tested by automated tooling.
>
> Please kindly resend and include all necessary To/Cc entries.
My fault when sending this exact v6, sorry for that.. It was done the
right way for previous versions and no issues raised by automated tools.
>
> While resending drop redundant blank line after SPDX. See all other
> bindings and example-schema.
I have double checked and I don't see any problem related to redundant
blank lines in yaml after SPDX:
+++ b/Documentation/devicetree/bindings/media/st,stm32mp25-video-codec.yaml
@@ -0,0 +1,50 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+
+%YAML 1.2
Could you point me out what is the exact issue ?
>
> Best regards,
> Krzysztof
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v6 1/5] dt-bindings: media: Document STM32MP25 VDEC & VENC video codecs
2024-01-10 9:15 ` Hugues FRUCHET
@ 2024-01-10 9:17 ` Krzysztof Kozlowski
0 siblings, 0 replies; 9+ messages in thread
From: Krzysztof Kozlowski @ 2024-01-10 9:17 UTC (permalink / raw)
To: Hugues FRUCHET, linux-rockchip, linux-arm-kernel, linux-kernel,
linux-media, linux-stm32
Cc: Marco Felsch, Heiko Stuebner, Adam Ford, Ezequiel Garcia,
Philipp Zabel, Andrzej Pietrasiewicz, Alexandre Torgue,
Maxime Coquelin, Mauro Carvalho Chehab, Nicolas Dufresne,
Sakari Ailus, Benjamin Mugnier, Benjamin Gaignard,
Laurent Pinchart, Daniel Almeida, Hans Verkuil
On 10/01/2024 10:15, Hugues FRUCHET wrote:
>> You missed at least devicetree list (maybe more), so this won't be
>> tested by automated tooling.
>>
>> Please kindly resend and include all necessary To/Cc entries.
>
> My fault when sending this exact v6, sorry for that.. It was done the
> right way for previous versions and no issues raised by automated tools.
>
>>
>> While resending drop redundant blank line after SPDX. See all other
>> bindings and example-schema.
> I have double checked and I don't see any problem related to redundant
> blank lines in yaml after SPDX:
I wonder how did you check worked... Open existing other file, open your
file. Look at yours. Then look at others. Then again look at yours.
>
> +++ b/Documentation/devicetree/bindings/media/st,stm32mp25-video-codec.yaml
> @@ -0,0 +1,50 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +
> +%YAML 1.2
>
> Could you point me out what is the exact issue ?
You have a redundant blank line after SPDX.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v6 2/5] media: hantro: add support for STM32MP25 VDEC
2024-01-09 8:51 [PATCH v6 0/5] Add support for video hardware codec of STMicroelectronics STM32 SoC series Hugues Fruchet
2024-01-09 8:51 ` [PATCH v6 1/5] dt-bindings: media: Document STM32MP25 VDEC & VENC video codecs Hugues Fruchet
@ 2024-01-09 8:51 ` Hugues Fruchet
2024-01-09 8:51 ` [PATCH v6 3/5] media: hantro: add support for STM32MP25 VENC Hugues Fruchet
` (2 subsequent siblings)
4 siblings, 0 replies; 9+ messages in thread
From: Hugues Fruchet @ 2024-01-09 8:51 UTC (permalink / raw)
To: Ezequiel Garcia, Philipp Zabel, Andrzej Pietrasiewicz,
Nicolas Dufresne, Sakari Ailus, Benjamin Gaignard,
Laurent Pinchart, Daniel Almeida, Benjamin Mugnier,
Heiko Stuebner, Mauro Carvalho Chehab, Hans Verkuil, linux-media,
Maxime Coquelin, Alexandre Torgue, linux-stm32, linux-arm-kernel,
linux-kernel, linux-rockchip
Cc: Hugues Fruchet, Marco Felsch, Adam Ford
Add support for STM32MP25 VDEC video hardware decoder.
Support of H264/VP8 decoding.
No post-processor support.
VDEC has its own reset/clock/irq.
Successfully tested up to full HD.
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
---
drivers/media/platform/verisilicon/Kconfig | 14 ++-
drivers/media/platform/verisilicon/Makefile | 3 +
.../media/platform/verisilicon/hantro_drv.c | 3 +
.../media/platform/verisilicon/hantro_hw.h | 1 +
.../platform/verisilicon/stm32mp25_vpu_hw.c | 96 +++++++++++++++++++
5 files changed, 114 insertions(+), 3 deletions(-)
create mode 100644 drivers/media/platform/verisilicon/stm32mp25_vpu_hw.c
diff --git a/drivers/media/platform/verisilicon/Kconfig b/drivers/media/platform/verisilicon/Kconfig
index e65b836b9d78..7642ff9cf96c 100644
--- a/drivers/media/platform/verisilicon/Kconfig
+++ b/drivers/media/platform/verisilicon/Kconfig
@@ -4,7 +4,7 @@ comment "Verisilicon media platform drivers"
config VIDEO_HANTRO
tristate "Hantro VPU driver"
- depends on ARCH_MXC || ARCH_ROCKCHIP || ARCH_AT91 || ARCH_SUNXI || COMPILE_TEST
+ depends on ARCH_MXC || ARCH_ROCKCHIP || ARCH_AT91 || ARCH_SUNXI || ARCH_STM32 || COMPILE_TEST
depends on V4L_MEM2MEM_DRIVERS
depends on VIDEO_DEV
select MEDIA_CONTROLLER
@@ -16,8 +16,8 @@ config VIDEO_HANTRO
select V4L2_VP9
help
Support for the Hantro IP based Video Processing Units present on
- Rockchip and NXP i.MX8M SoCs, which accelerate video and image
- encoding and decoding.
+ Rockchip, NXP i.MX8M and STM32MP25 SoCs, which accelerate video
+ and image encoding and decoding.
To compile this driver as a module, choose M here: the module
will be called hantro-vpu.
@@ -52,3 +52,11 @@ config VIDEO_HANTRO_SUNXI
default y
help
Enable support for H6 SoC.
+
+config VIDEO_HANTRO_STM32MP25
+ bool "Hantro STM32MP25 support"
+ depends on VIDEO_HANTRO
+ depends on ARCH_STM32 || COMPILE_TEST
+ default y
+ help
+ Enable support for STM32MP25 SoCs.
diff --git a/drivers/media/platform/verisilicon/Makefile b/drivers/media/platform/verisilicon/Makefile
index 6ad2ef885920..eb38a1833b02 100644
--- a/drivers/media/platform/verisilicon/Makefile
+++ b/drivers/media/platform/verisilicon/Makefile
@@ -39,3 +39,6 @@ hantro-vpu-$(CONFIG_VIDEO_HANTRO_ROCKCHIP) += \
hantro-vpu-$(CONFIG_VIDEO_HANTRO_SUNXI) += \
sunxi_vpu_hw.o
+
+hantro-vpu-$(CONFIG_VIDEO_HANTRO_STM32MP25) += \
+ stm32mp25_vpu_hw.o
diff --git a/drivers/media/platform/verisilicon/hantro_drv.c b/drivers/media/platform/verisilicon/hantro_drv.c
index a9fa05ac56a9..2db27c333924 100644
--- a/drivers/media/platform/verisilicon/hantro_drv.c
+++ b/drivers/media/platform/verisilicon/hantro_drv.c
@@ -733,6 +733,9 @@ static const struct of_device_id of_hantro_match[] = {
#endif
#ifdef CONFIG_VIDEO_HANTRO_SUNXI
{ .compatible = "allwinner,sun50i-h6-vpu-g2", .data = &sunxi_vpu_variant, },
+#endif
+#ifdef CONFIG_VIDEO_HANTRO_STM32MP25
+ { .compatible = "st,stm32mp25-vdec", .data = &stm32mp25_vdec_variant, },
#endif
{ /* sentinel */ }
};
diff --git a/drivers/media/platform/verisilicon/hantro_hw.h b/drivers/media/platform/verisilicon/hantro_hw.h
index 7f33f7b07ce4..b7eccc1a96fc 100644
--- a/drivers/media/platform/verisilicon/hantro_hw.h
+++ b/drivers/media/platform/verisilicon/hantro_hw.h
@@ -406,6 +406,7 @@ extern const struct hantro_variant rk3568_vpu_variant;
extern const struct hantro_variant rk3588_vpu981_variant;
extern const struct hantro_variant sama5d4_vdec_variant;
extern const struct hantro_variant sunxi_vpu_variant;
+extern const struct hantro_variant stm32mp25_vdec_variant;
extern const struct hantro_postproc_ops hantro_g1_postproc_ops;
extern const struct hantro_postproc_ops hantro_g2_postproc_ops;
diff --git a/drivers/media/platform/verisilicon/stm32mp25_vpu_hw.c b/drivers/media/platform/verisilicon/stm32mp25_vpu_hw.c
new file mode 100644
index 000000000000..6af6edcb6650
--- /dev/null
+++ b/drivers/media/platform/verisilicon/stm32mp25_vpu_hw.c
@@ -0,0 +1,96 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * STM32MP25 video codec driver
+ *
+ * Copyright (C) STMicroelectronics SA 2024
+ * Authors: Hugues Fruchet <hugues.fruchet@foss.st.com>
+ * for STMicroelectronics.
+ *
+ */
+
+#include "hantro.h"
+
+/*
+ * Supported formats.
+ */
+
+static const struct hantro_fmt stm32mp25_vdec_fmts[] = {
+ {
+ .fourcc = V4L2_PIX_FMT_NV12,
+ .codec_mode = HANTRO_MODE_NONE,
+ .frmsize = {
+ .min_width = FMT_MIN_WIDTH,
+ .max_width = FMT_FHD_WIDTH,
+ .step_width = MB_DIM,
+ .min_height = FMT_MIN_HEIGHT,
+ .max_height = FMT_FHD_HEIGHT,
+ .step_height = MB_DIM,
+ },
+ },
+ {
+ .fourcc = V4L2_PIX_FMT_VP8_FRAME,
+ .codec_mode = HANTRO_MODE_VP8_DEC,
+ .max_depth = 2,
+ .frmsize = {
+ .min_width = FMT_MIN_WIDTH,
+ .max_width = FMT_FHD_WIDTH,
+ .step_width = MB_DIM,
+ .min_height = FMT_MIN_HEIGHT,
+ .max_height = FMT_FHD_HEIGHT,
+ .step_height = MB_DIM,
+ },
+ },
+ {
+ .fourcc = V4L2_PIX_FMT_H264_SLICE,
+ .codec_mode = HANTRO_MODE_H264_DEC,
+ .max_depth = 2,
+ .frmsize = {
+ .min_width = FMT_MIN_WIDTH,
+ .max_width = FMT_FHD_WIDTH,
+ .step_width = MB_DIM,
+ .min_height = FMT_MIN_HEIGHT,
+ .max_height = FMT_FHD_HEIGHT,
+ .step_height = MB_DIM,
+ },
+ },
+};
+
+/*
+ * Supported codec ops.
+ */
+
+static const struct hantro_codec_ops stm32mp25_vdec_codec_ops[] = {
+ [HANTRO_MODE_VP8_DEC] = {
+ .run = hantro_g1_vp8_dec_run,
+ .reset = hantro_g1_reset,
+ .init = hantro_vp8_dec_init,
+ .exit = hantro_vp8_dec_exit,
+ },
+ [HANTRO_MODE_H264_DEC] = {
+ .run = hantro_g1_h264_dec_run,
+ .reset = hantro_g1_reset,
+ .init = hantro_h264_dec_init,
+ .exit = hantro_h264_dec_exit,
+ },
+};
+
+/*
+ * Variants.
+ */
+
+static const struct hantro_irq stm32mp25_vdec_irqs[] = {
+ { "vdec", hantro_g1_irq },
+};
+
+static const char * const stm32mp25_vdec_clk_names[] = { "vdec-clk" };
+
+const struct hantro_variant stm32mp25_vdec_variant = {
+ .dec_fmts = stm32mp25_vdec_fmts,
+ .num_dec_fmts = ARRAY_SIZE(stm32mp25_vdec_fmts),
+ .codec = HANTRO_VP8_DECODER | HANTRO_H264_DECODER,
+ .codec_ops = stm32mp25_vdec_codec_ops,
+ .irqs = stm32mp25_vdec_irqs,
+ .num_irqs = ARRAY_SIZE(stm32mp25_vdec_irqs),
+ .clk_names = stm32mp25_vdec_clk_names,
+ .num_clocks = ARRAY_SIZE(stm32mp25_vdec_clk_names),
+};
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v6 3/5] media: hantro: add support for STM32MP25 VENC
2024-01-09 8:51 [PATCH v6 0/5] Add support for video hardware codec of STMicroelectronics STM32 SoC series Hugues Fruchet
2024-01-09 8:51 ` [PATCH v6 1/5] dt-bindings: media: Document STM32MP25 VDEC & VENC video codecs Hugues Fruchet
2024-01-09 8:51 ` [PATCH v6 2/5] media: hantro: add support for STM32MP25 VDEC Hugues Fruchet
@ 2024-01-09 8:51 ` Hugues Fruchet
2024-01-09 8:51 ` [PATCH v6 4/5] arm64: dts: st: add video decoder support to stm32mp255 Hugues Fruchet
2024-01-09 8:51 ` [PATCH v6 5/5] arm64: dts: st: add video encoder " Hugues Fruchet
4 siblings, 0 replies; 9+ messages in thread
From: Hugues Fruchet @ 2024-01-09 8:51 UTC (permalink / raw)
To: Ezequiel Garcia, Philipp Zabel, Andrzej Pietrasiewicz,
Nicolas Dufresne, Sakari Ailus, Benjamin Gaignard,
Laurent Pinchart, Daniel Almeida, Benjamin Mugnier,
Heiko Stuebner, Mauro Carvalho Chehab, Hans Verkuil, linux-media,
Maxime Coquelin, Alexandre Torgue, linux-stm32, linux-arm-kernel,
linux-kernel, linux-rockchip
Cc: Hugues Fruchet, Marco Felsch, Adam Ford
Add support for STM32MP25 VENC video hardware encoder.
Support of JPEG encoding.
VENC has its own reset/clock/irq.
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
---
.../media/platform/verisilicon/hantro_drv.c | 1 +
.../media/platform/verisilicon/hantro_hw.h | 1 +
.../platform/verisilicon/stm32mp25_vpu_hw.c | 90 +++++++++++++++++++
3 files changed, 92 insertions(+)
diff --git a/drivers/media/platform/verisilicon/hantro_drv.c b/drivers/media/platform/verisilicon/hantro_drv.c
index 2db27c333924..4d97a8ac03de 100644
--- a/drivers/media/platform/verisilicon/hantro_drv.c
+++ b/drivers/media/platform/verisilicon/hantro_drv.c
@@ -736,6 +736,7 @@ static const struct of_device_id of_hantro_match[] = {
#endif
#ifdef CONFIG_VIDEO_HANTRO_STM32MP25
{ .compatible = "st,stm32mp25-vdec", .data = &stm32mp25_vdec_variant, },
+ { .compatible = "st,stm32mp25-venc", .data = &stm32mp25_venc_variant, },
#endif
{ /* sentinel */ }
};
diff --git a/drivers/media/platform/verisilicon/hantro_hw.h b/drivers/media/platform/verisilicon/hantro_hw.h
index b7eccc1a96fc..70c72e9d11d5 100644
--- a/drivers/media/platform/verisilicon/hantro_hw.h
+++ b/drivers/media/platform/verisilicon/hantro_hw.h
@@ -407,6 +407,7 @@ extern const struct hantro_variant rk3588_vpu981_variant;
extern const struct hantro_variant sama5d4_vdec_variant;
extern const struct hantro_variant sunxi_vpu_variant;
extern const struct hantro_variant stm32mp25_vdec_variant;
+extern const struct hantro_variant stm32mp25_venc_variant;
extern const struct hantro_postproc_ops hantro_g1_postproc_ops;
extern const struct hantro_postproc_ops hantro_g2_postproc_ops;
diff --git a/drivers/media/platform/verisilicon/stm32mp25_vpu_hw.c b/drivers/media/platform/verisilicon/stm32mp25_vpu_hw.c
index 6af6edcb6650..833821120b20 100644
--- a/drivers/media/platform/verisilicon/stm32mp25_vpu_hw.c
+++ b/drivers/media/platform/verisilicon/stm32mp25_vpu_hw.c
@@ -9,6 +9,8 @@
*/
#include "hantro.h"
+#include "hantro_jpeg.h"
+#include "hantro_h1_regs.h"
/*
* Supported formats.
@@ -55,6 +57,67 @@ static const struct hantro_fmt stm32mp25_vdec_fmts[] = {
},
};
+static const struct hantro_fmt stm32mp25_venc_fmts[] = {
+ {
+ .fourcc = V4L2_PIX_FMT_YUV420M,
+ .codec_mode = HANTRO_MODE_NONE,
+ .enc_fmt = ROCKCHIP_VPU_ENC_FMT_YUV420P,
+ },
+ {
+ .fourcc = V4L2_PIX_FMT_NV12M,
+ .codec_mode = HANTRO_MODE_NONE,
+ .enc_fmt = ROCKCHIP_VPU_ENC_FMT_YUV420SP,
+ },
+ {
+ .fourcc = V4L2_PIX_FMT_YUYV,
+ .codec_mode = HANTRO_MODE_NONE,
+ .enc_fmt = ROCKCHIP_VPU_ENC_FMT_YUYV422,
+ },
+ {
+ .fourcc = V4L2_PIX_FMT_UYVY,
+ .codec_mode = HANTRO_MODE_NONE,
+ .enc_fmt = ROCKCHIP_VPU_ENC_FMT_UYVY422,
+ },
+ {
+ .fourcc = V4L2_PIX_FMT_JPEG,
+ .codec_mode = HANTRO_MODE_JPEG_ENC,
+ .max_depth = 2,
+ .header_size = JPEG_HEADER_SIZE,
+ .frmsize = {
+ .min_width = 96,
+ .max_width = FMT_4K_WIDTH,
+ .step_width = MB_DIM,
+ .min_height = 96,
+ .max_height = FMT_4K_HEIGHT,
+ .step_height = MB_DIM,
+ },
+ },
+};
+
+static irqreturn_t stm32mp25_venc_irq(int irq, void *dev_id)
+{
+ struct hantro_dev *vpu = dev_id;
+ enum vb2_buffer_state state;
+ u32 status;
+
+ status = vepu_read(vpu, H1_REG_INTERRUPT);
+ state = (status & H1_REG_INTERRUPT_FRAME_RDY) ?
+ VB2_BUF_STATE_DONE : VB2_BUF_STATE_ERROR;
+
+ vepu_write(vpu, H1_REG_INTERRUPT_BIT, H1_REG_INTERRUPT);
+
+ hantro_irq_done(vpu, state);
+
+ return IRQ_HANDLED;
+}
+
+static void stm32mp25_venc_reset(struct hantro_ctx *ctx)
+{
+ struct hantro_dev *vpu = ctx->dev;
+
+ reset_control_reset(vpu->resets);
+}
+
/*
* Supported codec ops.
*/
@@ -74,6 +137,14 @@ static const struct hantro_codec_ops stm32mp25_vdec_codec_ops[] = {
},
};
+static const struct hantro_codec_ops stm32mp25_venc_codec_ops[] = {
+ [HANTRO_MODE_JPEG_ENC] = {
+ .run = hantro_h1_jpeg_enc_run,
+ .reset = stm32mp25_venc_reset,
+ .done = hantro_h1_jpeg_enc_done,
+ },
+};
+
/*
* Variants.
*/
@@ -94,3 +165,22 @@ const struct hantro_variant stm32mp25_vdec_variant = {
.clk_names = stm32mp25_vdec_clk_names,
.num_clocks = ARRAY_SIZE(stm32mp25_vdec_clk_names),
};
+
+static const struct hantro_irq stm32mp25_venc_irqs[] = {
+ { "venc", stm32mp25_venc_irq },
+};
+
+static const char * const stm32mp25_venc_clk_names[] = {
+ "venc-clk"
+};
+
+const struct hantro_variant stm32mp25_venc_variant = {
+ .enc_fmts = stm32mp25_venc_fmts,
+ .num_enc_fmts = ARRAY_SIZE(stm32mp25_venc_fmts),
+ .codec = HANTRO_JPEG_ENCODER,
+ .codec_ops = stm32mp25_venc_codec_ops,
+ .irqs = stm32mp25_venc_irqs,
+ .num_irqs = ARRAY_SIZE(stm32mp25_venc_irqs),
+ .clk_names = stm32mp25_venc_clk_names,
+ .num_clocks = ARRAY_SIZE(stm32mp25_venc_clk_names)
+};
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v6 4/5] arm64: dts: st: add video decoder support to stm32mp255
2024-01-09 8:51 [PATCH v6 0/5] Add support for video hardware codec of STMicroelectronics STM32 SoC series Hugues Fruchet
` (2 preceding siblings ...)
2024-01-09 8:51 ` [PATCH v6 3/5] media: hantro: add support for STM32MP25 VENC Hugues Fruchet
@ 2024-01-09 8:51 ` Hugues Fruchet
2024-01-09 8:51 ` [PATCH v6 5/5] arm64: dts: st: add video encoder " Hugues Fruchet
4 siblings, 0 replies; 9+ messages in thread
From: Hugues Fruchet @ 2024-01-09 8:51 UTC (permalink / raw)
To: Ezequiel Garcia, Philipp Zabel, Andrzej Pietrasiewicz,
Nicolas Dufresne, Sakari Ailus, Benjamin Gaignard,
Laurent Pinchart, Daniel Almeida, Benjamin Mugnier,
Heiko Stuebner, Mauro Carvalho Chehab, Hans Verkuil, linux-media,
Maxime Coquelin, Alexandre Torgue, linux-stm32, linux-arm-kernel,
linux-kernel, linux-rockchip
Cc: Hugues Fruchet, Marco Felsch, Adam Ford
Add VDEC hardware video decoder support to STM32MP255.
Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
---
arch/arm64/boot/dts/st/stm32mp251.dtsi | 6 ++++++
arch/arm64/boot/dts/st/stm32mp255.dtsi | 10 ++++++++++
2 files changed, 16 insertions(+)
diff --git a/arch/arm64/boot/dts/st/stm32mp251.dtsi b/arch/arm64/boot/dts/st/stm32mp251.dtsi
index 96859d098ef8..8fc7e9199499 100644
--- a/arch/arm64/boot/dts/st/stm32mp251.dtsi
+++ b/arch/arm64/boot/dts/st/stm32mp251.dtsi
@@ -52,6 +52,12 @@ ck_icn_ls_mcu: ck-icn-ls-mcu {
compatible = "fixed-clock";
clock-frequency = <200000000>;
};
+
+ ck_icn_p_vdec: ck-icn-p-vdec {
+ #clock-cells = <0>;
+ compatible = "fixed-clock";
+ clock-frequency = <200000000>;
+ };
};
firmware {
diff --git a/arch/arm64/boot/dts/st/stm32mp255.dtsi b/arch/arm64/boot/dts/st/stm32mp255.dtsi
index e6fa596211f5..aea5096dac3c 100644
--- a/arch/arm64/boot/dts/st/stm32mp255.dtsi
+++ b/arch/arm64/boot/dts/st/stm32mp255.dtsi
@@ -6,4 +6,14 @@
#include "stm32mp253.dtsi"
/ {
+ soc@0 {
+ rifsc: rifsc-bus@42080000 {
+ vdec: vdec@480d0000 {
+ compatible = "st,stm32mp25-vdec";
+ reg = <0x480d0000 0x3c8>;
+ interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&ck_icn_p_vdec>;
+ };
+ };
+ };
};
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH v6 5/5] arm64: dts: st: add video encoder support to stm32mp255
2024-01-09 8:51 [PATCH v6 0/5] Add support for video hardware codec of STMicroelectronics STM32 SoC series Hugues Fruchet
` (3 preceding siblings ...)
2024-01-09 8:51 ` [PATCH v6 4/5] arm64: dts: st: add video decoder support to stm32mp255 Hugues Fruchet
@ 2024-01-09 8:51 ` Hugues Fruchet
4 siblings, 0 replies; 9+ messages in thread
From: Hugues Fruchet @ 2024-01-09 8:51 UTC (permalink / raw)
To: Ezequiel Garcia, Philipp Zabel, Andrzej Pietrasiewicz,
Nicolas Dufresne, Sakari Ailus, Benjamin Gaignard,
Laurent Pinchart, Daniel Almeida, Benjamin Mugnier,
Heiko Stuebner, Mauro Carvalho Chehab, Hans Verkuil, linux-media,
Maxime Coquelin, Alexandre Torgue, linux-stm32, linux-arm-kernel,
linux-kernel, linux-rockchip
Cc: Hugues Fruchet, Marco Felsch, Adam Ford
Add VENC hardware video encoder support to STM32MP255.
Signed-off-by: Hugues Fruchet <hugues.fruchet@foss.st.com>
---
arch/arm64/boot/dts/st/stm32mp251.dtsi | 6 ++++++
arch/arm64/boot/dts/st/stm32mp255.dtsi | 7 +++++++
2 files changed, 13 insertions(+)
diff --git a/arch/arm64/boot/dts/st/stm32mp251.dtsi b/arch/arm64/boot/dts/st/stm32mp251.dtsi
index 8fc7e9199499..5dd4f3580a60 100644
--- a/arch/arm64/boot/dts/st/stm32mp251.dtsi
+++ b/arch/arm64/boot/dts/st/stm32mp251.dtsi
@@ -58,6 +58,12 @@ ck_icn_p_vdec: ck-icn-p-vdec {
compatible = "fixed-clock";
clock-frequency = <200000000>;
};
+
+ ck_icn_p_venc: ck-icn-p-venc {
+ #clock-cells = <0>;
+ compatible = "fixed-clock";
+ clock-frequency = <200000000>;
+ };
};
firmware {
diff --git a/arch/arm64/boot/dts/st/stm32mp255.dtsi b/arch/arm64/boot/dts/st/stm32mp255.dtsi
index aea5096dac3c..17f197c5b22b 100644
--- a/arch/arm64/boot/dts/st/stm32mp255.dtsi
+++ b/arch/arm64/boot/dts/st/stm32mp255.dtsi
@@ -14,6 +14,13 @@ vdec: vdec@480d0000 {
interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&ck_icn_p_vdec>;
};
+
+ venc: venc@480e0000 {
+ compatible = "st,stm32mp25-venc";
+ reg = <0x480e0000 0x800>;
+ interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&ck_icn_ls_mcu>;
+ };
};
};
};
--
2.25.1
^ permalink raw reply related [flat|nested] 9+ messages in thread