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