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