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