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,qcs404-apcs-apps-global
29          - const: qcom,msm8916-apcs-kpss-global
30          - const: syscon
31      - items:
32          - enum:
33              - qcom,msm8976-apcs-kpss-global
34          - const: qcom,msm8994-apcs-kpss-global
35          - const: syscon
36      - items:
37          - enum:
38              - qcom,msm8998-apcs-hmss-global
39              - qcom,sdm660-apcs-hmss-global
40              - qcom,sm4250-apcs-hmss-global
41              - qcom,sm6115-apcs-hmss-global
42              - qcom,sm6125-apcs-hmss-global
43          - const: qcom,msm8994-apcs-kpss-global
44      - items:
45          - enum:
46              - qcom,sc7180-apss-shared
47              - qcom,sc8180x-apss-shared
48              - qcom,sm8150-apss-shared
49          - const: qcom,sdm845-apss-shared
50      - items:
51          - enum:
52              - qcom,msm8916-apcs-kpss-global
53              - qcom,msm8939-apcs-kpss-global
54              - qcom,msm8953-apcs-kpss-global
55              - qcom,msm8994-apcs-kpss-global
56              - qcom,sdx55-apcs-gcc
57          - const: syscon
58      - enum:
59          - qcom,ipq6018-apcs-apps-global
60          - qcom,msm8996-apcs-hmss-global
61          - qcom,qcm2290-apcs-hmss-global
62          - qcom,sdm845-apss-shared
63
64  reg:
65    maxItems: 1
66
67  clocks:
68    description: phandles to the parent clocks of the clock driver
69    minItems: 2
70    maxItems: 3
71
72  '#mbox-cells':
73    const: 1
74
75  '#clock-cells':
76    enum: [0, 1]
77
78  clock-names:
79    minItems: 2
80    maxItems: 3
81
82required:
83  - compatible
84  - reg
85  - '#mbox-cells'
86
87additionalProperties: false
88
89allOf:
90  - if:
91      properties:
92        compatible:
93          contains:
94            enum:
95              - qcom,msm8916-apcs-kpss-global
96    then:
97      properties:
98        clocks:
99          items:
100            - description: primary pll parent of the clock driver
101            - description: auxiliary parent
102        clock-names:
103          items:
104            - const: pll
105            - const: aux
106
107  - if:
108      properties:
109        compatible:
110          contains:
111            enum:
112              - qcom,msm8939-apcs-kpss-global
113    then:
114      properties:
115        clocks:
116          items:
117            - description: primary pll parent of the clock driver
118            - description: auxiliary parent
119            - description: reference clock
120        clock-names:
121          items:
122            - const: pll
123            - const: aux
124            - const: ref
125
126  - if:
127      properties:
128        compatible:
129          contains:
130            enum:
131              - qcom,sdx55-apcs-gcc
132    then:
133      properties:
134        clocks:
135          items:
136            - description: reference clock
137            - description: primary pll parent of the clock driver
138            - description: auxiliary parent
139        clock-names:
140          items:
141            - const: ref
142            - const: pll
143            - const: aux
144
145  - if:
146      properties:
147        compatible:
148          contains:
149            enum:
150              - qcom,ipq6018-apcs-apps-global
151    then:
152      properties:
153        clocks:
154          items:
155            - description: primary pll parent of the clock driver
156            - description: XO clock
157            - description: GCC GPLL0 clock source
158        clock-names:
159          items:
160            - const: pll
161            - const: xo
162            - const: gpll0
163
164  - if:
165      properties:
166        compatible:
167          enum:
168            - qcom,msm8953-apcs-kpss-global
169            - qcom,msm8994-apcs-kpss-global
170            - qcom,msm8996-apcs-hmss-global
171            - qcom,qcm2290-apcs-hmss-global
172            - qcom,sdm845-apss-shared
173    then:
174      properties:
175        clocks: false
176        clock-names: false
177
178  - if:
179      properties:
180        compatible:
181          contains:
182            enum:
183              - qcom,ipq6018-apcs-apps-global
184    then:
185      properties:
186        '#clock-cells':
187          const: 1
188    else:
189      properties:
190        '#clock-cells':
191          const: 0
192
193examples:
194
195  # Example apcs with msm8996
196  - |
197    #include <dt-bindings/interrupt-controller/arm-gic.h>
198    apcs_glb: mailbox@9820000 {
199        compatible = "qcom,msm8996-apcs-hmss-global";
200        reg = <0x9820000 0x1000>;
201
202        #mbox-cells = <1>;
203        #clock-cells = <0>;
204    };
205
206    rpm-glink {
207        compatible = "qcom,glink-rpm";
208        interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
209        qcom,rpm-msg-ram = <&rpm_msg_ram>;
210        mboxes = <&apcs_glb 0>;
211    };
212
213  # Example apcs with qcs404
214  - |
215    #define GCC_APSS_AHB_CLK_SRC  1
216    #define GCC_GPLL0_AO_OUT_MAIN 123
217    apcs: mailbox@b011000 {
218        compatible = "qcom,qcs404-apcs-apps-global",
219                     "qcom,msm8916-apcs-kpss-global", "syscon";
220        reg = <0x0b011000 0x1000>;
221        #mbox-cells = <1>;
222        clocks = <&apcs_hfpll>, <&gcc GCC_GPLL0_AO_OUT_MAIN>;
223        clock-names = "pll", "aux";
224        #clock-cells = <0>;
225    };
226