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