[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250708180530.1384330-1-jorge.ramirez@oss.qualcomm.com>
Date: Tue, 8 Jul 2025 20:05:23 +0200
From: Jorge Ramirez-Ortiz <jorge.ramirez@....qualcomm.com>
To: jorge.ramirez@....qualcomm.com, bryan.odonoghue@...aro.org,
quic_vgarodia@...cinc.com, quic_dikshita@...cinc.com,
krzk+dt@...nel.org, konradybcio@...nel.org, mchehab@...nel.org,
robh@...nel.org, conor+dt@...nel.org, andersson@...nel.org,
amit.kucheria@....qualcomm.com
Cc: linux-media@...r.kernel.org, linux-arm-msm@...r.kernel.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH v6 0/7] media: venus: Add QCM2290 support with AR50_LITE core
Changes since v5:
Two additional new patches added to the set to support video encoding.
- patch 1/7: Add qcm2290 dt schema
- added reviewed by: Bryan O'Donoghue
- added reviewed by: Krzysztof Kozlowski
- patch 2/7: Conditionally register video nodes
- new functionality required to support AR50_LITE
- patch 3/7: Add Support for AR50 LITE video core
- completely rewritten - lite platforms are extensions of previous HFI_XXX
- patch 4/7: HFI platform V4 capabilities
- use HFI 4XX instead of HFI 6XX as per review
- patch 5/7: Add DT compatible and capabilities
- added reviewed by: Bryan O'Donoghue
- enabled new option min_fw_version
- patch 6/7: Add Venus video node for 2290
- added reviewed by: Konrad Dybcio
- removed status property
- patch 7/7: Enable Venus on 2210 RB1 board
- new
Changes since v4:
- patch 1/5:
- added reviewed by: Krzysztof Kozlowski
- updated example section
- patch 2/5:
- added reviewed by: Bryan O'Donoghue
- Fixed Co-developed-by order
- patch 3/5:
- patch 4/5:
- removed encode-node (userspace exposure)
- fixed Co-developed-by order
- patch 5/5:
- fixed venus register region
- power-domain-names: one per line
- clock-names: one per line
- fixed interconnect tags
- empty line before subnode
- enable the venus node
Changes since v3:
- Fixed schema commit subject.
Changes since v2:
- Removed IS_HFI/IS_VPU macros
- checkpatch.pl --strict fixes:
- convert macro to static inline to avoid argument reuse side effect
Changes since v1:
- Added IS_HFI macro usage
- Moved schema patch to top
- Fixed commit messages
This patch series adds support for the Venus video decoder/encoder block
present on the Qualcomm QCM2290.
The QCM2290 integrates an AR50_LITE core, a low-power implementation of
Venus supporting H.264, HEVC (H.265), and VP9 decoding as well as H.264
and H.265 encoding.
The series includes:
- DT binding schema for qcom,qcm2290-venus
- SoC integration via qcm2290.dtsi
- Resource table definitions and frequency scaling
- Platform capability registration for the AR50_LITE core decoding block.
Limitations:
- The hardware does not support concurrent operation at FullHD.
- Encoding is not supported in firmware version before 6.0.54
Some basic Tests:
Decoding and Encoding were verified on the QCOM RB1 platform using
GStreamer with V4L2-based decode plugins.
The following pipelines were used for playback 1280x720 and 1920x1080
H.264, HEVC and VP9 videos from https://www.elecard.com/videos.
Decoding:
[H.264]
gst-launch-1.0 filesrc location=videos/xxxxx.mp4 \
! qtdemux name=demux demux.video_0 ! queue ! h264parse ! v4l2h264dec \
! videoconvert ! autovideosink
[H.265]
gst-launch-1.0 filesrc location=videos/xxxxx.mp4 \
! qtdemux name=demux demux.video_0 ! queue ! h265parse ! v4l2h265dec \
! videoconvert ! autovideosink
[VP9]
gst-launch-1.0 filesrc location=videos/xxxxx.webm \
! matroskademux ! queue ! v4l2vp9dec \
! videoconvert ! autovideosink
Encoding:
[H.264]
gst-launch-1.0 videotestsrc num-buffers=30 \
! video/x-raw,width=1280,height=720,framerate=30/1 \
! v4l2h264enc ! h264parse ! mp4mux ! filesink location=/tmp/output.mp4
[H.265]
gst-launch-1.0 videotestsrc num-buffers=30 \
! video/x-raw,width=1920,height=1080,framerate=30/1 \
! v4l2h265enc ! h265parse ! mp4mux ! filesink location=/tmp/output.mp4
Concurrency:
gst-launch-1.0 -v videotestsrc num-buffers=1000 \
! video/x-raw,format=NV12,width=1280,height=720,framerate=30/1 \
! v4l2h264enc capture-io-mode=4 output-io-mode=2 ! h264parse \
! v4l2h264dec capture-io-mode=4 output-io-mode=2 ! videoconvert \
! autovideosink
[Fluster]
The H.264 decoder was also tested using the Fluster test suite
(version: v0.4.0-12-g33566abd0964).
Target: GStreamer-H.264-V4L2-Gst1.0, Test Suite: JVT-AVC_V1
Result: 126/135 tests passed
Failures:
FM1_BT_B, FM1_FT_E, FM2_SVA_C, BA3_SVA_C, SP1_BT_A,
SP2_BT_B, MR6_BT_B, MR7_BT_B, MR8_BT_B
---
Jorge Ramirez-Ortiz (7):
media: dt-bindings: venus: Add qcm2290 dt schema
media: venus: Conditionally register codec nodes based on firmware
version
media: venus: Add support for AR50_LITE video core
media: venus: hfi_plat_v4: Add capabilities for the 4XX lite core
media: venus: core: Add qcm2290 DT compatible and resource data
arm64: dts: qcom: qcm2290: Add Venus video node
arm64: dts: qcom: qrb2210-rb1: Enable Venus
.../bindings/media/qcom,qcm2290-venus.yaml | 127 +++++++++++++
arch/arm64/boot/dts/qcom/qcm2290.dtsi | 55 ++++++
arch/arm64/boot/dts/qcom/qrb2210-rb1.dts | 4 +
drivers/media/platform/qcom/venus/core.c | 135 +++++++++++---
drivers/media/platform/qcom/venus/core.h | 15 ++
drivers/media/platform/qcom/venus/firmware.c | 6 +-
drivers/media/platform/qcom/venus/helpers.c | 87 ++++++++-
drivers/media/platform/qcom/venus/helpers.h | 2 +
.../media/platform/qcom/venus/hfi_parser.c | 5 +-
.../media/platform/qcom/venus/hfi_platform.c | 20 +-
.../media/platform/qcom/venus/hfi_platform.h | 25 +--
.../platform/qcom/venus/hfi_platform_v4.c | 174 ++++++++++++++++--
.../platform/qcom/venus/hfi_platform_v6.c | 32 +++-
drivers/media/platform/qcom/venus/hfi_venus.c | 16 +-
.../media/platform/qcom/venus/pm_helpers.c | 2 +-
drivers/media/platform/qcom/venus/vdec.c | 16 +-
16 files changed, 621 insertions(+), 100 deletions(-)
create mode 100644 Documentation/devicetree/bindings/media/qcom,qcm2290-venus.yaml
--
2.34.1
Powered by blists - more mailing lists