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