config NVME_CORE
	tristate

config BLK_DEV_NVME
	tristate "NVM Express block device"
	depends on PCI && BLOCK
	select NVME_CORE
	---help---
	  The NVM Express driver is for solid state drives directly
	  connected to the PCI or PCI Express bus.  If you know you
	  don't have one of these, it is safe to answer N.

	  To compile this driver as a module, choose M here: the
	  module will be called nvme.

config BLK_DEV_NVME_SCSI
	bool "SCSI emulation for NVMe device nodes"
	depends on NVME_CORE
	---help---
	  This adds support for the SG_IO ioctl on the NVMe character
	  and block devices nodes, as well as a translation for a small
	  number of selected SCSI commands to NVMe commands to the NVMe
	  driver.  If you don't know what this means you probably want
	  to say N here, unless you run a distro that abuses the SCSI
	  emulation to provide stable device names for mount by id, like
	  some OpenSuSE and SLES versions.

config NVME_FABRICS
	tristate

config NVME_RDMA
	tristate "NVM Express over Fabrics RDMA host driver"
	depends on INFINIBAND && BLOCK
	select NVME_CORE
	select NVME_FABRICS
	select SG_POOL
	help
	  This provides support for the NVMe over Fabrics protocol using
	  the RDMA (Infiniband, RoCE, iWarp) transport.  This allows you
	  to use remote block devices exported using the NVMe protocol set.

	  To configure a NVMe over Fabrics controller use the nvme-cli tool
	  from https://github.com/linux-nvme/nvme-cli.

	  If unsure, say N.

config SNSC_NVME_FORCE_ONE_IO_QUEUE
	bool "Force one IO queue used for NVMe driver"
	depends on NVME_CORE
	default n
	---help---
	  If you set Y, only one IO queue is allocated and setup for NVMe
	  driver. To ensure r/w commands handled in sequence,
	  SNSC_NVME_FORCE_USING_MQ_FUNCTION should be also enabled.

config SNSC_NVME_FORCE_USING_MQ_FUNCTION
	bool "Force blk_mq_make_request used for NVMe driver"
	depends on SNSC_BLK_FORCE_USING_MQ_FUNCTION && NVME_CORE
	default n
	---help---
	  If you set Y, force use blk_mq_make_request regardless of queue
	  number for NVMe driver.

config SNSC_NVME_AER_CB_DISABLE
	bool "Disable PCI AER callbacks of NVMe"
	depends on NVME_CORE
	default y if ARCH_CXD900XX
	---help---
	  If you set Y, disable PCI AER callbakcs of NVMe driver.

	  If a PCI arch driver handles uncorrectable error status instead of NVMe
	  driver, the status should not be cleared by AER handlers of NVMe driver.
	  With disabling AER handlers, the status is not cleared by NVMe driver.

config SNSC_NVME_BATCH_WRITE
	bool "Enable batch write for NVMe driver"
	depends on SNSC_NVME_FORCE_ONE_IO_QUEUE
	depends on SNSC_NVME_FORCE_USING_MQ_FUNCTION
	default n
	---help---
	  This provides support for collect multiple write commands and submit
	  them to NVMe controller at one time. One point, This config does not
	  effect to access using ioctl().

	  If you want to use the batch write feature, set 1 to the
	  'batch_write_enabled' device attribute.

config SNSC_NVME_BATCH_WRITE_MAX_CMDS_COUNT
	int "Max number of commands support for batch write"
	depends on SNSC_NVME_BATCH_WRITE
	range 1 32
	default 16
	---help---
	  The maximum number of commands support for batch write. The permitted
	  range of values is 1 - 32. The default value is 16, which means that
	  the maximum number of commands allowed for batch write is 16.
