# SPDX-License-Identifier: GPL-2.0-only menu "Remoteproc drivers" config REMOTEPROC bool "Support for Remote Processor subsystem" depends on HAS_DMA select CRC32 select FW_LOADER select VIRTIO select WANT_DEV_COREDUMP help Support for remote processors (such as DSP coprocessors). These are mainly used on embedded systems. if REMOTEPROC config REMOTEPROC_CDEV bool "Remoteproc character device interface" help Say y here to have a character device interface for the remoteproc framework. Userspace can boot/shutdown remote processors through this interface. It's safe to say N if you don't want to use this interface. config IMX_REMOTEPROC tristate "i.MX remoteproc support" depends on ARCH_MXC depends on HAVE_ARM_SMCCC select MAILBOX help Say y here to support iMX's remote processors via the remote processor framework. It's safe to say N here. config IMX_DSP_REMOTEPROC tristate "i.MX DSP remoteproc support" depends on ARCH_MXC depends on HAVE_ARM_SMCCC select MAILBOX help Say y here to support iMX's DSP remote processors via the remote processor framework. It's safe to say N here. config INGENIC_VPU_RPROC tristate "Ingenic JZ47xx VPU remoteproc support" depends on MIPS || COMPILE_TEST help Say y or m here to support the VPU in the JZ47xx SoCs from Ingenic. This can be either built-in or a loadable module. If unsure say N. config MTK_SCP tristate "Mediatek SCP support" depends on ARCH_MEDIATEK || COMPILE_TEST select RPMSG_MTK_SCP help Say y here to support Mediatek's System Companion Processor (SCP) via the remote processor framework. It's safe to say N here. config OMAP_REMOTEPROC tristate "OMAP remoteproc support" depends on ARCH_OMAP4 || SOC_OMAP5 || SOC_DRA7XX depends on OMAP_IOMMU select MAILBOX select OMAP2PLUS_MBOX help Say y here to support OMAP's remote processors (dual M3 and DSP on OMAP4) via the remote processor framework. Currently only supported on OMAP4. Usually you want to say Y here, in order to enable multimedia use-cases to run on your platform (multimedia codecs are offloaded to remote DSP processors using this framework). It's safe to say N here if you're not interested in multimedia offloading or just want a bare minimum kernel. config OMAP_REMOTEPROC_WATCHDOG bool "OMAP remoteproc watchdog timer" depends on OMAP_REMOTEPROC default n help Say Y here to enable watchdog timer for remote processors. This option controls the watchdog functionality for the remote processors in OMAP. Dedicated OMAP DMTimers are used by the remote processors and triggers the timer interrupt upon a watchdog detection. config WKUP_M3_RPROC tristate "AMx3xx Wakeup M3 remoteproc support" depends on SOC_AM33XX || SOC_AM43XX help Say y here to support Wakeup M3 remote processor on TI AM33xx and AM43xx family of SoCs. Required for Suspend-to-RAM on AM33xx and AM43xx SoCs. Also needed for deep CPUIdle states on AM33xx SoCs. Allows for loading of the firmware onto these remote processors. If unsure say N. config DA8XX_REMOTEPROC tristate "DA8xx/OMAP-L13x remoteproc support" depends on ARCH_DAVINCI_DA8XX depends on DMA_CMA help Say y here to support DA8xx/OMAP-L13x remote processors via the remote processor framework. You want to say y here in order to enable AMP use-cases to run on your platform (multimedia codecs are offloaded to remote DSP processors using this framework). This module controls the name of the firmware file that gets loaded on the DSP. This file must reside in the /lib/firmware directory. It can be specified via the module parameter da8xx_fw_name=, and if not specified will default to "rproc-dsp-fw". It's safe to say n here if you're not interested in multimedia offloading. config KEYSTONE_REMOTEPROC tristate "Keystone Remoteproc support" depends on ARCH_KEYSTONE help Say Y here here to support Keystone remote processors (DSP) via the remote processor framework. It's safe to say N here if you're not interested in the Keystone DSPs or just want to use a bare minimum kernel. config MESON_MX_AO_ARC_REMOTEPROC tristate "Amlogic Meson6/8/8b/8m2 AO ARC remote processor support" depends on HAS_IOMEM depends on (ARM && ARCH_MESON) || COMPILE_TEST select GENERIC_ALLOCATOR help Say m or y here to have support for the AO ARC remote processor on Amlogic Meson6/Meson8/Meson8b/Meson8m2 SoCs. This is typically used for system suspend. If unsure say N. config PRU_REMOTEPROC tristate "TI PRU remoteproc support" depends on TI_PRUSS default TI_PRUSS help Support for TI PRU remote processors present within a PRU-ICSS subsystem via the remote processor framework. Say Y or M here to support the Programmable Realtime Unit (PRU) processors on various TI SoCs. It's safe to say N here if you're not interested in the PRU or if you are unsure. config QCOM_PIL_INFO tristate config QCOM_RPROC_COMMON tristate select AUXILIARY_BUS config QCOM_Q6V5_COMMON tristate depends on ARCH_QCOM depends on QCOM_SMEM config QCOM_Q6V5_ADSP tristate "Qualcomm Technology Inc ADSP Peripheral Image Loader" depends on OF && ARCH_QCOM depends on QCOM_SMEM depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n depends on QCOM_SYSMON || QCOM_SYSMON=n depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n select MFD_SYSCON select QCOM_PIL_INFO select QCOM_MDT_LOADER select QCOM_Q6V5_COMMON select QCOM_RPROC_COMMON help Say y here to support the Peripheral Image Loader for the non-TrustZone part of Qualcomm Technology Inc. ADSP and CDSP remote processors. The TrustZone part is handled by QCOM_Q6V5_PAS driver. config QCOM_Q6V5_MSS tristate "Qualcomm Hexagon V5 self-authenticating modem subsystem support" depends on OF && ARCH_QCOM depends on QCOM_SMEM depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n depends on QCOM_SYSMON || QCOM_SYSMON=n depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n select MFD_SYSCON select QCOM_MDT_LOADER select QCOM_PIL_INFO select QCOM_Q6V5_COMMON select QCOM_RPROC_COMMON select QCOM_SCM help Say y here to support the Qualcomm self-authenticating modem subsystem based on Hexagon V5. The TrustZone based system is handled by QCOM_Q6V5_PAS driver. config QCOM_Q6V5_PAS tristate "Qualcomm Hexagon v5 Peripheral Authentication Service support" depends on OF && ARCH_QCOM depends on QCOM_SMEM depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n depends on QCOM_SYSMON || QCOM_SYSMON=n depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n select MFD_SYSCON select QCOM_PIL_INFO select QCOM_MDT_LOADER select QCOM_Q6V5_COMMON select QCOM_RPROC_COMMON select QCOM_SCM help Say y here to support the TrustZone based Peripheral Image Loader for the Qualcomm Hexagon v5 based remote processors. This is commonly used to control subsystems such as ADSP (Audio DSP), CDSP (Compute DSP), MPSS (Modem Peripheral SubSystem), and SLPI (Sensor Low Power Island). config QCOM_Q6V5_WCSS tristate "Qualcomm Hexagon based WCSS Peripheral Image Loader" depends on OF && ARCH_QCOM depends on QCOM_SMEM depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n depends on QCOM_SYSMON || QCOM_SYSMON=n depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n depends on QCOM_AOSS_QMP || QCOM_AOSS_QMP=n select MFD_SYSCON select QCOM_MDT_LOADER select QCOM_PIL_INFO select QCOM_Q6V5_COMMON select QCOM_RPROC_COMMON select QCOM_SCM help Say y here to support the Qualcomm Peripheral Image Loader for the Hexagon V5 based WCSS remote processors on e.g. IPQ8074. This is a non-TrustZone wireless subsystem. config QCOM_SYSMON tristate "Qualcomm sysmon driver" depends on RPMSG depends on ARCH_QCOM depends on NET select QCOM_QMI_HELPERS help The sysmon driver implements a sysmon QMI client and a handler for the sys_mon SMD and GLINK channel, which are used for graceful shutdown, retrieving failure information and propagating information about other subsystems being shut down. Say y here if your system runs firmware on any other subsystems, e.g. modem or DSP. config QCOM_WCNSS_PIL tristate "Qualcomm WCNSS Peripheral Image Loader" depends on OF && ARCH_QCOM depends on RPMSG_QCOM_SMD || RPMSG_QCOM_SMD=n depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n depends on QCOM_SMEM depends on QCOM_SYSMON || QCOM_SYSMON=n depends on RPMSG_QCOM_GLINK || RPMSG_QCOM_GLINK=n select QCOM_MDT_LOADER select QCOM_PIL_INFO select QCOM_RPROC_COMMON select QCOM_SCM help Say y here to support the Peripheral Image Loader for loading WCNSS firmware and boot the core on e.g. MSM8974, MSM8916. The firmware is verified and booted with the help of the Peripheral Authentication System (PAS) in TrustZone. config RCAR_REMOTEPROC tristate "Renesas R-Car Gen3 remoteproc support" depends on ARCH_RENESAS || COMPILE_TEST help Say y here to support R-Car realtime processor via the remote processor framework. An ELF firmware can be loaded thanks to sysfs remoteproc entries. The remote processor can be started and stopped. This can be either built-in or a loadable module. If compiled as module (M), the module name is rcar_rproc. config ST_REMOTEPROC tristate "ST remoteproc support" depends on ARCH_STI select MAILBOX select STI_MBOX help Say y here to support ST's adjunct processors via the remote processor framework. This can be either built-in or a loadable module. config ST_SLIM_REMOTEPROC tristate config STM32_RPROC tristate "STM32 remoteproc support" depends on ARCH_STM32 || COMPILE_TEST depends on REMOTEPROC select MAILBOX help Say y here to support STM32 MCU processors via the remote processor framework. You want to say y here in order to enable AMP use-cases to run on your platform (dedicated firmware could be offloaded to remote MCU processors using this framework). This can be either built-in or a loadable module. config TI_K3_DSP_REMOTEPROC tristate "TI K3 DSP remoteproc support" depends on ARCH_K3 || COMPILE_TEST depends on TI_SCI_PROTOCOL || (COMPILE_TEST && TI_SCI_PROTOCOL=n) depends on OMAP2PLUS_MBOX help Say m here to support TI's C66x and C71x DSP remote processor subsystems on various TI K3 family of SoCs through the remote processor framework. It's safe to say N here if you're not interested in utilizing the DSP slave processors. config TI_K3_M4_REMOTEPROC tristate "TI K3 M4 remoteproc support" depends on ARCH_K3 || COMPILE_TEST depends on TI_SCI_PROTOCOL || (COMPILE_TEST && TI_SCI_PROTOCOL=n) depends on OMAP2PLUS_MBOX help Say m here to support TI's M4 remote processor subsystems on various TI K3 family of SoCs through the remote processor framework. It's safe to say N here if you're not interested in utilizing a remote processor. config TI_K3_R5_REMOTEPROC tristate "TI K3 R5 remoteproc support" depends on ARCH_K3 || COMPILE_TEST depends on TI_SCI_PROTOCOL || (COMPILE_TEST && TI_SCI_PROTOCOL=n) depends on OMAP2PLUS_MBOX help Say m here to support TI's R5F remote processor subsystems on various TI K3 family of SoCs through the remote processor framework. It's safe to say N here if you're not interested in utilizing a slave processor. config XLNX_R5_REMOTEPROC tristate "Xilinx R5 remoteproc support" depends on PM && ARCH_ZYNQMP select ZYNQMP_FIRMWARE select RPMSG_VIRTIO select MAILBOX select ZYNQMP_IPI_MBOX help Say y or m here to support Xilinx R5 remote processors via the remote processor framework. It's safe to say N if not interested in using RPU r5f cores. endif # REMOTEPROC endmenu