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