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