1# SPDX-License-Identifier: GPL-2.0-only
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/gpu/arm,mali-bifrost.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: ARM Mali Bifrost GPU
8
9maintainers:
10  - Rob Herring <robh@kernel.org>
11
12properties:
13  $nodename:
14    pattern: '^gpu@[a-f0-9]+$'
15
16  compatible:
17    items:
18      - enum:
19          - amlogic,meson-g12a-mali
20          - realtek,rtd1619-mali
21          - rockchip,px30-mali
22      - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable
23
24  reg:
25    maxItems: 1
26
27  interrupts:
28    items:
29      - description: Job interrupt
30      - description: MMU interrupt
31      - description: GPU interrupt
32
33  interrupt-names:
34    items:
35      - const: job
36      - const: mmu
37      - const: gpu
38
39  clocks:
40    maxItems: 1
41
42  mali-supply: true
43
44  operating-points-v2: true
45
46  power-domains:
47    maxItems: 1
48
49  resets:
50    maxItems: 2
51
52  "#cooling-cells":
53    const: 2
54
55required:
56  - compatible
57  - reg
58  - interrupts
59  - interrupt-names
60  - clocks
61
62additionalProperties: false
63
64allOf:
65  - if:
66      properties:
67        compatible:
68          contains:
69            const: amlogic,meson-g12a-mali
70    then:
71      required:
72        - resets
73
74examples:
75  - |
76    #include <dt-bindings/interrupt-controller/irq.h>
77    #include <dt-bindings/interrupt-controller/arm-gic.h>
78
79    gpu@ffe40000 {
80      compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
81      reg = <0xffe40000 0x10000>;
82      interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
83             <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
84             <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
85      interrupt-names = "job", "mmu", "gpu";
86      clocks = <&clk 1>;
87      mali-supply = <&vdd_gpu>;
88      operating-points-v2 = <&gpu_opp_table>;
89      resets = <&reset 0>, <&reset 1>;
90    };
91
92    gpu_opp_table: opp_table0 {
93      compatible = "operating-points-v2";
94
95      opp-533000000 {
96        opp-hz = /bits/ 64 <533000000>;
97        opp-microvolt = <1250000>;
98      };
99      opp-450000000 {
100        opp-hz = /bits/ 64 <450000000>;
101        opp-microvolt = <1150000>;
102      };
103      opp-400000000 {
104        opp-hz = /bits/ 64 <400000000>;
105        opp-microvolt = <1125000>;
106      };
107      opp-350000000 {
108        opp-hz = /bits/ 64 <350000000>;
109        opp-microvolt = <1075000>;
110      };
111      opp-266000000 {
112        opp-hz = /bits/ 64 <266000000>;
113        opp-microvolt = <1025000>;
114      };
115      opp-160000000 {
116        opp-hz = /bits/ 64 <160000000>;
117        opp-microvolt = <925000>;
118      };
119      opp-100000000 {
120        opp-hz = /bits/ 64 <100000000>;
121        opp-microvolt = <912500>;
122      };
123    };
124
125...
126