1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/remoteproc/qcom,adsp.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm ADSP Peripheral Image Loader binding
8
9maintainers:
10  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
11
12description:
13  This document defines the binding for a component that loads and boots
14  firmware on the Qualcomm ADSP Hexagon core.
15
16properties:
17  compatible:
18    enum:
19      - qcom,msm8226-adsp-pil
20      - qcom,msm8974-adsp-pil
21      - qcom,msm8996-adsp-pil
22      - qcom,msm8996-slpi-pil
23      - qcom,msm8998-adsp-pas
24      - qcom,msm8998-slpi-pas
25      - qcom,qcs404-adsp-pas
26      - qcom,qcs404-cdsp-pas
27      - qcom,qcs404-wcss-pas
28      - qcom,sc7180-mpss-pas
29      - qcom,sc7280-mpss-pas
30      - qcom,sc8180x-adsp-pas
31      - qcom,sc8180x-cdsp-pas
32      - qcom,sc8180x-mpss-pas
33      - qcom,sc8280xp-adsp-pas
34      - qcom,sc8280xp-nsp0-pas
35      - qcom,sc8280xp-nsp1-pas
36      - qcom,sdm660-adsp-pas
37      - qcom,sdm845-adsp-pas
38      - qcom,sdm845-cdsp-pas
39      - qcom,sdx55-mpss-pas
40      - qcom,sm6350-adsp-pas
41      - qcom,sm6350-cdsp-pas
42      - qcom,sm6350-mpss-pas
43      - qcom,sm8150-adsp-pas
44      - qcom,sm8150-cdsp-pas
45      - qcom,sm8150-mpss-pas
46      - qcom,sm8150-slpi-pas
47      - qcom,sm8250-adsp-pas
48      - qcom,sm8250-cdsp-pas
49      - qcom,sm8250-slpi-pas
50      - qcom,sm8350-adsp-pas
51      - qcom,sm8350-cdsp-pas
52      - qcom,sm8350-slpi-pas
53      - qcom,sm8350-mpss-pas
54      - qcom,sm8450-adsp-pas
55      - qcom,sm8450-cdsp-pas
56      - qcom,sm8450-mpss-pas
57      - qcom,sm8450-slpi-pas
58
59  reg:
60    maxItems: 1
61
62  clocks:
63    minItems: 1
64    maxItems: 8
65
66  clock-names:
67    minItems: 1
68    maxItems: 8
69
70  interconnects:
71    maxItems: 1
72
73  interrupts:
74    minItems: 5
75    items:
76      - description: Watchdog interrupt
77      - description: Fatal interrupt
78      - description: Ready interrupt
79      - description: Handover interrupt
80      - description: Stop acknowledge interrupt
81      - description: Shutdown acknowledge interrupt
82
83  interrupt-names:
84    minItems: 5
85    items:
86      - const: wdog
87      - const: fatal
88      - const: ready
89      - const: handover
90      - const: stop-ack
91      - const: shutdown-ack
92
93  resets:
94    minItems: 1
95    maxItems: 3
96
97  reset-names:
98    minItems: 1
99    maxItems: 3
100
101  cx-supply:
102    description: Phandle to the CX regulator
103
104  px-supply:
105    description: Phandle to the PX regulator
106
107  power-domains:
108    minItems: 1
109    maxItems: 3
110
111  power-domain-names:
112    minItems: 1
113    maxItems: 3
114
115  firmware-name:
116    $ref: /schemas/types.yaml#/definitions/string
117    description: Firmware name for the Hexagon core
118
119  memory-region:
120    maxItems: 1
121    description: Reference to the reserved-memory for the Hexagon core
122
123  qcom,qmp:
124    $ref: /schemas/types.yaml#/definitions/phandle
125    description: Reference to the AOSS side-channel message RAM.
126
127  qcom,smem-states:
128    $ref: /schemas/types.yaml#/definitions/phandle-array
129    description: States used by the AP to signal the Hexagon core
130    items:
131      - description: Stop the modem
132
133  qcom,smem-state-names:
134    description: The names of the state bits used for SMP2P output
135    items:
136      - const: stop
137
138  qcom,halt-regs:
139    $ref: /schemas/types.yaml#/definitions/phandle-array
140    items:
141      - items:
142          - description: Phandle reference to a syscon representing TCSR
143          - description: offsets within syscon for q6 halt registers
144          - description: offsets within syscon for modem halt registers
145          - description: offsets within syscon for nc halt registers
146    description:
147      Phandle reference to a syscon representing TCSR followed by the
148      three offsets within syscon for q6, modem and nc halt registers.
149
150  smd-edge:
151    $ref: /schemas/remoteproc/qcom,smd-edge.yaml#
152    description:
153      Qualcomm Shared Memory subnode which represents communication edge,
154      channels and devices related to the ADSP.
155
156  glink-edge:
157    $ref: /schemas/remoteproc/qcom,glink-edge.yaml#
158    description:
159      Qualcomm G-Link subnode which represents communication edge, channels
160      and devices related to the ADSP.
161
162required:
163  - compatible
164  - clocks
165  - clock-names
166  - interrupts
167  - interrupt-names
168  - memory-region
169  - qcom,smem-states
170  - qcom,smem-state-names
171
172additionalProperties: false
173
174allOf:
175  - if:
176      properties:
177        compatible:
178          contains:
179            enum:
180              - qcom,msm8226-adsp-pil
181              - qcom,msm8974-adsp-pil
182              - qcom,msm8996-adsp-pil
183              - qcom,msm8996-slpi-pil
184              - qcom,msm8998-adsp-pas
185              - qcom,qcs404-adsp-pas
186              - qcom,qcs404-wcss-pas
187              - qcom,sc7280-mpss-pas
188              - qcom,sc8180x-adsp-pas
189              - qcom,sc8180x-cdsp-pas
190              - qcom,sc8180x-mpss-pas
191              - qcom,sc8280xp-adsp-pas
192              - qcom,sc8280xp-nsp0-pas
193              - qcom,sc8280xp-nsp1-pas
194              - qcom,sdm845-adsp-pas
195              - qcom,sdm845-cdsp-pas
196              - qcom,sm6350-adsp-pas
197              - qcom,sm6350-cdsp-pas
198              - qcom,sm6350-mpss-pas
199              - qcom,sm8150-adsp-pas
200              - qcom,sm8150-cdsp-pas
201              - qcom,sm8150-mpss-pas
202              - qcom,sm8150-slpi-pas
203              - qcom,sm8250-adsp-pas
204              - qcom,sm8250-cdsp-pas
205              - qcom,sm8250-slpi-pas
206              - qcom,sm8350-adsp-pas
207              - qcom,sm8350-cdsp-pas
208              - qcom,sm8350-slpi-pas
209              - qcom,sm8350-mpss-pas
210              - qcom,sm8450-adsp-pas
211              - qcom,sm8450-cdsp-pas
212              - qcom,sm8450-slpi-pas
213              - qcom,sm8450-mpss-pas
214    then:
215      properties:
216        clocks:
217          items:
218            - description: XO clock
219        clock-names:
220          items:
221            - const: xo
222
223  - if:
224      properties:
225        compatible:
226          contains:
227            enum:
228              - qcom,msm8998-slpi-pas
229    then:
230      properties:
231        clocks:
232          items:
233            - description: XO clock
234            - description: AGGRE2 clock
235        clock-names:
236          items:
237            - const: xo
238            - const: aggre2
239
240  - if:
241      properties:
242        compatible:
243          contains:
244            enum:
245              - qcom,qcs404-cdsp-pas
246    then:
247      properties:
248        clocks:
249          items:
250            - description: XO clock
251            - description: SWAY clock
252            - description: TBU clock
253            - description: BIMC clock
254            - description: AHB AON clock
255            - description: Q6SS SLAVE clock
256            - description: Q6SS MASTER clock
257            - description: Q6 AXIM clock
258        clock-names:
259          items:
260            - const: xo
261            - const: sway
262            - const: tbu
263            - const: bimc
264            - const: ahb_aon
265            - const: q6ss_slave
266            - const: q6ss_master
267            - const: q6_axim
268
269  - if:
270      properties:
271        compatible:
272          contains:
273            enum:
274              - qcom,sc7180-mpss-pas
275    then:
276      properties:
277        clocks:
278          items:
279            - description: XO clock
280            - description: IFACE clock
281            - description: BUS clock
282            - description: NAC clock
283            - description: SNOC AXI clock
284            - description: MNOC AXI clock
285        clock-names:
286          items:
287            - const: xo
288            - const: iface
289            - const: bus
290            - const: nav
291            - const: snoc_axi
292            - const: mnoc_axi
293
294  - if:
295      properties:
296        compatible:
297          contains:
298            enum:
299              - qcom,msm8226-adsp-pil
300              - qcom,msm8974-adsp-pil
301              - qcom,msm8996-adsp-pil
302              - qcom,msm8996-slpi-pil
303              - qcom,msm8998-adsp-pas
304              - qcom,msm8998-slpi-pas
305              - qcom,qcs404-adsp-pas
306              - qcom,qcs404-cdsp-pas
307              - qcom,qcs404-wcss-pas
308              - qcom,sc8180x-adsp-pas
309              - qcom,sc8180x-cdsp-pas
310              - qcom,sc8280xp-adsp-pas
311              - qcom,sc8280xp-nsp0-pas
312              - qcom,sc8280xp-nsp1-pas
313              - qcom,sdm845-adsp-pas
314              - qcom,sdm845-cdsp-pas
315              - qcom,sm6350-adsp-pas
316              - qcom,sm6350-cdsp-pas
317              - qcom,sm8150-adsp-pas
318              - qcom,sm8150-cdsp-pas
319              - qcom,sm8150-slpi-pas
320              - qcom,sm8250-adsp-pas
321              - qcom,sm8250-cdsp-pas
322              - qcom,sm8250-slpi-pas
323              - qcom,sm8350-adsp-pas
324              - qcom,sm8350-cdsp-pas
325              - qcom,sm8350-slpi-pas
326              - qcom,sm8450-adsp-pas
327              - qcom,sm8450-cdsp-pas
328              - qcom,sm8450-slpi-pas
329    then:
330      properties:
331        interrupts:
332          maxItems: 5
333        interrupt-names:
334          maxItems: 5
335
336  - if:
337      properties:
338        compatible:
339          contains:
340            enum:
341              - qcom,sc7180-mpss-pas
342              - qcom,sc7280-mpss-pas
343              - qcom,sc8180x-mpss-pas
344              - qcom,sdx55-mpss-pas
345              - qcom,sm6350-mpss-pas
346              - qcom,sm8150-mpss-pas
347              - qcom,sm8350-mpss-pas
348              - qcom,sm8450-mpss-pas
349    then:
350      properties:
351        interrupts:
352          minItems: 6
353        interrupt-names:
354          minItems: 6
355
356  - if:
357      properties:
358        compatible:
359          contains:
360            enum:
361              - qcom,msm8974-adsp-pil
362    then:
363      required:
364        - cx-supply
365
366  - if:
367      properties:
368        compatible:
369          contains:
370            enum:
371              - qcom,msm8226-adsp-pil
372              - qcom,msm8996-adsp-pil
373              - qcom,msm8998-adsp-pas
374              - qcom,sm8150-adsp-pas
375              - qcom,sm8150-cdsp-pas
376    then:
377      properties:
378        power-domains:
379          items:
380            - description: CX power domain
381        power-domain-names:
382          items:
383            - const: cx
384
385  - if:
386      properties:
387        compatible:
388          contains:
389            enum:
390              - qcom,msm8996-slpi-pil
391              - qcom,msm8998-slpi-pas
392    then:
393      properties:
394        power-domains:
395          items:
396            - description: SSC-CX power domain
397        power-domain-names:
398          items:
399            - const: ssc_cx
400      required:
401        - px-supply
402
403  - if:
404      properties:
405        compatible:
406          contains:
407            enum:
408              - qcom,sc7180-mpss-pas
409    then:
410      properties:
411        power-domains:
412          items:
413            - description: CX power domain
414            - description: MX power domain
415            - description: MSS power domain
416        power-domain-names:
417          items:
418            - const: cx
419            - const: mx
420            - const: mss
421
422  - if:
423      properties:
424        compatible:
425          contains:
426            enum:
427              - qcom,sm6350-cdsp-pas
428    then:
429      properties:
430        power-domains:
431          items:
432            - description: CX power domain
433            - description: MX power domain
434        power-domain-names:
435          items:
436            - const: cx
437            - const: mx
438
439  - if:
440      properties:
441        compatible:
442          contains:
443            enum:
444              - qcom,sc7280-mpss-pas
445              - qcom,sdx55-mpss-pas
446              - qcom,sm6350-mpss-pas
447              - qcom,sm8150-mpss-pas
448              - qcom,sm8350-mpss-pas
449              - qcom,sm8450-mpss-pas
450    then:
451      properties:
452        power-domains:
453          items:
454            - description: CX power domain
455            - description: MSS power domain
456        power-domain-names:
457          items:
458            - const: cx
459            - const: mss
460
461  - if:
462      properties:
463        compatible:
464          contains:
465            enum:
466              - qcom,sc8180x-adsp-pas
467              - qcom,sc8180x-cdsp-pas
468              - qcom,sc8280xp-adsp-pas
469              - qcom,sm6350-adsp-pas
470              - qcom,sm8150-slpi-pas
471              - qcom,sm8250-adsp-pas
472              - qcom,sm8250-slpi-pas
473              - qcom,sm8350-adsp-pas
474              - qcom,sm8350-slpi-pas
475              - qcom,sm8450-adsp-pas
476              - qcom,sm8450-slpi-pas
477    then:
478      properties:
479        power-domains:
480          items:
481            - description: LCX power domain
482            - description: LMX power domain
483        power-domain-names:
484          items:
485            - const: lcx
486            - const: lmx
487
488  - if:
489      properties:
490        compatible:
491          contains:
492            enum:
493              - qcom,sm8350-cdsp-pas
494              - qcom,sm8450-cdsp-pas
495    then:
496      properties:
497        power-domains:
498          items:
499            - description: CX power domain
500            - description: MXC power domain
501        power-domain-names:
502          items:
503            - const: cx
504            - const: mxc
505
506  - if:
507      properties:
508        compatible:
509          contains:
510            enum:
511              - qcom,sc8280xp-nsp0-pas
512              - qcom,sc8280xp-nsp1-pas
513    then:
514      properties:
515        power-domains:
516          items:
517            - description: NSP power domain
518        power-domain-names:
519          items:
520            - const: nsp
521
522  - if:
523      properties:
524        compatible:
525          contains:
526            enum:
527              - qcom,qcs404-cdsp-pas
528    then:
529      properties:
530        resets:
531          items:
532            - description: CDSP restart
533        reset-names:
534          items:
535            - const: restart
536
537  - if:
538      properties:
539        compatible:
540          contains:
541            enum:
542              - qcom,sc7180-mpss-pas
543              - qcom,sc7280-mpss-pas
544    then:
545      properties:
546        resets:
547          items:
548            - description: MSS restart
549            - description: PDC reset
550        reset-names:
551          items:
552            - const: mss_restart
553            - const: pdc_reset
554
555  - if:
556      properties:
557        compatible:
558          contains:
559            enum:
560              - qcom,msm8226-adsp-pil
561              - qcom,msm8974-adsp-pil
562              - qcom,msm8996-adsp-pil
563              - qcom,msm8996-slpi-pil
564              - qcom,msm8998-adsp-pas
565              - qcom,msm8998-slpi-pas
566              - qcom,qcs404-adsp-pas
567              - qcom,qcs404-cdsp-pas
568              - qcom,qcs404-wcss-pas
569              - qcom,sdm660-adsp-pas
570              - qcom,sdx55-mpss-pas
571    then:
572      properties:
573        qcom,qmp: false
574
575examples:
576  - |
577    #include <dt-bindings/clock/qcom,rpmcc.h>
578    #include <dt-bindings/interrupt-controller/arm-gic.h>
579    #include <dt-bindings/interrupt-controller/irq.h>
580    adsp {
581        compatible = "qcom,msm8974-adsp-pil";
582
583        interrupts-extended = <&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
584                      <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
585                      <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
586                      <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
587                      <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
588        interrupt-names = "wdog",
589                  "fatal",
590                  "ready",
591                  "handover",
592                  "stop-ack";
593
594        clocks = <&rpmcc RPM_CXO_CLK>;
595        clock-names = "xo";
596
597        cx-supply = <&pm8841_s2>;
598
599        memory-region = <&adsp_region>;
600
601        qcom,smem-states = <&adsp_smp2p_out 0>;
602        qcom,smem-state-names = "stop";
603
604        smd-edge {
605            interrupts = <GIC_SPI 156 IRQ_TYPE_EDGE_RISING>;
606
607            qcom,ipc = <&apcs 8 8>;
608            qcom,smd-edge = <1>;
609        };
610    };
611