xref: /linux/Documentation/devicetree/bindings/gpu/arm,mali-bifrost.yaml (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
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...
322