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