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    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: iface
45      - const: bus
46      - const: vcodec0_core
47      - const: vcodec0_bus
48
49  iommus:
50    maxItems: 1
51
52  memory-region:
53    maxItems: 1
54
55  interconnects:
56    maxItems: 2
57
58  interconnect-names:
59    items:
60      - const: video-mem
61      - const: cpu-cfg
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
90    description: |
91      Firmware subnode is needed when the platform does not
92      have TrustZone.
93
94    properties:
95      iommus:
96        maxItems: 1
97
98    required:
99      - iommus
100
101required:
102  - compatible
103  - reg
104  - interrupts
105  - power-domains
106  - power-domain-names
107  - clocks
108  - clock-names
109  - iommus
110  - memory-region
111  - video-decoder
112  - video-encoder
113
114additionalProperties: false
115
116examples:
117  - |
118        #include <dt-bindings/interrupt-controller/arm-gic.h>
119        #include <dt-bindings/clock/qcom,videocc-sc7180.h>
120
121        venus: video-codec@aa00000 {
122                compatible = "qcom,sc7180-venus";
123                reg = <0x0aa00000 0xff000>;
124                interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
125                power-domains = <&videocc VENUS_GDSC>,
126                                <&videocc VCODEC0_GDSC>;
127                power-domain-names = "venus", "vcodec0";
128                clocks = <&videocc VIDEO_CC_VENUS_CTL_CORE_CLK>,
129                         <&videocc VIDEO_CC_VENUS_AHB_CLK>,
130                         <&videocc VIDEO_CC_VENUS_CTL_AXI_CLK>,
131                         <&videocc VIDEO_CC_VCODEC0_CORE_CLK>,
132                         <&videocc VIDEO_CC_VCODEC0_AXI_CLK>;
133                clock-names = "core", "iface", "bus",
134                              "vcodec0_core", "vcodec0_bus";
135                iommus = <&apps_smmu 0x0c00 0x60>;
136                memory-region = <&venus_mem>;
137
138                video-decoder {
139                        compatible = "venus-decoder";
140                };
141
142                video-encoder {
143                        compatible = "venus-encoder";
144                };
145        };
146