# SPDX-License-Identifier: GPL-2.0-only # Copyright 2019-2020, The Linux Foundation, All Rights Reserved %YAML 1.2 --- $id: http://devicetree.org/schemas/display/msm/gmu.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: GMU attached to certain Adreno GPUs maintainers: - Rob Clark <robdclark@gmail.com> description: | These bindings describe the Graphics Management Unit (GMU) that is attached to members of the Adreno A6xx GPU family. The GMU provides on-device power management and support to improve power efficiency and reduce the load on the CPU. properties: compatible: oneOf: - items: - pattern: '^qcom,adreno-gmu-6[0-9][0-9]\.[0-9]$' - const: qcom,adreno-gmu - const: qcom,adreno-gmu-wrapper reg: minItems: 1 maxItems: 4 reg-names: minItems: 1 maxItems: 4 clocks: minItems: 4 maxItems: 7 clock-names: minItems: 4 maxItems: 7 interrupts: items: - description: GMU HFI interrupt - description: GMU interrupt interrupt-names: items: - const: hfi - const: gmu power-domains: items: - description: CX power domain - description: GX power domain power-domain-names: items: - const: cx - const: gx iommus: maxItems: 1 operating-points-v2: true opp-table: type: object required: - compatible - reg - reg-names - power-domains - power-domain-names additionalProperties: false allOf: - if: properties: compatible: contains: enum: - qcom,adreno-gmu-618.0 - qcom,adreno-gmu-630.2 then: properties: reg: items: - description: Core GMU registers - description: GMU PDC registers - description: GMU PDC sequence registers reg-names: items: - const: gmu - const: gmu_pdc - const: gmu_pdc_seq clocks: items: - description: GMU clock - description: GPU CX clock - description: GPU AXI clock - description: GPU MEMNOC clock clock-names: items: - const: gmu - const: cxo - const: axi - const: memnoc - if: properties: compatible: contains: enum: - qcom,adreno-gmu-635.0 - qcom,adreno-gmu-660.1 then: properties: reg: items: - description: Core GMU registers - description: Resource controller registers - description: GMU PDC registers reg-names: items: - const: gmu - const: rscc - const: gmu_pdc clocks: items: - description: GMU clock - description: GPU CX clock - description: GPU AXI clock - description: GPU MEMNOC clock - description: GPU AHB clock - description: GPU HUB CX clock - description: GPU SMMU vote clock clock-names: items: - const: gmu - const: cxo - const: axi - const: memnoc - const: ahb - const: hub - const: smmu_vote - if: properties: compatible: contains: enum: - qcom,adreno-gmu-640.1 then: properties: reg: items: - description: Core GMU registers - description: GMU PDC registers - description: GMU PDC sequence registers reg-names: items: - const: gmu - const: gmu_pdc - const: gmu_pdc_seq - if: properties: compatible: contains: enum: - qcom,adreno-gmu-650.2 then: properties: reg: items: - description: Core GMU registers - description: Resource controller registers - description: GMU PDC registers - description: GMU PDC sequence registers reg-names: items: - const: gmu - const: rscc - const: gmu_pdc - const: gmu_pdc_seq - if: properties: compatible: contains: enum: - qcom,adreno-gmu-640.1 - qcom,adreno-gmu-650.2 then: properties: clocks: items: - description: GPU AHB clock - description: GMU clock - description: GPU CX clock - description: GPU AXI clock - description: GPU MEMNOC clock clock-names: items: - const: ahb - const: gmu - const: cxo - const: axi - const: memnoc - if: properties: compatible: contains: const: qcom,adreno-gmu-wrapper then: properties: reg: items: - description: GMU wrapper register space reg-names: items: - const: gmu else: required: - clocks - clock-names - interrupts - interrupt-names - iommus - operating-points-v2 examples: - | #include <dt-bindings/clock/qcom,gpucc-sdm845.h> #include <dt-bindings/clock/qcom,gcc-sdm845.h> #include <dt-bindings/interrupt-controller/irq.h> #include <dt-bindings/interrupt-controller/arm-gic.h> gmu: gmu@506a000 { compatible = "qcom,adreno-gmu-630.2", "qcom,adreno-gmu"; reg = <0x506a000 0x30000>, <0xb280000 0x10000>, <0xb480000 0x10000>; reg-names = "gmu", "gmu_pdc", "gmu_pdc_seq"; clocks = <&gpucc GPU_CC_CX_GMU_CLK>, <&gpucc GPU_CC_CXO_CLK>, <&gcc GCC_DDRSS_GPU_AXI_CLK>, <&gcc GCC_GPU_MEMNOC_GFX_CLK>; clock-names = "gmu", "cxo", "axi", "memnoc"; interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>; interrupt-names = "hfi", "gmu"; power-domains = <&gpucc GPU_CX_GDSC>, <&gpucc GPU_GX_GDSC>; power-domain-names = "cx", "gx"; iommus = <&adreno_smmu 5>; operating-points-v2 = <&gmu_opp_table>; }; gmu_wrapper: gmu@596a000 { compatible = "qcom,adreno-gmu-wrapper"; reg = <0x0596a000 0x30000>; reg-names = "gmu"; power-domains = <&gpucc GPU_CX_GDSC>, <&gpucc GPU_GX_GDSC>; power-domain-names = "cx", "gx"; };