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