xref: /freebsd/sys/contrib/device-tree/Bindings/remoteproc/qcom,adsp.txt (revision d5b0e70f7e04d971691517ce1304d86a1e367e2e)
1Qualcomm ADSP Peripheral Image Loader
2
3This document defines the binding for a component that loads and boots firmware
4on the Qualcomm ADSP Hexagon core.
5
6- compatible:
7	Usage: required
8	Value type: <string>
9	Definition: must be one of:
10		    "qcom,msm8974-adsp-pil"
11		    "qcom,msm8996-adsp-pil"
12		    "qcom,msm8996-slpi-pil"
13		    "qcom,msm8998-adsp-pas"
14		    "qcom,msm8998-slpi-pas"
15		    "qcom,qcs404-adsp-pas"
16		    "qcom,qcs404-cdsp-pas"
17		    "qcom,qcs404-wcss-pas"
18		    "qcom,sc7180-mpss-pas"
19		    "qcom,sdm845-adsp-pas"
20		    "qcom,sdm845-cdsp-pas"
21                    "qcom,sdx55-mpss-pas"
22		    "qcom,sm8150-adsp-pas"
23		    "qcom,sm8150-cdsp-pas"
24		    "qcom,sm8150-mpss-pas"
25		    "qcom,sm8150-slpi-pas"
26		    "qcom,sm8250-adsp-pas"
27		    "qcom,sm8250-cdsp-pas"
28		    "qcom,sm8250-slpi-pas"
29		    "qcom,sm8350-adsp-pas"
30		    "qcom,sm8350-cdsp-pas"
31		    "qcom,sm8350-slpi-pas"
32		    "qcom,sm8350-mpss-pas"
33
34- interrupts-extended:
35	Usage: required
36	Value type: <prop-encoded-array>
37	Definition: reference to the interrupts that match interrupt-names
38
39- interrupt-names:
40	Usage: required
41	Value type: <stringlist>
42	Definition: The interrupts needed depends on the compatible
43		    string:
44	qcom,msm8974-adsp-pil:
45	qcom,msm8996-adsp-pil:
46	qcom,msm8996-slpi-pil:
47	qcom,msm8998-adsp-pas:
48	qcom,msm8998-slpi-pas:
49	qcom,qcs404-adsp-pas:
50	qcom,qcs404-cdsp-pas:
51	qcom,sdm845-adsp-pas:
52	qcom,sdm845-cdsp-pas:
53	qcom,sm8150-adsp-pas:
54	qcom,sm8150-cdsp-pas:
55	qcom,sm8150-slpi-pas:
56	qcom,sm8250-adsp-pas:
57	qcom,sm8250-cdsp-pas:
58	qcom,sm8250-slpi-pas:
59	qcom,sm8350-adsp-pas:
60	qcom,sm8350-cdsp-pas:
61	qcom,sm8350-slpi-pas:
62		    must be "wdog", "fatal", "ready", "handover", "stop-ack"
63	qcom,qcs404-wcss-pas:
64	qcom,sc7180-mpss-pas:
65        qcom,sdx55-mpss-pas:
66	qcom,sm8150-mpss-pas:
67	qcom,sm8350-mpss-pas:
68		    must be "wdog", "fatal", "ready", "handover", "stop-ack",
69		    "shutdown-ack"
70
71- firmware-name:
72	Usage: optional
73	Value type: <string>
74	Definition: must list the relative firmware image path for the
75		    Hexagon Core.
76
77- clocks:
78	Usage: required
79	Value type: <prop-encoded-array>
80	Definition: reference to the xo clock and optionally aggre2 clock to be
81		    held on behalf of the booting Hexagon core
82
83- clock-names:
84	Usage: required
85	Value type: <stringlist>
86	Definition: must be "xo" and optionally include "aggre2"
87
88- cx-supply:
89	Usage: required
90	Value type: <phandle>
91	Definition: reference to the regulator to be held on behalf of the
92		    booting Hexagon core
93
94- px-supply:
95	Usage: required
96	Value type: <phandle>
97	Definition: reference to the px regulator to be held on behalf of the
98		    booting Hexagon core
99
100- power-domains:
101	Usage: required
102	Value type: <phandle>
103	Definition: reference to power-domains that match the power-domain-names
104
105- power-domain-names:
106	Usage: required
107	Value type: <stringlist>
108	Definition: The power-domains needed depend on the compatible string:
109	qcom,msm8974-adsp-pil:
110	qcom,msm8996-adsp-pil:
111	qcom,msm8998-adsp-pas:
112		    must be "cx"
113	qcom,msm8996-slpi-pil:
114		    must be "ss_cx"
115	qcom,msm8998-slpi-pas:
116		    must be "ssc_cx"
117	qcom,qcs404-adsp-pas:
118		    must be "lpi_cx"
119	qcom,qcs404-cdsp-pas:
120	qcom,qcs404-wcss-pas:
121		    must be "mx"
122	qcom,sdm845-adsp-pas:
123	qcom,sdm845-cdsp-pas:
124	qcom,sm8150-adsp-pas:
125	qcom,sm8150-cdsp-pas:
126	qcom,sm8250-cdsp-pas:
127	qcom,sm8350-cdsp-pas:
128		    must be "cx", "load_state"
129	qcom,sc7180-mpss-pas:
130	qcom,sm8150-mpss-pas:
131	qcom,sm8350-mpss-pas:
132		    must be "cx", "load_state", "mss"
133        qcom,sdx55-mpss-pas:
134                    must be "cx", "mss"
135	qcom,sm8250-adsp-pas:
136	qcom,sm8350-adsp-pas:
137	qcom,sm8150-slpi-pas:
138	qcom,sm8250-slpi-pas:
139	qcom,sm8350-slpi-pas:
140		    must be "lcx", "lmx", "load_state"
141
142- memory-region:
143	Usage: required
144	Value type: <phandle>
145	Definition: reference to the reserved-memory for the ADSP
146
147- qcom,smem-states:
148	Usage: required
149	Value type: <phandle>
150	Definition: reference to the smem state for requesting the ADSP to
151		    shut down
152
153- qcom,smem-state-names:
154	Usage: required
155	Value type: <stringlist>
156	Definition: must be "stop"
157
158
159= SUBNODES
160The adsp node may have an subnode named either "smd-edge" or "glink-edge" that
161describes the communication edge, channels and devices related to the ADSP.
162See ../soc/qcom/qcom,smd.txt and ../soc/qcom/qcom,glink.txt for details on how
163to describe these.
164
165
166= EXAMPLE
167The following example describes the resources needed to boot control the
168ADSP, as it is found on MSM8974 boards.
169
170	adsp {
171		compatible = "qcom,msm8974-adsp-pil";
172
173		interrupts-extended = <&intc 0 162 IRQ_TYPE_EDGE_RISING>,
174				      <&adsp_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
175				      <&adsp_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
176				      <&adsp_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
177				      <&adsp_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
178		interrupt-names = "wdog",
179				  "fatal",
180				  "ready",
181				  "handover",
182				  "stop-ack";
183
184		clocks = <&rpmcc RPM_CXO_CLK>;
185		clock-names = "xo";
186
187		cx-supply = <&pm8841_s2>;
188
189		memory-region = <&adsp_region>;
190
191		qcom,smem-states = <&adsp_smp2p_out 0>;
192		qcom,smem-state-names = "stop";
193
194		smd-edge {
195			interrupts = <0 156 IRQ_TYPE_EDGE_RISING>;
196
197			qcom,ipc = <&apcs 8 8>;
198			qcom,smd-edge = <1>;
199		};
200	};
201
202The following example describes the resources needed to boot control the
203SLPI, as it is found on MSM8996 boards.
204
205	slpi {
206		compatible = "qcom,msm8996-slpi-pil";
207		interrupts-extended = <&intc 0 390 IRQ_TYPE_EDGE_RISING>,
208				      <&slpi_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
209				      <&slpi_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
210				      <&slpi_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
211				      <&slpi_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
212		interrupt-names = "wdog",
213				  "fatal",
214				  "ready",
215				  "handover",
216				  "stop-ack";
217
218		clocks = <&rpmcc MSM8996_RPM_SMD_XO_CLK_SRC>,
219		         <&rpmcc MSM8996_RPM_SMD_AGGR2_NOC_CLK>;
220		clock-names = "xo", "aggre2";
221
222		cx-supply = <&pm8994_l26>;
223		px-supply = <&pm8994_lvs2>;
224
225		memory-region = <&slpi_region>;
226		qcom,smem-states = <&slpi_smp2p_out 0>;
227		qcom,smem-state-names = "stop";
228        };
229