[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250708180530.1384330-6-jorge.ramirez@oss.qualcomm.com>
Date: Tue, 8 Jul 2025 20:05:28 +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 5/7] media: venus: core: Add qcm2290 DT compatible and resource data
Add a qcm2290 compatible binding to the Cenus core.
The maximum concurrency is video decode at 1920x1080 (FullHD) with video
encode at 1280x720 (HD).
The encoder is not available to firmware versions below 6.0.54 due to an
internal requirement for secure buffers.
Co-developed-by: Loic Poulain <loic.poulain@....qualcomm.com>
Signed-off-by: Loic Poulain <loic.poulain@....qualcomm.com>
Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez@....qualcomm.com>
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@...aro.org>
---
drivers/media/platform/qcom/venus/core.c | 52 ++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
index a4472cc2088b..a486115bbe57 100644
--- a/drivers/media/platform/qcom/venus/core.c
+++ b/drivers/media/platform/qcom/venus/core.c
@@ -1082,6 +1082,57 @@ static const struct venus_resources sc7280_res = {
.enc_nodename = "video-encoder",
};
+static const struct freq_tbl qcm2290_freq_table[] = {
+ { 352800, 240000000 }, /* 1920x1088 @ 30 + 1280x720 @ 30 */
+ { 244800, 133333333 }, /* 1920x1088 @ 30 */
+};
+
+static const struct bw_tbl qcm2290_bw_table_dec[] = {
+ { 244800, 2128000, 0, 2128000, 0}, /* 1920x1088 @ 30 */
+};
+
+static const struct bw_tbl qcm2290_bw_table_enc[] = {
+ { 244800, 2128000, 0, 2128000, 0 }, /* 1920x1088 @ 30 */
+};
+
+static const struct venus_min_fw min_fw_encode = {
+ .major = 6, .minor = 0, .rev = 54 /* encode min fw version */
+};
+
+static const struct venus_resources qcm2290_res = {
+ .freq_tbl = qcm2290_freq_table,
+ .freq_tbl_size = ARRAY_SIZE(qcm2290_freq_table),
+ .bw_tbl_dec = qcm2290_bw_table_dec,
+ .bw_tbl_dec_size = ARRAY_SIZE(qcm2290_bw_table_dec),
+ .bw_tbl_enc = qcm2290_bw_table_enc,
+ .bw_tbl_enc_size = ARRAY_SIZE(qcm2290_bw_table_enc),
+ .clks = { "core", "iface", "bus", "throttle" },
+ .clks_num = 4,
+ .vcodec0_clks = { "vcodec0_core", "vcodec0_bus" },
+ .vcodec_clks_num = 2,
+ .vcodec_pmdomains = (const char *[]) { "venus", "vcodec0" },
+ .vcodec_pmdomains_num = 2,
+ .opp_pmdomain = (const char *[]) { "cx" },
+ .vcodec_num = 1,
+ .hfi_version = HFI_VERSION_4XX,
+ .vpu_version = VPU_VERSION_AR50_LITE,
+ .max_load = 352800,
+ .num_vpp_pipes = 1,
+ .vmem_id = VIDC_RESOURCE_NONE,
+ .vmem_size = 0,
+ .vmem_addr = 0,
+ .cp_start = 0,
+ .cp_size = 0x70800000,
+ .cp_nonpixel_start = 0x1000000,
+ .cp_nonpixel_size = 0x24800000,
+ .dma_mask = 0xe0000000 - 1,
+ .fwname = "qcom/venus-6.0/venus.mbn",
+ .dec_nodename = "video-decoder",
+ .dec_minfw = NULL,
+ .enc_nodename = "video-encoder",
+ .enc_minfw = &min_fw_encode,
+};
+
static const struct of_device_id venus_dt_match[] = {
{ .compatible = "qcom,msm8916-venus", .data = &msm8916_res, },
{ .compatible = "qcom,msm8996-venus", .data = &msm8996_res, },
@@ -1092,6 +1143,7 @@ static const struct of_device_id venus_dt_match[] = {
{ .compatible = "qcom,sc7180-venus", .data = &sc7180_res, },
{ .compatible = "qcom,sc7280-venus", .data = &sc7280_res, },
{ .compatible = "qcom,sm8250-venus", .data = &sm8250_res, },
+ { .compatible = "qcom,qcm2290-venus", .data = &qcm2290_res, },
{ }
};
MODULE_DEVICE_TABLE(of, venus_dt_match);
--
2.34.1
Powered by blists - more mailing lists