# SPDX-License-Identifier: GPL-2.0-only %YAML 1.2 --- $id: http://devicetree.org/schemas/gpu/arm,mali-bifrost.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: ARM Mali Bifrost GPU maintainers: - Rob Herring <robh@kernel.org> properties: $nodename: pattern: '^gpu@[a-f0-9]+$' compatible: oneOf: - items: - enum: - amlogic,meson-g12a-mali - mediatek,mt8183-mali - mediatek,mt8183b-mali - mediatek,mt8186-mali - realtek,rtd1619-mali - renesas,r9a07g044-mali - renesas,r9a07g054-mali - rockchip,px30-mali - rockchip,rk3568-mali - const: arm,mali-bifrost # Mali Bifrost GPU model/revision is fully discoverable - items: - enum: - mediatek,mt8195-mali - const: mediatek,mt8192-mali - const: arm,mali-valhall-jm # Mali Valhall GPU model/revision is fully discoverable - items: - enum: - mediatek,mt8192-mali - const: arm,mali-valhall-jm # Mali Valhall GPU model/revision is fully discoverable reg: maxItems: 1 interrupts: minItems: 3 items: - description: Job interrupt - description: MMU interrupt - description: GPU interrupt - description: Event interrupt interrupt-names: minItems: 3 items: - const: job - const: mmu - const: gpu - const: event clocks: minItems: 1 maxItems: 3 clock-names: true mali-supply: true sram-supply: true operating-points-v2: true power-domains: minItems: 1 maxItems: 5 power-domain-names: minItems: 2 maxItems: 5 resets: minItems: 1 maxItems: 3 reset-names: true "#cooling-cells": const: 2 dynamic-power-coefficient: $ref: /schemas/types.yaml#/definitions/uint32 description: A u32 value that represents the running time dynamic power coefficient in units of uW/MHz/V^2. The coefficient can either be calculated from power measurements or derived by analysis. The dynamic power consumption of the GPU is proportional to the square of the Voltage (V) and the clock frequency (f). The coefficient is used to calculate the dynamic power as below - Pdyn = dynamic-power-coefficient * V^2 * f where voltage is in V, frequency is in MHz. dma-coherent: true nvmem-cell-names: items: - const: speed-bin nvmem-cells: maxItems: 1 required: - compatible - reg - interrupts - interrupt-names - clocks additionalProperties: false allOf: - if: properties: compatible: contains: const: amlogic,meson-g12a-mali then: properties: power-domains: maxItems: 1 power-domain-names: false required: - resets - if: properties: compatible: contains: enum: - renesas,r9a07g044-mali - renesas,r9a07g054-mali then: properties: interrupts: minItems: 4 interrupt-names: minItems: 4 clocks: minItems: 3 clock-names: items: - const: gpu - const: bus - const: bus_ace power-domains: maxItems: 1 power-domain-names: false resets: minItems: 3 reset-names: items: - const: rst - const: axi_rst - const: ace_rst required: - clock-names - power-domains - resets - reset-names - if: properties: compatible: contains: const: mediatek,mt8183-mali then: properties: power-domains: minItems: 3 maxItems: 3 power-domain-names: items: - const: core0 - const: core1 - const: core2 required: - sram-supply - power-domains - power-domain-names else: properties: sram-supply: false - if: properties: compatible: contains: const: mediatek,mt8183b-mali then: properties: power-domains: minItems: 3 maxItems: 3 power-domain-names: items: - const: core0 - const: core1 - const: core2 required: - power-domains - power-domain-names - if: properties: compatible: contains: const: mediatek,mt8186-mali then: properties: power-domains: minItems: 2 maxItems: 2 power-domain-names: items: - const: core0 - const: core1 required: - power-domains - power-domain-names - if: properties: compatible: contains: const: mediatek,mt8192-mali then: properties: power-domains: minItems: 5 power-domain-names: items: - const: core0 - const: core1 - const: core2 - const: core3 - const: core4 required: - power-domains - power-domain-names - if: properties: compatible: contains: const: rockchip,rk3568-mali then: properties: clocks: minItems: 2 clock-names: items: - const: gpu - const: bus power-domains: maxItems: 1 power-domain-names: false required: - clock-names examples: - | #include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/arm-gic.h> gpu@ffe40000 { compatible = "amlogic,meson-g12a-mali", "arm,mali-bifrost"; reg = <0xffe40000 0x10000>; interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "job", "mmu", "gpu"; clocks = <&clk 1>; mali-supply = <&vdd_gpu>; operating-points-v2 = <&gpu_opp_table>; resets = <&reset 0>, <&reset 1>; }; gpu_opp_table: opp-table { compatible = "operating-points-v2"; opp-533000000 { opp-hz = /bits/ 64 <533000000>; opp-microvolt = <1250000>; }; opp-450000000 { opp-hz = /bits/ 64 <450000000>; opp-microvolt = <1150000>; }; opp-400000000 { opp-hz = /bits/ 64 <400000000>; opp-microvolt = <1125000>; }; opp-350000000 { opp-hz = /bits/ 64 <350000000>; opp-microvolt = <1075000>; }; opp-266000000 { opp-hz = /bits/ 64 <266000000>; opp-microvolt = <1025000>; }; opp-160000000 { opp-hz = /bits/ 64 <160000000>; opp-microvolt = <925000>; }; opp-100000000 { opp-hz = /bits/ 64 <100000000>; opp-microvolt = <912500>; }; }; ...