blob: 971734085d512ec8bc7171b401e96198bee107d5 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/remoteproc/qcom,msm8996-mss-pil.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm MSM8996 MSS Peripheral Image Loader (and similar)
8
9maintainers:
10 - Bjorn Andersson <andersson@kernel.org>
11 - Sibi Sankar <quic_sibis@quicinc.com>
12
13description:
14 MSS Peripheral Image Loader loads and boots firmware on the
15 Qualcomm Technology Inc. MSM8996 Modem Hexagon Core (and similar).
16
17properties:
18 compatible:
19 enum:
20 - qcom,msm8996-mss-pil
21 - qcom,msm8998-mss-pil
22 - qcom,sdm660-mss-pil
23 - qcom,sdm845-mss-pil
24
25 reg:
26 items:
27 - description: MSS QDSP6 registers
28 - description: RMB registers
29
30 reg-names:
31 items:
32 - const: qdsp6
33 - const: rmb
34
35 iommus:
36 items:
37 - description: MSA Stream 1
38 - description: MSA Stream 2
39
40 interrupts:
41 items:
42 - description: Watchdog interrupt
43 - description: Fatal interrupt
44 - description: Ready interrupt
45 - description: Handover interrupt
46 - description: Stop acknowledge interrupt
47 - description: Shutdown acknowledge interrupt
48
49 interrupt-names:
50 items:
51 - const: wdog
52 - const: fatal
53 - const: ready
54 - const: handover
55 - const: stop-ack
56 - const: shutdown-ack
57
58 clocks:
59 minItems: 8
60 maxItems: 9
61
62 clock-names:
63 minItems: 8
64 maxItems: 9
65
66 power-domains:
67 items:
68 - description: CX power domain
69 - description: MX power domain
70 - description: MSS power domain (only valid for qcom,sdm845-mss-pil)
71 minItems: 2
72
73 power-domain-names:
74 items:
75 - const: cx
76 - const: mx
77 - const: mss # only valid for qcom,sdm845-mss-pil
78 minItems: 2
79
80 pll-supply:
81 description: PLL supply
82
83 resets:
84 items:
85 - description: AOSS restart
86 - description: PDC reset (only valid for qcom,sdm845-mss-pil)
87 minItems: 1
88
89 reset-names:
90 items:
91 - const: mss_restart
92 - const: pdc_reset # only valid for qcom,sdm845-mss-pil
93 minItems: 1
94
95 qcom,qmp:
96 $ref: /schemas/types.yaml#/definitions/phandle
97 description: Reference to the AOSS side-channel message RAM.
98
99 qcom,smem-states:
100 $ref: /schemas/types.yaml#/definitions/phandle-array
101 description: States used by the AP to signal the Hexagon core
102 items:
103 - description: Stop modem
104
105 qcom,smem-state-names:
106 description: Names of the states used by the AP to signal the Hexagon core
107 items:
108 - const: stop
109
110 qcom,halt-regs:
111 $ref: /schemas/types.yaml#/definitions/phandle-array
112 description:
113 Halt registers are used to halt transactions of various sub-components
114 within MSS.
115 items:
116 - items:
117 - description: phandle to TCSR syscon region
118 - description: offset to the Q6 halt register
119 - description: offset to the modem halt register
120 - description: offset to the nc halt register
121
122 memory-region:
123 items:
124 - description: MBA reserved region
125 - description: Modem reserved region
126 - description: Metadata reserved region
127
128 firmware-name:
129 $ref: /schemas/types.yaml#/definitions/string-array
130 items:
131 - description: Name of MBA firmware
132 - description: Name of modem firmware
133
134 smd-edge:
135 $ref: /schemas/remoteproc/qcom,smd-edge.yaml#
136 description:
137 Qualcomm Shared Memory subnode which represents communication edge,
138 channels and devices related to the Modem.
139 unevaluatedProperties: false
140
141 glink-edge:
142 $ref: /schemas/remoteproc/qcom,glink-edge.yaml#
143 description:
144 Qualcomm G-Link subnode which represents communication edge, channels
145 and devices related to the Modem.
146 unevaluatedProperties: false
147
148 # Deprecated properties
149 mba:
150 type: object
151 description:
152 MBA reserved region
153
154 properties:
155 memory-region: true
156
157 required:
158 - memory-region
159
160 additionalProperties: false
161 deprecated: true
162
163 mpss:
164 type: object
165 description:
166 MPSS reserved region
167
168 properties:
169 memory-region: true
170
171 required:
172 - memory-region
173
174 additionalProperties: false
175 deprecated: true
176
177 metadata:
178 type: object
179 description:
180 Metadata reserved region
181
182 properties:
183 memory-region: true
184
185 required:
186 - memory-region
187
188 additionalProperties: false
189 deprecated: true
190
191required:
192 - compatible
193 - reg
194 - reg-names
195 - interrupts
196 - interrupt-names
197 - clocks
198 - clock-names
199 - power-domains
200 - power-domain-names
201 - resets
202 - reset-names
203 - qcom,halt-regs
204 - qcom,smem-states
205 - qcom,smem-state-names
206
207allOf:
208 - if:
209 properties:
210 compatible:
211 const: qcom,msm8996-mss-pil
212 then:
213 properties:
214 clocks:
215 items:
216 - description: GCC MSS IFACE clock
217 - description: GCC MSS BUS clock
218 - description: GCC MSS MEM clock
219 - description: RPM XO clock
220 - description: GCC MSS GPLL0 clock
221 - description: GCC MSS SNOC_AXI clock
222 - description: GCC MSS MNOC_AXI clock
223 - description: RPM QDSS clock
224 clock-names:
225 items:
226 - const: iface
227 - const: bus
228 - const: mem
229 - const: xo
230 - const: gpll0_mss
231 - const: snoc_axi
232 - const: mnoc_axi
233 - const: qdss
234 glink-edge: false
235 required:
236 - pll-supply
237 - smd-edge
238 else:
239 properties:
240 pll-supply: false
241 smd-edge: false
242
243 - if:
244 properties:
245 compatible:
246 enum:
247 - qcom,msm8998-mss-pil
248 - qcom,sdm660-mss-pil
249 then:
250 properties:
251 clocks:
252 items:
253 - description: GCC MSS IFACE clock
254 - description: GCC MSS BUS clock
255 - description: GCC MSS MEM clock
256 - description: GCC MSS GPLL0 clock
257 - description: GCC MSS SNOC_AXI clock
258 - description: GCC MSS MNOC_AXI clock
259 - description: RPMH QDSS clock
260 - description: RPMH XO clock
261 clock-names:
262 items:
263 - const: iface
264 - const: bus
265 - const: mem
266 - const: gpll0_mss
267 - const: snoc_axi
268 - const: mnoc_axi
269 - const: qdss
270 - const: xo
271 required:
272 - glink-edge
273
274 - if:
275 properties:
276 compatible:
277 const: qcom,sdm845-mss-pil
278 then:
279 properties:
280 power-domains:
281 minItems: 3
282 power-domain-names:
283 minItems: 3
284 resets:
285 minItems: 2
286 reset-names:
287 minItems: 2
288 clocks:
289 items:
290 - description: GCC MSS IFACE clock
291 - description: GCC MSS BUS clock
292 - description: GCC MSS MEM clock
293 - description: GCC MSS GPLL0 clock
294 - description: GCC MSS SNOC_AXI clock
295 - description: GCC MSS MNOC_AXI clock
296 - description: GCC MSS PRNG clock
297 - description: RPMH XO clock
298 clock-names:
299 items:
300 - const: iface
301 - const: bus
302 - const: mem
303 - const: gpll0_mss
304 - const: snoc_axi
305 - const: mnoc_axi
306 - const: prng
307 - const: xo
308 required:
309 - qcom,qmp
310 - glink-edge
311 else:
312 properties:
313 iommus: false
314 power-domains:
315 maxItems: 2
316 power-domain-names:
317 maxItems: 2
318 resets:
319 maxItems: 1
320 reset-names:
321 maxItems: 1
322 qcom,qmp: false
323
324 # Fallbacks for deprecated properties
325 - oneOf:
326 - required:
327 - memory-region
328 - required:
329 - mba
330 - mpss
331 - metadata
332
333additionalProperties: false
334
335examples:
336 - |
337 #include <dt-bindings/clock/qcom,gcc-sdm845.h>
338 #include <dt-bindings/clock/qcom,rpmh.h>
339 #include <dt-bindings/interrupt-controller/arm-gic.h>
340 #include <dt-bindings/power/qcom-rpmpd.h>
341 #include <dt-bindings/reset/qcom,sdm845-aoss.h>
342 #include <dt-bindings/reset/qcom,sdm845-pdc.h>
343
344 remoteproc@4080000 {
345 compatible = "qcom,sdm845-mss-pil";
346 reg = <0x04080000 0x408>, <0x04180000 0x48>;
347 reg-names = "qdsp6", "rmb";
348
349 interrupts-extended = <&intc GIC_SPI 266 IRQ_TYPE_EDGE_RISING>,
350 <&modem_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
351 <&modem_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
352 <&modem_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
353 <&modem_smp2p_in 3 IRQ_TYPE_EDGE_RISING>,
354 <&modem_smp2p_in 7 IRQ_TYPE_EDGE_RISING>;
355 interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack",
356 "shutdown-ack";
357
358 clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
359 <&gcc GCC_MSS_Q6_MEMNOC_AXI_CLK>,
360 <&gcc GCC_BOOT_ROM_AHB_CLK>,
361 <&gcc GCC_MSS_GPLL0_DIV_CLK_SRC>,
362 <&gcc GCC_MSS_SNOC_AXI_CLK>,
363 <&gcc GCC_MSS_MFAB_AXIS_CLK>,
364 <&gcc GCC_PRNG_AHB_CLK>,
365 <&rpmhcc RPMH_CXO_CLK>;
366 clock-names = "iface", "bus", "mem", "gpll0_mss",
367 "snoc_axi", "mnoc_axi", "prng", "xo";
368
369 power-domains = <&rpmhpd SDM845_CX>,
370 <&rpmhpd SDM845_MX>,
371 <&rpmhpd SDM845_MSS>;
372 power-domain-names = "cx", "mx", "mss";
373
374 memory-region = <&mba_mem>, <&mpss_mem>, <&mdata_mem>;
375
376 resets = <&aoss_reset AOSS_CC_MSS_RESTART>,
377 <&pdc_reset PDC_MODEM_SYNC_RESET>;
378 reset-names = "mss_restart", "pdc_reset";
379
380 qcom,halt-regs = <&tcsr_regs_1 0x3000 0x5000 0x4000>;
381
382 qcom,qmp = <&aoss_qmp>;
383
384 qcom,smem-states = <&modem_smp2p_out 0>;
385 qcom,smem-state-names = "stop";
386
387 glink-edge {
388 interrupts = <GIC_SPI 449 IRQ_TYPE_EDGE_RISING>;
389 label = "modem";
390 qcom,remote-pid = <1>;
391 mboxes = <&apss_shared 12>;
392 };
393 };