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
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,msm8953-adsp-pil
21      - qcom,msm8974-adsp-pil
22      - qcom,msm8996-adsp-pil
23      - qcom,msm8996-slpi-pil
24      - qcom,msm8998-adsp-pas
25      - qcom,msm8998-slpi-pas
26      - qcom,sdm660-adsp-pas
27      - qcom,sdm845-adsp-pas
28      - qcom,sdm845-cdsp-pas
29
30  reg:
31    maxItems: 1
32
33  cx-supply:
34    description: Phandle to the CX regulator
35
36  px-supply:
37    description: Phandle to the PX regulator
38
39  qcom,qmp:
40    $ref: /schemas/types.yaml#/definitions/phandle
41    description: Reference to the AOSS side-channel message RAM.
42
43  memory-region:
44    maxItems: 1
45    description: Reference to the reserved-memory for the Hexagon core
46
47required:
48  - compatible
49
50unevaluatedProperties: false
51
52allOf:
53  - $ref: /schemas/remoteproc/qcom,pas-common.yaml#
54  - if:
55      properties:
56        compatible:
57          contains:
58            enum:
59              - qcom,msm8226-adsp-pil
60              - qcom,msm8953-adsp-pil
61              - qcom,msm8974-adsp-pil
62              - qcom,msm8996-adsp-pil
63              - qcom,msm8998-adsp-pas
64              - qcom,sdm845-adsp-pas
65              - qcom,sdm845-cdsp-pas
66    then:
67      properties:
68        clocks:
69          items:
70            - description: XO clock
71        clock-names:
72          items:
73            - const: xo
74
75  - if:
76      properties:
77        compatible:
78          contains:
79            enum:
80              - qcom,msm8996-slpi-pil
81              - qcom,msm8998-slpi-pas
82    then:
83      properties:
84        clocks:
85          items:
86            - description: XO clock
87            - description: AGGRE2 clock
88        clock-names:
89          items:
90            - const: xo
91            - const: aggre2
92
93  - if:
94      properties:
95        compatible:
96          contains:
97            enum:
98              - qcom,msm8226-adsp-pil
99              - qcom,msm8953-adsp-pil
100              - qcom,msm8974-adsp-pil
101              - qcom,msm8996-adsp-pil
102              - qcom,msm8996-slpi-pil
103              - qcom,msm8998-adsp-pas
104              - qcom,msm8998-slpi-pas
105              - qcom,sdm845-adsp-pas
106              - qcom,sdm845-cdsp-pas
107    then:
108      properties:
109        interrupts:
110          maxItems: 5
111        interrupt-names:
112          maxItems: 5
113
114  - if:
115      properties:
116        compatible:
117          contains:
118            enum:
119              - qcom,msm8974-adsp-pil
120    then:
121      required:
122        - cx-supply
123
124  - if:
125      properties:
126        compatible:
127          contains:
128            enum:
129              - qcom,msm8226-adsp-pil
130              - qcom,msm8953-adsp-pil
131              - qcom,msm8996-adsp-pil
132              - qcom,msm8998-adsp-pas
133    then:
134      properties:
135        power-domains:
136          items:
137            - description: CX power domain
138        power-domain-names:
139          items:
140            - const: cx
141
142  - if:
143      properties:
144        compatible:
145          contains:
146            enum:
147              - qcom,msm8996-slpi-pil
148              - qcom,msm8998-slpi-pas
149    then:
150      properties:
151        power-domains:
152          items:
153            - description: SSC-CX power domain
154        power-domain-names:
155          items:
156            - const: ssc_cx
157      required:
158        - px-supply
159
160  - if:
161      properties:
162        compatible:
163          contains:
164            enum:
165              - qcom,msm8226-adsp-pil
166              - qcom,msm8953-adsp-pil
167              - qcom,msm8974-adsp-pil
168              - qcom,msm8996-adsp-pil
169              - qcom,msm8996-slpi-pil
170              - qcom,msm8998-adsp-pas
171              - qcom,msm8998-slpi-pas
172              - qcom,sdm660-adsp-pas
173    then:
174      properties:
175        qcom,qmp: false
176
177examples:
178  - |
179    #include <dt-bindings/clock/qcom,rpmcc.h>
180    #include <dt-bindings/interrupt-controller/arm-gic.h>
181    #include <dt-bindings/interrupt-controller/irq.h>
182    adsp {
183        compatible = "qcom,msm8974-adsp-pil";
184
185        interrupts-extended = <&intc GIC_SPI 162 IRQ_TYPE_EDGE_RISING>,
186                      <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
187                      <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
188                      <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
189                      <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
190        interrupt-names = "wdog",
191                  "fatal",
192                  "ready",
193                  "handover",
194                  "stop-ack";
195
196        clocks = <&rpmcc RPM_CXO_CLK>;
197        clock-names = "xo";
198
199        cx-supply = <&pm8841_s2>;
200
201        memory-region = <&adsp_region>;
202
203        qcom,smem-states = <&adsp_smp2p_out 0>;
204        qcom,smem-state-names = "stop";
205
206        smd-edge {
207            interrupts = <GIC_SPI 156 IRQ_TYPE_EDGE_RISING>;
208
209            qcom,ipc = <&apcs 8 8>;
210            qcom,smd-edge = <1>;
211        };
212    };
213