1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2
3%YAML 1.2
4---
5$id: "http://devicetree.org/schemas/media/qcom,sc7280-venus.yaml#"
6$schema: "http://devicetree.org/meta-schemas/core.yaml#"
7
8title: Qualcomm Venus video encode and decode accelerators
9
10maintainers:
11  - Stanimir Varbanov <stanimir.varbanov@linaro.org>
12
13description: |
14  The Venus Iris2 IP is a video encode and decode accelerator present
15  on Qualcomm platforms
16
17properties:
18  compatible:
19    const: qcom,sc7280-venus
20
21  reg:
22    maxItems: 1
23
24  interrupts:
25    maxItems: 1
26
27  power-domains:
28    minItems: 2
29    maxItems: 3
30
31  power-domain-names:
32    minItems: 2
33    items:
34      - const: venus
35      - const: vcodec0
36      - const: cx
37
38  clocks:
39    maxItems: 5
40
41  clock-names:
42    items:
43      - const: core
44      - const: bus
45      - const: iface
46      - const: vcodec_core
47      - const: vcodec_bus
48
49  iommus:
50    maxItems: 2
51
52  memory-region:
53    maxItems: 1
54
55  interconnects:
56    maxItems: 2
57
58  interconnect-names:
59    items:
60      - const: cpu-cfg
61      - const: video-mem
62
63  video-decoder:
64    type: object
65
66    properties:
67      compatible:
68        const: venus-decoder
69
70    required:
71      - compatible
72
73    additionalProperties: false
74
75  video-encoder:
76    type: object
77
78    properties:
79      compatible:
80        const: venus-encoder
81
82    required:
83      - compatible
84
85    additionalProperties: false
86
87  video-firmware:
88    type: object
89
90    description: |
91      Firmware subnode is needed when the platform does not
92      have TrustZone.
93
94    properties:
95      iommus:
96        maxItems: 1
97
98    required:
99      - iommus
100
101required:
102  - compatible
103  - reg
104  - interrupts
105  - power-domains
106  - power-domain-names
107  - clocks
108  - clock-names
109  - iommus
110  - memory-region
111  - video-decoder
112  - video-encoder
113
114additionalProperties: false
115
116examples:
117  - |
118        #include <dt-bindings/interrupt-controller/arm-gic.h>
119        #include <dt-bindings/clock/qcom,videocc-sc7280.h>
120        #include <dt-bindings/interconnect/qcom,sc7280.h>
121        #include <dt-bindings/power/qcom-rpmpd.h>
122
123        venus: video-codec@aa00000 {
124                compatible = "qcom,sc7280-venus";
125                reg = <0x0aa00000 0xd0600>;
126                interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
127
128                clocks = <&videocc VIDEO_CC_MVSC_CORE_CLK>,
129                         <&videocc VIDEO_CC_MVSC_CTL_AXI_CLK>,
130                         <&videocc VIDEO_CC_VENUS_AHB_CLK>,
131                         <&videocc VIDEO_CC_MVS0_CORE_CLK>,
132                         <&videocc VIDEO_CC_MVS0_AXI_CLK>;
133                clock-names = "core", "bus", "iface",
134                              "vcodec_core", "vcodec_bus";
135
136                power-domains = <&videocc MVSC_GDSC>,
137                                <&videocc MVS0_GDSC>,
138                                <&rpmhpd SC7280_CX>;
139                power-domain-names = "venus", "vcodec0", "cx";
140
141                interconnects = <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_VENUS_CFG 0>,
142                                <&mmss_noc MASTER_VIDEO_P0 0 &mc_virt SLAVE_EBI1 0>;
143                interconnect-names = "cpu-cfg", "video-mem";
144
145                iommus = <&apps_smmu 0x2180 0x20>,
146                         <&apps_smmu 0x2184 0x20>;
147
148                memory-region = <&video_mem>;
149
150                video-decoder {
151                        compatible = "venus-decoder";
152                };
153
154                video-encoder {
155                        compatible = "venus-encoder";
156                };
157
158                video-firmware {
159                        iommus = <&apps_smmu 0x21a2 0x0>;
160                };
161        };
162