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