xref: /openbmc/linux/Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml (revision b9880532d0cdf54dc6cc0e028afe47d829873b20)
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,msm8916-mss-pil
21
22      - const: qcom,q6v5-pil
23        description: Deprecated, prefer using qcom,msm8916-mss-pil
24        deprecated: true
25
26  reg:
27    items:
28      - description: MSS QDSP6 registers
29      - description: RMB registers
30
31  reg-names:
32    items:
33      - const: qdsp6
34      - const: rmb
35
36  interrupts:
37    items:
38      - description: Watchdog interrupt
39      - description: Fatal interrupt
40      - description: Ready interrupt
41      - description: Handover interrupt
42      - description: Stop acknowledge interrupt
43
44  interrupt-names:
45    items:
46      - const: wdog
47      - const: fatal
48      - const: ready
49      - const: handover
50      - const: stop-ack
51
52  clocks:
53    items:
54      - description: Configuration interface (AXI) clock
55      - description: Configuration bus (AHB) clock
56      - description: Boot ROM (AHB) clock
57      - description: XO proxy clock (control handed over after startup)
58
59  clock-names:
60    items:
61      - const: iface
62      - const: bus
63      - const: mem
64      - const: xo
65
66  power-domains:
67    items:
68      - description: CX proxy power domain (control handed over after startup)
69      - description: MX proxy power domain (control handed over after startup)
70
71  power-domain-names:
72    items:
73      - const: cx
74      - const: mx
75
76  pll-supply:
77    description: PLL proxy supply (control handed over after startup)
78
79  resets:
80    items:
81      - description: MSS restart control
82
83  reset-names:
84    items:
85      - const: mss_restart
86
87  qcom,smem-states:
88    $ref: /schemas/types.yaml#/definitions/phandle-array
89    description: States used by the AP to signal the Hexagon core
90    items:
91      - description: Stop modem
92
93  qcom,smem-state-names:
94    description: Names of the states used by the AP to signal the Hexagon core
95    items:
96      - const: stop
97
98  qcom,halt-regs:
99    $ref: /schemas/types.yaml#/definitions/phandle-array
100    description:
101      Halt registers are used to halt transactions of various sub-components
102      within MSS.
103    items:
104      - items:
105          - description: phandle to TCSR syscon region
106          - description: offset to the Q6 halt register
107          - description: offset to the modem halt register
108          - description: offset to the nc halt register
109
110  memory-region:
111    items:
112      - description: MBA reserved region
113      - description: MPSS reserved region
114
115  firmware-name:
116    $ref: /schemas/types.yaml#/definitions/string-array
117    items:
118      - description: Name of MBA firmware
119      - description: Name of modem firmware
120
121  bam-dmux:
122    $ref: /schemas/net/qcom,bam-dmux.yaml#
123    description:
124      Qualcomm BAM Data Multiplexer (provides network interface to the modem)
125
126  smd-edge:
127    $ref: qcom,smd-edge.yaml#
128    description:
129      Qualcomm SMD subnode which represents communication edge, channels
130      and devices related to the DSP.
131    properties:
132      label:
133        enum:
134          - modem
135          - hexagon
136    unevaluatedProperties: false
137
138  # Deprecated properties
139  cx-supply:
140    description: CX power domain regulator supply (prefer using power-domains)
141    deprecated: true
142
143  mx-supply:
144    description: MX power domain regulator supply (prefer using power-domains)
145    deprecated: true
146
147  mba:
148    type: object
149    description:
150      MBA reserved region (prefer using memory-region with two items)
151    properties:
152      memory-region: true
153    required:
154      - memory-region
155    deprecated: true
156
157  mpss:
158    type: object
159    description:
160      MPSS reserved region (prefer using memory-region with two items)
161    properties:
162      memory-region: true
163    required:
164      - memory-region
165    deprecated: true
166
167required:
168  - compatible
169  - reg
170  - reg-names
171  - interrupts
172  - interrupt-names
173  - clocks
174  - clock-names
175  - pll-supply
176  - resets
177  - reset-names
178  - qcom,halt-regs
179  - qcom,smem-states
180  - qcom,smem-state-names
181  - smd-edge
182
183allOf:
184  # Fallbacks for deprecated properties
185  - oneOf:
186      - required:
187          - memory-region
188      - required:
189          - mba
190          - mpss
191  - oneOf:
192      - required:
193          - power-domains
194          - power-domain-names
195      - required:
196          - cx-supply
197          - mx-supply
198
199additionalProperties: false
200
201examples:
202  - |
203    #include <dt-bindings/clock/qcom,gcc-msm8916.h>
204    #include <dt-bindings/interrupt-controller/arm-gic.h>
205    #include <dt-bindings/power/qcom-rpmpd.h>
206
207    remoteproc_mpss: remoteproc@4080000 {
208        compatible = "qcom,msm8916-mss-pil";
209        reg = <0x04080000 0x100>, <0x04020000 0x40>;
210        reg-names = "qdsp6", "rmb";
211
212        interrupts-extended = <&intc GIC_SPI 24 IRQ_TYPE_EDGE_RISING>,
213                              <&hexagon_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
214                              <&hexagon_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
215                              <&hexagon_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
216                              <&hexagon_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
217        interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
218
219        qcom,smem-states = <&hexagon_smp2p_out 0>;
220        qcom,smem-state-names = "stop";
221        qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>;
222
223        clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
224                 <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
225                 <&gcc GCC_BOOT_ROM_AHB_CLK>,
226                 <&xo_board>;
227        clock-names = "iface", "bus", "mem", "xo";
228
229        power-domains = <&rpmpd MSM8916_VDDCX>, <&rpmpd MSM8916_VDDMX>;
230        power-domain-names = "cx", "mx";
231        pll-supply = <&pm8916_l7>;
232
233        resets = <&scm 0>;
234        reset-names = "mss_restart";
235
236        memory-region = <&mba_mem>, <&mpss_mem>;
237
238        smd-edge {
239            interrupts = <GIC_SPI 25 IRQ_TYPE_EDGE_RISING>;
240
241            qcom,smd-edge = <0>;
242            qcom,ipc = <&apcs 8 12>;
243            qcom,remote-pid = <1>;
244
245            label = "hexagon";
246        };
247    };
248