1 # SPDX-License-Identifier: GPL-2.0-only 1 # SPDX-License-Identifier: GPL-2.0-only 2 %YAML 1.2 2 %YAML 1.2 3 --- 3 --- 4 $id: http://devicetree.org/schemas/gpu/arm,mal 4 $id: http://devicetree.org/schemas/gpu/arm,mali-bifrost.yaml# 5 $schema: http://devicetree.org/meta-schemas/co 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 6 6 7 title: ARM Mali Bifrost GPU 7 title: ARM Mali Bifrost GPU 8 8 9 maintainers: 9 maintainers: 10 - Rob Herring <robh@kernel.org> 10 - Rob Herring <robh@kernel.org> 11 11 12 properties: 12 properties: 13 $nodename: 13 $nodename: 14 pattern: '^gpu@[a-f0-9]+$' 14 pattern: '^gpu@[a-f0-9]+$' 15 15 16 compatible: 16 compatible: 17 oneOf: !! 17 items: 18 - items: !! 18 - enum: 19 - enum: !! 19 - amlogic,meson-g12a-mali 20 - amlogic,meson-g12a-mali !! 20 - realtek,rtd1619-mali 21 - mediatek,mt8183-mali !! 21 - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable 22 - mediatek,mt8183b-mali << 23 - mediatek,mt8186-mali << 24 - realtek,rtd1619-mali << 25 - renesas,r9a07g044-mali << 26 - renesas,r9a07g054-mali << 27 - rockchip,px30-mali << 28 - rockchip,rk3568-mali << 29 - const: arm,mali-bifrost # Mali Bif << 30 - items: << 31 - enum: << 32 - mediatek,mt8195-mali << 33 - const: mediatek,mt8192-mali << 34 - const: arm,mali-valhall-jm # Mali << 35 - items: << 36 - enum: << 37 - mediatek,mt8188-mali << 38 - mediatek,mt8192-mali << 39 - const: arm,mali-valhall-jm # Mali << 40 22 41 reg: 23 reg: 42 maxItems: 1 24 maxItems: 1 43 25 44 interrupts: 26 interrupts: 45 minItems: 3 << 46 items: 27 items: 47 - description: Job interrupt 28 - description: Job interrupt 48 - description: MMU interrupt 29 - description: MMU interrupt 49 - description: GPU interrupt 30 - description: GPU interrupt 50 - description: Event interrupt << 51 31 52 interrupt-names: 32 interrupt-names: 53 minItems: 3 << 54 items: 33 items: 55 - const: job 34 - const: job 56 - const: mmu 35 - const: mmu 57 - const: gpu 36 - const: gpu 58 - const: event << 59 37 60 clocks: 38 clocks: 61 minItems: 1 !! 39 maxItems: 1 62 maxItems: 3 << 63 << 64 clock-names: true << 65 40 66 mali-supply: true 41 mali-supply: true 67 42 68 sram-supply: true << 69 << 70 operating-points-v2: true 43 operating-points-v2: true 71 44 72 power-domains: << 73 minItems: 1 << 74 maxItems: 5 << 75 << 76 power-domain-names: << 77 minItems: 2 << 78 maxItems: 5 << 79 << 80 resets: << 81 minItems: 1 << 82 maxItems: 3 << 83 << 84 reset-names: true << 85 << 86 "#cooling-cells": << 87 const: 2 << 88 << 89 dynamic-power-coefficient: << 90 $ref: /schemas/types.yaml#/definitions/uin << 91 description: << 92 A u32 value that represents the running << 93 power coefficient in units of uW/MHz/V^2 << 94 coefficient can either be calculated fro << 95 measurements or derived by analysis. << 96 << 97 The dynamic power consumption of the GPU << 98 proportional to the square of the Voltag << 99 the clock frequency (f). The coefficient << 100 calculate the dynamic power as below - << 101 << 102 Pdyn = dynamic-power-coefficient * V^2 * << 103 << 104 where voltage is in V, frequency is in M << 105 << 106 dma-coherent: true << 107 << 108 nvmem-cell-names: << 109 items: << 110 - const: speed-bin << 111 << 112 nvmem-cells: << 113 maxItems: 1 << 114 << 115 required: 45 required: 116 - compatible 46 - compatible 117 - reg 47 - reg 118 - interrupts 48 - interrupts 119 - interrupt-names 49 - interrupt-names 120 - clocks 50 - clocks 121 51 122 additionalProperties: false << 123 << 124 allOf: 52 allOf: 125 - if: 53 - if: 126 properties: 54 properties: 127 compatible: 55 compatible: 128 contains: 56 contains: 129 const: amlogic,meson-g12a-mali 57 const: amlogic,meson-g12a-mali 130 then: 58 then: 131 properties: 59 properties: 132 power-domains: << 133 maxItems: 1 << 134 power-domain-names: false << 135 required: << 136 - resets << 137 - if: << 138 properties: << 139 compatible: << 140 contains: << 141 enum: << 142 - renesas,r9a07g044-mali << 143 - renesas,r9a07g054-mali << 144 then: << 145 properties: << 146 interrupts: << 147 minItems: 4 << 148 interrupt-names: << 149 minItems: 4 << 150 clocks: << 151 minItems: 3 << 152 clock-names: << 153 items: << 154 - const: gpu << 155 - const: bus << 156 - const: bus_ace << 157 power-domains: << 158 maxItems: 1 << 159 power-domain-names: false << 160 resets: 60 resets: 161 minItems: 3 << 162 reset-names: << 163 items: << 164 - const: rst << 165 - const: axi_rst << 166 - const: ace_rst << 167 required: << 168 - clock-names << 169 - power-domains << 170 - resets << 171 - reset-names << 172 - if: << 173 properties: << 174 compatible: << 175 contains: << 176 const: mediatek,mt8183-mali << 177 then: << 178 properties: << 179 power-domains: << 180 minItems: 3 << 181 maxItems: 3 << 182 power-domain-names: << 183 items: << 184 - const: core0 << 185 - const: core1 << 186 - const: core2 << 187 << 188 required: << 189 - sram-supply << 190 - power-domains << 191 - power-domain-names << 192 else: << 193 properties: << 194 sram-supply: false << 195 - if: << 196 properties: << 197 compatible: << 198 contains: << 199 enum: << 200 - mediatek,mt8183b-mali << 201 - mediatek,mt8188-mali << 202 then: << 203 properties: << 204 power-domains: << 205 minItems: 3 << 206 maxItems: 3 << 207 power-domain-names: << 208 items: << 209 - const: core0 << 210 - const: core1 << 211 - const: core2 << 212 required: << 213 - power-domains << 214 - power-domain-names << 215 - if: << 216 properties: << 217 compatible: << 218 contains: << 219 const: mediatek,mt8186-mali << 220 then: << 221 properties: << 222 power-domains: << 223 minItems: 2 61 minItems: 2 224 maxItems: 2 << 225 power-domain-names: << 226 items: << 227 - const: core0 << 228 - const: core1 << 229 required: 62 required: 230 - power-domains !! 63 - resets 231 - power-domain-names << 232 - if: << 233 properties: << 234 compatible: << 235 contains: << 236 const: mediatek,mt8192-mali << 237 then: << 238 properties: << 239 power-domains: << 240 minItems: 5 << 241 power-domain-names: << 242 items: << 243 - const: core0 << 244 - const: core1 << 245 - const: core2 << 246 - const: core3 << 247 - const: core4 << 248 required: << 249 - power-domains << 250 - power-domain-names << 251 - if: << 252 properties: << 253 compatible: << 254 contains: << 255 const: rockchip,rk3568-mali << 256 then: << 257 properties: << 258 clocks: << 259 minItems: 2 << 260 clock-names: << 261 items: << 262 - const: gpu << 263 - const: bus << 264 power-domains: << 265 maxItems: 1 << 266 power-domain-names: false << 267 required: << 268 - clock-names << 269 64 270 examples: 65 examples: 271 - | 66 - | 272 #include <dt-bindings/interrupt-controller 67 #include <dt-bindings/interrupt-controller/irq.h> 273 #include <dt-bindings/interrupt-controller 68 #include <dt-bindings/interrupt-controller/arm-gic.h> 274 69 275 gpu@ffe40000 { 70 gpu@ffe40000 { 276 compatible = "amlogic,meson-g12a-mali", 71 compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost"; 277 reg = <0xffe40000 0x10000>; 72 reg = <0xffe40000 0x10000>; 278 interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL 73 interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>, 279 <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH> 74 <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>, 280 <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH> 75 <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>; 281 interrupt-names = "job", "mmu", "gpu"; 76 interrupt-names = "job", "mmu", "gpu"; 282 clocks = <&clk 1>; 77 clocks = <&clk 1>; 283 mali-supply = <&vdd_gpu>; 78 mali-supply = <&vdd_gpu>; 284 operating-points-v2 = <&gpu_opp_table>; 79 operating-points-v2 = <&gpu_opp_table>; 285 resets = <&reset 0>, <&reset 1>; 80 resets = <&reset 0>, <&reset 1>; 286 }; 81 }; 287 82 288 gpu_opp_table: opp-table { !! 83 gpu_opp_table: opp_table0 { 289 compatible = "operating-points-v2"; 84 compatible = "operating-points-v2"; 290 85 291 opp-533000000 { !! 86 opp@533000000 { 292 opp-hz = /bits/ 64 <533000000>; 87 opp-hz = /bits/ 64 <533000000>; 293 opp-microvolt = <1250000>; 88 opp-microvolt = <1250000>; 294 }; 89 }; 295 opp-450000000 { !! 90 opp@450000000 { 296 opp-hz = /bits/ 64 <450000000>; 91 opp-hz = /bits/ 64 <450000000>; 297 opp-microvolt = <1150000>; 92 opp-microvolt = <1150000>; 298 }; 93 }; 299 opp-400000000 { !! 94 opp@400000000 { 300 opp-hz = /bits/ 64 <400000000>; 95 opp-hz = /bits/ 64 <400000000>; 301 opp-microvolt = <1125000>; 96 opp-microvolt = <1125000>; 302 }; 97 }; 303 opp-350000000 { !! 98 opp@350000000 { 304 opp-hz = /bits/ 64 <350000000>; 99 opp-hz = /bits/ 64 <350000000>; 305 opp-microvolt = <1075000>; 100 opp-microvolt = <1075000>; 306 }; 101 }; 307 opp-266000000 { !! 102 opp@266000000 { 308 opp-hz = /bits/ 64 <266000000>; 103 opp-hz = /bits/ 64 <266000000>; 309 opp-microvolt = <1025000>; 104 opp-microvolt = <1025000>; 310 }; 105 }; 311 opp-160000000 { !! 106 opp@160000000 { 312 opp-hz = /bits/ 64 <160000000>; 107 opp-hz = /bits/ 64 <160000000>; 313 opp-microvolt = <925000>; 108 opp-microvolt = <925000>; 314 }; 109 }; 315 opp-100000000 { !! 110 opp@100000000 { 316 opp-hz = /bits/ 64 <100000000>; 111 opp-hz = /bits/ 64 <100000000>; 317 opp-microvolt = <912500>; 112 opp-microvolt = <912500>; 318 }; 113 }; 319 }; 114 }; 320 115 321 ... 116 ...
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.