xref: /freebsd/sys/contrib/device-tree/Bindings/media/qcom,sc7180-venus.yaml (revision 7ef62cebc2f965b0f640263e179276928885e33d)
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    additionalProperties: false
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