# SPDX-License-Identifier: GPL-2.0-only
#
# RapidIO configuration
#

config HAVE_RAPIDIO
	bool

menuconfig RAPIDIO
	tristate "RapidIO support"
	depends on HAVE_RAPIDIO || PCI
	help
	  If you say Y here, the kernel will include drivers and
	  infrastructure code to support RapidIO interconnect devices.

source "drivers/rapidio/devices/Kconfig"

config RAPIDIO_DISC_TIMEOUT
	int "Discovery timeout duration (seconds)"
	depends on RAPIDIO
	default "30"
	help
	  Amount of time a discovery node waits for a host to complete
	  enumeration before giving up.

config RAPIDIO_ENABLE_RX_TX_PORTS
	bool "Enable RapidIO Input/Output Ports"
	depends on RAPIDIO
	help
	  The RapidIO specification describes a Output port transmit
	  enable and a Input port receive enable. The recommended state
	  for Input ports and Output ports should be disabled. When
	  this switch is set the RapidIO subsystem will enable all
	  ports for Input/Output direction to allow other traffic
	  than Maintenance transfers.

config RAPIDIO_DMA_ENGINE
	bool "DMA Engine support for RapidIO"
	depends on RAPIDIO
	depends on DMADEVICES
	select DMA_ENGINE
	help
	  Say Y here if you want to use DMA Engine frameork for RapidIO data
	  transfers to/from target RIO devices. RapidIO uses NREAD and
	  NWRITE (NWRITE_R, SWRITE) requests to transfer data between local
	  memory and memory on remote target device. You need a DMA controller
	  capable to perform data transfers to/from RapidIO.

	  If you are unsure about this, say Y here.

config RAPIDIO_DEBUG
	bool "RapidIO subsystem debug messages"
	depends on RAPIDIO
	help
	  Say Y here if you want the RapidIO subsystem to produce a bunch of
	  debug messages to the system log. Select this if you are having a
	  problem with the RapidIO subsystem and want to see more of what is
	  going on.

	  If you are unsure about this, say N here.

choice
	prompt "Enumeration method"
	depends on RAPIDIO
	default RAPIDIO_ENUM_BASIC
	help
	  There are different enumeration and discovery mechanisms offered
	  for RapidIO subsystem. You may select single built-in method or
	  or any number of methods to be built as modules.
	  Selecting a built-in method disables use of loadable methods.

	  If unsure, select Basic built-in.

config RAPIDIO_ENUM_BASIC
	tristate "Basic"
	help
	  This option includes basic RapidIO fabric enumeration and discovery
	  mechanism similar to one described in RapidIO specification Annex 1.

endchoice

config RAPIDIO_CHMAN
	tristate "RapidIO Channelized Messaging driver"
	depends on RAPIDIO
	help
	  This option includes RapidIO channelized messaging driver which
	  provides socket-like interface to allow sharing of single RapidIO
	  messaging mailbox between multiple user-space applications.
	  See "Documentation/driver-api/rapidio/rio_cm.rst" for driver description.

config RAPIDIO_MPORT_CDEV
	tristate "RapidIO /dev mport device driver"
	depends on RAPIDIO
	help
	  This option includes generic RapidIO mport device driver which
	  allows to user space applications to perform RapidIO-specific
	  operations through selected RapidIO mport.

menu "RapidIO Switch drivers"
	depends on RAPIDIO

source "drivers/rapidio/switches/Kconfig"

endmenu