1 # SPDX-License-Identifier: GPL-2.0-only
2 menu "Remoteproc drivers"
3 
4 config REMOTEPROC
5 	bool "Support for Remote Processor subsystem"
6 	depends on HAS_DMA
7 	select CRC32
8 	select FW_LOADER
9 	select VIRTIO
10 	select WANT_DEV_COREDUMP
11 	help
12 	  Support for remote processors (such as DSP coprocessors). These
13 	  are mainly used on embedded systems.
14 
15 if REMOTEPROC
16 
17 config REMOTEPROC_CDEV
18 	bool "Remoteproc character device interface"
19 	help
20 	  Say y here to have a character device interface for the remoteproc
21 	  framework. Userspace can boot/shutdown remote processors through
22 	  this interface.
23 
24 	  It's safe to say N if you don't want to use this interface.
25 
26 config IMX_REMOTEPROC
27 	tristate "i.MX remoteproc support"
28 	depends on ARCH_MXC
29 	depends on HAVE_ARM_SMCCC
30 	select MAILBOX
31 	help
32 	  Say y here to support iMX's remote processors via the remote
33 	  processor framework.
34 
35 	  It's safe to say N here.
36 
37 config IMX_DSP_REMOTEPROC
38 	tristate "i.MX DSP remoteproc support"
39 	depends on ARCH_MXC
40 	depends on HAVE_ARM_SMCCC
41 	select MAILBOX
42 	help
43 	  Say y here to support iMX's DSP remote processors via the remote
44 	  processor framework.
45 
46 	  It's safe to say N here.
47 
48 config INGENIC_VPU_RPROC
49 	tristate "Ingenic JZ47xx VPU remoteproc support"
50 	depends on MIPS || COMPILE_TEST
51 	help
52 	  Say y or m here to support the VPU in the JZ47xx SoCs from Ingenic.
53 
54 	  This can be either built-in or a loadable module.
55 	  If unsure say N.
56 
57 config MTK_SCP
58 	tristate "Mediatek SCP support"
59 	depends on ARCH_MEDIATEK || COMPILE_TEST
60 	select RPMSG_MTK_SCP
61 	help
62 	  Say y here to support Mediatek's System Companion Processor (SCP) via
63 	  the remote processor framework.
64 
65 	  It's safe to say N here.
66 
67 config OMAP_REMOTEPROC
68 	tristate "OMAP remoteproc support"
69 	depends on ARCH_OMAP4 || SOC_OMAP5 || SOC_DRA7XX
70 	depends on OMAP_IOMMU
71 	select MAILBOX
72 	select OMAP2PLUS_MBOX
73 	help
74 	  Say y here to support OMAP's remote processors (dual M3
75 	  and DSP on OMAP4) via the remote processor framework.
76 
77 	  Currently only supported on OMAP4.
78 
79 	  Usually you want to say Y here, in order to enable multimedia
80 	  use-cases to run on your platform (multimedia codecs are
81 	  offloaded to remote DSP processors using this framework).
82 
83 	  It's safe to say N here if you're not interested in multimedia
84 	  offloading or just want a bare minimum kernel.
85 
86 config OMAP_REMOTEPROC_WATCHDOG
87 	bool "OMAP remoteproc watchdog timer"
88 	depends on OMAP_REMOTEPROC
89 	default n
90 	help
91 	  Say Y here to enable watchdog timer for remote processors.
92 
93 	  This option controls the watchdog functionality for the remote
94 	  processors in OMAP. Dedicated OMAP DMTimers are used by the remote
95 	  processors and triggers the timer interrupt upon a watchdog
96 	  detection.
97 
98 config WKUP_M3_RPROC
99 	tristate "AMx3xx Wakeup M3 remoteproc support"
100 	depends on SOC_AM33XX || SOC_AM43XX
101 	help
102 	  Say y here to support Wakeup M3 remote processor on TI AM33xx
103 	  and AM43xx family of SoCs.
104 
105 	  Required for Suspend-to-RAM on AM33xx and AM43xx SoCs. Also needed
106 	  for deep CPUIdle states on AM33xx SoCs. Allows for loading of the
107 	  firmware onto these remote processors.
108 	  If unsure say N.
109 
110 config DA8XX_REMOTEPROC
111 	tristate "DA8xx/OMAP-L13x remoteproc support"
112 	depends on ARCH_DAVINCI_DA8XX
113 	depends on DMA_CMA
114 	help
115 	  Say y here to support DA8xx/OMAP-L13x remote processors via the
116 	  remote processor framework.
117 
118 	  You want to say y here in order to enable AMP
119 	  use-cases to run on your platform (multimedia codecs are
120 	  offloaded to remote DSP processors using this framework).
121 
122 	  This module controls the name of the firmware file that gets
123 	  loaded on the DSP.  This file must reside in the /lib/firmware
124 	  directory.  It can be specified via the module parameter
125 	  da8xx_fw_name=<filename>, and if not specified will default to
126 	  "rproc-dsp-fw".
127 
128 	  It's safe to say n here if you're not interested in multimedia
129 	  offloading.
130 
131 config KEYSTONE_REMOTEPROC
132 	tristate "Keystone Remoteproc support"
133 	depends on ARCH_KEYSTONE
134 	help
135 	  Say Y here here to support Keystone remote processors (DSP)
136 	  via the remote processor framework.
137 
138 	  It's safe to say N here if you're not interested in the Keystone
139 	  DSPs or just want to use a bare minimum kernel.
140 
141 config MESON_MX_AO_ARC_REMOTEPROC
142 	tristate "Amlogic Meson6/8/8b/8m2 AO ARC remote processor support"
143 	depends on HAS_IOMEM
144 	depends on (ARM && ARCH_MESON) || COMPILE_TEST
145 	select GENERIC_ALLOCATOR
146 	help
147 	  Say m or y here to have support for the AO ARC remote processor
148 	  on Amlogic Meson6/Meson8/Meson8b/Meson8m2 SoCs. This is
149 	  typically used for system suspend.
150 	  If unsure say N.
151 
152 config PRU_REMOTEPROC
153 	tristate "TI PRU remoteproc support"
154 	depends on TI_PRUSS
155 	default TI_PRUSS
156 	help
157 	  Support for TI PRU remote processors present within a PRU-ICSS
158 	  subsystem via the remote processor framework.
159 
160 	  Say Y or M here to support the Programmable Realtime Unit (PRU)
161 	  processors on various TI SoCs. It's safe to say N here if you're
162 	  not interested in the PRU or if you are unsure.
163 
164 config QCOM_PIL_INFO
165 	tristate
166 
167 config QCOM_RPROC_COMMON
168 	tristate
169 	select AUXILIARY_BUS
170 
171 config QCOM_Q6V5_COMMON
172 	tristate
173 	depends on ARCH_QCOM
174 	depends on QCOM_SMEM
175 
176 config QCOM_Q6V5_ADSP
177 	tristate "Qualcomm Technology Inc ADSP Peripheral Image Loader"
178 	depends on OF && ARCH_QCOM
179 	depends on QCOM_SMEM
180 	depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n
181 	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
182 	depends on QCOM_SYSMON || QCOM_SYSMON=n
183 	depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
184 	depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n
185 	select MFD_SYSCON
186 	select QCOM_PIL_INFO
187 	select QCOM_MDT_LOADER
188 	select QCOM_Q6V5_COMMON
189 	select QCOM_RPROC_COMMON
190 	help
191 	  Say y here to support the Peripheral Image Loader
192 	  for the non-TrustZone part of Qualcomm Technology Inc. ADSP and CDSP
193 	  remote processors. The TrustZone part is handled by QCOM_Q6V5_PAS
194 	  driver.
195 
196 config QCOM_Q6V5_MSS
197 	tristate "Qualcomm Hexagon V5 self-authenticating modem subsystem support"
198 	depends on OF && ARCH_QCOM
199 	depends on QCOM_SMEM
200 	depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n
201 	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
202 	depends on QCOM_SYSMON || QCOM_SYSMON=n
203 	depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
204 	depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n
205 	select MFD_SYSCON
206 	select QCOM_MDT_LOADER
207 	select QCOM_PIL_INFO
208 	select QCOM_Q6V5_COMMON
209 	select QCOM_RPROC_COMMON
210 	select QCOM_SCM
211 	help
212 	  Say y here to support the Qualcomm self-authenticating modem
213 	  subsystem based on Hexagon V5. The TrustZone based system is
214 	  handled by QCOM_Q6V5_PAS driver.
215 
216 config QCOM_Q6V5_PAS
217 	tristate "Qualcomm Hexagon v5 Peripheral Authentication Service support"
218 	depends on OF && ARCH_QCOM
219 	depends on QCOM_SMEM
220 	depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n
221 	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
222 	depends on QCOM_SYSMON || QCOM_SYSMON=n
223 	depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
224 	depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n
225 	select MFD_SYSCON
226 	select QCOM_PIL_INFO
227 	select QCOM_MDT_LOADER
228 	select QCOM_Q6V5_COMMON
229 	select QCOM_RPROC_COMMON
230 	select QCOM_SCM
231 	help
232 	  Say y here to support the TrustZone based Peripheral Image Loader
233 	  for the Qualcomm Hexagon v5 based remote processors. This is commonly
234 	  used to control subsystems such as ADSP (Audio DSP),
235 	  CDSP (Compute DSP), MPSS (Modem Peripheral SubSystem), and
236 	  SLPI (Sensor Low Power Island).
237 
238 config QCOM_Q6V5_WCSS
239 	tristate "Qualcomm Hexagon based WCSS Peripheral Image Loader"
240 	depends on OF && ARCH_QCOM
241 	depends on QCOM_SMEM
242 	depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n
243 	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
244 	depends on QCOM_SYSMON || QCOM_SYSMON=n
245 	depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
246 	depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n
247 	select MFD_SYSCON
248 	select QCOM_MDT_LOADER
249 	select QCOM_PIL_INFO
250 	select QCOM_Q6V5_COMMON
251 	select QCOM_RPROC_COMMON
252 	select QCOM_SCM
253 	help
254 	  Say y here to support the Qualcomm Peripheral Image Loader for the
255 	  Hexagon V5 based WCSS remote processors on e.g. IPQ8074.  This is
256 	  a non-TrustZone wireless subsystem.
257 
258 config QCOM_SYSMON
259 	tristate "Qualcomm sysmon driver"
260 	depends on RPMSG
261 	depends on ARCH_QCOM
262 	depends on NET
263 	select QCOM_QMI_HELPERS
264 	help
265 	  The sysmon driver implements a sysmon QMI client and a handler for
266 	  the sys_mon SMD and GLINK channel, which are used for graceful
267 	  shutdown, retrieving failure information and propagating information
268 	  about other subsystems being shut down.
269 
270 	  Say y here if your system runs firmware on any other subsystems, e.g.
271 	  modem or DSP.
272 
273 config QCOM_WCNSS_PIL
274 	tristate "Qualcomm WCNSS Peripheral Image Loader"
275 	depends on OF && ARCH_QCOM
276 	depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n
277 	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
278 	depends on QCOM_SMEM
279 	depends on QCOM_SYSMON || QCOM_SYSMON=n
280 	depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
281 	select QCOM_MDT_LOADER
282 	select QCOM_PIL_INFO
283 	select QCOM_RPROC_COMMON
284 	select QCOM_SCM
285 	help
286 	  Say y here to support the Peripheral Image Loader for loading WCNSS
287 	  firmware and boot the core on e.g. MSM8974, MSM8916. The firmware is
288 	  verified and booted with the help of the Peripheral Authentication
289 	  System (PAS) in TrustZone.
290 
291 config RCAR_REMOTEPROC
292 	tristate "Renesas R-Car Gen3 remoteproc support"
293 	depends on ARCH_RENESAS || COMPILE_TEST
294 	help
295 	  Say y here to support R-Car realtime processor via the
296 	  remote processor framework. An ELF firmware can be loaded
297 	  thanks to sysfs remoteproc entries. The remote processor
298 	  can be started and stopped.
299 	  This can be either built-in or a loadable module.
300 	  If compiled as module (M), the module name is rcar_rproc.
301 
302 config ST_REMOTEPROC
303 	tristate "ST remoteproc support"
304 	depends on ARCH_STI
305 	select MAILBOX
306 	select STI_MBOX
307 	help
308 	  Say y here to support ST's adjunct processors via the remote
309 	  processor framework.
310 	  This can be either built-in or a loadable module.
311 
312 config ST_SLIM_REMOTEPROC
313 	tristate
314 
315 config STM32_RPROC
316 	tristate "STM32 remoteproc support"
317 	depends on ARCH_STM32 || COMPILE_TEST
318 	depends on REMOTEPROC
319 	select MAILBOX
320 	help
321 	  Say y here to support STM32 MCU processors via the
322 	  remote processor framework.
323 
324 	  You want to say y here in order to enable AMP
325 	  use-cases to run on your platform (dedicated firmware could be
326 	  offloaded to remote MCU processors using this framework).
327 
328 	  This can be either built-in or a loadable module.
329 
330 config TI_K3_DSP_REMOTEPROC
331 	tristate "TI K3 DSP remoteproc support"
332 	depends on ARCH_K3
333 	depends on OMAP2PLUS_MBOX
334 	help
335 	  Say m here to support TI's C66x and C71x DSP remote processor
336 	  subsystems on various TI K3 family of SoCs through the remote
337 	  processor framework.
338 
339 	  It's safe to say N here if you're not interested in utilizing
340 	  the DSP slave processors.
341 
342 config TI_K3_M4_REMOTEPROC
343 	tristate "TI K3 M4 remoteproc support"
344 	depends on ARCH_OMAP2PLUS || ARCH_K3
345 	select MAILBOX
346 	select OMAP2PLUS_MBOX
347 	help
348 	  Say m here to support TI's M4 remote processor subsystems
349 	  on various TI K3 family of SoCs through the remote processor
350 	  framework.
351 
352 	  It's safe to say N here if you're not interested in utilizing
353 	  a remote processor.
354 
355 config TI_K3_R5_REMOTEPROC
356 	tristate "TI K3 R5 remoteproc support"
357 	depends on ARCH_K3
358 	depends on OMAP2PLUS_MBOX
359 	help
360 	  Say m here to support TI's R5F remote processor subsystems
361 	  on various TI K3 family of SoCs through the remote processor
362 	  framework.
363 
364 	  It's safe to say N here if you're not interested in utilizing
365 	  a slave processor.
366 
367 config XLNX_R5_REMOTEPROC
368 	tristate "Xilinx R5 remoteproc support"
369 	depends on PM && ARCH_ZYNQMP
370 	select ZYNQMP_FIRMWARE
371 	select RPMSG_VIRTIO
372 	select MAILBOX
373 	select ZYNQMP_IPI_MBOX
374 	help
375 	  Say y or m here to support Xilinx R5 remote processors via the remote
376 	  processor framework.
377 
378 	  It's safe to say N if not interested in using RPU r5f cores.
379 
380 endif # REMOTEPROC
381 
382 endmenu
383