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 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 48config 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 57config 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 67config 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 86config 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 98config 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 110config 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 131config 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 141config 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 152config 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 164config QCOM_PIL_INFO 165 tristate 166 167config QCOM_RPROC_COMMON 168 tristate 169 170config QCOM_Q6V5_COMMON 171 tristate 172 depends on ARCH_QCOM 173 depends on QCOM_SMEM 174 175config QCOM_Q6V5_ADSP 176 tristate "Qualcomm Technology Inc ADSP Peripheral Image Loader" 177 depends on OF && ARCH_QCOM 178 depends on QCOM_SMEM 179 depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n 180 depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n 181 depends on QCOM_SYSMON || QCOM_SYSMON=n 182 depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n 183 depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n 184 select MFD_SYSCON 185 select QCOM_PIL_INFO 186 select QCOM_MDT_LOADER 187 select QCOM_Q6V5_COMMON 188 select QCOM_RPROC_COMMON 189 help 190 Say y here to support the Peripheral Image Loader 191 for the non-TrustZone part of Qualcomm Technology Inc. ADSP and CDSP 192 remote processors. The TrustZone part is handled by QCOM_Q6V5_PAS 193 driver. 194 195config QCOM_Q6V5_MSS 196 tristate "Qualcomm Hexagon V5 self-authenticating modem subsystem support" 197 depends on OF && ARCH_QCOM 198 depends on QCOM_SMEM 199 depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n 200 depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n 201 depends on QCOM_SYSMON || QCOM_SYSMON=n 202 depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n 203 depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n 204 select MFD_SYSCON 205 select QCOM_MDT_LOADER 206 select QCOM_PIL_INFO 207 select QCOM_Q6V5_COMMON 208 select QCOM_RPROC_COMMON 209 select QCOM_SCM 210 help 211 Say y here to support the Qualcomm self-authenticating modem 212 subsystem based on Hexagon V5. The TrustZone based system is 213 handled by QCOM_Q6V5_PAS driver. 214 215config QCOM_Q6V5_PAS 216 tristate "Qualcomm Hexagon v5 Peripheral Authentication Service support" 217 depends on OF && ARCH_QCOM 218 depends on QCOM_SMEM 219 depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n 220 depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n 221 depends on QCOM_SYSMON || QCOM_SYSMON=n 222 depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n 223 depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n 224 select MFD_SYSCON 225 select QCOM_PIL_INFO 226 select QCOM_MDT_LOADER 227 select QCOM_Q6V5_COMMON 228 select QCOM_RPROC_COMMON 229 select QCOM_SCM 230 help 231 Say y here to support the TrustZone based Peripheral Image Loader 232 for the Qualcomm Hexagon v5 based remote processors. This is commonly 233 used to control subsystems such as ADSP (Audio DSP), 234 CDSP (Compute DSP), MPSS (Modem Peripheral SubSystem), and 235 SLPI (Sensor Low Power Island). 236 237config QCOM_Q6V5_WCSS 238 tristate "Qualcomm Hexagon based WCSS Peripheral Image Loader" 239 depends on OF && ARCH_QCOM 240 depends on QCOM_SMEM 241 depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n 242 depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n 243 depends on QCOM_SYSMON || QCOM_SYSMON=n 244 depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n 245 depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n 246 select MFD_SYSCON 247 select QCOM_MDT_LOADER 248 select QCOM_PIL_INFO 249 select QCOM_Q6V5_COMMON 250 select QCOM_RPROC_COMMON 251 select QCOM_SCM 252 help 253 Say y here to support the Qualcomm Peripheral Image Loader for the 254 Hexagon V5 based WCSS remote processors on e.g. IPQ8074. This is 255 a non-TrustZone wireless subsystem. 256 257config QCOM_SYSMON 258 tristate "Qualcomm sysmon driver" 259 depends on RPMSG 260 depends on ARCH_QCOM 261 depends on NET 262 select QCOM_QMI_HELPERS 263 help 264 The sysmon driver implements a sysmon QMI client and a handler for 265 the sys_mon SMD and GLINK channel, which are used for graceful 266 shutdown, retrieving failure information and propagating information 267 about other subsystems being shut down. 268 269 Say y here if your system runs firmware on any other subsystems, e.g. 270 modem or DSP. 271 272config QCOM_WCNSS_PIL 273 tristate "Qualcomm WCNSS Peripheral Image Loader" 274 depends on OF && ARCH_QCOM 275 depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n 276 depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n 277 depends on QCOM_SMEM 278 depends on QCOM_SYSMON || QCOM_SYSMON=n 279 depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n 280 select QCOM_MDT_LOADER 281 select QCOM_PIL_INFO 282 select QCOM_RPROC_COMMON 283 select QCOM_SCM 284 help 285 Say y here to support the Peripheral Image Loader for loading WCNSS 286 firmware and boot the core on e.g. MSM8974, MSM8916. The firmware is 287 verified and booted with the help of the Peripheral Authentication 288 System (PAS) in TrustZone. 289 290config RCAR_REMOTEPROC 291 tristate "Renesas R-Car Gen3 remoteproc support" 292 depends on ARCH_RENESAS || COMPILE_TEST 293 help 294 Say y here to support R-Car realtime processor via the 295 remote processor framework. An ELF firmware can be loaded 296 thanks to sysfs remoteproc entries. The remote processor 297 can be started and stopped. 298 This can be either built-in or a loadable module. 299 If compiled as module (M), the module name is rcar_rproc. 300 301config ST_REMOTEPROC 302 tristate "ST remoteproc support" 303 depends on ARCH_STI 304 select MAILBOX 305 select STI_MBOX 306 help 307 Say y here to support ST's adjunct processors via the remote 308 processor framework. 309 This can be either built-in or a loadable module. 310 311config ST_SLIM_REMOTEPROC 312 tristate 313 314config STM32_RPROC 315 tristate "STM32 remoteproc support" 316 depends on ARCH_STM32 317 depends on REMOTEPROC 318 select MAILBOX 319 help 320 Say y here to support STM32 MCU processors via the 321 remote processor framework. 322 323 You want to say y here in order to enable AMP 324 use-cases to run on your platform (dedicated firmware could be 325 offloaded to remote MCU processors using this framework). 326 327 This can be either built-in or a loadable module. 328 329config TI_K3_DSP_REMOTEPROC 330 tristate "TI K3 DSP remoteproc support" 331 depends on ARCH_K3 332 select MAILBOX 333 select 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 342config TI_K3_R5_REMOTEPROC 343 tristate "TI K3 R5 remoteproc support" 344 depends on ARCH_K3 345 select MAILBOX 346 select OMAP2PLUS_MBOX 347 help 348 Say m here to support TI's R5F 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 slave processor. 354 355endif # REMOTEPROC 356 357endmenu 358