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