18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci# Copyright 2019-2020, The Linux Foundation, All Rights Reserved
38c2ecf20Sopenharmony_ci%YAML 1.2
48c2ecf20Sopenharmony_ci---
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ci$id: "http://devicetree.org/schemas/display/msm/gmu.yaml#"
78c2ecf20Sopenharmony_ci$schema: "http://devicetree.org/meta-schemas/core.yaml#"
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cititle: Devicetree bindings for the GMU attached to certain Adreno GPUs
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_cimaintainers:
128c2ecf20Sopenharmony_ci  - Rob Clark <robdclark@gmail.com>
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_cidescription: |
158c2ecf20Sopenharmony_ci  These bindings describe the Graphics Management Unit (GMU) that is attached
168c2ecf20Sopenharmony_ci  to members of the Adreno A6xx GPU family. The GMU provides on-device power
178c2ecf20Sopenharmony_ci  management and support to improve power efficiency and reduce the load on
188c2ecf20Sopenharmony_ci  the CPU.
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ciproperties:
218c2ecf20Sopenharmony_ci  compatible:
228c2ecf20Sopenharmony_ci    items:
238c2ecf20Sopenharmony_ci      - enum:
248c2ecf20Sopenharmony_ci          - qcom,adreno-gmu-630.2
258c2ecf20Sopenharmony_ci      - const: qcom,adreno-gmu
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci  reg:
288c2ecf20Sopenharmony_ci    items:
298c2ecf20Sopenharmony_ci      - description: Core GMU registers
308c2ecf20Sopenharmony_ci      - description: GMU PDC registers
318c2ecf20Sopenharmony_ci      - description: GMU PDC sequence registers
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci  reg-names:
348c2ecf20Sopenharmony_ci    items:
358c2ecf20Sopenharmony_ci      - const: gmu
368c2ecf20Sopenharmony_ci      - const: gmu_pdc
378c2ecf20Sopenharmony_ci      - const: gmu_pdc_seq
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci  clocks:
408c2ecf20Sopenharmony_ci    items:
418c2ecf20Sopenharmony_ci      - description: GMU clock
428c2ecf20Sopenharmony_ci      - description: GPU CX clock
438c2ecf20Sopenharmony_ci      - description: GPU AXI clock
448c2ecf20Sopenharmony_ci      - description: GPU MEMNOC clock
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci  clock-names:
478c2ecf20Sopenharmony_ci    items:
488c2ecf20Sopenharmony_ci      - const: gmu
498c2ecf20Sopenharmony_ci      - const: cxo
508c2ecf20Sopenharmony_ci      - const: axi
518c2ecf20Sopenharmony_ci      - const: memnoc
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci  interrupts:
548c2ecf20Sopenharmony_ci    items:
558c2ecf20Sopenharmony_ci      - description: GMU HFI interrupt
568c2ecf20Sopenharmony_ci      - description: GMU interrupt
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_ci  interrupt-names:
608c2ecf20Sopenharmony_ci    items:
618c2ecf20Sopenharmony_ci      - const: hfi
628c2ecf20Sopenharmony_ci      - const: gmu
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ci  power-domains:
658c2ecf20Sopenharmony_ci    items:
668c2ecf20Sopenharmony_ci      - description: CX power domain
678c2ecf20Sopenharmony_ci      - description: GX power domain
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci  power-domain-names:
708c2ecf20Sopenharmony_ci    items:
718c2ecf20Sopenharmony_ci      - const: cx
728c2ecf20Sopenharmony_ci      - const: gx
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci  iommus:
758c2ecf20Sopenharmony_ci    maxItems: 1
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ci  operating-points-v2: true
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_cirequired:
808c2ecf20Sopenharmony_ci  - compatible
818c2ecf20Sopenharmony_ci  - reg
828c2ecf20Sopenharmony_ci  - reg-names
838c2ecf20Sopenharmony_ci  - clocks
848c2ecf20Sopenharmony_ci  - clock-names
858c2ecf20Sopenharmony_ci  - interrupts
868c2ecf20Sopenharmony_ci  - interrupt-names
878c2ecf20Sopenharmony_ci  - power-domains
888c2ecf20Sopenharmony_ci  - power-domain-names
898c2ecf20Sopenharmony_ci  - iommus
908c2ecf20Sopenharmony_ci  - operating-points-v2
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ciadditionalProperties: false
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ciexamples:
958c2ecf20Sopenharmony_ci  - |
968c2ecf20Sopenharmony_ci    #include <dt-bindings/clock/qcom,gpucc-sdm845.h>
978c2ecf20Sopenharmony_ci    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
988c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
998c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ci    gmu: gmu@506a000 {
1028c2ecf20Sopenharmony_ci        compatible="qcom,adreno-gmu-630.2", "qcom,adreno-gmu";
1038c2ecf20Sopenharmony_ci
1048c2ecf20Sopenharmony_ci        reg = <0x506a000 0x30000>,
1058c2ecf20Sopenharmony_ci              <0xb280000 0x10000>,
1068c2ecf20Sopenharmony_ci              <0xb480000 0x10000>;
1078c2ecf20Sopenharmony_ci        reg-names = "gmu", "gmu_pdc", "gmu_pdc_seq";
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ci        clocks = <&gpucc GPU_CC_CX_GMU_CLK>,
1108c2ecf20Sopenharmony_ci                 <&gpucc GPU_CC_CXO_CLK>,
1118c2ecf20Sopenharmony_ci                 <&gcc GCC_DDRSS_GPU_AXI_CLK>,
1128c2ecf20Sopenharmony_ci                 <&gcc GCC_GPU_MEMNOC_GFX_CLK>;
1138c2ecf20Sopenharmony_ci        clock-names = "gmu", "cxo", "axi", "memnoc";
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci        interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
1168c2ecf20Sopenharmony_ci                     <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
1178c2ecf20Sopenharmony_ci        interrupt-names = "hfi", "gmu";
1188c2ecf20Sopenharmony_ci
1198c2ecf20Sopenharmony_ci        power-domains = <&gpucc GPU_CX_GDSC>,
1208c2ecf20Sopenharmony_ci                        <&gpucc GPU_GX_GDSC>;
1218c2ecf20Sopenharmony_ci        power-domain-names = "cx", "gx";
1228c2ecf20Sopenharmony_ci
1238c2ecf20Sopenharmony_ci        iommus = <&adreno_smmu 5>;
1248c2ecf20Sopenharmony_ci        operating-points-v2 = <&gmu_opp_table>;
1258c2ecf20Sopenharmony_ci    };
126