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