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