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-only
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/gpu/arm,mali-bifrost.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: ARM Mali Bifrost GPU
8
9maintainers:
10 - Rob Herring <robh@kernel.org>
11
12properties:
13 $nodename:
14 pattern: '^gpu@[a-f0-9]+$'
15
16 compatible:
17 oneOf:
18 - items:
19 - enum:
20 - amlogic,meson-g12a-mali
21 - mediatek,mt8183-mali
22 - mediatek,mt8183b-mali
23 - mediatek,mt8186-mali
24 - realtek,rtd1619-mali
25 - renesas,r9a07g044-mali
26 - renesas,r9a07g054-mali
27 - rockchip,px30-mali
28 - rockchip,rk3568-mali
29 - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable
30 - items:
31 - enum:
32 - mediatek,mt8195-mali
33 - const: mediatek,mt8192-mali
34 - const: arm,mali-valhall-jm # Mali Valhall GPU model/revision is fully discoverable
35 - items:
36 - enum:
37 - mediatek,mt8188-mali
38 - mediatek,mt8192-mali
39 - const: arm,mali-valhall-jm # Mali Valhall GPU model/revision is fully discoverable
40
41 reg:
42 maxItems: 1
43
44 interrupts:
45 minItems: 3
46 items:
47 - description: Job interrupt
48 - description: MMU interrupt
49 - description: GPU interrupt
50 - description: Event interrupt
51
52 interrupt-names:
53 minItems: 3
54 items:
55 - const: job
56 - const: mmu
57 - const: gpu
58 - const: event
59
60 clocks:
61 minItems: 1
62 maxItems: 3
63
64 clock-names: true
65
66 mali-supply: true
67
68 sram-supply: true
69
70 operating-points-v2: true
71
72 power-domains:
73 minItems: 1
74 maxItems: 5
75
76 power-domain-names:
77 minItems: 2
78 maxItems: 5
79
80 resets:
81 minItems: 1
82 maxItems: 3
83
84 reset-names: true
85
86 "#cooling-cells":
87 const: 2
88
89 dynamic-power-coefficient:
90 $ref: /schemas/types.yaml#/definitions/uint32
91 description:
92 A u32 value that represents the running time dynamic
93 power coefficient in units of uW/MHz/V^2. The
94 coefficient can either be calculated from power
95 measurements or derived by analysis.
96
97 The dynamic power consumption of the GPU is
98 proportional to the square of the Voltage (V) and
99 the clock frequency (f). The coefficient is used to
100 calculate the dynamic power as below -
101
102 Pdyn = dynamic-power-coefficient * V^2 * f
103
104 where voltage is in V, frequency is in MHz.
105
106 dma-coherent: true
107
108 nvmem-cell-names:
109 items:
110 - const: speed-bin
111
112 nvmem-cells:
113 maxItems: 1
114
115required:
116 - compatible
117 - reg
118 - interrupts
119 - interrupt-names
120 - clocks
121
122additionalProperties: false
123
124allOf:
125 - if:
126 properties:
127 compatible:
128 contains:
129 const: amlogic,meson-g12a-mali
130 then:
131 properties:
132 power-domains:
133 maxItems: 1
134 power-domain-names: false
135 required:
136 - resets
137 - if:
138 properties:
139 compatible:
140 contains:
141 enum:
142 - renesas,r9a07g044-mali
143 - renesas,r9a07g054-mali
144 then:
145 properties:
146 interrupts:
147 minItems: 4
148 interrupt-names:
149 minItems: 4
150 clocks:
151 minItems: 3
152 clock-names:
153 items:
154 - const: gpu
155 - const: bus
156 - const: bus_ace
157 power-domains:
158 maxItems: 1
159 power-domain-names: false
160 resets:
161 minItems: 3
162 reset-names:
163 items:
164 - const: rst
165 - const: axi_rst
166 - const: ace_rst
167 required:
168 - clock-names
169 - power-domains
170 - resets
171 - reset-names
172 - if:
173 properties:
174 compatible:
175 contains:
176 const: mediatek,mt8183-mali
177 then:
178 properties:
179 power-domains:
180 minItems: 3
181 maxItems: 3
182 power-domain-names:
183 items:
184 - const: core0
185 - const: core1
186 - const: core2
187
188 required:
189 - sram-supply
190 - power-domains
191 - power-domain-names
192 else:
193 properties:
194 sram-supply: false
195 - if:
196 properties:
197 compatible:
198 contains:
199 enum:
200 - mediatek,mt8183b-mali
201 - mediatek,mt8188-mali
202 then:
203 properties:
204 power-domains:
205 minItems: 3
206 maxItems: 3
207 power-domain-names:
208 items:
209 - const: core0
210 - const: core1
211 - const: core2
212 required:
213 - power-domains
214 - power-domain-names
215 - if:
216 properties:
217 compatible:
218 contains:
219 const: mediatek,mt8186-mali
220 then:
221 properties:
222 power-domains:
223 minItems: 2
224 maxItems: 2
225 power-domain-names:
226 items:
227 - const: core0
228 - const: core1
229 required:
230 - power-domains
231 - power-domain-names
232 - if:
233 properties:
234 compatible:
235 contains:
236 const: mediatek,mt8192-mali
237 then:
238 properties:
239 power-domains:
240 minItems: 5
241 power-domain-names:
242 items:
243 - const: core0
244 - const: core1
245 - const: core2
246 - const: core3
247 - const: core4
248 required:
249 - power-domains
250 - power-domain-names
251 - if:
252 properties:
253 compatible:
254 contains:
255 const: rockchip,rk3568-mali
256 then:
257 properties:
258 clocks:
259 minItems: 2
260 clock-names:
261 items:
262 - const: gpu
263 - const: bus
264 power-domains:
265 maxItems: 1
266 power-domain-names: false
267 required:
268 - clock-names
269
270examples:
271 - |
272 #include <dt-bindings/interrupt-controller/irq.h>
273 #include <dt-bindings/interrupt-controller/arm-gic.h>
274
275 gpu@ffe40000 {
276 compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
277 reg = <0xffe40000 0x10000>;
278 interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
279 <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
280 <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
281 interrupt-names = "job", "mmu", "gpu";
282 clocks = <&clk 1>;
283 mali-supply = <&vdd_gpu>;
284 operating-points-v2 = <&gpu_opp_table>;
285 resets = <&reset 0>, <&reset 1>;
286 };
287
288 gpu_opp_table: opp-table {
289 compatible = "operating-points-v2";
290
291 opp-533000000 {
292 opp-hz = /bits/ 64 <533000000>;
293 opp-microvolt = <1250000>;
294 };
295 opp-450000000 {
296 opp-hz = /bits/ 64 <450000000>;
297 opp-microvolt = <1150000>;
298 };
299 opp-400000000 {
300 opp-hz = /bits/ 64 <400000000>;
301 opp-microvolt = <1125000>;
302 };
303 opp-350000000 {
304 opp-hz = /bits/ 64 <350000000>;
305 opp-microvolt = <1075000>;
306 };
307 opp-266000000 {
308 opp-hz = /bits/ 64 <266000000>;
309 opp-microvolt = <1025000>;
310 };
311 opp-160000000 {
312 opp-hz = /bits/ 64 <160000000>;
313 opp-microvolt = <925000>;
314 };
315 opp-100000000 {
316 opp-hz = /bits/ 64 <100000000>;
317 opp-microvolt = <912500>;
318 };
319 };
320
321...