GNU Linux-libre 5.19-rc6-gnu
[releases.git] / Documentation / devicetree / bindings / gpu / arm,mali-bifrost.yaml
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
7 title: ARM Mali Bifrost GPU
8
9 maintainers:
10   - Rob Herring <robh@kernel.org>
11
12 properties:
13   $nodename:
14     pattern: '^gpu@[a-f0-9]+$'
15
16   compatible:
17     items:
18       - enum:
19           - amlogic,meson-g12a-mali
20           - mediatek,mt8183-mali
21           - realtek,rtd1619-mali
22           - renesas,r9a07g044-mali
23           - renesas,r9a07g054-mali
24           - rockchip,px30-mali
25           - rockchip,rk3568-mali
26       - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable
27
28   reg:
29     maxItems: 1
30
31   interrupts:
32     minItems: 3
33     items:
34       - description: Job interrupt
35       - description: MMU interrupt
36       - description: GPU interrupt
37       - description: Event interrupt
38
39   interrupt-names:
40     minItems: 3
41     items:
42       - const: job
43       - const: mmu
44       - const: gpu
45       - const: event
46
47   clocks:
48     minItems: 1
49     maxItems: 3
50
51   clock-names: true
52
53   mali-supply: true
54
55   sram-supply: true
56
57   operating-points-v2: true
58
59   power-domains:
60     minItems: 1
61     maxItems: 3
62
63   resets:
64     minItems: 1
65     maxItems: 3
66
67   reset-names: true
68
69   "#cooling-cells":
70     const: 2
71
72   dynamic-power-coefficient:
73     $ref: '/schemas/types.yaml#/definitions/uint32'
74     description:
75       A u32 value that represents the running time dynamic
76       power coefficient in units of uW/MHz/V^2. The
77       coefficient can either be calculated from power
78       measurements or derived by analysis.
79
80       The dynamic power consumption of the GPU is
81       proportional to the square of the Voltage (V) and
82       the clock frequency (f). The coefficient is used to
83       calculate the dynamic power as below -
84
85       Pdyn = dynamic-power-coefficient * V^2 * f
86
87       where voltage is in V, frequency is in MHz.
88
89   dma-coherent: true
90
91 required:
92   - compatible
93   - reg
94   - interrupts
95   - interrupt-names
96   - clocks
97
98 additionalProperties: false
99
100 allOf:
101   - if:
102       properties:
103         compatible:
104           contains:
105             const: amlogic,meson-g12a-mali
106     then:
107       required:
108         - resets
109   - if:
110       properties:
111         compatible:
112           contains:
113             enum:
114               - renesas,r9a07g044-mali
115               - renesas,r9a07g054-mali
116     then:
117       properties:
118         interrupts:
119           minItems: 4
120         interrupt-names:
121           minItems: 4
122         clocks:
123           minItems: 3
124         clock-names:
125           items:
126             - const: gpu
127             - const: bus
128             - const: bus_ace
129         resets:
130           minItems: 3
131         reset-names:
132           items:
133             - const: rst
134             - const: axi_rst
135             - const: ace_rst
136       required:
137         - clock-names
138         - power-domains
139         - resets
140         - reset-names
141   - if:
142       properties:
143         compatible:
144           contains:
145             const: mediatek,mt8183-mali
146     then:
147       properties:
148         power-domains:
149           minItems: 3
150         power-domain-names:
151           items:
152             - const: core0
153             - const: core1
154             - const: core2
155
156       required:
157         - sram-supply
158         - power-domains
159         - power-domain-names
160     else:
161       properties:
162         power-domains:
163           maxItems: 1
164         sram-supply: false
165   - if:
166       properties:
167         compatible:
168           contains:
169             const: rockchip,rk3568-mali
170     then:
171       properties:
172         clocks:
173           minItems: 2
174         clock-names:
175           items:
176             - const: gpu
177             - const: bus
178       required:
179         - clock-names
180
181 examples:
182   - |
183     #include <dt-bindings/interrupt-controller/irq.h>
184     #include <dt-bindings/interrupt-controller/arm-gic.h>
185
186     gpu@ffe40000 {
187       compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
188       reg = <0xffe40000 0x10000>;
189       interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
190              <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
191              <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
192       interrupt-names = "job", "mmu", "gpu";
193       clocks = <&clk 1>;
194       mali-supply = <&vdd_gpu>;
195       operating-points-v2 = <&gpu_opp_table>;
196       resets = <&reset 0>, <&reset 1>;
197     };
198
199     gpu_opp_table: opp-table {
200       compatible = "operating-points-v2";
201
202       opp-533000000 {
203         opp-hz = /bits/ 64 <533000000>;
204         opp-microvolt = <1250000>;
205       };
206       opp-450000000 {
207         opp-hz = /bits/ 64 <450000000>;
208         opp-microvolt = <1150000>;
209       };
210       opp-400000000 {
211         opp-hz = /bits/ 64 <400000000>;
212         opp-microvolt = <1125000>;
213       };
214       opp-350000000 {
215         opp-hz = /bits/ 64 <350000000>;
216         opp-microvolt = <1075000>;
217       };
218       opp-266000000 {
219         opp-hz = /bits/ 64 <266000000>;
220         opp-microvolt = <1025000>;
221       };
222       opp-160000000 {
223         opp-hz = /bits/ 64 <160000000>;
224         opp-microvolt = <925000>;
225       };
226       opp-100000000 {
227         opp-hz = /bits/ 64 <100000000>;
228         opp-microvolt = <912500>;
229       };
230     };
231
232 ...