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,sdm845-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,sdm845-venus
20
21  reg:
22    maxItems: 1
23
24  interrupts:
25    maxItems: 1
26
27  power-domains:
28    maxItems: 1
29
30  clocks:
31    maxItems: 3
32
33  clock-names:
34    items:
35      - const: core
36      - const: iface
37      - const: bus
38
39  iommus:
40    maxItems: 2
41
42  memory-region:
43    maxItems: 1
44
45  video-core0:
46    type: object
47
48    properties:
49      compatible:
50        const: venus-decoder
51
52      clocks:
53        maxItems: 2
54
55      clock-names:
56        items:
57          - const: core
58          - const: bus
59
60      power-domains:
61        maxItems: 1
62
63    required:
64      - compatible
65      - clocks
66      - clock-names
67      - power-domains
68
69    additionalProperties: false
70
71  video-core1:
72    type: object
73
74    properties:
75      compatible:
76        const: venus-encoder
77
78      clocks:
79        maxItems: 2
80
81      clock-names:
82        items:
83          - const: core
84          - const: bus
85
86      power-domains:
87        maxItems: 1
88
89    required:
90      - compatible
91      - clocks
92      - clock-names
93      - power-domains
94
95    additionalProperties: false
96
97  video-firmware:
98    type: object
99    additionalProperties: false
100
101    description: |
102      Firmware subnode is needed when the platform does not
103      have TrustZone.
104
105    properties:
106      iommus:
107        maxItems: 1
108
109    required:
110      - iommus
111
112required:
113  - compatible
114  - reg
115  - interrupts
116  - power-domains
117  - clocks
118  - clock-names
119  - iommus
120  - memory-region
121  - video-core0
122  - video-core1
123
124additionalProperties: false
125
126examples:
127  - |
128        #include <dt-bindings/interrupt-controller/arm-gic.h>
129        #include <dt-bindings/clock/qcom,videocc-sdm845.h>
130
131        video-codec@aa00000 {
132                compatible = "qcom,sdm845-venus";
133                reg = <0x0aa00000 0xff000>;
134                interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
135                clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
136                         <&videocc VIDEO_CC_VENUS_AHB_CLK>,
137                         <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>;
138                clock-names = "core", "iface", "bus";
139                power-domains = <&videocc VENUS_GDSC>;
140                iommus = <&apps_smmu 0x10a0 0x8>,
141                         <&apps_smmu 0x10b0 0x0>;
142                memory-region = <&venus_mem>;
143
144                video-core0 {
145                        compatible = "venus-decoder";
146                        clocks = <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
147                                 <&videocc VIDEO_CC_VCODEC0_AXI_CLK>;
148                        clock-names = "core", "bus";
149                        power-domains = <&videocc VCODEC0_GDSC>;
150                };
151
152                video-core1 {
153                        compatible = "venus-encoder";
154                        clocks = <&videocc VIDEO_CC_VCODEC1_CORE_CLK>,
155                                 <&videocc VIDEO_CC_VCODEC1_AXI_CLK>;
156                        clock-names = "core", "bus";
157                        power-domains = <&videocc VCODEC1_GDSC>;
158                };
159        };
160