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