# Copyright (c) 2022 Intel Corporation
# SPDX-License-Identifier: Apache-2.0

menuconfig NVME
	bool "NVMe disk"
	depends on PCIE
	select PCIE_MSI_X
	select PCIE_MSI_MULTI_VECTOR
	help
	  NVMe disk(s) might be present on the system through PCIe, enable this
	  driver to support these. It will enable MSI-X and MSI multi-vector
	  support

if NVME

config NVME_ADMIN_ENTRIES
	int "Number of admin queue entries"
	range 2 4096
	default 256
	help
	  This sets the amount of allocated admin queue entries.
	  Do not touch this unless you know what you are doing.

config NVME_IO_QUEUES
	int "Number of IO queues"
	range 1 65536
	default 1
	help
	  This sets the amount of allocated I/O queues.
	  Do not touch this unless you know what you are doing.

config NVME_IO_ENTRIES
	int "Number of IO queue entries"
	range 2 65536
	default 256
	help
	  This sets the amount of allocated IO queue entries.
	  Do not touch this unless you know what you are doing.

config NVME_RETRY_COUNT
	int "Retry count"
	default 2
	help
	  This sets the amount of possible retries per-request.
	  Do not touch this unless you know what you are doing.

config NVME_REQUEST_TIMEOUT
	int "Timeout period for NVMe request"
	range 5 120
	default 5
	help
	  This sets the waiting time for a request to succeed.
	  Do not touch this unless you know what you are doing.

config NVME_PRP_PAGE_SIZE
	hex "NVMe PRP Page Size"
	default MMU_PAGE_SIZE if MMU
	default 0x1000
	help
	  Set the PRP page size. If MMU is enabled, this will default to the MMU page size.

config NVME_PRP_LIST_AMOUNT
	int "Number of allocated PRP list"
	default 2
	help
	  This sets the amount of pre-allocated PRP list. Each list
	  can be used in a NVMe command to address memory where to
	  read or write data. Each PRP list is of page size be careful
	  on this number as it may take a sensible amount of memory.

config NVME_MAX_NAMESPACES
	int "Maximum namespace to allocate"
	range 1 16
	default 1
	help
	  This sets the maximum namespace to allocate. Note that there may
	  be much less to be actually instantiated at runtime.
	  This option can be used to reduce the memory usage a bit then.

config NVME_INT_PRIORITY
	int "Interrupt priority"
	default 2
	help
	  Interrupt priority used for the MSI-X generated interrupts.

module = NVME
module-str = nvme
source "subsys/logging/Kconfig.template.log_config"

endif # NVME
