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      - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable
21
22  reg:
23    maxItems: 1
24
25  interrupts:
26    items:
27      - description: Job interrupt
28      - description: MMU interrupt
29      - description: GPU interrupt
30
31  interrupt-names:
32    items:
33      - const: job
34      - const: mmu
35      - const: gpu
36
37  clocks:
38    maxItems: 1
39
40  mali-supply:
41    maxItems: 1
42
43  operating-points-v2: true
44
45required:
46  - compatible
47  - reg
48  - interrupts
49  - interrupt-names
50  - clocks
51
52allOf:
53  - if:
54      properties:
55        compatible:
56          contains:
57            const: amlogic,meson-g12a-mali
58    then:
59      properties:
60        resets:
61          minItems: 2
62      required:
63        - resets
64
65examples:
66  - |
67    #include <dt-bindings/interrupt-controller/irq.h>
68    #include <dt-bindings/interrupt-controller/arm-gic.h>
69
70    gpu@ffe40000 {
71      compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost";
72      reg = <0xffe40000 0x10000>;
73      interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
74             <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
75             <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>;
76      interrupt-names = "job", "mmu", "gpu";
77      clocks = <&clk 1>;
78      mali-supply = <&vdd_gpu>;
79      operating-points-v2 = <&gpu_opp_table>;
80      resets = <&reset 0>, <&reset 1>;
81    };
82
83    gpu_opp_table: opp_table0 {
84      compatible = "operating-points-v2";
85
86      opp@533000000 {
87        opp-hz = /bits/ 64 <533000000>;
88        opp-microvolt = <1250000>;
89      };
90      opp@450000000 {
91        opp-hz = /bits/ 64 <450000000>;
92        opp-microvolt = <1150000>;
93      };
94      opp@400000000 {
95        opp-hz = /bits/ 64 <400000000>;
96        opp-microvolt = <1125000>;
97      };
98      opp@350000000 {
99        opp-hz = /bits/ 64 <350000000>;
100        opp-microvolt = <1075000>;
101      };
102      opp@266000000 {
103        opp-hz = /bits/ 64 <266000000>;
104        opp-microvolt = <1025000>;
105      };
106      opp@160000000 {
107        opp-hz = /bits/ 64 <160000000>;
108        opp-microvolt = <925000>;
109      };
110      opp@100000000 {
111        opp-hz = /bits/ 64 <100000000>;
112        opp-microvolt = <912500>;
113      };
114    };
115
116...
117