remoteproc: k3-r5: Fix refcount leak in k3_r5_cluster_of_init
[platform/kernel/linux-rpi.git] / drivers / remoteproc / Kconfig
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 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
46 config 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
56 config 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
75 config 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
87 config 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
99 config 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
120 config 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
130 config PRU_REMOTEPROC
131         tristate "TI PRU remoteproc support"
132         depends on TI_PRUSS
133         default TI_PRUSS
134         help
135           Support for TI PRU remote processors present within a PRU-ICSS
136           subsystem via the remote processor framework.
137
138           Say Y or M here to support the Programmable Realtime Unit (PRU)
139           processors on various TI SoCs. It's safe to say N here if you're
140           not interested in the PRU or if you are unsure.
141
142 config QCOM_PIL_INFO
143         tristate
144
145 config QCOM_RPROC_COMMON
146         tristate
147
148 config QCOM_Q6V5_COMMON
149         tristate
150         depends on ARCH_QCOM
151         depends on QCOM_SMEM
152
153 config QCOM_Q6V5_ADSP
154         tristate "Qualcomm Technology Inc ADSP Peripheral Image Loader"
155         depends on OF && ARCH_QCOM
156         depends on QCOM_SMEM
157         depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
158         depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
159         depends on QCOM_SYSMON || QCOM_SYSMON=n
160         depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
161         select MFD_SYSCON
162         select QCOM_PIL_INFO
163         select QCOM_MDT_LOADER
164         select QCOM_Q6V5_COMMON
165         select QCOM_RPROC_COMMON
166         help
167           Say y here to support the Peripheral Image Loader
168           for the non-TrustZone part of Qualcomm Technology Inc. ADSP and CDSP
169           remote processors. The TrustZone part is handled by QCOM_Q6V5_PAS
170           driver.
171
172 config QCOM_Q6V5_MSS
173         tristate "Qualcomm Hexagon V5 self-authenticating modem subsystem support"
174         depends on OF && ARCH_QCOM
175         depends on QCOM_SMEM
176         depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
177         depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
178         depends on QCOM_SYSMON || QCOM_SYSMON=n
179         depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
180         select MFD_SYSCON
181         select QCOM_MDT_LOADER
182         select QCOM_PIL_INFO
183         select QCOM_Q6V5_COMMON
184         select QCOM_RPROC_COMMON
185         select QCOM_SCM
186         help
187           Say y here to support the Qualcomm self-authenticating modem
188           subsystem based on Hexagon V5. The TrustZone based system is
189           handled by QCOM_Q6V5_PAS driver.
190
191 config QCOM_Q6V5_PAS
192         tristate "Qualcomm Hexagon v5 Peripheral Authentication Service support"
193         depends on OF && ARCH_QCOM
194         depends on QCOM_SMEM
195         depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
196         depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
197         depends on QCOM_SYSMON || QCOM_SYSMON=n
198         depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
199         select MFD_SYSCON
200         select QCOM_PIL_INFO
201         select QCOM_MDT_LOADER
202         select QCOM_Q6V5_COMMON
203         select QCOM_RPROC_COMMON
204         select QCOM_SCM
205         help
206           Say y here to support the TrustZone based Peripheral Image Loader
207           for the Qualcomm Hexagon v5 based remote processors. This is commonly
208           used to control subsystems such as ADSP (Audio DSP),
209           CDSP (Compute DSP), MPSS (Modem Peripheral SubSystem), and
210           SLPI (Sensor Low Power Island).
211
212 config QCOM_Q6V5_WCSS
213         tristate "Qualcomm Hexagon based WCSS Peripheral Image Loader"
214         depends on OF && ARCH_QCOM
215         depends on QCOM_SMEM
216         depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
217         depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
218         depends on QCOM_SYSMON || QCOM_SYSMON=n
219         depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
220         select MFD_SYSCON
221         select QCOM_MDT_LOADER
222         select QCOM_PIL_INFO
223         select QCOM_Q6V5_COMMON
224         select QCOM_RPROC_COMMON
225         select QCOM_SCM
226         help
227           Say y here to support the Qualcomm Peripheral Image Loader for the
228           Hexagon V5 based WCSS remote processors on e.g. IPQ8074.  This is
229           a non-TrustZone wireless subsystem.
230
231 config QCOM_SYSMON
232         tristate "Qualcomm sysmon driver"
233         depends on RPMSG
234         depends on ARCH_QCOM
235         depends on NET
236         select QCOM_QMI_HELPERS
237         help
238           The sysmon driver implements a sysmon QMI client and a handler for
239           the sys_mon SMD and GLINK channel, which are used for graceful
240           shutdown, retrieving failure information and propagating information
241           about other subsystems being shut down.
242
243           Say y here if your system runs firmware on any other subsystems, e.g.
244           modem or DSP.
245
246 config QCOM_WCNSS_PIL
247         tristate "Qualcomm WCNSS Peripheral Image Loader"
248         depends on OF && ARCH_QCOM
249         depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
250         depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
251         depends on QCOM_SMEM
252         depends on QCOM_SYSMON || QCOM_SYSMON=n
253         depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
254         select QCOM_MDT_LOADER
255         select QCOM_PIL_INFO
256         select QCOM_RPROC_COMMON
257         select QCOM_SCM
258         help
259           Say y here to support the Peripheral Image Loader for loading WCNSS
260           firmware and boot the core on e.g. MSM8974, MSM8916. The firmware is
261           verified and booted with the help of the Peripheral Authentication
262           System (PAS) in TrustZone.
263
264 config ST_REMOTEPROC
265         tristate "ST remoteproc support"
266         depends on ARCH_STI
267         select MAILBOX
268         select STI_MBOX
269         help
270           Say y here to support ST's adjunct processors via the remote
271           processor framework.
272           This can be either built-in or a loadable module.
273
274 config ST_SLIM_REMOTEPROC
275         tristate
276
277 config STM32_RPROC
278         tristate "STM32 remoteproc support"
279         depends on ARCH_STM32
280         depends on REMOTEPROC
281         select MAILBOX
282         help
283           Say y here to support STM32 MCU processors via the
284           remote processor framework.
285
286           You want to say y here in order to enable AMP
287           use-cases to run on your platform (dedicated firmware could be
288           offloaded to remote MCU processors using this framework).
289
290           This can be either built-in or a loadable module.
291
292 config TI_K3_DSP_REMOTEPROC
293         tristate "TI K3 DSP remoteproc support"
294         depends on ARCH_K3
295         select MAILBOX
296         select OMAP2PLUS_MBOX
297         help
298           Say m here to support TI's C66x and C71x DSP remote processor
299           subsystems on various TI K3 family of SoCs through the remote
300           processor framework.
301
302           It's safe to say N here if you're not interested in utilizing
303           the DSP slave processors.
304
305 config TI_K3_R5_REMOTEPROC
306         tristate "TI K3 R5 remoteproc support"
307         depends on ARCH_K3
308         select MAILBOX
309         select OMAP2PLUS_MBOX
310         help
311           Say m here to support TI's R5F remote processor subsystems
312           on various TI K3 family of SoCs through the remote processor
313           framework.
314
315           It's safe to say N here if you're not interested in utilizing
316           a slave processor.
317
318 endif # REMOTEPROC
319
320 endmenu