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    additionalProperties: false
90
91    description: |
92      Firmware subnode is needed when the platform does not
93      have TrustZone.
94
95    properties:
96      iommus:
97        maxItems: 1
98
99    required:
100      - iommus
101
102required:
103  - compatible
104  - reg
105  - interrupts
106  - power-domains
107  - power-domain-names
108  - clocks
109  - clock-names
110  - iommus
111  - memory-region
112  - video-decoder
113  - video-encoder
114
115additionalProperties: false
116
117examples:
118  - |
119        #include <dt-bindings/interrupt-controller/arm-gic.h>
120        #include <dt-bindings/clock/qcom,videocc-sc7280.h>
121        #include <dt-bindings/interconnect/qcom,sc7280.h>
122        #include <dt-bindings/power/qcom-rpmpd.h>
123
124        venus: video-codec@aa00000 {
125                compatible = "qcom,sc7280-venus";
126                reg = <0x0aa00000 0xd0600>;
127                interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
128
129                clocks = <&videocc VIDEO_CC_MVSC_CORE_CLK>,
130                         <&videocc VIDEO_CC_MVSC_CTL_AXI_CLK>,
131                         <&videocc VIDEO_CC_VENUS_AHB_CLK>,
132                         <&videocc VIDEO_CC_MVS0_CORE_CLK>,
133                         <&videocc VIDEO_CC_MVS0_AXI_CLK>;
134                clock-names = "core", "bus", "iface",
135                              "vcodec_core", "vcodec_bus";
136
137                power-domains = <&videocc MVSC_GDSC>,
138                                <&videocc MVS0_GDSC>,
139                                <&rpmhpd SC7280_CX>;
140                power-domain-names = "venus", "vcodec0", "cx";
141
142                interconnects = <&gem_noc MASTER_APPSS_PROC 0 &cnoc2 SLAVE_VENUS_CFG 0>,
143                                <&mmss_noc MASTER_VIDEO_P0 0 &mc_virt SLAVE_EBI1 0>;
144                interconnect-names = "cpu-cfg", "video-mem";
145
146                iommus = <&apps_smmu 0x2180 0x20>,
147                         <&apps_smmu 0x2184 0x20>;
148
149                memory-region = <&video_mem>;
150
151                video-decoder {
152                        compatible = "venus-decoder";
153                };
154
155                video-encoder {
156                        compatible = "venus-encoder";
157                };
158
159                video-firmware {
160                        iommus = <&apps_smmu 0x21a2 0x0>;
161                };
162        };
163