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