xref: /linux/Documentation/devicetree/bindings/mailbox/qcom,apcs-kpss-global.yaml (revision e7e86d7697c6ed1dbbde18d7185c35b6967945ed)
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,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,msm8226-apcs-kpss-global
30              - qcom,qcs404-apcs-apps-global
31          - const: qcom,msm8916-apcs-kpss-global
32          - const: syscon
33      - items:
34          - enum:
35              - qcom,msm8974-apcs-kpss-global
36              - qcom,msm8976-apcs-kpss-global
37          - const: qcom,msm8994-apcs-kpss-global
38          - const: syscon
39      - items:
40          - enum:
41              - qcom,msm8998-apcs-hmss-global
42              - qcom,sdm660-apcs-hmss-global
43              - qcom,sm4250-apcs-hmss-global
44              - qcom,sm6115-apcs-hmss-global
45              - qcom,sm6125-apcs-hmss-global
46          - const: qcom,msm8994-apcs-kpss-global
47      - items:
48          - enum:
49              - qcom,qcs615-apss-shared
50              - qcom,sc7180-apss-shared
51              - qcom,sc8180x-apss-shared
52              - qcom,sm7150-apss-shared
53              - qcom,sm8150-apss-shared
54          - const: qcom,sdm845-apss-shared
55      - items:
56          - enum:
57              - qcom,msm8916-apcs-kpss-global
58              - qcom,msm8939-apcs-kpss-global
59              - qcom,msm8953-apcs-kpss-global
60              - qcom,msm8994-apcs-kpss-global
61              - qcom,sdx55-apcs-gcc
62          - const: syscon
63      - enum:
64          - qcom,ipq6018-apcs-apps-global
65          - qcom,msm8996-apcs-hmss-global
66          - qcom,qcm2290-apcs-hmss-global
67          - qcom,sdm845-apss-shared
68
69  reg:
70    maxItems: 1
71
72  clocks:
73    description: phandles to the parent clocks of the clock driver
74    minItems: 2
75    maxItems: 3
76    deprecated: true
77
78  '#mbox-cells':
79    const: 1
80
81  '#clock-cells':
82    enum: [0, 1]
83
84  clock-names:
85    minItems: 2
86    maxItems: 3
87    deprecated: true
88
89  clock-controller:
90    type: object
91    additionalProperties: false
92    properties:
93      clocks:
94        description: phandles to the parent clocks of the clock driver
95        minItems: 2
96        maxItems: 3
97
98      '#clock-cells':
99        enum: [0, 1]
100
101      clock-names:
102        minItems: 2
103        maxItems: 3
104
105required:
106  - compatible
107  - reg
108  - '#mbox-cells'
109
110additionalProperties: false
111
112# Clocks should be specified either on the parent node or on the child node
113oneOf:
114  - required:
115      - clock-controller
116    properties:
117      clocks: false
118      clock-names: false
119      '#clock-cells': false
120  - properties:
121      clock-controller: false
122
123$defs:
124  msm8916-apcs-clock-controller:
125    properties:
126      clocks:
127        items:
128          - description: primary pll parent of the clock driver
129          - description: auxiliary parent
130      clock-names:
131        items:
132          - const: pll
133          - const: aux
134      '#clock-cells':
135        const: 0
136
137  msm8939-apcs-clock-controller:
138    properties:
139      clocks:
140        items:
141          - description: primary pll parent of the clock driver
142          - description: auxiliary parent
143          - description: reference clock
144      clock-names:
145        items:
146          - const: pll
147          - const: aux
148          - const: ref
149      '#clock-cells':
150        const: 0
151
152  sdx55-apcs-clock-controller:
153    properties:
154      clocks:
155        items:
156          - description: reference clock
157          - description: primary pll parent of the clock driver
158          - description: auxiliary parent
159      clock-names:
160        items:
161          - const: ref
162          - const: pll
163          - const: aux
164      '#clock-cells':
165        const: 0
166
167  ipq6018-apcs-clock-controller:
168    properties:
169      clocks:
170        items:
171          - description: primary pll parent of the clock driver
172          - description: XO clock
173          - description: GCC GPLL0 clock source
174      clock-names:
175        items:
176          - const: pll
177          - const: xo
178          - const: gpll0
179      '#clock-cells':
180        const: 1
181
182allOf:
183  - if:
184      properties:
185        compatible:
186          contains:
187            enum:
188              - qcom,msm8916-apcs-kpss-global
189    then:
190      $ref: "#/$defs/msm8916-apcs-clock-controller"
191      properties:
192        clock-controller:
193          $ref: "#/$defs/msm8916-apcs-clock-controller"
194
195  - if:
196      properties:
197        compatible:
198          contains:
199            enum:
200              - qcom,msm8939-apcs-kpss-global
201    then:
202      $ref: "#/$defs/msm8939-apcs-clock-controller"
203      properties:
204        clock-controller:
205          $ref: "#/$defs/msm8939-apcs-clock-controller"
206
207  - if:
208      properties:
209        compatible:
210          contains:
211            enum:
212              - qcom,sdx55-apcs-gcc
213    then:
214      $ref: "#/$defs/sdx55-apcs-clock-controller"
215      properties:
216        clock-controller:
217          $ref: "#/$defs/sdx55-apcs-clock-controller"
218
219  - if:
220      properties:
221        compatible:
222          contains:
223            enum:
224              - qcom,ipq6018-apcs-apps-global
225    then:
226      $ref: "#/$defs/ipq6018-apcs-clock-controller"
227      properties:
228        clock-controller:
229          $ref: "#/$defs/ipq6018-apcs-clock-controller"
230
231  - if:
232      properties:
233        compatible:
234          contains:
235            enum:
236              - qcom,msm8953-apcs-kpss-global
237              - qcom,msm8994-apcs-kpss-global
238              - qcom,msm8996-apcs-hmss-global
239              - qcom,qcm2290-apcs-hmss-global
240              - qcom,sdm845-apss-shared
241    then:
242      properties:
243        clocks: false
244        clock-names: false
245        clock-controller: false
246        '#clock-cells':
247          const: 0
248
249examples:
250
251  # Example apcs with msm8996
252  - |
253    #include <dt-bindings/interrupt-controller/arm-gic.h>
254    mailbox@9820000 {
255        compatible = "qcom,msm8996-apcs-hmss-global";
256        reg = <0x9820000 0x1000>;
257
258        #mbox-cells = <1>;
259        #clock-cells = <0>;
260    };
261
262  # Example apcs with qcs404
263  - |
264    #define GCC_APSS_AHB_CLK_SRC  1
265    #define GCC_GPLL0_AO_OUT_MAIN 123
266    mailbox@b011000 {
267        compatible = "qcom,qcs404-apcs-apps-global",
268                     "qcom,msm8916-apcs-kpss-global", "syscon";
269        reg = <0x0b011000 0x1000>;
270        #mbox-cells = <1>;
271
272        apcs_clk: clock-controller {
273          clocks = <&apcs_hfpll>, <&gcc GCC_GPLL0_AO_OUT_MAIN>;
274          clock-names = "pll", "aux";
275          #clock-cells = <0>;
276        };
277    };
278
279  # Example apcs with qcs404 (deprecated: use clock-controller subnode)
280  - |
281    #define GCC_APSS_AHB_CLK_SRC  1
282    #define GCC_GPLL0_AO_OUT_MAIN 123
283    apcs: mailbox@b011000 {
284        compatible = "qcom,qcs404-apcs-apps-global",
285                     "qcom,msm8916-apcs-kpss-global", "syscon";
286        reg = <0x0b011000 0x1000>;
287        #mbox-cells = <1>;
288        clocks = <&apcs_hfpll>, <&gcc GCC_GPLL0_AO_OUT_MAIN>;
289        clock-names = "pll", "aux";
290        #clock-cells = <0>;
291    };
292