| # 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=<filename>, 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 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 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 |