xref: /linux/Documentation/devicetree/bindings/remoteproc/qcom,msm8996-mss-pil.yaml (revision 36ec807b627b4c0a0a382f0ae48eac7187d14b2b)
1# 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      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    };
393