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