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,sc7180-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,sc7180-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: cx
38
39  clocks:
40    maxItems: 5
41
42  clock-names:
43    items:
44      - const: core
45      - const: iface
46      - const: bus
47      - const: vcodec0_core
48      - const: vcodec0_bus
49
50  iommus:
51    maxItems: 1
52
53  memory-region:
54    maxItems: 1
55
56  interconnects:
57    maxItems: 2
58
59  interconnect-names:
60    items:
61      - const: video-mem
62      - const: cpu-cfg
63
64  video-decoder:
65    type: object
66
67    properties:
68      compatible:
69        const: venus-decoder
70
71    required:
72      - compatible
73
74    additionalProperties: false
75
76  video-encoder:
77    type: object
78
79    properties:
80      compatible:
81        const: venus-encoder
82
83    required:
84      - compatible
85
86    additionalProperties: false
87
88  video-firmware:
89    type: object
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-sc7180.h>
121
122        venus: video-codec@aa00000 {
123                compatible = "qcom,sc7180-venus";
124                reg = <0x0aa00000 0xff000>;
125                interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
126                power-domains = <&videocc VENUS_GDSC>,
127                                <&videocc VCODEC0_GDSC>;
128                power-domain-names = "venus", "vcodec0";
129                clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
130                         <&videocc VIDEO_CC_VENUS_AHB_CLK>,
131                         <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
132                         <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
133                         <&videocc VIDEO_CC_VCODEC0_AXI_CLK>;
134                clock-names = "core", "iface", "bus",
135                              "vcodec0_core", "vcodec0_bus";
136                iommus = <&apps_smmu 0x0c00 0x60>;
137                memory-region = <&venus_mem>;
138
139                video-decoder {
140                        compatible = "venus-decoder";
141                };
142
143                video-encoder {
144                        compatible = "venus-encoder";
145                };
146        };
147