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