[PATCH 0/7] media: verisilicon: Add RK3588 VPU720 JPEG decoder
Sascha Hauer
s.hauer at pengutronix.de
Wed Aug 19 03:37:29 PDT 2026
This series adds support for the RK3588 JPEG/MJPEG hardware decoder, the
VPU720. This series adds it to the hantro driver, along with three fixes
to the hantro core that came out of the work.
Patches 1-3 are independent of the new decoder and stand on their own. A
codec ->run() that fails currently leaves an armed watchdog behind that
later aborts an unrelated job, leaks the pm_runtime reference and the
clocks, and never completes the control handler object bound to the
media request, so the request stays queued until userspace closes it.
Patch 3 makes V4L2_EVENT_EOS subscribable; hantro queues the event in
three places but no application can ask for it.
Patches 4-7 add the decoder itself: the binding, the driver, a minimum
sizeimage for the coded queue, and the DT node.
Unlike the other hantro en/decoders the VPU720 works as a stateful
decoder - userspace hands it a whole frame and never looks inside the
bitstream. The driver parses the JPEG header on the CPU, builds the
quantisation and Huffman tables into a DMA side buffer and programs the
hardware from there.
Patch 6 enforces a minimum frame size to the coded queue for the JPEG
decoder path. This is necessary here as userspace doesn't know how large
a frame can get, but the decoder needs a full frame to work. In my
Gstreamer tests Gstreamer came up with buffers that were too small to
take a full frame at higher resolutions (> 1080p). That is expensive of
course, 16 MiB for a 4k image.
Tested on a Radxa Rock-5t board
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
---
Lucas Sinn (3):
media: verisilicon: Add Rockchip VPU720 JPEG decoder
media: verisilicon: Enforce a minimum sizeimage for the JPEG decoder
arm64: dts: rockchip: rk3588: Add VPU720 JPEG decoder node
Sascha Hauer (4):
media: verisilicon: Fix the cleanup when a codec ->run() fails
media: verisilicon: Complete the request on the ->run() error paths
media: verisilicon: Allow the EOS event to be subscribed
media: dt-bindings: Add Rockchip RK3588 VPU720 JPEG decoder
.../bindings/media/rockchip,rk3588-vpu720.yaml | 93 ++
MAINTAINERS | 1 +
arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 25 +
drivers/media/platform/verisilicon/Makefile | 1 +
drivers/media/platform/verisilicon/hantro.h | 17 +
drivers/media/platform/verisilicon/hantro_drv.c | 49 +-
.../platform/verisilicon/hantro_g1_h264_dec.c | 6 +-
.../platform/verisilicon/hantro_g1_mpeg2_dec.c | 2 +-
.../media/platform/verisilicon/hantro_g1_vp8_dec.c | 6 +-
.../platform/verisilicon/hantro_g2_hevc_dec.c | 11 +-
.../media/platform/verisilicon/hantro_g2_vp9_dec.c | 4 +-
.../platform/verisilicon/hantro_h1_jpeg_enc.c | 2 +-
drivers/media/platform/verisilicon/hantro_hw.h | 19 +-
drivers/media/platform/verisilicon/hantro_v4l2.c | 69 +-
.../verisilicon/rockchip_vpu2_hw_h264_dec.c | 6 +-
.../verisilicon/rockchip_vpu2_hw_jpeg_enc.c | 6 +-
.../verisilicon/rockchip_vpu2_hw_mpeg2_dec.c | 2 +-
.../verisilicon/rockchip_vpu2_hw_vp8_dec.c | 6 +-
.../verisilicon/rockchip_vpu720_hw_jpeg_dec.c | 962 +++++++++++++++++++++
.../platform/verisilicon/rockchip_vpu720_regs.h | 261 ++++++
.../verisilicon/rockchip_vpu981_hw_av1_dec.c | 5 +-
.../media/platform/verisilicon/rockchip_vpu_hw.c | 80 ++
22 files changed, 1595 insertions(+), 38 deletions(-)
---
base-commit: bd5f485f3f026225b86573e559af0b7254ef4184
change-id: 20260819-rk3588-jpegdec-89e1cf4c8898
Best regards,
--
Sascha Hauer <s.hauer at pengutronix.de>
More information about the Linux-rockchip
mailing list