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 - mediatek,mt8183-mali 21 - realtek,rtd1619-mali 22 - renesas,r9a07g044-mali 23 - rockchip,px30-mali 24 - rockchip,rk3568-mali 25 - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable 26 27 reg: 28 maxItems: 1 29 30 interrupts: 31 minItems: 3 32 items: 33 - description: Job interrupt 34 - description: MMU interrupt 35 - description: GPU interrupt 36 - description: Event interrupt 37 38 interrupt-names: 39 minItems: 3 40 items: 41 - const: job 42 - const: mmu 43 - const: gpu 44 - const: event 45 46 clocks: 47 minItems: 1 48 maxItems: 3 49 50 clock-names: true 51 52 mali-supply: true 53 54 sram-supply: true 55 56 operating-points-v2: true 57 58 power-domains: 59 minItems: 1 60 maxItems: 3 61 62 resets: 63 minItems: 1 64 maxItems: 3 65 66 reset-names: true 67 68 "#cooling-cells": 69 const: 2 70 71 dynamic-power-coefficient: 72 $ref: '/schemas/types.yaml#/definitions/uint32' 73 description: 74 A u32 value that represents the running time dynamic 75 power coefficient in units of uW/MHz/V^2. The 76 coefficient can either be calculated from power 77 measurements or derived by analysis. 78 79 The dynamic power consumption of the GPU is 80 proportional to the square of the Voltage (V) and 81 the clock frequency (f). The coefficient is used to 82 calculate the dynamic power as below - 83 84 Pdyn = dynamic-power-coefficient * V^2 * f 85 86 where voltage is in V, frequency is in MHz. 87 88 dma-coherent: true 89 90required: 91 - compatible 92 - reg 93 - interrupts 94 - interrupt-names 95 - clocks 96 97additionalProperties: false 98 99allOf: 100 - if: 101 properties: 102 compatible: 103 contains: 104 const: amlogic,meson-g12a-mali 105 then: 106 required: 107 - resets 108 - if: 109 properties: 110 compatible: 111 contains: 112 const: renesas,r9a07g044-mali 113 then: 114 properties: 115 interrupts: 116 minItems: 4 117 interrupt-names: 118 minItems: 4 119 clocks: 120 minItems: 3 121 clock-names: 122 items: 123 - const: gpu 124 - const: bus 125 - const: bus_ace 126 resets: 127 minItems: 3 128 reset-names: 129 items: 130 - const: rst 131 - const: axi_rst 132 - const: ace_rst 133 required: 134 - clock-names 135 - power-domains 136 - resets 137 - reset-names 138 - if: 139 properties: 140 compatible: 141 contains: 142 const: mediatek,mt8183-mali 143 then: 144 properties: 145 power-domains: 146 minItems: 3 147 power-domain-names: 148 items: 149 - const: core0 150 - const: core1 151 - const: core2 152 153 required: 154 - sram-supply 155 - power-domains 156 - power-domain-names 157 else: 158 properties: 159 power-domains: 160 maxItems: 1 161 sram-supply: false 162 - if: 163 properties: 164 compatible: 165 contains: 166 const: rockchip,rk3568-mali 167 then: 168 properties: 169 clocks: 170 minItems: 2 171 clock-names: 172 items: 173 - const: gpu 174 - const: bus 175 required: 176 - clock-names 177 178examples: 179 - | 180 #include <dt-bindings/interrupt-controller/irq.h> 181 #include <dt-bindings/interrupt-controller/arm-gic.h> 182 183 gpu@ffe40000 { 184 compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost"; 185 reg = <0xffe40000 0x10000>; 186 interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>, 187 <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>, 188 <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>; 189 interrupt-names = "job", "mmu", "gpu"; 190 clocks = <&clk 1>; 191 mali-supply = <&vdd_gpu>; 192 operating-points-v2 = <&gpu_opp_table>; 193 resets = <&reset 0>, <&reset 1>; 194 }; 195 196 gpu_opp_table: opp-table { 197 compatible = "operating-points-v2"; 198 199 opp-533000000 { 200 opp-hz = /bits/ 64 <533000000>; 201 opp-microvolt = <1250000>; 202 }; 203 opp-450000000 { 204 opp-hz = /bits/ 64 <450000000>; 205 opp-microvolt = <1150000>; 206 }; 207 opp-400000000 { 208 opp-hz = /bits/ 64 <400000000>; 209 opp-microvolt = <1125000>; 210 }; 211 opp-350000000 { 212 opp-hz = /bits/ 64 <350000000>; 213 opp-microvolt = <1075000>; 214 }; 215 opp-266000000 { 216 opp-hz = /bits/ 64 <266000000>; 217 opp-microvolt = <1025000>; 218 }; 219 opp-160000000 { 220 opp-hz = /bits/ 64 <160000000>; 221 opp-microvolt = <925000>; 222 }; 223 opp-100000000 { 224 opp-hz = /bits/ 64 <100000000>; 225 opp-microvolt = <912500>; 226 }; 227 }; 228 229... 230