xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/display/msm/gmu.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyun# Copyright 2019-2020, The Linux Foundation, All Rights Reserved
3*4882a593Smuzhiyun%YAML 1.2
4*4882a593Smuzhiyun---
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun$id: "http://devicetree.org/schemas/display/msm/gmu.yaml#"
7*4882a593Smuzhiyun$schema: "http://devicetree.org/meta-schemas/core.yaml#"
8*4882a593Smuzhiyun
9*4882a593Smuzhiyuntitle: Devicetree bindings for the GMU attached to certain Adreno GPUs
10*4882a593Smuzhiyun
11*4882a593Smuzhiyunmaintainers:
12*4882a593Smuzhiyun  - Rob Clark <robdclark@gmail.com>
13*4882a593Smuzhiyun
14*4882a593Smuzhiyundescription: |
15*4882a593Smuzhiyun  These bindings describe the Graphics Management Unit (GMU) that is attached
16*4882a593Smuzhiyun  to members of the Adreno A6xx GPU family. The GMU provides on-device power
17*4882a593Smuzhiyun  management and support to improve power efficiency and reduce the load on
18*4882a593Smuzhiyun  the CPU.
19*4882a593Smuzhiyun
20*4882a593Smuzhiyunproperties:
21*4882a593Smuzhiyun  compatible:
22*4882a593Smuzhiyun    items:
23*4882a593Smuzhiyun      - enum:
24*4882a593Smuzhiyun          - qcom,adreno-gmu-630.2
25*4882a593Smuzhiyun      - const: qcom,adreno-gmu
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun  reg:
28*4882a593Smuzhiyun    items:
29*4882a593Smuzhiyun      - description: Core GMU registers
30*4882a593Smuzhiyun      - description: GMU PDC registers
31*4882a593Smuzhiyun      - description: GMU PDC sequence registers
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun  reg-names:
34*4882a593Smuzhiyun    items:
35*4882a593Smuzhiyun      - const: gmu
36*4882a593Smuzhiyun      - const: gmu_pdc
37*4882a593Smuzhiyun      - const: gmu_pdc_seq
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun  clocks:
40*4882a593Smuzhiyun    items:
41*4882a593Smuzhiyun      - description: GMU clock
42*4882a593Smuzhiyun      - description: GPU CX clock
43*4882a593Smuzhiyun      - description: GPU AXI clock
44*4882a593Smuzhiyun      - description: GPU MEMNOC clock
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun  clock-names:
47*4882a593Smuzhiyun    items:
48*4882a593Smuzhiyun      - const: gmu
49*4882a593Smuzhiyun      - const: cxo
50*4882a593Smuzhiyun      - const: axi
51*4882a593Smuzhiyun      - const: memnoc
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun  interrupts:
54*4882a593Smuzhiyun    items:
55*4882a593Smuzhiyun      - description: GMU HFI interrupt
56*4882a593Smuzhiyun      - description: GMU interrupt
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun  interrupt-names:
60*4882a593Smuzhiyun    items:
61*4882a593Smuzhiyun      - const: hfi
62*4882a593Smuzhiyun      - const: gmu
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun  power-domains:
65*4882a593Smuzhiyun    items:
66*4882a593Smuzhiyun      - description: CX power domain
67*4882a593Smuzhiyun      - description: GX power domain
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun  power-domain-names:
70*4882a593Smuzhiyun    items:
71*4882a593Smuzhiyun      - const: cx
72*4882a593Smuzhiyun      - const: gx
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun  iommus:
75*4882a593Smuzhiyun    maxItems: 1
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun  operating-points-v2: true
78*4882a593Smuzhiyun
79*4882a593Smuzhiyunrequired:
80*4882a593Smuzhiyun  - compatible
81*4882a593Smuzhiyun  - reg
82*4882a593Smuzhiyun  - reg-names
83*4882a593Smuzhiyun  - clocks
84*4882a593Smuzhiyun  - clock-names
85*4882a593Smuzhiyun  - interrupts
86*4882a593Smuzhiyun  - interrupt-names
87*4882a593Smuzhiyun  - power-domains
88*4882a593Smuzhiyun  - power-domain-names
89*4882a593Smuzhiyun  - iommus
90*4882a593Smuzhiyun  - operating-points-v2
91*4882a593Smuzhiyun
92*4882a593SmuzhiyunadditionalProperties: false
93*4882a593Smuzhiyun
94*4882a593Smuzhiyunexamples:
95*4882a593Smuzhiyun  - |
96*4882a593Smuzhiyun    #include <dt-bindings/clock/qcom,gpucc-sdm845.h>
97*4882a593Smuzhiyun    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
98*4882a593Smuzhiyun    #include <dt-bindings/interrupt-controller/irq.h>
99*4882a593Smuzhiyun    #include <dt-bindings/interrupt-controller/arm-gic.h>
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun    gmu: gmu@506a000 {
102*4882a593Smuzhiyun        compatible="qcom,adreno-gmu-630.2", "qcom,adreno-gmu";
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun        reg = <0x506a000 0x30000>,
105*4882a593Smuzhiyun              <0xb280000 0x10000>,
106*4882a593Smuzhiyun              <0xb480000 0x10000>;
107*4882a593Smuzhiyun        reg-names = "gmu", "gmu_pdc", "gmu_pdc_seq";
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun        clocks = <&gpucc GPU_CC_CX_GMU_CLK>,
110*4882a593Smuzhiyun                 <&gpucc GPU_CC_CXO_CLK>,
111*4882a593Smuzhiyun                 <&gcc GCC_DDRSS_GPU_AXI_CLK>,
112*4882a593Smuzhiyun                 <&gcc GCC_GPU_MEMNOC_GFX_CLK>;
113*4882a593Smuzhiyun        clock-names = "gmu", "cxo", "axi", "memnoc";
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun        interrupts = <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
116*4882a593Smuzhiyun                     <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>;
117*4882a593Smuzhiyun        interrupt-names = "hfi", "gmu";
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun        power-domains = <&gpucc GPU_CX_GDSC>,
120*4882a593Smuzhiyun                        <&gpucc GPU_GX_GDSC>;
121*4882a593Smuzhiyun        power-domain-names = "cx", "gx";
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun        iommus = <&adreno_smmu 5>;
124*4882a593Smuzhiyun        operating-points-v2 = <&gmu_opp_table>;
125*4882a593Smuzhiyun    };
126