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             - 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
78  resets:
79    minItems: 1
80    maxItems: 2
81
82  operating-points-v2: true
83
84  "#cooling-cells":
85    const: 2
86
87required:
88  - compatible
89  - reg
90  - interrupts
91  - interrupt-names
92  - clocks
93
94allOf:
95  - if:
96      properties:
97        compatible:
98          contains:
99            const: allwinner,sun50i-h6-mali
100    then:
101      properties:
102        clocks:
103          minItems: 2
104      required:
105        - clock-names
106        - resets
107  - if:
108      properties:
109        compatible:
110          contains:
111            const: amlogic,meson-gxm-mali
112    then:
113      properties:
114        resets:
115          minItems: 2
116      required:
117        - resets
118
119examples:
120  - |
121    #include <dt-bindings/interrupt-controller/irq.h>
122    #include <dt-bindings/interrupt-controller/arm-gic.h>
123
124    gpu@ffa30000 {
125      compatible = "rockchip,rk3288-mali", "arm,mali-t760";
126      reg = <0xffa30000 0x10000>;
127      interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
128             <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
129             <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
130      interrupt-names = "job", "mmu", "gpu";
131      clocks = <&cru 0>;
132      mali-supply = <&vdd_gpu>;
133      operating-points-v2 = <&gpu_opp_table>;
134      power-domains = <&power 0>;
135      #cooling-cells = <2>;
136    };
137
138    gpu_opp_table: opp_table0 {
139      compatible = "operating-points-v2";
140
141      opp@533000000 {
142        opp-hz = /bits/ 64 <533000000>;
143        opp-microvolt = <1250000>;
144      };
145      opp@450000000 {
146        opp-hz = /bits/ 64 <450000000>;
147        opp-microvolt = <1150000>;
148      };
149      opp@400000000 {
150        opp-hz = /bits/ 64 <400000000>;
151        opp-microvolt = <1125000>;
152      };
153      opp@350000000 {
154        opp-hz = /bits/ 64 <350000000>;
155        opp-microvolt = <1075000>;
156      };
157      opp@266000000 {
158        opp-hz = /bits/ 64 <266000000>;
159        opp-microvolt = <1025000>;
160      };
161      opp@160000000 {
162        opp-hz = /bits/ 64 <160000000>;
163        opp-microvolt = <925000>;
164      };
165      opp@100000000 {
166        opp-hz = /bits/ 64 <100000000>;
167        opp-microvolt = <912500>;
168      };
169    };
170
171...
172