blob: 4d2055f283ac441770a5709b4bdf0f3c8b9bfd0e [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
Tom Rini53633a82024-02-29 12:33:36 -0500234 required:
235 - pll-supply
236 - smd-edge
237 else:
238 properties:
239 pll-supply: false
240 smd-edge: false
241
242 - if:
243 properties:
244 compatible:
245 enum:
246 - qcom,msm8998-mss-pil
247 - qcom,sdm660-mss-pil
248 then:
249 properties:
250 clocks:
251 items:
252 - description: GCC MSS IFACE clock
253 - description: GCC MSS BUS clock
254 - description: GCC MSS MEM clock
255 - description: GCC MSS GPLL0 clock
256 - description: GCC MSS SNOC_AXI clock
257 - description: GCC MSS MNOC_AXI clock
258 - description: RPMH QDSS clock
259 - description: RPMH XO clock
260 clock-names:
261 items:
262 - const: iface
263 - const: bus
264 - const: mem
265 - const: gpll0_mss
266 - const: snoc_axi
267 - const: mnoc_axi
268 - const: qdss
269 - const: xo
270 required:
271 - glink-edge
272
273 - if:
274 properties:
275 compatible:
276 const: qcom,sdm845-mss-pil
277 then:
278 properties:
279 power-domains:
280 minItems: 3
281 power-domain-names:
282 minItems: 3
283 resets:
284 minItems: 2
285 reset-names:
286 minItems: 2
287 clocks:
288 items:
289 - description: GCC MSS IFACE clock
290 - description: GCC MSS BUS clock
291 - description: GCC MSS MEM clock
292 - description: GCC MSS GPLL0 clock
293 - description: GCC MSS SNOC_AXI clock
294 - description: GCC MSS MNOC_AXI clock
295 - description: GCC MSS PRNG clock
296 - description: RPMH XO clock
297 clock-names:
298 items:
299 - const: iface
300 - const: bus
301 - const: mem
302 - const: gpll0_mss
303 - const: snoc_axi
304 - const: mnoc_axi
305 - const: prng
306 - const: xo
307 required:
308 - qcom,qmp
309 - glink-edge
310 else:
311 properties:
312 iommus: false
313 power-domains:
314 maxItems: 2
315 power-domain-names:
316 maxItems: 2
317 resets:
318 maxItems: 1
319 reset-names:
320 maxItems: 1
321 qcom,qmp: false
322
323 # Fallbacks for deprecated properties
324 - oneOf:
325 - required:
326 - memory-region
327 - required:
328 - mba
329 - mpss
330 - metadata
331
332additionalProperties: false
333
334examples:
335 - |
336 #include <dt-bindings/clock/qcom,gcc-sdm845.h>
337 #include <dt-bindings/clock/qcom,rpmh.h>
338 #include <dt-bindings/interrupt-controller/arm-gic.h>
339 #include <dt-bindings/power/qcom-rpmpd.h>
340 #include <dt-bindings/reset/qcom,sdm845-aoss.h>
341 #include <dt-bindings/reset/qcom,sdm845-pdc.h>
342
343 remoteproc@4080000 {
344 compatible = "qcom,sdm845-mss-pil";
345 reg = <0x04080000 0x408>, <0x04180000 0x48>;
346 reg-names = "qdsp6", "rmb";
347
348 interrupts-extended = <&intc GIC_SPI 266 IRQ_TYPE_EDGE_RISING>,
349 <&modem_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
350 <&modem_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
351 <&modem_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
352 <&modem_smp2p_in 3 IRQ_TYPE_EDGE_RISING>,
353 <&modem_smp2p_in 7 IRQ_TYPE_EDGE_RISING>;
354 interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack",
355 "shutdown-ack";
356
357 clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
358 <&gcc GCC_MSS_Q6_MEMNOC_AXI_CLK>,
359 <&gcc GCC_BOOT_ROM_AHB_CLK>,
360 <&gcc GCC_MSS_GPLL0_DIV_CLK_SRC>,
361 <&gcc GCC_MSS_SNOC_AXI_CLK>,
362 <&gcc GCC_MSS_MFAB_AXIS_CLK>,
363 <&gcc GCC_PRNG_AHB_CLK>,
364 <&rpmhcc RPMH_CXO_CLK>;
365 clock-names = "iface", "bus", "mem", "gpll0_mss",
366 "snoc_axi", "mnoc_axi", "prng", "xo";
367
368 power-domains = <&rpmhpd SDM845_CX>,
369 <&rpmhpd SDM845_MX>,
370 <&rpmhpd SDM845_MSS>;
371 power-domain-names = "cx", "mx", "mss";
372
373 memory-region = <&mba_mem>, <&mpss_mem>, <&mdata_mem>;
374
375 resets = <&aoss_reset AOSS_CC_MSS_RESTART>,
376 <&pdc_reset PDC_MODEM_SYNC_RESET>;
377 reset-names = "mss_restart", "pdc_reset";
378
379 qcom,halt-regs = <&tcsr_regs_1 0x3000 0x5000 0x4000>;
380
381 qcom,qmp = <&aoss_qmp>;
382
383 qcom,smem-states = <&modem_smp2p_out 0>;
384 qcom,smem-state-names = "stop";
385
386 glink-edge {
387 interrupts = <GIC_SPI 449 IRQ_TYPE_EDGE_RISING>;
388 label = "modem";
389 qcom,remote-pid = <1>;
390 mboxes = <&apss_shared 12>;
391 };
392 };