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