Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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,msm8996-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,msm8996-venus
20
21 reg:
22 maxItems: 1
23
24 interrupts:
25 maxItems: 1
26
27 power-domains:
28 maxItems: 1
29
30 clocks:
31 maxItems: 4
32
33 clock-names:
34 items:
35 - const: core
36 - const: iface
37 - const: bus
38 - const: mbus
39
40 iommus:
41 maxItems: 20
42
43 memory-region:
44 maxItems: 1
45
46 video-decoder:
47 type: object
48
49 properties:
50 compatible:
51 const: venus-decoder
52
53 clocks:
54 maxItems: 1
55
56 clock-names:
57 items:
58 - const: core
59
60 power-domains:
61 maxItems: 1
62
63 required:
64 - compatible
65 - clocks
66 - clock-names
67 - power-domains
68
69 additionalProperties: false
70
71 video-encoder:
72 type: object
73
74 properties:
75 compatible:
76 const: venus-encoder
77
78 clocks:
79 maxItems: 1
80
81 clock-names:
82 items:
83 - const: core
84
85 power-domains:
86 maxItems: 1
87
88 required:
89 - compatible
90 - clocks
91 - clock-names
92 - power-domains
93
94 additionalProperties: false
95
96 video-firmware:
97 type: object
98 additionalProperties: false
99
100 description: |
101 Firmware subnode is needed when the platform does not
102 have TrustZone.
103
104 properties:
105 iommus:
106 maxItems: 1
107
108 required:
109 - iommus
110
111required:
112 - compatible
113 - reg
114 - interrupts
115 - power-domains
116 - clocks
117 - clock-names
118 - iommus
119 - memory-region
120 - video-decoder
121 - video-encoder
122
123additionalProperties: false
124
125examples:
126 - |
127 #include <dt-bindings/interrupt-controller/arm-gic.h>
128 #include <dt-bindings/clock/qcom,mmcc-msm8996.h>
129
130 video-codec@c00000 {
131 compatible = "qcom,msm8996-venus";
132 reg = <0x00c00000 0xff000>;
133 interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
134 clocks = <&mmcc VIDEO_CORE_CLK>,
135 <&mmcc VIDEO_AHB_CLK>,
136 <&mmcc VIDEO_AXI_CLK>,
137 <&mmcc VIDEO_MAXI_CLK>;
138 clock-names = "core", "iface", "bus", "mbus";
139 power-domains = <&mmcc VENUS_GDSC>;
140 iommus = <&venus_smmu 0x00>,
141 <&venus_smmu 0x01>,
142 <&venus_smmu 0x0a>,
143 <&venus_smmu 0x07>,
144 <&venus_smmu 0x0e>,
145 <&venus_smmu 0x0f>,
146 <&venus_smmu 0x08>,
147 <&venus_smmu 0x09>,
148 <&venus_smmu 0x0b>,
149 <&venus_smmu 0x0c>,
150 <&venus_smmu 0x0d>,
151 <&venus_smmu 0x10>,
152 <&venus_smmu 0x11>,
153 <&venus_smmu 0x21>,
154 <&venus_smmu 0x28>,
155 <&venus_smmu 0x29>,
156 <&venus_smmu 0x2b>,
157 <&venus_smmu 0x2c>,
158 <&venus_smmu 0x2d>,
159 <&venus_smmu 0x31>;
160 memory-region = <&venus_mem>;
161
162 video-decoder {
163 compatible = "venus-decoder";
164 clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
165 clock-names = "core";
166 power-domains = <&mmcc VENUS_CORE0_GDSC>;
167 };
168
169 video-encoder {
170 compatible = "venus-encoder";
171 clocks = <&mmcc VIDEO_SUBCORE1_CLK>;
172 clock-names = "core";
173 power-domains = <&mmcc VENUS_CORE1_GDSC>;
174 };
175 };