The Mali-based GPU on the MediaTek MT8196 SoC uses a separate MCU to control the power and frequency of the GPU.
It lets us omit the OPP tables from the device tree, as those can now be enumerated at runtime from the MCU. It also means the mali GPU node described in this binding does not have any clocks in this case, as all clock control is delegated to the MCU. Add the mediatek,mt8196-mali compatible, and a performance-domains property which points to the MCU's device tree node in this case. It's required on mt8196 devices. Signed-off-by: Nicolas Frattaroli <[email protected]> --- .../bindings/gpu/arm,mali-valhall-csf.yaml | 32 ++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/Documentation/devicetree/bindings/gpu/arm,mali-valhall-csf.yaml b/Documentation/devicetree/bindings/gpu/arm,mali-valhall-csf.yaml index 7ad5a3ffc5f5c753322eda9e74cc65de89d11c73..ccab2dd0ea852187e3ab75923e19739622b2b3b8 100644 --- a/Documentation/devicetree/bindings/gpu/arm,mali-valhall-csf.yaml +++ b/Documentation/devicetree/bindings/gpu/arm,mali-valhall-csf.yaml @@ -38,7 +38,6 @@ properties: - const: gpu clocks: - minItems: 1 maxItems: 3 clock-names: @@ -54,6 +53,9 @@ properties: opp-table: type: object + performance-domains: + maxItems: 1 + power-domains: minItems: 1 maxItems: 5 @@ -92,7 +94,6 @@ required: - interrupts - interrupt-names - clocks - - mali-supply additionalProperties: false @@ -106,9 +107,26 @@ allOf: properties: clocks: minItems: 3 + performance-domains: false power-domains: maxItems: 1 power-domain-names: false + required: + - mali-supply + - if: + properties: + compatible: + contains: + const: mediatek,mt8196-mali + then: + properties: + mali-supply: false + sram-supply: false + operating-points-v2: false + clocks: false + clock-names: false + required: + - performance-domains examples: - | @@ -144,5 +162,15 @@ examples: }; }; }; + - | + gpu@48000000 { + compatible = "mediatek,mt8196-mali", "arm,mali-valhall-csf"; + reg = <0x48000000 0x480000>; + interrupts = <GIC_SPI 606 IRQ_TYPE_LEVEL_HIGH 0>, + <GIC_SPI 605 IRQ_TYPE_LEVEL_HIGH 0>, + <GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH 0>; + interrupt-names = "job", "mmu", "gpu"; + performance-domains = <&gpufreq>; + }; ... -- 2.51.0
