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