1a168b512SJordan Crouse# SPDX-License-Identifier: GPL-2.0-only 2a168b512SJordan Crouse# Copyright 2019-2020, The Linux Foundation, All Rights Reserved 3a168b512SJordan Crouse%YAML 1.2 4a168b512SJordan Crouse--- 5a168b512SJordan Crouse 6*4334aec0SRob Herring$id: http://devicetree.org/schemas/display/msm/gmu.yaml# 7*4334aec0SRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml# 8a168b512SJordan Crouse 99d69d47fSKrzysztof Kozlowskititle: GMU attached to certain Adreno GPUs 10a168b512SJordan Crouse 11a168b512SJordan Crousemaintainers: 12a168b512SJordan Crouse - Rob Clark <robdclark@gmail.com> 13a168b512SJordan Crouse 14a168b512SJordan Crousedescription: | 15a168b512SJordan Crouse These bindings describe the Graphics Management Unit (GMU) that is attached 16a168b512SJordan Crouse to members of the Adreno A6xx GPU family. The GMU provides on-device power 17a168b512SJordan Crouse management and support to improve power efficiency and reduce the load on 18a168b512SJordan Crouse the CPU. 19a168b512SJordan Crouse 20a168b512SJordan Crouseproperties: 21a168b512SJordan Crouse compatible: 22a168b512SJordan Crouse oneOf: 2347531e47SDmitry Baryshkov - items: 24a168b512SJordan Crouse - pattern: '^qcom,adreno-gmu-6[0-9][0-9]\.[0-9]$' 25a168b512SJordan Crouse - const: qcom,adreno-gmu 26a168b512SJordan Crouse - const: qcom,adreno-gmu-wrapper 2747531e47SDmitry Baryshkov 2847531e47SDmitry Baryshkov reg: 29a168b512SJordan Crouse minItems: 1 30a168b512SJordan Crouse maxItems: 4 3147531e47SDmitry Baryshkov 3247531e47SDmitry Baryshkov reg-names: 33a168b512SJordan Crouse minItems: 1 34a168b512SJordan Crouse maxItems: 4 3547531e47SDmitry Baryshkov 3647531e47SDmitry Baryshkov clocks: 37a168b512SJordan Crouse minItems: 4 38a168b512SJordan Crouse maxItems: 7 3947531e47SDmitry Baryshkov 4047531e47SDmitry Baryshkov clock-names: 41a168b512SJordan Crouse minItems: 4 42a168b512SJordan Crouse maxItems: 7 43a168b512SJordan Crouse 44a168b512SJordan Crouse interrupts: 45a168b512SJordan Crouse items: 46a168b512SJordan Crouse - description: GMU HFI interrupt 47a168b512SJordan Crouse - description: GMU interrupt 48a168b512SJordan Crouse 49a168b512SJordan Crouse interrupt-names: 50a168b512SJordan Crouse items: 51a168b512SJordan Crouse - const: hfi 52a168b512SJordan Crouse - const: gmu 53a168b512SJordan Crouse 54a168b512SJordan Crouse power-domains: 55a168b512SJordan Crouse items: 56a168b512SJordan Crouse - description: CX power domain 57a168b512SJordan Crouse - description: GX power domain 58a168b512SJordan Crouse 59a168b512SJordan Crouse power-domain-names: 60a168b512SJordan Crouse items: 61a168b512SJordan Crouse - const: cx 62a168b512SJordan Crouse - const: gx 63a168b512SJordan Crouse 64a168b512SJordan Crouse iommus: 65a168b512SJordan Crouse maxItems: 1 66a168b512SJordan Crouse 67a168b512SJordan Crouse operating-points-v2: true 6847531e47SDmitry Baryshkov 6947531e47SDmitry Baryshkov opp-table: 7047531e47SDmitry Baryshkov type: object 71a168b512SJordan Crouse 72a168b512SJordan Crouserequired: 73a168b512SJordan Crouse - compatible 74a168b512SJordan Crouse - reg 75a168b512SJordan Crouse - reg-names 76a168b512SJordan Crouse - power-domains 77a168b512SJordan Crouse - power-domain-names 78a168b512SJordan Crouse 79a168b512SJordan CrouseadditionalProperties: false 80a168b512SJordan Crouse 81a168b512SJordan CrouseallOf: 82a168b512SJordan Crouse - if: 83a168b512SJordan Crouse properties: 845be478f9SRob Herring compatible: 855be478f9SRob Herring contains: 8647531e47SDmitry Baryshkov enum: 8747531e47SDmitry Baryshkov - qcom,adreno-gmu-618.0 8847531e47SDmitry Baryshkov - qcom,adreno-gmu-630.2 8947531e47SDmitry Baryshkov then: 9047531e47SDmitry Baryshkov properties: 9147531e47SDmitry Baryshkov reg: 9247531e47SDmitry Baryshkov items: 9347531e47SDmitry Baryshkov - description: Core GMU registers 9447531e47SDmitry Baryshkov - description: GMU PDC registers 9547531e47SDmitry Baryshkov - description: GMU PDC sequence registers 9647531e47SDmitry Baryshkov reg-names: 9747531e47SDmitry Baryshkov items: 9847531e47SDmitry Baryshkov - const: gmu 9947531e47SDmitry Baryshkov - const: gmu_pdc 10047531e47SDmitry Baryshkov - const: gmu_pdc_seq 10147531e47SDmitry Baryshkov clocks: 10247531e47SDmitry Baryshkov items: 10347531e47SDmitry Baryshkov - description: GMU clock 10447531e47SDmitry Baryshkov - description: GPU CX clock 10547531e47SDmitry Baryshkov - description: GPU AXI clock 10647531e47SDmitry Baryshkov - description: GPU MEMNOC clock 10747531e47SDmitry Baryshkov clock-names: 10847531e47SDmitry Baryshkov items: 10947531e47SDmitry Baryshkov - const: gmu 11047531e47SDmitry Baryshkov - const: cxo 11147531e47SDmitry Baryshkov - const: axi 11247531e47SDmitry Baryshkov - const: memnoc 11347531e47SDmitry Baryshkov 11447531e47SDmitry Baryshkov - if: 11547531e47SDmitry Baryshkov properties: 11647531e47SDmitry Baryshkov compatible: 11747531e47SDmitry Baryshkov contains: 11847531e47SDmitry Baryshkov enum: 11947531e47SDmitry Baryshkov - qcom,adreno-gmu-635.0 12047531e47SDmitry Baryshkov - qcom,adreno-gmu-660.1 12147531e47SDmitry Baryshkov then: 12247531e47SDmitry Baryshkov properties: 12347531e47SDmitry Baryshkov reg: 12447531e47SDmitry Baryshkov items: 12547531e47SDmitry Baryshkov - description: Core GMU registers 12647531e47SDmitry Baryshkov - description: Resource controller registers 12747531e47SDmitry Baryshkov - description: GMU PDC registers 12847531e47SDmitry Baryshkov reg-names: 12947531e47SDmitry Baryshkov items: 13047531e47SDmitry Baryshkov - const: gmu 13147531e47SDmitry Baryshkov - const: rscc 13247531e47SDmitry Baryshkov - const: gmu_pdc 13347531e47SDmitry Baryshkov clocks: 13447531e47SDmitry Baryshkov items: 13547531e47SDmitry Baryshkov - description: GMU clock 13647531e47SDmitry Baryshkov - description: GPU CX clock 13747531e47SDmitry Baryshkov - description: GPU AXI clock 13847531e47SDmitry Baryshkov - description: GPU MEMNOC clock 13947531e47SDmitry Baryshkov - description: GPU AHB clock 14047531e47SDmitry Baryshkov - description: GPU HUB CX clock 14147531e47SDmitry Baryshkov - description: GPU SMMU vote clock 14247531e47SDmitry Baryshkov clock-names: 14347531e47SDmitry Baryshkov items: 14447531e47SDmitry Baryshkov - const: gmu 14547531e47SDmitry Baryshkov - const: cxo 14647531e47SDmitry Baryshkov - const: axi 14747531e47SDmitry Baryshkov - const: memnoc 14847531e47SDmitry Baryshkov - const: ahb 14947531e47SDmitry Baryshkov - const: hub 15047531e47SDmitry Baryshkov - const: smmu_vote 15147531e47SDmitry Baryshkov 15247531e47SDmitry Baryshkov - if: 15347531e47SDmitry Baryshkov properties: 15447531e47SDmitry Baryshkov compatible: 15547531e47SDmitry Baryshkov contains: 15647531e47SDmitry Baryshkov enum: 15747531e47SDmitry Baryshkov - qcom,adreno-gmu-640.1 15847531e47SDmitry Baryshkov then: 15947531e47SDmitry Baryshkov properties: 16047531e47SDmitry Baryshkov reg: 16147531e47SDmitry Baryshkov items: 16247531e47SDmitry Baryshkov - description: Core GMU registers 16347531e47SDmitry Baryshkov - description: GMU PDC registers 16447531e47SDmitry Baryshkov - description: GMU PDC sequence registers 16547531e47SDmitry Baryshkov reg-names: 16647531e47SDmitry Baryshkov items: 16747531e47SDmitry Baryshkov - const: gmu 16847531e47SDmitry Baryshkov - const: gmu_pdc 16947531e47SDmitry Baryshkov - const: gmu_pdc_seq 17047531e47SDmitry Baryshkov 17147531e47SDmitry Baryshkov - if: 17247531e47SDmitry Baryshkov properties: 17347531e47SDmitry Baryshkov compatible: 17447531e47SDmitry Baryshkov contains: 17547531e47SDmitry Baryshkov enum: 17647531e47SDmitry Baryshkov - qcom,adreno-gmu-650.2 17747531e47SDmitry Baryshkov then: 17847531e47SDmitry Baryshkov properties: 17947531e47SDmitry Baryshkov reg: 18047531e47SDmitry Baryshkov items: 18147531e47SDmitry Baryshkov - description: Core GMU registers 18247531e47SDmitry Baryshkov - description: Resource controller registers 18347531e47SDmitry Baryshkov - description: GMU PDC registers 18447531e47SDmitry Baryshkov - description: GMU PDC sequence registers 18547531e47SDmitry Baryshkov reg-names: 18647531e47SDmitry Baryshkov items: 18747531e47SDmitry Baryshkov - const: gmu 18847531e47SDmitry Baryshkov - const: rscc 18947531e47SDmitry Baryshkov - const: gmu_pdc 19047531e47SDmitry Baryshkov - const: gmu_pdc_seq 19147531e47SDmitry Baryshkov 19247531e47SDmitry Baryshkov - if: 19347531e47SDmitry Baryshkov properties: 19447531e47SDmitry Baryshkov compatible: 19547531e47SDmitry Baryshkov contains: 19647531e47SDmitry Baryshkov enum: 19747531e47SDmitry Baryshkov - qcom,adreno-gmu-640.1 19847531e47SDmitry Baryshkov - qcom,adreno-gmu-650.2 19947531e47SDmitry Baryshkov then: 20047531e47SDmitry Baryshkov properties: 20147531e47SDmitry Baryshkov clocks: 20247531e47SDmitry Baryshkov items: 20347531e47SDmitry Baryshkov - description: GPU AHB clock 20447531e47SDmitry Baryshkov - description: GMU clock 20547531e47SDmitry Baryshkov - description: GPU CX clock 20647531e47SDmitry Baryshkov - description: GPU AXI clock 20747531e47SDmitry Baryshkov - description: GPU MEMNOC clock 20847531e47SDmitry Baryshkov clock-names: 20947531e47SDmitry Baryshkov items: 21047531e47SDmitry Baryshkov - const: ahb 21147531e47SDmitry Baryshkov - const: gmu 21247531e47SDmitry Baryshkov - const: cxo 21347531e47SDmitry Baryshkov - const: axi 21447531e47SDmitry Baryshkov - const: memnoc 21547531e47SDmitry Baryshkov 21647531e47SDmitry Baryshkov - if: 21747531e47SDmitry Baryshkov properties: 21847531e47SDmitry Baryshkov compatible: 21947531e47SDmitry Baryshkov contains: 220a168b512SJordan Crouse const: qcom,adreno-gmu-wrapper 221a168b512SJordan Crouse then: 222a168b512SJordan Crouse properties: 223a168b512SJordan Crouse reg: 224a168b512SJordan Crouse items: 225a168b512SJordan Crouse - description: GMU wrapper register space 226a168b512SJordan Crouse reg-names: 227a168b512SJordan Crouse items: 228a168b512SJordan Crouse - const: gmu 229a168b512SJordan Crouse else: 230a168b512SJordan Crouse required: 231a168b512SJordan Crouse - clocks 232a168b512SJordan Crouse - clock-names 233a168b512SJordan Crouse - interrupts 234a168b512SJordan Crouse - interrupt-names 235a168b512SJordan Crouse - iommus 236a168b512SJordan Crouse - operating-points-v2 237a168b512SJordan Crouse 238a168b512SJordan Crouseexamples: 239a168b512SJordan Crouse - | 240a168b512SJordan Crouse #include <dt-bindings/clock/qcom,gpucc-sdm845.h> 241a168b512SJordan Crouse #include <dt-bindings/clock/qcom,gcc-sdm845.h> 242a168b512SJordan Crouse #include <dt-bindings/interrupt-controller/irq.h> 243a168b512SJordan Crouse #include <dt-bindings/interrupt-controller/arm-gic.h> 244a168b512SJordan Crouse 245a168b512SJordan Crouse gmu: gmu@506a000 { 246a168b512SJordan Crouse compatible = "qcom,adreno-gmu-630.2", "qcom,adreno-gmu"; 247a168b512SJordan Crouse 248a168b512SJordan Crouse reg = <0x506a000 0x30000>, 249a168b512SJordan Crouse <0xb280000 0x10000>, 250a168b512SJordan Crouse <0xb480000 0x10000>; 251a168b512SJordan Crouse reg-names = "gmu", "gmu_pdc", "gmu_pdc_seq"; 252 253 clocks = <&gpucc GPU_CC_CX_GMU_CLK>, 254 <&gpucc GPU_CC_CXO_CLK>, 255 <&gcc GCC_DDRSS_GPU_AXI_CLK>, 256 <&gcc GCC_GPU_MEMNOC_GFX_CLK>; 257 clock-names = "gmu", "cxo", "axi", "memnoc"; 258 259 interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>, 260 <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>; 261 interrupt-names = "hfi", "gmu"; 262 263 power-domains = <&gpucc GPU_CX_GDSC>, 264 <&gpucc GPU_GX_GDSC>; 265 power-domain-names = "cx", "gx"; 266 267 iommus = <&adreno_smmu 5>; 268 operating-points-v2 = <&gmu_opp_table>; 269 }; 270 271 gmu_wrapper: gmu@596a000 { 272 compatible = "qcom,adreno-gmu-wrapper"; 273 reg = <0x0596a000 0x30000>; 274 reg-names = "gmu"; 275 power-domains = <&gpucc GPU_CX_GDSC>, 276 <&gpucc GPU_GX_GDSC>; 277 power-domain-names = "cx", "gx"; 278 }; 279