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