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 - mediatek,mt8196-mali 22 - nxp,imx95-mali # G310 23 - rockchip,rk3588-mali 24 - const: arm,mali-valhall-csf # Mali Valhall GPU model/revision is fully discoverable 25 26 reg: 27 maxItems: 1 28 29 interrupts: 30 items: 31 - description: Job interrupt 32 - description: MMU interrupt 33 - description: GPU interrupt 34 35 interrupt-names: 36 items: 37 - const: job 38 - const: mmu 39 - const: gpu 40 41 clocks: 42 minItems: 1 43 maxItems: 3 44 45 clock-names: 46 minItems: 1 47 items: 48 - const: core 49 - enum: 50 - coregroup 51 - stacks 52 - const: stacks 53 54 nvmem-cells: 55 items: 56 - description: bitmask of functional shader cores 57 58 nvmem-cell-names: 59 items: 60 - const: shader-present 61 62 mali-supply: true 63 64 operating-points-v2: true 65 opp-table: 66 type: object 67 68 power-domains: 69 minItems: 1 70 maxItems: 5 71 72 power-domain-names: 73 minItems: 1 74 maxItems: 5 75 76 sram-supply: true 77 78 "#cooling-cells": 79 const: 2 80 81 dynamic-power-coefficient: 82 $ref: /schemas/types.yaml#/definitions/uint32 83 description: 84 A u32 value that represents the running time dynamic 85 power coefficient in units of uW/MHz/V^2. The 86 coefficient can either be calculated from power 87 measurements or derived by analysis. 88 89 The dynamic power consumption of the GPU is 90 proportional to the square of the Voltage (V) and 91 the clock frequency (f). The coefficient is used to 92 calculate the dynamic power as below - 93 94 Pdyn = dynamic-power-coefficient * V^2 * f 95 96 where voltage is in V, frequency is in MHz. 97 98 dma-coherent: true 99 100required: 101 - compatible 102 - reg 103 - interrupts 104 - interrupt-names 105 - clocks 106 107additionalProperties: false 108 109allOf: 110 - if: 111 properties: 112 compatible: 113 contains: 114 const: rockchip,rk3588-mali 115 then: 116 properties: 117 clocks: 118 minItems: 3 119 nvmem-cells: false 120 nvmem-cell-names: false 121 power-domains: 122 maxItems: 1 123 power-domain-names: false 124 required: 125 - mali-supply 126 - if: 127 properties: 128 compatible: 129 contains: 130 const: mediatek,mt8196-mali 131 then: 132 properties: 133 mali-supply: false 134 sram-supply: false 135 operating-points-v2: false 136 power-domains: 137 maxItems: 1 138 power-domain-names: false 139 clocks: 140 maxItems: 2 141 clock-names: 142 items: 143 - const: core 144 - const: stacks 145 required: 146 - nvmem-cells 147 - nvmem-cell-names 148 - power-domains 149 150examples: 151 - | 152 #include <dt-bindings/clock/rockchip,rk3588-cru.h> 153 #include <dt-bindings/interrupt-controller/irq.h> 154 #include <dt-bindings/interrupt-controller/arm-gic.h> 155 #include <dt-bindings/power/rk3588-power.h> 156 157 gpu: gpu@fb000000 { 158 compatible = "rockchip,rk3588-mali", "arm,mali-valhall-csf"; 159 reg = <0xfb000000 0x200000>; 160 interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH 0>, 161 <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH 0>, 162 <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH 0>; 163 interrupt-names = "job", "mmu", "gpu"; 164 clock-names = "core", "coregroup", "stacks"; 165 clocks = <&cru CLK_GPU>, <&cru CLK_GPU_COREGROUP>, 166 <&cru CLK_GPU_STACKS>; 167 power-domains = <&power RK3588_PD_GPU>; 168 operating-points-v2 = <&gpu_opp_table>; 169 mali-supply = <&vdd_gpu_s0>; 170 sram-supply = <&vdd_gpu_mem_s0>; 171 172 gpu_opp_table: opp-table { 173 compatible = "operating-points-v2"; 174 opp-300000000 { 175 opp-hz = /bits/ 64 <300000000>; 176 opp-microvolt = <675000 675000 850000>; 177 }; 178 opp-400000000 { 179 opp-hz = /bits/ 64 <400000000>; 180 opp-microvolt = <675000 675000 850000>; 181 }; 182 }; 183 }; 184 - | 185 gpu@48000000 { 186 compatible = "mediatek,mt8196-mali", "arm,mali-valhall-csf"; 187 reg = <0x48000000 0x480000>; 188 clocks = <&gpufreq 0>, <&gpufreq 1>; 189 clock-names = "core", "stacks"; 190 interrupts = <GIC_SPI 606 IRQ_TYPE_LEVEL_HIGH 0>, 191 <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH 0>, 192 <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH 0>; 193 interrupt-names = "job", "mmu", "gpu"; 194 nvmem-cells = <&shader_present>; 195 nvmem-cell-names = "shader-present"; 196 power-domains = <&gpufreq>; 197 }; 198 199... 200