xref: /openbmc/linux/Documentation/devicetree/bindings/display/msm/gmu.yaml (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
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