1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mailbox/qcom,apcs-kpss-global.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm APCS global block
8
9description:
10  This binding describes the APCS "global" block found in various Qualcomm
11  platforms.
12
13maintainers:
14  - Jassi Brar <jassisinghbrar@gmail.com>
15
16properties:
17  compatible:
18    oneOf:
19      - items:
20          - enum:
21              - qcom,ipq5018-apcs-apps-global
22              - qcom,ipq5332-apcs-apps-global
23              - qcom,ipq8074-apcs-apps-global
24              - qcom,ipq9574-apcs-apps-global
25          - const: qcom,ipq6018-apcs-apps-global
26      - items:
27          - enum:
28              - qcom,sc7180-apss-shared
29              - qcom,sc8180x-apss-shared
30              - qcom,sm8150-apss-shared
31          - const: qcom,sdm845-apss-shared
32      - items:
33          - enum:
34              - qcom,msm8916-apcs-kpss-global
35              - qcom,msm8939-apcs-kpss-global
36              - qcom,msm8953-apcs-kpss-global
37              - qcom,msm8976-apcs-kpss-global
38              - qcom,msm8994-apcs-kpss-global
39              - qcom,qcs404-apcs-apps-global
40              - qcom,sdx55-apcs-gcc
41          - const: syscon
42      - enum:
43          - qcom,ipq6018-apcs-apps-global
44          - qcom,ipq8074-apcs-apps-global
45          - qcom,msm8996-apcs-hmss-global
46          - qcom,msm8998-apcs-hmss-global
47          - qcom,qcm2290-apcs-hmss-global
48          - qcom,sdm660-apcs-hmss-global
49          - qcom,sdm845-apss-shared
50          - qcom,sm4250-apcs-hmss-global
51          - qcom,sm6115-apcs-hmss-global
52          - qcom,sm6125-apcs-hmss-global
53
54  reg:
55    maxItems: 1
56
57  clocks:
58    description: phandles to the parent clocks of the clock driver
59    minItems: 2
60    maxItems: 3
61
62  '#mbox-cells':
63    const: 1
64
65  '#clock-cells':
66    enum: [0, 1]
67
68  clock-names:
69    minItems: 2
70    maxItems: 3
71
72required:
73  - compatible
74  - reg
75  - '#mbox-cells'
76
77additionalProperties: false
78
79allOf:
80  - if:
81      properties:
82        compatible:
83          enum:
84            - qcom,msm8916-apcs-kpss-global
85            - qcom,msm8939-apcs-kpss-global
86            - qcom,qcs404-apcs-apps-global
87    then:
88      properties:
89        clocks:
90          items:
91            - description: primary pll parent of the clock driver
92            - description: auxiliary parent
93        clock-names:
94          items:
95            - const: pll
96            - const: aux
97
98  - if:
99      properties:
100        compatible:
101          contains:
102            enum:
103              - qcom,sdx55-apcs-gcc
104    then:
105      properties:
106        clocks:
107          items:
108            - description: reference clock
109            - description: primary pll parent of the clock driver
110            - description: auxiliary parent
111        clock-names:
112          items:
113            - const: ref
114            - const: pll
115            - const: aux
116  - if:
117      properties:
118        compatible:
119          contains:
120            enum:
121              - qcom,ipq6018-apcs-apps-global
122    then:
123      properties:
124        clocks:
125          items:
126            - description: primary pll parent of the clock driver
127            - description: XO clock
128        clock-names:
129          items:
130            - const: pll
131            - const: xo
132
133  - if:
134      properties:
135        compatible:
136          enum:
137            - qcom,msm8953-apcs-kpss-global
138            - qcom,msm8976-apcs-kpss-global
139            - qcom,msm8994-apcs-kpss-global
140            - qcom,msm8996-apcs-hmss-global
141            - qcom,msm8998-apcs-hmss-global
142            - qcom,qcm2290-apcs-hmss-global
143            - qcom,sdm660-apcs-hmss-global
144            - qcom,sdm845-apss-shared
145            - qcom,sm4250-apcs-hmss-global
146            - qcom,sm6115-apcs-hmss-global
147            - qcom,sm6125-apcs-hmss-global
148    then:
149      properties:
150        clocks: false
151        clock-names: false
152
153  - if:
154      properties:
155        compatible:
156          contains:
157            enum:
158              - qcom,ipq6018-apcs-apps-global
159    then:
160      properties:
161        '#clock-cells':
162          const: 1
163    else:
164      properties:
165        '#clock-cells':
166          const: 0
167
168examples:
169
170  # Example apcs with msm8996
171  - |
172    #include <dt-bindings/interrupt-controller/arm-gic.h>
173    apcs_glb: mailbox@9820000 {
174        compatible = "qcom,msm8996-apcs-hmss-global";
175        reg = <0x9820000 0x1000>;
176
177        #mbox-cells = <1>;
178        #clock-cells = <0>;
179    };
180
181    rpm-glink {
182        compatible = "qcom,glink-rpm";
183        interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
184        qcom,rpm-msg-ram = <&rpm_msg_ram>;
185        mboxes = <&apcs_glb 0>;
186    };
187
188  # Example apcs with qcs404
189  - |
190    #define GCC_APSS_AHB_CLK_SRC  1
191    #define GCC_GPLL0_AO_OUT_MAIN 123
192    apcs: mailbox@b011000 {
193        compatible = "qcom,qcs404-apcs-apps-global", "syscon";
194        reg = <0x0b011000 0x1000>;
195        #mbox-cells = <1>;
196        clocks = <&apcs_hfpll>, <&gcc GCC_GPLL0_AO_OUT_MAIN>;
197        clock-names = "pll", "aux";
198        #clock-cells = <0>;
199    };
200