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
7title: ARM Mali Midgard GPU
8
9maintainers:
10  - Rob Herring <robh@kernel.org>
11
12properties:
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
116required:
117  - compatible
118  - reg
119  - interrupts
120  - interrupt-names
121  - clocks
122
123additionalProperties: false
124
125allOf:
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
150examples:
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...
203