162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/gpu/arm,mali-bifrost.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: ARM Mali Bifrost GPU 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Rob Herring <robh@kernel.org> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ciproperties: 1362306a36Sopenharmony_ci $nodename: 1462306a36Sopenharmony_ci pattern: '^gpu@[a-f0-9]+$' 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci compatible: 1762306a36Sopenharmony_ci oneOf: 1862306a36Sopenharmony_ci - items: 1962306a36Sopenharmony_ci - enum: 2062306a36Sopenharmony_ci - amlogic,meson-g12a-mali 2162306a36Sopenharmony_ci - mediatek,mt8183-mali 2262306a36Sopenharmony_ci - mediatek,mt8183b-mali 2362306a36Sopenharmony_ci - mediatek,mt8186-mali 2462306a36Sopenharmony_ci - realtek,rtd1619-mali 2562306a36Sopenharmony_ci - renesas,r9a07g044-mali 2662306a36Sopenharmony_ci - renesas,r9a07g054-mali 2762306a36Sopenharmony_ci - rockchip,px30-mali 2862306a36Sopenharmony_ci - rockchip,rk3568-mali 2962306a36Sopenharmony_ci - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable 3062306a36Sopenharmony_ci - items: 3162306a36Sopenharmony_ci - enum: 3262306a36Sopenharmony_ci - mediatek,mt8195-mali 3362306a36Sopenharmony_ci - const: mediatek,mt8192-mali 3462306a36Sopenharmony_ci - const: arm,mali-valhall-jm # Mali Valhall GPU model/revision is fully discoverable 3562306a36Sopenharmony_ci - items: 3662306a36Sopenharmony_ci - enum: 3762306a36Sopenharmony_ci - mediatek,mt8192-mali 3862306a36Sopenharmony_ci - const: arm,mali-valhall-jm # Mali Valhall GPU model/revision is fully discoverable 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci reg: 4162306a36Sopenharmony_ci maxItems: 1 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ci interrupts: 4462306a36Sopenharmony_ci minItems: 3 4562306a36Sopenharmony_ci items: 4662306a36Sopenharmony_ci - description: Job interrupt 4762306a36Sopenharmony_ci - description: MMU interrupt 4862306a36Sopenharmony_ci - description: GPU interrupt 4962306a36Sopenharmony_ci - description: Event interrupt 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci interrupt-names: 5262306a36Sopenharmony_ci minItems: 3 5362306a36Sopenharmony_ci items: 5462306a36Sopenharmony_ci - const: job 5562306a36Sopenharmony_ci - const: mmu 5662306a36Sopenharmony_ci - const: gpu 5762306a36Sopenharmony_ci - const: event 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci clocks: 6062306a36Sopenharmony_ci minItems: 1 6162306a36Sopenharmony_ci maxItems: 3 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci clock-names: true 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci mali-supply: true 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci sram-supply: true 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci operating-points-v2: true 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci power-domains: 7262306a36Sopenharmony_ci minItems: 1 7362306a36Sopenharmony_ci maxItems: 5 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci power-domain-names: 7662306a36Sopenharmony_ci minItems: 2 7762306a36Sopenharmony_ci maxItems: 5 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci resets: 8062306a36Sopenharmony_ci minItems: 1 8162306a36Sopenharmony_ci maxItems: 3 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci reset-names: true 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci "#cooling-cells": 8662306a36Sopenharmony_ci const: 2 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci dynamic-power-coefficient: 8962306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 9062306a36Sopenharmony_ci description: 9162306a36Sopenharmony_ci A u32 value that represents the running time dynamic 9262306a36Sopenharmony_ci power coefficient in units of uW/MHz/V^2. The 9362306a36Sopenharmony_ci coefficient can either be calculated from power 9462306a36Sopenharmony_ci measurements or derived by analysis. 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_ci The dynamic power consumption of the GPU is 9762306a36Sopenharmony_ci proportional to the square of the Voltage (V) and 9862306a36Sopenharmony_ci the clock frequency (f). The coefficient is used to 9962306a36Sopenharmony_ci calculate the dynamic power as below - 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci Pdyn = dynamic-power-coefficient * V^2 * f 10262306a36Sopenharmony_ci 10362306a36Sopenharmony_ci where voltage is in V, frequency is in MHz. 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci dma-coherent: true 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci nvmem-cell-names: 10862306a36Sopenharmony_ci items: 10962306a36Sopenharmony_ci - const: speed-bin 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ci nvmem-cells: 11262306a36Sopenharmony_ci maxItems: 1 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_cirequired: 11562306a36Sopenharmony_ci - compatible 11662306a36Sopenharmony_ci - reg 11762306a36Sopenharmony_ci - interrupts 11862306a36Sopenharmony_ci - interrupt-names 11962306a36Sopenharmony_ci - clocks 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ciadditionalProperties: false 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ciallOf: 12462306a36Sopenharmony_ci - if: 12562306a36Sopenharmony_ci properties: 12662306a36Sopenharmony_ci compatible: 12762306a36Sopenharmony_ci contains: 12862306a36Sopenharmony_ci const: amlogic,meson-g12a-mali 12962306a36Sopenharmony_ci then: 13062306a36Sopenharmony_ci properties: 13162306a36Sopenharmony_ci power-domains: 13262306a36Sopenharmony_ci maxItems: 1 13362306a36Sopenharmony_ci power-domain-names: false 13462306a36Sopenharmony_ci required: 13562306a36Sopenharmony_ci - resets 13662306a36Sopenharmony_ci - if: 13762306a36Sopenharmony_ci properties: 13862306a36Sopenharmony_ci compatible: 13962306a36Sopenharmony_ci contains: 14062306a36Sopenharmony_ci enum: 14162306a36Sopenharmony_ci - renesas,r9a07g044-mali 14262306a36Sopenharmony_ci - renesas,r9a07g054-mali 14362306a36Sopenharmony_ci then: 14462306a36Sopenharmony_ci properties: 14562306a36Sopenharmony_ci interrupts: 14662306a36Sopenharmony_ci minItems: 4 14762306a36Sopenharmony_ci interrupt-names: 14862306a36Sopenharmony_ci minItems: 4 14962306a36Sopenharmony_ci clocks: 15062306a36Sopenharmony_ci minItems: 3 15162306a36Sopenharmony_ci clock-names: 15262306a36Sopenharmony_ci items: 15362306a36Sopenharmony_ci - const: gpu 15462306a36Sopenharmony_ci - const: bus 15562306a36Sopenharmony_ci - const: bus_ace 15662306a36Sopenharmony_ci power-domains: 15762306a36Sopenharmony_ci maxItems: 1 15862306a36Sopenharmony_ci power-domain-names: false 15962306a36Sopenharmony_ci resets: 16062306a36Sopenharmony_ci minItems: 3 16162306a36Sopenharmony_ci reset-names: 16262306a36Sopenharmony_ci items: 16362306a36Sopenharmony_ci - const: rst 16462306a36Sopenharmony_ci - const: axi_rst 16562306a36Sopenharmony_ci - const: ace_rst 16662306a36Sopenharmony_ci required: 16762306a36Sopenharmony_ci - clock-names 16862306a36Sopenharmony_ci - power-domains 16962306a36Sopenharmony_ci - resets 17062306a36Sopenharmony_ci - reset-names 17162306a36Sopenharmony_ci - if: 17262306a36Sopenharmony_ci properties: 17362306a36Sopenharmony_ci compatible: 17462306a36Sopenharmony_ci contains: 17562306a36Sopenharmony_ci const: mediatek,mt8183-mali 17662306a36Sopenharmony_ci then: 17762306a36Sopenharmony_ci properties: 17862306a36Sopenharmony_ci power-domains: 17962306a36Sopenharmony_ci minItems: 3 18062306a36Sopenharmony_ci maxItems: 3 18162306a36Sopenharmony_ci power-domain-names: 18262306a36Sopenharmony_ci items: 18362306a36Sopenharmony_ci - const: core0 18462306a36Sopenharmony_ci - const: core1 18562306a36Sopenharmony_ci - const: core2 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_ci required: 18862306a36Sopenharmony_ci - sram-supply 18962306a36Sopenharmony_ci - power-domains 19062306a36Sopenharmony_ci - power-domain-names 19162306a36Sopenharmony_ci else: 19262306a36Sopenharmony_ci properties: 19362306a36Sopenharmony_ci sram-supply: false 19462306a36Sopenharmony_ci - if: 19562306a36Sopenharmony_ci properties: 19662306a36Sopenharmony_ci compatible: 19762306a36Sopenharmony_ci contains: 19862306a36Sopenharmony_ci const: mediatek,mt8183b-mali 19962306a36Sopenharmony_ci then: 20062306a36Sopenharmony_ci properties: 20162306a36Sopenharmony_ci power-domains: 20262306a36Sopenharmony_ci minItems: 3 20362306a36Sopenharmony_ci maxItems: 3 20462306a36Sopenharmony_ci power-domain-names: 20562306a36Sopenharmony_ci items: 20662306a36Sopenharmony_ci - const: core0 20762306a36Sopenharmony_ci - const: core1 20862306a36Sopenharmony_ci - const: core2 20962306a36Sopenharmony_ci required: 21062306a36Sopenharmony_ci - power-domains 21162306a36Sopenharmony_ci - power-domain-names 21262306a36Sopenharmony_ci - if: 21362306a36Sopenharmony_ci properties: 21462306a36Sopenharmony_ci compatible: 21562306a36Sopenharmony_ci contains: 21662306a36Sopenharmony_ci const: mediatek,mt8186-mali 21762306a36Sopenharmony_ci then: 21862306a36Sopenharmony_ci properties: 21962306a36Sopenharmony_ci power-domains: 22062306a36Sopenharmony_ci minItems: 2 22162306a36Sopenharmony_ci maxItems: 2 22262306a36Sopenharmony_ci power-domain-names: 22362306a36Sopenharmony_ci items: 22462306a36Sopenharmony_ci - const: core0 22562306a36Sopenharmony_ci - const: core1 22662306a36Sopenharmony_ci required: 22762306a36Sopenharmony_ci - power-domains 22862306a36Sopenharmony_ci - power-domain-names 22962306a36Sopenharmony_ci - if: 23062306a36Sopenharmony_ci properties: 23162306a36Sopenharmony_ci compatible: 23262306a36Sopenharmony_ci contains: 23362306a36Sopenharmony_ci const: mediatek,mt8192-mali 23462306a36Sopenharmony_ci then: 23562306a36Sopenharmony_ci properties: 23662306a36Sopenharmony_ci power-domains: 23762306a36Sopenharmony_ci minItems: 5 23862306a36Sopenharmony_ci power-domain-names: 23962306a36Sopenharmony_ci items: 24062306a36Sopenharmony_ci - const: core0 24162306a36Sopenharmony_ci - const: core1 24262306a36Sopenharmony_ci - const: core2 24362306a36Sopenharmony_ci - const: core3 24462306a36Sopenharmony_ci - const: core4 24562306a36Sopenharmony_ci required: 24662306a36Sopenharmony_ci - power-domains 24762306a36Sopenharmony_ci - power-domain-names 24862306a36Sopenharmony_ci - if: 24962306a36Sopenharmony_ci properties: 25062306a36Sopenharmony_ci compatible: 25162306a36Sopenharmony_ci contains: 25262306a36Sopenharmony_ci const: rockchip,rk3568-mali 25362306a36Sopenharmony_ci then: 25462306a36Sopenharmony_ci properties: 25562306a36Sopenharmony_ci clocks: 25662306a36Sopenharmony_ci minItems: 2 25762306a36Sopenharmony_ci clock-names: 25862306a36Sopenharmony_ci items: 25962306a36Sopenharmony_ci - const: gpu 26062306a36Sopenharmony_ci - const: bus 26162306a36Sopenharmony_ci power-domains: 26262306a36Sopenharmony_ci maxItems: 1 26362306a36Sopenharmony_ci power-domain-names: false 26462306a36Sopenharmony_ci required: 26562306a36Sopenharmony_ci - clock-names 26662306a36Sopenharmony_ci 26762306a36Sopenharmony_ciexamples: 26862306a36Sopenharmony_ci - | 26962306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/irq.h> 27062306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 27162306a36Sopenharmony_ci 27262306a36Sopenharmony_ci gpu@ffe40000 { 27362306a36Sopenharmony_ci compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost"; 27462306a36Sopenharmony_ci reg = <0xffe40000 0x10000>; 27562306a36Sopenharmony_ci interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>, 27662306a36Sopenharmony_ci <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>, 27762306a36Sopenharmony_ci <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>; 27862306a36Sopenharmony_ci interrupt-names = "job", "mmu", "gpu"; 27962306a36Sopenharmony_ci clocks = <&clk 1>; 28062306a36Sopenharmony_ci mali-supply = <&vdd_gpu>; 28162306a36Sopenharmony_ci operating-points-v2 = <&gpu_opp_table>; 28262306a36Sopenharmony_ci resets = <&reset 0>, <&reset 1>; 28362306a36Sopenharmony_ci }; 28462306a36Sopenharmony_ci 28562306a36Sopenharmony_ci gpu_opp_table: opp-table { 28662306a36Sopenharmony_ci compatible = "operating-points-v2"; 28762306a36Sopenharmony_ci 28862306a36Sopenharmony_ci opp-533000000 { 28962306a36Sopenharmony_ci opp-hz = /bits/ 64 <533000000>; 29062306a36Sopenharmony_ci opp-microvolt = <1250000>; 29162306a36Sopenharmony_ci }; 29262306a36Sopenharmony_ci opp-450000000 { 29362306a36Sopenharmony_ci opp-hz = /bits/ 64 <450000000>; 29462306a36Sopenharmony_ci opp-microvolt = <1150000>; 29562306a36Sopenharmony_ci }; 29662306a36Sopenharmony_ci opp-400000000 { 29762306a36Sopenharmony_ci opp-hz = /bits/ 64 <400000000>; 29862306a36Sopenharmony_ci opp-microvolt = <1125000>; 29962306a36Sopenharmony_ci }; 30062306a36Sopenharmony_ci opp-350000000 { 30162306a36Sopenharmony_ci opp-hz = /bits/ 64 <350000000>; 30262306a36Sopenharmony_ci opp-microvolt = <1075000>; 30362306a36Sopenharmony_ci }; 30462306a36Sopenharmony_ci opp-266000000 { 30562306a36Sopenharmony_ci opp-hz = /bits/ 64 <266000000>; 30662306a36Sopenharmony_ci opp-microvolt = <1025000>; 30762306a36Sopenharmony_ci }; 30862306a36Sopenharmony_ci opp-160000000 { 30962306a36Sopenharmony_ci opp-hz = /bits/ 64 <160000000>; 31062306a36Sopenharmony_ci opp-microvolt = <925000>; 31162306a36Sopenharmony_ci }; 31262306a36Sopenharmony_ci opp-100000000 { 31362306a36Sopenharmony_ci opp-hz = /bits/ 64 <100000000>; 31462306a36Sopenharmony_ci opp-microvolt = <912500>; 31562306a36Sopenharmony_ci }; 31662306a36Sopenharmony_ci }; 31762306a36Sopenharmony_ci 31862306a36Sopenharmony_ci... 319