xref: /linux/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml (revision 184e56e77c06a7eef68a021e9d4b11a11a8ab096)
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,msm8916-mss-pil.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm MSM8916 MSS Peripheral Image Loader (and similar)
8
9maintainers:
10  - Stephan Gerhold <stephan@gerhold.net>
11
12description:
13  This document describes the hardware for a component that loads and boots
14  firmware on the Qualcomm MSM8916 Modem Hexagon Core (and similar).
15
16properties:
17  compatible:
18    oneOf:
19      - enum:
20          - qcom,msm8226-mss-pil
21          - qcom,msm8909-mss-pil
22          - qcom,msm8916-mss-pil
23          - qcom,msm8926-mss-pil
24          - qcom,msm8953-mss-pil
25          - qcom,msm8974-mss-pil
26
27      - const: qcom,q6v5-pil
28        description: Deprecated, prefer using qcom,msm8916-mss-pil
29        deprecated: true
30
31  reg:
32    items:
33      - description: MSS QDSP6 registers
34      - description: RMB registers
35
36  reg-names:
37    items:
38      - const: qdsp6
39      - const: rmb
40
41  interrupts:
42    items:
43      - description: Watchdog interrupt
44      - description: Fatal interrupt
45      - description: Ready interrupt
46      - description: Handover interrupt
47      - description: Stop 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
57  clocks:
58    items:
59      - description: Configuration interface (AXI) clock
60      - description: Configuration bus (AHB) clock
61      - description: Boot ROM (AHB) clock
62      - description: XO proxy clock (control handed over after startup)
63
64  clock-names:
65    items:
66      - const: iface
67      - const: bus
68      - const: mem
69      - const: xo
70
71  power-domains:
72    items:
73      - description: CX proxy power domain (control handed over after startup)
74      - description: MX proxy power domain (control handed over after startup)
75                     (not valid for qcom,msm8226-mss-pil, qcom,msm8926-mss-pil
76                     and qcom,msm8974-mss-pil)
77      - description: MSS proxy power domain (control handed over after startup)
78                     (only valid for qcom,msm8953-mss-pil)
79    minItems: 1
80
81  power-domain-names:
82    items:
83      - const: cx
84      - const: mx # not valid for qcom,msm8226-mss-pil, qcom-msm8926-mss-pil and qcom,msm8974-mss-pil
85      - const: mss # only valid for qcom,msm8953-mss-pil
86    minItems: 1
87
88  pll-supply:
89    description: PLL proxy supply (control handed over after startup)
90
91  mss-supply:
92    description: MSS power domain supply (only valid for qcom,msm8974-mss-pil)
93
94  resets:
95    items:
96      - description: MSS restart control
97
98  reset-names:
99    items:
100      - const: mss_restart
101
102  qcom,smem-states:
103    $ref: /schemas/types.yaml#/definitions/phandle-array
104    description: States used by the AP to signal the Hexagon core
105    items:
106      - description: Stop modem
107
108  qcom,smem-state-names:
109    description: Names of the states used by the AP to signal the Hexagon core
110    items:
111      - const: stop
112
113  qcom,ext-bhs-reg:
114    $ref: /schemas/types.yaml#/definitions/phandle-array
115    description: External power block headswitch (BHS) register
116                 (only valid for qcom,msm8226-mss-pil)
117    items:
118      - items:
119          - description: phandle to external BHS syscon region
120          - description: offset to the external BHS register
121
122  qcom,halt-regs:
123    $ref: /schemas/types.yaml#/definitions/phandle-array
124    description:
125      Halt registers are used to halt transactions of various sub-components
126      within MSS.
127    items:
128      - items:
129          - description: phandle to TCSR syscon region
130          - description: offset to the Q6 halt register
131          - description: offset to the modem halt register
132          - description: offset to the nc halt register
133
134  memory-region:
135    items:
136      - description: MBA reserved region
137      - description: MPSS reserved region
138
139  firmware-name:
140    $ref: /schemas/types.yaml#/definitions/string-array
141    items:
142      - description: Name of MBA firmware
143      - description: Name of modem firmware
144
145  bam-dmux:
146    $ref: /schemas/net/qcom,bam-dmux.yaml#
147    description:
148      Qualcomm BAM Data Multiplexer (provides network interface to the modem)
149
150  smd-edge:
151    $ref: qcom,smd-edge.yaml#
152    description:
153      Qualcomm SMD subnode which represents communication edge, channels
154      and devices related to the DSP.
155    properties:
156      label:
157        enum:
158          - modem
159          - hexagon
160    unevaluatedProperties: false
161
162  # Deprecated properties
163  cx-supply:
164    description: CX power domain regulator supply (prefer using power-domains)
165    deprecated: true
166
167  mx-supply:
168    description: MX power domain regulator supply (prefer using power-domains)
169    deprecated: true
170
171  mba:
172    type: object
173    additionalProperties: false
174    description:
175      MBA reserved region (prefer using memory-region with two items)
176    properties:
177      memory-region: true
178    required:
179      - memory-region
180    deprecated: true
181
182  mpss:
183    type: object
184    additionalProperties: false
185    description:
186      MPSS reserved region (prefer using memory-region with two items)
187    properties:
188      memory-region: true
189    required:
190      - memory-region
191    deprecated: true
192
193required:
194  - compatible
195  - reg
196  - reg-names
197  - interrupts
198  - interrupt-names
199  - clocks
200  - clock-names
201  - pll-supply
202  - resets
203  - reset-names
204  - qcom,halt-regs
205  - qcom,smem-states
206  - qcom,smem-state-names
207  - smd-edge
208
209allOf:
210  - if:
211      properties:
212        compatible:
213          const: qcom,msm8953-mss-pil
214    then:
215      properties:
216        power-domains:
217          minItems: 3
218        power-domain-names:
219          minItems: 3
220      required:
221        - power-domains
222        - power-domain-names
223
224  - if:
225      properties:
226        compatible:
227          contains:
228            enum:
229              - qcom,msm8909-mss-pil
230              - qcom,msm8916-mss-pil
231    then:
232      properties:
233        power-domains:
234          minItems: 2
235          maxItems: 2
236        power-domain-names:
237          minItems: 2
238          maxItems: 2
239
240  - if:
241      properties:
242        compatible:
243          contains:
244            enum:
245              - qcom,msm8226-mss-pil
246              - qcom,msm8926-mss-pil
247              - qcom,msm8974-mss-pil
248    then:
249      properties:
250        power-domains:
251          maxItems: 1
252        power-domain-names:
253          maxItems: 1
254      required:
255        - mx-supply
256
257  - if:
258      properties:
259        compatible:
260          const: qcom,msm8226-mss-pil
261    then:
262      required:
263        - qcom,ext-bhs-reg
264    else:
265      properties:
266        qcom,ext-bhs-reg: false
267
268  - if:
269      properties:
270        compatible:
271          contains:
272            enum:
273              - qcom,msm8926-mss-pil
274              - qcom,msm8974-mss-pil
275    then:
276      required:
277        - mss-supply
278    else:
279      properties:
280        mss-supply: false
281
282  # Fallbacks for deprecated properties
283  - oneOf:
284      - required:
285          - memory-region
286      - required:
287          - mba
288          - mpss
289  - oneOf:
290      - required:
291          - power-domains
292          - power-domain-names
293      - required:
294          - cx-supply
295          - mx-supply
296
297additionalProperties: false
298
299examples:
300  - |
301    #include <dt-bindings/clock/qcom,gcc-msm8916.h>
302    #include <dt-bindings/interrupt-controller/arm-gic.h>
303    #include <dt-bindings/power/qcom-rpmpd.h>
304
305    remoteproc_mpss: remoteproc@4080000 {
306        compatible = "qcom,msm8916-mss-pil";
307        reg = <0x04080000 0x100>, <0x04020000 0x40>;
308        reg-names = "qdsp6", "rmb";
309
310        interrupts-extended = <&intc GIC_SPI 24 IRQ_TYPE_EDGE_RISING>,
311                              <&hexagon_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
312                              <&hexagon_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
313                              <&hexagon_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
314                              <&hexagon_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
315        interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
316
317        qcom,smem-states = <&hexagon_smp2p_out 0>;
318        qcom,smem-state-names = "stop";
319        qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>;
320
321        clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
322                 <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
323                 <&gcc GCC_BOOT_ROM_AHB_CLK>,
324                 <&xo_board>;
325        clock-names = "iface", "bus", "mem", "xo";
326
327        power-domains = <&rpmpd MSM8916_VDDCX>, <&rpmpd MSM8916_VDDMX>;
328        power-domain-names = "cx", "mx";
329        pll-supply = <&pm8916_l7>;
330
331        resets = <&scm 0>;
332        reset-names = "mss_restart";
333
334        memory-region = <&mba_mem>, <&mpss_mem>;
335
336        smd-edge {
337            interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>;
338
339            qcom,smd-edge = <0>;
340            qcom,ipc = <&apcs 8 12>;
341            qcom,remote-pid = <1>;
342
343            label = "hexagon";
344        };
345    };
346