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,sm8250-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 IP is a video encode and decode accelerator present
15  on Qualcomm platforms
16
17properties:
18  compatible:
19    const: qcom,sm8250-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    maxItems: 3
34    items:
35      - const: venus
36      - const: vcodec0
37      - const: mx
38
39  clocks:
40    maxItems: 3
41
42  clock-names:
43    items:
44      - const: iface
45      - const: core
46      - const: vcodec0_core
47
48  iommus:
49    maxItems: 1
50
51  memory-region:
52    maxItems: 1
53
54  interconnects:
55    maxItems: 2
56
57  interconnect-names:
58    items:
59      - const: cpu-cfg
60      - const: video-mem
61
62  resets:
63    maxItems: 2
64
65  reset-names:
66    items:
67      - const: bus
68      - const: core
69
70  video-decoder:
71    type: object
72
73    properties:
74      compatible:
75        const: venus-decoder
76
77    required:
78      - compatible
79
80    additionalProperties: false
81
82  video-encoder:
83    type: object
84
85    properties:
86      compatible:
87        const: venus-encoder
88
89    required:
90      - compatible
91
92    additionalProperties: false
93
94  video-firmware:
95    type: object
96
97    description: |
98      Firmware subnode is needed when the platform does not
99      have TrustZone.
100
101    properties:
102      iommus:
103        maxItems: 1
104
105    required:
106      - iommus
107
108required:
109  - compatible
110  - reg
111  - interrupts
112  - power-domains
113  - power-domain-names
114  - clocks
115  - clock-names
116  - interconnects
117  - interconnect-names
118  - iommus
119  - memory-region
120  - resets
121  - reset-names
122  - video-decoder
123  - video-encoder
124
125additionalProperties: false
126
127examples:
128  - |
129        #include <dt-bindings/interrupt-controller/arm-gic.h>
130        #include <dt-bindings/clock/qcom,videocc-sm8250.h>
131        #include <dt-bindings/interconnect/qcom,sm8250.h>
132        #include <dt-bindings/clock/qcom,gcc-sm8250.h>
133        #include <dt-bindings/power/qcom-rpmpd.h>
134
135        venus: video-codec@aa00000 {
136            compatible = "qcom,sm8250-venus";
137            reg = <0x0aa00000 0xff000>;
138            interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
139            power-domains = <&videocc MVS0C_GDSC>,
140                            <&videocc MVS0_GDSC>,
141                            <&rpmhpd SM8250_MX>;
142            power-domain-names = "venus", "vcodec0", "mx";
143
144            clocks = <&gcc GCC_VIDEO_AXI0_CLK>,
145                     <&videocc VIDEO_CC_MVS0C_CLK>,
146                     <&videocc VIDEO_CC_MVS0_CLK>;
147            clock-names = "iface", "core", "vcodec0_core";
148
149            interconnects = <&gem_noc MASTER_AMPSS_M0 &config_noc SLAVE_VENUS_CFG>,
150                            <&mmss_noc MASTER_VIDEO_P0 &mc_virt SLAVE_EBI_CH0>;
151            interconnect-names = "cpu-cfg", "video-mem";
152
153            iommus = <&apps_smmu 0x2100 0x0400>;
154            memory-region = <&video_mem>;
155
156            resets = <&gcc GCC_VIDEO_AXI0_CLK_ARES>,
157                     <&videocc VIDEO_CC_MVS0C_CLK_ARES>;
158            reset-names = "bus", "core";
159
160            video-decoder {
161                compatible = "venus-decoder";
162            };
163
164            video-encoder {
165                compatible = "venus-encoder";
166            };
167        };
168