0001 # SPDX-License-Identifier: GPL-2.0-only
0002 menu "Remoteproc drivers"
0003
0004 config REMOTEPROC
0005 bool "Support for Remote Processor subsystem"
0006 depends on HAS_DMA
0007 select CRC32
0008 select FW_LOADER
0009 select VIRTIO
0010 select WANT_DEV_COREDUMP
0011 help
0012 Support for remote processors (such as DSP coprocessors). These
0013 are mainly used on embedded systems.
0014
0015 if REMOTEPROC
0016
0017 config REMOTEPROC_CDEV
0018 bool "Remoteproc character device interface"
0019 help
0020 Say y here to have a character device interface for the remoteproc
0021 framework. Userspace can boot/shutdown remote processors through
0022 this interface.
0023
0024 It's safe to say N if you don't want to use this interface.
0025
0026 config IMX_REMOTEPROC
0027 tristate "i.MX remoteproc support"
0028 depends on ARCH_MXC
0029 depends on HAVE_ARM_SMCCC
0030 select MAILBOX
0031 help
0032 Say y here to support iMX's remote processors via the remote
0033 processor framework.
0034
0035 It's safe to say N here.
0036
0037 config IMX_DSP_REMOTEPROC
0038 tristate "i.MX DSP remoteproc support"
0039 depends on ARCH_MXC
0040 depends on HAVE_ARM_SMCCC
0041 select MAILBOX
0042 help
0043 Say y here to support iMX's DSP remote processors via the remote
0044 processor framework.
0045
0046 It's safe to say N here.
0047
0048 config INGENIC_VPU_RPROC
0049 tristate "Ingenic JZ47xx VPU remoteproc support"
0050 depends on MIPS || COMPILE_TEST
0051 help
0052 Say y or m here to support the VPU in the JZ47xx SoCs from Ingenic.
0053
0054 This can be either built-in or a loadable module.
0055 If unsure say N.
0056
0057 config MTK_SCP
0058 tristate "Mediatek SCP support"
0059 depends on ARCH_MEDIATEK || COMPILE_TEST
0060 select RPMSG_MTK_SCP
0061 help
0062 Say y here to support Mediatek's System Companion Processor (SCP) via
0063 the remote processor framework.
0064
0065 It's safe to say N here.
0066
0067 config OMAP_REMOTEPROC
0068 tristate "OMAP remoteproc support"
0069 depends on ARCH_OMAP4 || SOC_OMAP5 || SOC_DRA7XX
0070 depends on OMAP_IOMMU
0071 select MAILBOX
0072 select OMAP2PLUS_MBOX
0073 help
0074 Say y here to support OMAP's remote processors (dual M3
0075 and DSP on OMAP4) via the remote processor framework.
0076
0077 Currently only supported on OMAP4.
0078
0079 Usually you want to say Y here, in order to enable multimedia
0080 use-cases to run on your platform (multimedia codecs are
0081 offloaded to remote DSP processors using this framework).
0082
0083 It's safe to say N here if you're not interested in multimedia
0084 offloading or just want a bare minimum kernel.
0085
0086 config OMAP_REMOTEPROC_WATCHDOG
0087 bool "OMAP remoteproc watchdog timer"
0088 depends on OMAP_REMOTEPROC
0089 default n
0090 help
0091 Say Y here to enable watchdog timer for remote processors.
0092
0093 This option controls the watchdog functionality for the remote
0094 processors in OMAP. Dedicated OMAP DMTimers are used by the remote
0095 processors and triggers the timer interrupt upon a watchdog
0096 detection.
0097
0098 config WKUP_M3_RPROC
0099 tristate "AMx3xx Wakeup M3 remoteproc support"
0100 depends on SOC_AM33XX || SOC_AM43XX
0101 help
0102 Say y here to support Wakeup M3 remote processor on TI AM33xx
0103 and AM43xx family of SoCs.
0104
0105 Required for Suspend-to-RAM on AM33xx and AM43xx SoCs. Also needed
0106 for deep CPUIdle states on AM33xx SoCs. Allows for loading of the
0107 firmware onto these remote processors.
0108 If unsure say N.
0109
0110 config DA8XX_REMOTEPROC
0111 tristate "DA8xx/OMAP-L13x remoteproc support"
0112 depends on ARCH_DAVINCI_DA8XX
0113 depends on DMA_CMA
0114 help
0115 Say y here to support DA8xx/OMAP-L13x remote processors via the
0116 remote processor framework.
0117
0118 You want to say y here in order to enable AMP
0119 use-cases to run on your platform (multimedia codecs are
0120 offloaded to remote DSP processors using this framework).
0121
0122 This module controls the name of the firmware file that gets
0123 loaded on the DSP. This file must reside in the /lib/firmware
0124 directory. It can be specified via the module parameter
0125 da8xx_fw_name=<filename>, and if not specified will default to
0126 "rproc-dsp-fw".
0127
0128 It's safe to say n here if you're not interested in multimedia
0129 offloading.
0130
0131 config KEYSTONE_REMOTEPROC
0132 tristate "Keystone Remoteproc support"
0133 depends on ARCH_KEYSTONE
0134 help
0135 Say Y here here to support Keystone remote processors (DSP)
0136 via the remote processor framework.
0137
0138 It's safe to say N here if you're not interested in the Keystone
0139 DSPs or just want to use a bare minimum kernel.
0140
0141 config MESON_MX_AO_ARC_REMOTEPROC
0142 tristate "Amlogic Meson6/8/8b/8m2 AO ARC remote processor support"
0143 depends on HAS_IOMEM
0144 depends on (ARM && ARCH_MESON) || COMPILE_TEST
0145 select GENERIC_ALLOCATOR
0146 help
0147 Say m or y here to have support for the AO ARC remote processor
0148 on Amlogic Meson6/Meson8/Meson8b/Meson8m2 SoCs. This is
0149 typically used for system suspend.
0150 If unsure say N.
0151
0152 config PRU_REMOTEPROC
0153 tristate "TI PRU remoteproc support"
0154 depends on TI_PRUSS
0155 default TI_PRUSS
0156 help
0157 Support for TI PRU remote processors present within a PRU-ICSS
0158 subsystem via the remote processor framework.
0159
0160 Say Y or M here to support the Programmable Realtime Unit (PRU)
0161 processors on various TI SoCs. It's safe to say N here if you're
0162 not interested in the PRU or if you are unsure.
0163
0164 config QCOM_PIL_INFO
0165 tristate
0166
0167 config QCOM_RPROC_COMMON
0168 tristate
0169
0170 config QCOM_Q6V5_COMMON
0171 tristate
0172 depends on ARCH_QCOM
0173 depends on QCOM_SMEM
0174
0175 config QCOM_Q6V5_ADSP
0176 tristate "Qualcomm Technology Inc ADSP Peripheral Image Loader"
0177 depends on OF && ARCH_QCOM
0178 depends on QCOM_SMEM
0179 depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n
0180 depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
0181 depends on QCOM_SYSMON || QCOM_SYSMON=n
0182 depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
0183 depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n
0184 select MFD_SYSCON
0185 select QCOM_PIL_INFO
0186 select QCOM_MDT_LOADER
0187 select QCOM_Q6V5_COMMON
0188 select QCOM_RPROC_COMMON
0189 help
0190 Say y here to support the Peripheral Image Loader
0191 for the non-TrustZone part of Qualcomm Technology Inc. ADSP and CDSP
0192 remote processors. The TrustZone part is handled by QCOM_Q6V5_PAS
0193 driver.
0194
0195 config QCOM_Q6V5_MSS
0196 tristate "Qualcomm Hexagon V5 self-authenticating modem subsystem support"
0197 depends on OF && ARCH_QCOM
0198 depends on QCOM_SMEM
0199 depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n
0200 depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
0201 depends on QCOM_SYSMON || QCOM_SYSMON=n
0202 depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
0203 depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n
0204 select MFD_SYSCON
0205 select QCOM_MDT_LOADER
0206 select QCOM_PIL_INFO
0207 select QCOM_Q6V5_COMMON
0208 select QCOM_RPROC_COMMON
0209 select QCOM_SCM
0210 help
0211 Say y here to support the Qualcomm self-authenticating modem
0212 subsystem based on Hexagon V5. The TrustZone based system is
0213 handled by QCOM_Q6V5_PAS driver.
0214
0215 config QCOM_Q6V5_PAS
0216 tristate "Qualcomm Hexagon v5 Peripheral Authentication Service support"
0217 depends on OF && ARCH_QCOM
0218 depends on QCOM_SMEM
0219 depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n
0220 depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
0221 depends on QCOM_SYSMON || QCOM_SYSMON=n
0222 depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
0223 depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n
0224 select MFD_SYSCON
0225 select QCOM_PIL_INFO
0226 select QCOM_MDT_LOADER
0227 select QCOM_Q6V5_COMMON
0228 select QCOM_RPROC_COMMON
0229 select QCOM_SCM
0230 help
0231 Say y here to support the TrustZone based Peripheral Image Loader
0232 for the Qualcomm Hexagon v5 based remote processors. This is commonly
0233 used to control subsystems such as ADSP (Audio DSP),
0234 CDSP (Compute DSP), MPSS (Modem Peripheral SubSystem), and
0235 SLPI (Sensor Low Power Island).
0236
0237 config QCOM_Q6V5_WCSS
0238 tristate "Qualcomm Hexagon based WCSS Peripheral Image Loader"
0239 depends on OF && ARCH_QCOM
0240 depends on QCOM_SMEM
0241 depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n
0242 depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
0243 depends on QCOM_SYSMON || QCOM_SYSMON=n
0244 depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
0245 depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n
0246 select MFD_SYSCON
0247 select QCOM_MDT_LOADER
0248 select QCOM_PIL_INFO
0249 select QCOM_Q6V5_COMMON
0250 select QCOM_RPROC_COMMON
0251 select QCOM_SCM
0252 help
0253 Say y here to support the Qualcomm Peripheral Image Loader for the
0254 Hexagon V5 based WCSS remote processors on e.g. IPQ8074. This is
0255 a non-TrustZone wireless subsystem.
0256
0257 config QCOM_SYSMON
0258 tristate "Qualcomm sysmon driver"
0259 depends on RPMSG
0260 depends on ARCH_QCOM
0261 depends on NET
0262 select QCOM_QMI_HELPERS
0263 help
0264 The sysmon driver implements a sysmon QMI client and a handler for
0265 the sys_mon SMD and GLINK channel, which are used for graceful
0266 shutdown, retrieving failure information and propagating information
0267 about other subsystems being shut down.
0268
0269 Say y here if your system runs firmware on any other subsystems, e.g.
0270 modem or DSP.
0271
0272 config QCOM_WCNSS_PIL
0273 tristate "Qualcomm WCNSS Peripheral Image Loader"
0274 depends on OF && ARCH_QCOM
0275 depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n
0276 depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
0277 depends on QCOM_SMEM
0278 depends on QCOM_SYSMON || QCOM_SYSMON=n
0279 depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n
0280 select QCOM_MDT_LOADER
0281 select QCOM_PIL_INFO
0282 select QCOM_RPROC_COMMON
0283 select QCOM_SCM
0284 help
0285 Say y here to support the Peripheral Image Loader for loading WCNSS
0286 firmware and boot the core on e.g. MSM8974, MSM8916. The firmware is
0287 verified and booted with the help of the Peripheral Authentication
0288 System (PAS) in TrustZone.
0289
0290 config RCAR_REMOTEPROC
0291 tristate "Renesas R-Car Gen3 remoteproc support"
0292 depends on ARCH_RENESAS || COMPILE_TEST
0293 help
0294 Say y here to support R-Car realtime processor via the
0295 remote processor framework. An ELF firmware can be loaded
0296 thanks to sysfs remoteproc entries. The remote processor
0297 can be started and stopped.
0298 This can be either built-in or a loadable module.
0299 If compiled as module (M), the module name is rcar_rproc.
0300
0301 config ST_REMOTEPROC
0302 tristate "ST remoteproc support"
0303 depends on ARCH_STI
0304 select MAILBOX
0305 select STI_MBOX
0306 help
0307 Say y here to support ST's adjunct processors via the remote
0308 processor framework.
0309 This can be either built-in or a loadable module.
0310
0311 config ST_SLIM_REMOTEPROC
0312 tristate
0313
0314 config STM32_RPROC
0315 tristate "STM32 remoteproc support"
0316 depends on ARCH_STM32
0317 depends on REMOTEPROC
0318 select MAILBOX
0319 help
0320 Say y here to support STM32 MCU processors via the
0321 remote processor framework.
0322
0323 You want to say y here in order to enable AMP
0324 use-cases to run on your platform (dedicated firmware could be
0325 offloaded to remote MCU processors using this framework).
0326
0327 This can be either built-in or a loadable module.
0328
0329 config TI_K3_DSP_REMOTEPROC
0330 tristate "TI K3 DSP remoteproc support"
0331 depends on ARCH_K3
0332 select MAILBOX
0333 select OMAP2PLUS_MBOX
0334 help
0335 Say m here to support TI's C66x and C71x DSP remote processor
0336 subsystems on various TI K3 family of SoCs through the remote
0337 processor framework.
0338
0339 It's safe to say N here if you're not interested in utilizing
0340 the DSP slave processors.
0341
0342 config TI_K3_R5_REMOTEPROC
0343 tristate "TI K3 R5 remoteproc support"
0344 depends on ARCH_K3
0345 select MAILBOX
0346 select OMAP2PLUS_MBOX
0347 help
0348 Say m here to support TI's R5F remote processor subsystems
0349 on various TI K3 family of SoCs through the remote processor
0350 framework.
0351
0352 It's safe to say N here if you're not interested in utilizing
0353 a slave processor.
0354
0355 endif # REMOTEPROC
0356
0357 endmenu