xref: /linux/Documentation/devicetree/bindings/gpu/arm,mali-valhall-csf.yaml (revision 0c8ea05e9b3d8e5287e2a968f2a2e744dfd31b99)
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/gpu/arm,mali-valhall-csf.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: ARM Mali Valhall GPU
8
9maintainers:
10  - Liviu Dudau <liviu.dudau@arm.com>
11  - Boris Brezillon <boris.brezillon@collabora.com>
12
13properties:
14  $nodename:
15    pattern: '^gpu@[a-f0-9]+$'
16
17  compatible:
18    oneOf:
19      - items:
20          - enum:
21              - rockchip,rk3588-mali
22          - const: arm,mali-valhall-csf   # Mali Valhall 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    minItems: 1
41    maxItems: 3
42
43  clock-names:
44    minItems: 1
45    items:
46      - const: core
47      - const: coregroup
48      - const: stacks
49
50  mali-supply: true
51
52  operating-points-v2: true
53  opp-table:
54    type: object
55
56  power-domains:
57    minItems: 1
58    maxItems: 5
59
60  power-domain-names:
61    minItems: 1
62    maxItems: 5
63
64  sram-supply: true
65
66  "#cooling-cells":
67    const: 2
68
69  dynamic-power-coefficient:
70    $ref: /schemas/types.yaml#/definitions/uint32
71    description:
72      A u32 value that represents the running time dynamic
73      power coefficient in units of uW/MHz/V^2. The
74      coefficient can either be calculated from power
75      measurements or derived by analysis.
76
77      The dynamic power consumption of the GPU is
78      proportional to the square of the Voltage (V) and
79      the clock frequency (f). The coefficient is used to
80      calculate the dynamic power as below -
81
82      Pdyn = dynamic-power-coefficient * V^2 * f
83
84      where voltage is in V, frequency is in MHz.
85
86  dma-coherent: true
87
88required:
89  - compatible
90  - reg
91  - interrupts
92  - interrupt-names
93  - clocks
94  - mali-supply
95
96additionalProperties: false
97
98allOf:
99  - if:
100      properties:
101        compatible:
102          contains:
103            const: rockchip,rk3588-mali
104    then:
105      properties:
106        clocks:
107          minItems: 3
108        power-domains:
109          maxItems: 1
110        power-domain-names: false
111
112examples:
113  - |
114    #include <dt-bindings/clock/rockchip,rk3588-cru.h>
115    #include <dt-bindings/interrupt-controller/irq.h>
116    #include <dt-bindings/interrupt-controller/arm-gic.h>
117    #include <dt-bindings/power/rk3588-power.h>
118
119    gpu: gpu@fb000000 {
120        compatible = "rockchip,rk3588-mali", "arm,mali-valhall-csf";
121        reg = <0xfb000000 0x200000>;
122        interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH 0>,
123                     <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH 0>,
124                     <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH 0>;
125        interrupt-names = "job", "mmu", "gpu";
126        clock-names = "core", "coregroup", "stacks";
127        clocks = <&cru CLK_GPU>, <&cru CLK_GPU_COREGROUP>,
128                 <&cru CLK_GPU_STACKS>;
129        power-domains = <&power RK3588_PD_GPU>;
130        operating-points-v2 = <&gpu_opp_table>;
131        mali-supply = <&vdd_gpu_s0>;
132        sram-supply = <&vdd_gpu_mem_s0>;
133
134        gpu_opp_table: opp-table {
135            compatible = "operating-points-v2";
136            opp-300000000 {
137                opp-hz = /bits/ 64 <300000000>;
138                opp-microvolt = <675000 675000 850000>;
139            };
140            opp-400000000 {
141                opp-hz = /bits/ 64 <400000000>;
142                opp-microvolt = <675000 675000 850000>;
143            };
144        };
145    };
146
147...
148