Linux 6.9-rc1
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / gpu / arm,mali-midgard.yaml
1 # SPDX-License-Identifier: GPL-2.0-only
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/gpu/arm,mali-midgard.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: ARM Mali Midgard GPU
8
9 maintainers:
10   - Rob Herring <robh@kernel.org>
11
12 properties:
13   $nodename:
14     pattern: '^gpu@[a-f0-9]+$'
15   compatible:
16     oneOf:
17       - items:
18           - enum:
19               - samsung,exynos5250-mali
20           - const: arm,mali-t604
21       - items:
22           - enum:
23               - samsung,exynos5420-mali
24           - const: arm,mali-t628
25       - items:
26           - enum:
27               - allwinner,sun50i-h6-mali
28           - const: arm,mali-t720
29       - items:
30           - enum:
31               - amlogic,meson-gxm-mali
32               - realtek,rtd1295-mali
33           - const: arm,mali-t820
34       - items:
35           - enum:
36               - arm,juno-mali
37           - const: arm,mali-t624
38       - items:
39           - enum:
40               - rockchip,rk3288-mali
41               - samsung,exynos5433-mali
42           - const: arm,mali-t760
43       - items:
44           - enum:
45               - samsung,exynos7-mali
46           - const: samsung,exynos5433-mali
47           - const: arm,mali-t760
48       - items:
49           - enum:
50               - rockchip,rk3399-mali
51           - const: arm,mali-t860
52
53           # "arm,mali-t830"
54           # "arm,mali-t880"
55
56   reg:
57     maxItems: 1
58
59   interrupts:
60     items:
61       - description: Job interrupt
62       - description: MMU interrupt
63       - description: GPU interrupt
64
65   interrupt-names:
66     items:
67       - const: job
68       - const: mmu
69       - const: gpu
70
71   clocks:
72     minItems: 1
73     maxItems: 2
74
75   clock-names:
76     minItems: 1
77     items:
78       - const: core
79       - const: bus
80
81   mali-supply: true
82   opp-table:
83     type: object
84
85   power-domains:
86     maxItems: 1
87
88   resets:
89     minItems: 1
90     maxItems: 2
91
92   operating-points-v2: true
93
94   "#cooling-cells":
95     const: 2
96
97   dma-coherent: true
98
99   dynamic-power-coefficient:
100     $ref: /schemas/types.yaml#/definitions/uint32
101     description:
102       A u32 value that represents the running time dynamic
103       power coefficient in units of uW/MHz/V^2. The
104       coefficient can either be calculated from power
105       measurements or derived by analysis.
106
107       The dynamic power consumption of the GPU is
108       proportional to the square of the Voltage (V) and
109       the clock frequency (f). The coefficient is used to
110       calculate the dynamic power as below -
111
112       Pdyn = dynamic-power-coefficient * V^2 * f
113
114       where voltage is in V, frequency is in MHz.
115
116 required:
117   - compatible
118   - reg
119   - interrupts
120   - interrupt-names
121   - clocks
122
123 additionalProperties: false
124
125 allOf:
126   - if:
127       properties:
128         compatible:
129           contains:
130             const: allwinner,sun50i-h6-mali
131     then:
132       properties:
133         clocks:
134           minItems: 2
135       required:
136         - clock-names
137         - resets
138   - if:
139       properties:
140         compatible:
141           contains:
142             const: amlogic,meson-gxm-mali
143     then:
144       properties:
145         resets:
146           minItems: 2
147       required:
148         - resets
149
150 examples:
151   - |
152     #include <dt-bindings/interrupt-controller/irq.h>
153     #include <dt-bindings/interrupt-controller/arm-gic.h>
154
155     gpu@ffa30000 {
156       compatible = "rockchip,rk3288-mali", "arm,mali-t760";
157       reg = <0xffa30000 0x10000>;
158       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
159              <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
160              <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
161       interrupt-names = "job", "mmu", "gpu";
162       clocks = <&cru 0>;
163       mali-supply = <&vdd_gpu>;
164       operating-points-v2 = <&gpu_opp_table>;
165       power-domains = <&power 0>;
166       #cooling-cells = <2>;
167     };
168
169     gpu_opp_table: opp-table {
170       compatible = "operating-points-v2";
171
172       opp-533000000 {
173         opp-hz = /bits/ 64 <533000000>;
174         opp-microvolt = <1250000>;
175       };
176       opp-450000000 {
177         opp-hz = /bits/ 64 <450000000>;
178         opp-microvolt = <1150000>;
179       };
180       opp-400000000 {
181         opp-hz = /bits/ 64 <400000000>;
182         opp-microvolt = <1125000>;
183       };
184       opp-350000000 {
185         opp-hz = /bits/ 64 <350000000>;
186         opp-microvolt = <1075000>;
187       };
188       opp-266000000 {
189         opp-hz = /bits/ 64 <266000000>;
190         opp-microvolt = <1025000>;
191       };
192       opp-160000000 {
193         opp-hz = /bits/ 64 <160000000>;
194         opp-microvolt = <925000>;
195       };
196       opp-100000000 {
197         opp-hz = /bits/ 64 <100000000>;
198         opp-microvolt = <912500>;
199       };
200     };
201
202 ...