GNU Linux-libre 6.1.90-gnu
[releases.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               - rockchip,rk3399-mali
46           - const: arm,mali-t860
47
48           # "arm,mali-t830"
49           # "arm,mali-t880"
50
51   reg:
52     maxItems: 1
53
54   interrupts:
55     items:
56       - description: Job interrupt
57       - description: MMU interrupt
58       - description: GPU interrupt
59
60   interrupt-names:
61     items:
62       - const: job
63       - const: mmu
64       - const: gpu
65
66   clocks:
67     minItems: 1
68     maxItems: 2
69
70   clock-names:
71     minItems: 1
72     items:
73       - const: core
74       - const: bus
75
76   mali-supply: true
77   opp-table:
78     type: object
79
80   power-domains:
81     maxItems: 1
82
83   resets:
84     minItems: 1
85     maxItems: 2
86
87   operating-points-v2: true
88
89   "#cooling-cells":
90     const: 2
91
92   dma-coherent: true
93
94   dynamic-power-coefficient:
95     $ref: '/schemas/types.yaml#/definitions/uint32'
96     description:
97       A u32 value that represents the running time dynamic
98       power coefficient in units of uW/MHz/V^2. The
99       coefficient can either be calculated from power
100       measurements or derived by analysis.
101
102       The dynamic power consumption of the GPU is
103       proportional to the square of the Voltage (V) and
104       the clock frequency (f). The coefficient is used to
105       calculate the dynamic power as below -
106
107       Pdyn = dynamic-power-coefficient * V^2 * f
108
109       where voltage is in V, frequency is in MHz.
110
111 required:
112   - compatible
113   - reg
114   - interrupts
115   - interrupt-names
116   - clocks
117
118 additionalProperties: false
119
120 allOf:
121   - if:
122       properties:
123         compatible:
124           contains:
125             const: allwinner,sun50i-h6-mali
126     then:
127       properties:
128         clocks:
129           minItems: 2
130       required:
131         - clock-names
132         - resets
133   - if:
134       properties:
135         compatible:
136           contains:
137             const: amlogic,meson-gxm-mali
138     then:
139       properties:
140         resets:
141           minItems: 2
142       required:
143         - resets
144
145 examples:
146   - |
147     #include <dt-bindings/interrupt-controller/irq.h>
148     #include <dt-bindings/interrupt-controller/arm-gic.h>
149
150     gpu@ffa30000 {
151       compatible = "rockchip,rk3288-mali", "arm,mali-t760";
152       reg = <0xffa30000 0x10000>;
153       interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
154              <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
155              <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
156       interrupt-names = "job", "mmu", "gpu";
157       clocks = <&cru 0>;
158       mali-supply = <&vdd_gpu>;
159       operating-points-v2 = <&gpu_opp_table>;
160       power-domains = <&power 0>;
161       #cooling-cells = <2>;
162     };
163
164     gpu_opp_table: opp-table {
165       compatible = "operating-points-v2";
166
167       opp-533000000 {
168         opp-hz = /bits/ 64 <533000000>;
169         opp-microvolt = <1250000>;
170       };
171       opp-450000000 {
172         opp-hz = /bits/ 64 <450000000>;
173         opp-microvolt = <1150000>;
174       };
175       opp-400000000 {
176         opp-hz = /bits/ 64 <400000000>;
177         opp-microvolt = <1125000>;
178       };
179       opp-350000000 {
180         opp-hz = /bits/ 64 <350000000>;
181         opp-microvolt = <1075000>;
182       };
183       opp-266000000 {
184         opp-hz = /bits/ 64 <266000000>;
185         opp-microvolt = <1025000>;
186       };
187       opp-160000000 {
188         opp-hz = /bits/ 64 <160000000>;
189         opp-microvolt = <925000>;
190       };
191       opp-100000000 {
192         opp-hz = /bits/ 64 <100000000>;
193         opp-microvolt = <912500>;
194       };
195     };
196
197 ...