1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/media/qcom,sc7180-venus.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm SC7180 Venus video encode and decode accelerators
8
9maintainers:
10  - Stanimir Varbanov <stanimir.varbanov@linaro.org>
11
12description: |
13  The Venus IP is a video encode and decode accelerator present
14  on Qualcomm platforms
15
16properties:
17  compatible:
18    const: qcom,sc7180-venus
19
20  reg:
21    maxItems: 1
22
23  interrupts:
24    maxItems: 1
25
26  power-domains:
27    minItems: 2
28    maxItems: 3
29
30  power-domain-names:
31    minItems: 2
32    items:
33      - const: venus
34      - const: vcodec0
35      - const: cx
36
37  clocks:
38    maxItems: 5
39
40  clock-names:
41    items:
42      - const: core
43      - const: iface
44      - const: bus
45      - const: vcodec0_core
46      - const: vcodec0_bus
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: video-mem
60      - const: cpu-cfg
61
62  video-decoder:
63    type: object
64
65    properties:
66      compatible:
67        const: venus-decoder
68
69    required:
70      - compatible
71
72    additionalProperties: false
73
74  video-encoder:
75    type: object
76
77    properties:
78      compatible:
79        const: venus-encoder
80
81    required:
82      - compatible
83
84    additionalProperties: false
85
86  video-firmware:
87    type: object
88    additionalProperties: false
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