dt-bindings: media: qcom,glymur-iris: Add glymur video codec

Add device tree binding for the Qualcomm Glymur Iris video codec. Glymur
is a new generation of video IP that introduces a dual-core architecture.
The second core brings its own power domain, clocks, and reset lines,
requiring additional power domains and clocks in the power sequence.

The current maxItems constraints for clocks and power-domains in the
common venus schema were sized for platforms available at the time of
authoring. The glymur platform introduces a dual core architecture
that requires more clocks and power domains, exceeding these limits.

Raise maxItems for clocks, clock-names, power-domains and
power-domain-names to accommodate the glymur platform.

The glymur platform-specific schema have fixed constraints for these
properties, so the common schema only acts as an upper bound.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
This commit is contained in:
Vishnu Reddy authored and Abel Vesa committed 2026-07-14 16:55:27 +00:00
1 parent 278fb89462
commit d84790afce
3 files changed
+223 -4

No files matched your search

@@ -0,0 +1,208 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/qcom,glymur-iris.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm Glymur SoC Iris video encoder and decoder
maintainers:
- Vishnu Reddy <busanna.reddy@oss.qualcomm.com>
description:
The Iris video processing unit on Qualcomm Glymur SoC is a video encode and
decode accelerator.
properties:
compatible:
const: qcom,glymur-iris
clocks:
maxItems: 9
clock-names:
items:
- const: core_iface
- const: core
- const: vcodec0_core
- const: vcodec0_iface
- const: core_freerun
- const: vcodec0_core_freerun
- const: vcodec1_iface
- const: vcodec1_core
- const: vcodec1_core_freerun
dma-coherent: true
interconnects:
maxItems: 2
interconnect-names:
items:
- const: cpu-cfg
- const: video-mem
iommus:
maxItems: 4
iommu-map:
maxItems: 1
operating-points-v2: true
opp-table:
type: object
power-domains:
maxItems: 5
power-domain-names:
items:
- const: venus
- const: vcodec0
- const: mxc
- const: mmcx
- const: vcodec1
resets:
maxItems: 6
reset-names:
items:
- const: core_bus
- const: vcodec0_bus
- const: core
- const: vcodec0_core
- const: vcodec1_bus
- const: vcodec1_core
required:
- clocks
- clock-names
- compatible
- dma-coherent
- interconnects
- interconnect-names
- iommus
- power-domains
- power-domain-names
- resets
- reset-names
allOf:
- $ref: qcom,venus-common.yaml#
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/media/qcom,glymur-iris.h>
#include <dt-bindings/power/qcom,rpmhpd.h>
video-codec@aa00000 {
compatible = "qcom,glymur-iris";
reg = <0x0aa00000 0xf0000>;
clocks = <&gcc_video_axi0c_clk>,
<&videocc_mvs0c_clk>,
<&videocc_mvs0_clk>,
<&gcc_video_axi0_clk>,
<&videocc_mvs0c_freerun_clk>,
<&videocc_mvs0_freerun_clk>,
<&gcc_video_axi1_clk>,
<&videocc_mvs1_clk>,
<&videocc_mvs1_freerun_clk>;
clock-names = "core_iface",
"core",
"vcodec0_core",
"vcodec0_iface",
"core_freerun",
"vcodec0_core_freerun",
"vcodec1_iface",
"vcodec1_core",
"vcodec1_core_freerun";
dma-coherent;
interconnects = <&hsc_noc_master_appss_proc &config_noc_slave_venus_cfg>,
<&mmss_noc_master_video &mc_virt_slave_ebi1>;
interconnect-names = "cpu-cfg",
"video-mem";
interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
iommus = <&apps_smmu 0x1940 0x0>,
<&apps_smmu 0x1943 0x0>,
<&apps_smmu 0x1944 0x0>,
<&apps_smmu 0x19e0 0x0>;
iommu-map = <IOMMU_FID_IRIS_FIRMWARE &apps_smmu 0x19e2 0x1>;
memory-region = <&video_mem>;
operating-points-v2 = <&iris_opp_table>;
power-domains = <&videocc_mvs0c_gdsc>,
<&videocc_mvs0_gdsc>,
<&rpmhpd RPMHPD_MXC>,
<&rpmhpd RPMHPD_MMCX>,
<&videocc_mvs1_gdsc>;
power-domain-names = "venus",
"vcodec0",
"mxc",
"mmcx",
"vcodec1";
resets = <&gcc_video_axi0c_clk_ares>,
<&gcc_video_axi0_clk_ares>,
<&videocc_mvs0c_freerun_clk_ares>,
<&videocc_mvs0_freerun_clk_ares>,
<&gcc_video_axi1_clk_ares>,
<&videocc_mvs1_freerun_clk_ares>;
reset-names = "core_bus",
"vcodec0_bus",
"core",
"vcodec0_core",
"vcodec1_bus",
"vcodec1_core";
iris_opp_table: opp-table {
compatible = "operating-points-v2";
opp-240000000 {
opp-hz = /bits/ 64 <240000000 240000000 360000000>;
required-opps = <&rpmhpd_opp_svs>,
<&rpmhpd_opp_low_svs>;
};
opp-338000000 {
opp-hz = /bits/ 64 <338000000 338000000 507000000>;
required-opps = <&rpmhpd_opp_svs>,
<&rpmhpd_opp_svs>;
};
opp-366000000 {
opp-hz = /bits/ 64 <366000000 366000000 549000000>;
required-opps = <&rpmhpd_opp_svs_l1>,
<&rpmhpd_opp_svs_l1>;
};
opp-444000000 {
opp-hz = /bits/ 64 <444000000 444000000 666000000>;
required-opps = <&rpmhpd_opp_svs_l1>,
<&rpmhpd_opp_nom>;
};
opp-533333334 {
opp-hz = /bits/ 64 <533333334 533333334 800000000>;
required-opps = <&rpmhpd_opp_svs_l1>,
<&rpmhpd_opp_turbo>;
};
opp-655000000 {
opp-hz = /bits/ 64 <655000000 655000000 982000000>;
required-opps = <&rpmhpd_opp_nom>,
<&rpmhpd_opp_turbo_l1>;
};
};
};
@@ -20,11 +20,11 @@ properties:
clocks:
minItems: 3
maxItems: 7
maxItems: 9
clock-names:
minItems: 3
maxItems: 7
maxItems: 9
firmware-name:
maxItems: 1
@@ -41,11 +41,11 @@ properties:
power-domains:
minItems: 1
maxItems: 4
maxItems: 5
power-domain-names:
minItems: 1
maxItems: 4
maxItems: 5
required:
- reg
@@ -0,0 +1,11 @@
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
/*
* Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
*/
#ifndef _DT_BINDINGS_MEDIA_QCOM_GLYMUR_IRIS_H_
#define _DT_BINDINGS_MEDIA_QCOM_GLYMUR_IRIS_H_
#define IOMMU_FID_IRIS_FIRMWARE 0
#endif