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