1Qualcomm Hexagon Peripheral Image Loader
2
3This document defines the binding for a component that loads and boots firmware
4on the Qualcomm Hexagon core.
5
6- compatible:
7	Usage: required
8	Value type: <string>
9	Definition: must be one of:
10		    "qcom,q6v5-pil",
11		    "qcom,ipq8074-wcss-pil"
12		    "qcom,qcs404-wcss-pil"
13		    "qcom,msm8916-mss-pil",
14		    "qcom,msm8974-mss-pil"
15		    "qcom,msm8996-mss-pil"
16		    "qcom,msm8998-mss-pil"
17		    "qcom,sc7180-mss-pil"
18		    "qcom,sdm845-mss-pil"
19
20- reg:
21	Usage: required
22	Value type: <prop-encoded-array>
23	Definition: must specify the base address and size of the qdsp6 and
24		    rmb register blocks
25
26- reg-names:
27	Usage: required
28	Value type: <stringlist>
29	Definition: must be "q6dsp" and "rmb"
30
31- interrupts-extended:
32	Usage: required
33	Value type: <prop-encoded-array>
34	Definition: reference to the interrupts that match interrupt-names
35
36- interrupt-names:
37	Usage: required
38	Value type: <stringlist>
39	Definition: The interrupts needed depends on the the compatible
40		    string:
41	qcom,q6v5-pil:
42	qcom,ipq8074-wcss-pil:
43	qcom,qcs404-wcss-pil:
44	qcom,msm8916-mss-pil:
45	qcom,msm8974-mss-pil:
46		    must be "wdog", "fatal", "ready", "handover", "stop-ack"
47	qcom,msm8996-mss-pil:
48	qcom,msm8998-mss-pil:
49	qcom,sc7180-mss-pil:
50	qcom,sdm845-mss-pil:
51		    must be "wdog", "fatal", "ready", "handover", "stop-ack",
52		    "shutdown-ack"
53
54- firmware-name:
55	Usage: optional
56	Value type: <stringlist>
57	Definition: must list the relative firmware image paths for mba and
58		    modem. They are used for booting and authenticating the
59		    Hexagon core.
60
61- clocks:
62	Usage: required
63	Value type: <phandle>
64	Definition: reference to the clocks that match clock-names
65
66- clock-names:
67	Usage: required
68	Value type: <stringlist>
69	Definition: The clocks needed depend on the compatible string:
70	qcom,ipq8074-wcss-pil:
71		    no clock names required
72	qcom,qcs404-wcss-pil:
73		    must be "xo", "gcc_abhs_cbcr", "gcc_abhs_cbcr",
74		    "gcc_axim_cbcr", "lcc_ahbfabric_cbc", "tcsr_lcc_cbc",
75		    "lcc_abhs_cbc", "lcc_tcm_slave_cbc", "lcc_abhm_cbc",
76		    "lcc_axim_cbc", "lcc_bcr_sleep"
77	qcom,q6v5-pil:
78	qcom,msm8916-mss-pil:
79	qcom,msm8974-mss-pil:
80		    must be "iface", "bus", "mem", "xo"
81	qcom,msm8996-mss-pil:
82		    must be "iface", "bus", "mem", "xo", "gpll0_mss",
83		    "snoc_axi", "mnoc_axi", "pnoc", "qdss"
84	qcom,msm8998-mss-pil:
85		    must be "iface", "bus", "mem", "xo", "gpll0_mss",
86		    "snoc_axi", "mnoc_axi", "qdss"
87	qcom,sc7180-mss-pil:
88		    must be "iface", "bus", "xo", "snoc_axi", "mnoc_axi",
89		    "nav"
90	qcom,sdm845-mss-pil:
91		    must be "iface", "bus", "mem", "xo", "gpll0_mss",
92		    "snoc_axi", "mnoc_axi", "prng"
93
94- resets:
95	Usage: required
96	Value type: <phandle>
97	Definition: reference to the reset-controller for the modem sub-system
98		    reference to the list of 3 reset-controllers for the
99		    wcss sub-system
100		    reference to the list of 2 reset-controllers for the modem
101		    sub-system on SC7180, SDM845 SoCs
102
103- reset-names:
104	Usage: required
105	Value type: <stringlist>
106	Definition: must be "mss_restart" for the modem sub-system
107		    must be "wcss_aon_reset", "wcss_reset", "wcss_q6_reset"
108		    for the wcss sub-system
109		    must be "mss_restart", "pdc_reset" for the modem
110		    sub-system on SC7180, SDM845 SoCs
111
112For devices where the mba and mpss sub-nodes are not specified, mba/mpss region
113should be referenced as follows:
114- memory-region:
115	Usage: required
116	Value type: <phandle>
117	Definition: reference to the reserved-memory for the mba region followed
118		    by the mpss region
119
120For the compatible strings below the following supplies are required:
121  "qcom,q6v5-pil"
122  "qcom,msm8916-mss-pil",
123- cx-supply: (deprecated, use power domain instead)
124- mx-supply: (deprecated, use power domain instead)
125- pll-supply:
126	Usage: required
127	Value type: <phandle>
128	Definition: reference to the regulators to be held on behalf of the
129		    booting of the Hexagon core
130
131For the compatible string below the following supplies are required:
132  "qcom,msm8974-mss-pil"
133- cx-supply: (deprecated, use power domain instead)
134- mss-supply:
135- mx-supply: (deprecated, use power domain instead)
136- pll-supply:
137	Usage: required
138	Value type: <phandle>
139	Definition: reference to the regulators to be held on behalf of the
140		    booting of the Hexagon core
141
142For the compatible string below the following supplies are required:
143  "qcom,qcs404-wcss-pil"
144- cx-supply:
145	Usage: required
146	Value type: <phandle>
147	Definition: reference to the regulators to be held on behalf of the
148		    booting of the Hexagon core
149
150For the compatible string below the following supplies are required:
151  "qcom,msm8996-mss-pil"
152- pll-supply:
153	Usage: required
154	Value type: <phandle>
155	Definition: reference to the regulators to be held on behalf of the
156		    booting of the Hexagon core
157
158- power-domains:
159	Usage: required
160	Value type: <phandle>
161	Definition: reference to power-domains that match power-domain-names
162
163- power-domain-names:
164	Usage: required
165	Value type: <stringlist>
166	Definition: The power-domains needed depend on the compatible string:
167	qcom,ipq8074-wcss-pil:
168		    no power-domain names required
169	qcom,q6v5-pil:
170	qcom,msm8916-mss-pil:
171	qcom,msm8974-mss-pil:
172	qcom,msm8996-mss-pil:
173	qcom,msm8998-mss-pil:
174		    must be "cx", "mx"
175	qcom,sc7180-mss-pil:
176	qcom,sdm845-mss-pil:
177		    must be "cx", "mx", "mss", "load_state"
178
179- qcom,smem-states:
180	Usage: required
181	Value type: <phandle>
182	Definition: reference to the smem state for requesting the Hexagon to
183		    shut down
184
185- qcom,smem-state-names:
186	Usage: required
187	Value type: <stringlist>
188	Definition: must be "stop"
189
190- qcom,halt-regs:
191	Usage: required
192	Value type: <prop-encoded-array>
193	Definition: a phandle reference to a syscon representing TCSR followed
194		    by the three offsets within syscon for q6, modem and nc
195		    halt registers.
196
197For the compatible strings below the following phandle references are required:
198  "qcom,sc7180-mss-pil"
199- qcom,spare-regs:
200	Usage: required
201	Value type: <prop-encoded-array>
202	Definition: a phandle reference to a syscon representing TCSR followed
203		    by the offset within syscon for conn_box_spare0 register
204		    used by the modem sub-system running on SC7180 SoC.
205
206The Hexagon node must contain iommus property as described in ../iommu/iommu.txt
207on platforms which do not have TrustZone.
208
209= SUBNODES:
210The Hexagon node must contain two subnodes, named "mba" and "mpss" representing
211the memory regions used by the Hexagon firmware. Each sub-node must contain:
212
213- memory-region:
214	Usage: required
215	Value type: <phandle>
216	Definition: reference to the reserved-memory for the region
217
218The Hexagon node may also have an subnode named either "smd-edge" or
219"glink-edge" that describes the communication edge, channels and devices
220related to the Hexagon.  See ../soc/qcom/qcom,smd.txt and
221../soc/qcom/qcom,glink.txt for details on how to describe these.
222
223= EXAMPLE
224The following example describes the resources needed to boot control the
225Hexagon, as it is found on MSM8974 boards.
226
227	modem-rproc@fc880000 {
228		compatible = "qcom,q6v5-pil";
229		reg = <0xfc880000 0x100>,
230		      <0xfc820000 0x020>;
231		reg-names = "qdsp6", "rmb";
232
233		interrupts-extended = <&intc 0 24 1>,
234				      <&modem_smp2p_in 0 0>,
235				      <&modem_smp2p_in 1 0>,
236				      <&modem_smp2p_in 2 0>,
237				      <&modem_smp2p_in 3 0>;
238		interrupt-names = "wdog",
239				  "fatal",
240				  "ready",
241				  "handover",
242				  "stop-ack";
243
244		clocks = <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
245			 <&gcc GCC_MSS_CFG_AHB_CLK>,
246			 <&gcc GCC_BOOT_ROM_AHB_CLK>;
247		clock-names = "iface", "bus", "mem";
248
249		qcom,halt-regs = <&tcsr_mutex_block 0x1180 0x1200 0x1280>;
250
251		resets = <&gcc GCC_MSS_RESTART>;
252		reset-names = "mss_restart";
253
254		cx-supply = <&pm8841_s2>;
255		mss-supply = <&pm8841_s3>;
256		mx-supply = <&pm8841_s1>;
257		pll-supply = <&pm8941_l12>;
258
259		qcom,smem-states = <&modem_smp2p_out 0>;
260		qcom,smem-state-names = "stop";
261
262		mba {
263			memory-region = <&mba_region>;
264		};
265
266		mpss {
267			memory-region = <&mpss_region>;
268		};
269	};
270