# SPDX-License-Identifier: GPL-2.0-only
# 2023-12-22: File changed by Sony Group Corporation
config NVME_CORE
	tristate
	select BLK_DEV_INTEGRITY_T10 if BLK_DEV_INTEGRITY

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 NVME_MULTIPATH
	bool "NVMe multipath support"
	depends on NVME_CORE
	help
	   This option enables support for multipath access to NVMe
	   subsystems.  If this option is enabled only a single
	   /dev/nvmeXnY device will show up for each NVMe namespace,
	   even if it is accessible through multiple controllers.

config NVME_HWMON
	bool "NVMe hardware monitoring"
	depends on (NVME_CORE=y && HWMON=y) || (NVME_CORE=m && HWMON)
	help
	  This provides support for NVMe hardware monitoring. If enabled,
	  a hardware monitoring device will be created for each NVMe drive
	  in the system.

config NVME_FABRICS
	select NVME_CORE
	tristate

config NVME_RDMA
	tristate "NVM Express over Fabrics RDMA host driver"
	depends on INFINIBAND && INFINIBAND_ADDR_TRANS && BLOCK
	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 NVME_FC
	tristate "NVM Express over Fabrics FC host driver"
	depends on BLOCK
	depends on HAS_DMA
	select NVME_FABRICS
	select SG_POOL
	help
	  This provides support for the NVMe over Fabrics protocol using
	  the FC 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 NVME_TCP
	tristate "NVM Express over Fabrics TCP host driver"
	depends on INET
	depends on BLOCK
	select NVME_FABRICS
	select CRYPTO
	select CRYPTO_CRC32C
	help
	  This provides support for the NVMe over Fabrics protocol using
	  the TCP 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_BATCH_WRITE
       bool "Enable batch write for NVMe driver"
       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_INIT_POWER_STATE_CONTROL
	bool "Set init power state to PS1 for NVMe device"
	default n
	help
	  Usually PS0 is used as init power state for NVMe device.
	  Since PS0 power state is not supported by CFe device Gen4,
	  the init power state is updated to PS1 when PS0 is used
	  during probe phase if enable this config.
