# SPDX-License-Identifier: GPL-2.0

menu "Rpmsg drivers"

# RPMSG always gets selected by whoever wants it
config RPMSG
	tristate

config RPMSG_CHAR
	tristate "RPMSG device interface"
	depends on RPMSG
	depends on NET
	help
	  Say Y here to export rpmsg endpoints as device files, usually found
	  in /dev. They make it possible for user-space programs to send and
	  receive rpmsg packets.

config RPMSG_CTRL
	tristate "RPMSG control interface"
	depends on RPMSG && ( RPMSG_CHAR || RPMSG_CHAR=n )
	help
	  Say Y here to enable the support of the /dev/rpmsg_ctrlX API. This API
	  allows user-space programs to create endpoints with specific service name,
	  source and destination addresses.

config RPMSG_NS
	tristate "RPMSG name service announcement"
	depends on RPMSG
	help
	  Say Y here to enable the support of the name service announcement
	  channel that probes the associated RPMsg device on remote endpoint
	  service announcement.

config RPMSG_MTK_SCP
	tristate "MediaTek SCP"
	depends on MTK_SCP
	select RPMSG
	help
	  Say y here to enable support providing communication channels to
	  remote processors in MediaTek platforms.
	  This use IPI and IPC to communicate with remote processors.

config RPMSG_QCOM_GLINK
	tristate
	select RPMSG

config RPMSG_QCOM_GLINK_DEBUG
	bool "Qualcomm Technologies, Inc. Glink driver debug support"
	depends on RPMSG_QCOM_GLINK
	help
	  Say y here to enable GLINK debugging features. This currently includes
	  an assert in the intent timeout case to catch issues with unresponsive
	  remote processors. Future debug enhancements can be switched on and off
	  with this config.

config RPMSG_QCOM_GLINK_RPM
	tristate "Qualcomm RPM Glink driver"
	select RPMSG_QCOM_GLINK
	depends on HAS_IOMEM
	depends on MAILBOX
	help
	  Say y here to enable support for the GLINK RPM communication driver,
	  which serves as a channel for communication with the RPM in GLINK
	  enabled systems.

config RPMSG_QCOM_GLINK_SMEM
	tristate "Qualcomm SMEM Glink driver"
	select RPMSG_QCOM_GLINK
	depends on MAILBOX
	depends on QCOM_SMEM
	help
	  Say y here to enable support for the GLINK SMEM communication driver,
	  which provides support for using the GLINK communication protocol
	  over SMEM.

config RPMSG_QCOM_GLINK_SPSS
	tristate "QTI SPSS Glink driver"
	select RPMSG_QCOM_GLINK_NATIVE
	depends on MAILBOX
	depends on QCOM_SMEM
	help
	  Say y here to enable support for the GLINK SPSS communication driver,
	  which provides support for using the GLINK communication protocol
	  over SMEM. This protocol maps the smem and then shares the mapped
	  region with the remote proc by writing the smem descriptor location
	  and size into shared registers.

config RPMSG_QCOM_SMD
	tristate "Qualcomm Shared Memory Driver (SMD)"
	depends on MAILBOX
	depends on QCOM_SMEM
	select RPMSG
	help
	  Say y here to enable support for the Qualcomm Shared Memory Driver
	  providing communication channels to remote processors in Qualcomm
	  platforms.

config RPMSG_VIRTIO
	tristate "Virtio RPMSG bus driver"
	depends on HAS_DMA
	select RPMSG
	select RPMSG_NS
	select VIRTIO

config RPMSG_QCOM_GLINK_SLATECOM
	tristate "Qualcomm Technologies, Inc. SLATECOM Glink driver"
	help
	  Say y here to enable support for the GLINK SLATECOM driver,
	  which provides support for using the GLINK communication protocol
	  over SLATECOM. This transport performs marshaling of GLINK commands and
	  data to the appropriate SLATECOM format and allows for GLINK
	  communication with remote subsystems that are external to the SoC.

config MSM_RPM_SMD
	tristate "RPM driver using SMD protocol"
	select RPMSG
	help
	  RPM is the dedicated hardware engine for managing shared SoC
	  resources. This config adds driver support for using SMD as a
	  transport layer communication with RPM hardware. It also selects
	  the MSM_MPM config that programs the MPM module to monitor interrupts
	  during sleep modes.

endmenu
