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