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 - mediatek,mt8183-mali 21 - mediatek,mt8183-mali !! 21 - realtek,rtd1619-mali 22 - mediatek,mt8183b-mali !! 22 - rockchip,px30-mali 23 - mediatek,mt8186-mali !! 23 - rockchip,rk3568-mali 24 - realtek,rtd1619-mali !! 24 - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable 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 25 41 reg: 26 reg: 42 maxItems: 1 27 maxItems: 1 43 28 44 interrupts: 29 interrupts: 45 minItems: 3 << 46 items: 30 items: 47 - description: Job interrupt 31 - description: Job interrupt 48 - description: MMU interrupt 32 - description: MMU interrupt 49 - description: GPU interrupt 33 - description: GPU interrupt 50 - description: Event interrupt << 51 34 52 interrupt-names: 35 interrupt-names: 53 minItems: 3 << 54 items: 36 items: 55 - const: job 37 - const: job 56 - const: mmu 38 - const: mmu 57 - const: gpu 39 - const: gpu 58 - const: event << 59 40 60 clocks: 41 clocks: 61 minItems: 1 !! 42 maxItems: 1 62 maxItems: 3 << 63 << 64 clock-names: true << 65 43 66 mali-supply: true 44 mali-supply: true 67 45 68 sram-supply: true 46 sram-supply: true 69 47 70 operating-points-v2: true 48 operating-points-v2: true 71 49 72 power-domains: 50 power-domains: 73 minItems: 1 51 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 52 maxItems: 3 83 53 84 reset-names: true !! 54 resets: >> 55 maxItems: 2 85 56 86 "#cooling-cells": 57 "#cooling-cells": 87 const: 2 58 const: 2 88 59 89 dynamic-power-coefficient: 60 dynamic-power-coefficient: 90 $ref: /schemas/types.yaml#/definitions/uin !! 61 $ref: '/schemas/types.yaml#/definitions/uint32' 91 description: 62 description: 92 A u32 value that represents the running 63 A u32 value that represents the running time dynamic 93 power coefficient in units of uW/MHz/V^2 64 power coefficient in units of uW/MHz/V^2. The 94 coefficient can either be calculated fro 65 coefficient can either be calculated from power 95 measurements or derived by analysis. 66 measurements or derived by analysis. 96 67 97 The dynamic power consumption of the GPU 68 The dynamic power consumption of the GPU is 98 proportional to the square of the Voltag 69 proportional to the square of the Voltage (V) and 99 the clock frequency (f). The coefficient 70 the clock frequency (f). The coefficient is used to 100 calculate the dynamic power as below - 71 calculate the dynamic power as below - 101 72 102 Pdyn = dynamic-power-coefficient * V^2 * 73 Pdyn = dynamic-power-coefficient * V^2 * f 103 74 104 where voltage is in V, frequency is in M 75 where voltage is in V, frequency is in MHz. 105 76 106 dma-coherent: true 77 dma-coherent: true 107 78 108 nvmem-cell-names: << 109 items: << 110 - const: speed-bin << 111 << 112 nvmem-cells: << 113 maxItems: 1 << 114 << 115 required: 79 required: 116 - compatible 80 - compatible 117 - reg 81 - reg 118 - interrupts 82 - interrupts 119 - interrupt-names 83 - interrupt-names 120 - clocks 84 - clocks 121 85 122 additionalProperties: false 86 additionalProperties: false 123 87 124 allOf: 88 allOf: 125 - if: 89 - if: 126 properties: 90 properties: 127 compatible: 91 compatible: 128 contains: 92 contains: 129 const: amlogic,meson-g12a-mali 93 const: amlogic,meson-g12a-mali 130 then: 94 then: 131 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: << 161 minItems: 3 << 162 reset-names: << 163 items: << 164 - const: rst << 165 - const: axi_rst << 166 - const: ace_rst << 167 required: 95 required: 168 - clock-names << 169 - power-domains << 170 - resets 96 - resets 171 - reset-names << 172 - if: 97 - if: 173 properties: 98 properties: 174 compatible: 99 compatible: 175 contains: 100 contains: 176 const: mediatek,mt8183-mali 101 const: mediatek,mt8183-mali 177 then: 102 then: 178 properties: 103 properties: 179 power-domains: 104 power-domains: 180 minItems: 3 105 minItems: 3 181 maxItems: 3 << 182 power-domain-names: 106 power-domain-names: 183 items: 107 items: 184 - const: core0 108 - const: core0 185 - const: core1 109 - const: core1 186 - const: core2 110 - const: core2 187 111 188 required: 112 required: 189 - sram-supply 113 - sram-supply 190 - power-domains 114 - power-domains 191 - power-domain-names 115 - power-domain-names 192 else: 116 else: 193 properties: 117 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 << 224 maxItems: 2 << 225 power-domain-names: << 226 items: << 227 - const: core0 << 228 - const: core1 << 229 required: << 230 - power-domains << 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: 118 power-domains: 265 maxItems: 1 119 maxItems: 1 266 power-domain-names: false !! 120 sram-supply: false 267 required: << 268 - clock-names << 269 121 270 examples: 122 examples: 271 - | 123 - | 272 #include <dt-bindings/interrupt-controller 124 #include <dt-bindings/interrupt-controller/irq.h> 273 #include <dt-bindings/interrupt-controller 125 #include <dt-bindings/interrupt-controller/arm-gic.h> 274 126 275 gpu@ffe40000 { 127 gpu@ffe40000 { 276 compatible = "amlogic,meson-g12a-mali", 128 compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost"; 277 reg = <0xffe40000 0x10000>; 129 reg = <0xffe40000 0x10000>; 278 interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL 130 interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>, 279 <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH> 131 <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>, 280 <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH> 132 <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>; 281 interrupt-names = "job", "mmu", "gpu"; 133 interrupt-names = "job", "mmu", "gpu"; 282 clocks = <&clk 1>; 134 clocks = <&clk 1>; 283 mali-supply = <&vdd_gpu>; 135 mali-supply = <&vdd_gpu>; 284 operating-points-v2 = <&gpu_opp_table>; 136 operating-points-v2 = <&gpu_opp_table>; 285 resets = <&reset 0>, <&reset 1>; 137 resets = <&reset 0>, <&reset 1>; 286 }; 138 }; 287 139 288 gpu_opp_table: opp-table { 140 gpu_opp_table: opp-table { 289 compatible = "operating-points-v2"; 141 compatible = "operating-points-v2"; 290 142 291 opp-533000000 { 143 opp-533000000 { 292 opp-hz = /bits/ 64 <533000000>; 144 opp-hz = /bits/ 64 <533000000>; 293 opp-microvolt = <1250000>; 145 opp-microvolt = <1250000>; 294 }; 146 }; 295 opp-450000000 { 147 opp-450000000 { 296 opp-hz = /bits/ 64 <450000000>; 148 opp-hz = /bits/ 64 <450000000>; 297 opp-microvolt = <1150000>; 149 opp-microvolt = <1150000>; 298 }; 150 }; 299 opp-400000000 { 151 opp-400000000 { 300 opp-hz = /bits/ 64 <400000000>; 152 opp-hz = /bits/ 64 <400000000>; 301 opp-microvolt = <1125000>; 153 opp-microvolt = <1125000>; 302 }; 154 }; 303 opp-350000000 { 155 opp-350000000 { 304 opp-hz = /bits/ 64 <350000000>; 156 opp-hz = /bits/ 64 <350000000>; 305 opp-microvolt = <1075000>; 157 opp-microvolt = <1075000>; 306 }; 158 }; 307 opp-266000000 { 159 opp-266000000 { 308 opp-hz = /bits/ 64 <266000000>; 160 opp-hz = /bits/ 64 <266000000>; 309 opp-microvolt = <1025000>; 161 opp-microvolt = <1025000>; 310 }; 162 }; 311 opp-160000000 { 163 opp-160000000 { 312 opp-hz = /bits/ 64 <160000000>; 164 opp-hz = /bits/ 64 <160000000>; 313 opp-microvolt = <925000>; 165 opp-microvolt = <925000>; 314 }; 166 }; 315 opp-100000000 { 167 opp-100000000 { 316 opp-hz = /bits/ 64 <100000000>; 168 opp-hz = /bits/ 64 <100000000>; 317 opp-microvolt = <912500>; 169 opp-microvolt = <912500>; 318 }; 170 }; 319 }; 171 }; 320 172 321 ... 173 ...
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.