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