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