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

menu "Disk"

config DISK_ACCESS
	bool "Enable Disk Interface"
	help
	  Enable disk access over a supported media backend like FLASH or RAM

if DISK_ACCESS

config DISK_ACCESS_MAX_VOLUMES
	int "Maximum Disk Interfaces"
	default 8
	help
	  Maximum number of disk access interfaces supported

module = DISK
module-str = disk
source "subsys/logging/Kconfig.template.log_config"

config DISK_ACCESS_RAM
	bool "RAM Disk"
	help
	  RAM buffer used to emulate storage disk.
	  This option can be used to test the file
	  system.

config DISK_ACCESS_FLASH
	bool "Flash"
	select FLASH
	help
	  Flash device is used for the file system.

config DISK_ACCESS_SDHC
	bool "SDHC card over SPI"
	select SPI
	select FLASH
	help
	  File system on a SDHC card accessed over SPI.

endif # DISK_ACCESS

if DISK_ACCESS_RAM

config DISK_RAM_VOLUME_SIZE
	int "RAM Disk size in kilobytes"
	default 96
	help
	  Size of the RAM Disk.

config DISK_RAM_VOLUME_NAME
	string "RAM Disk mount point or drive name"
	default "RAM"
	help
	  Disk name as per file system naming guidelines.

endif # DISK_ACCESS_RAM

if DISK_ACCESS_FLASH

config DISK_FLASH_VOLUME_NAME
	string "Flash mount point or drive name"
	default "NAND"
	help
	  Disk name as per file system naming guidelines.

config DISK_FLASH_DEV_NAME
	string "Flash device name to be used as storage backend"

config DISK_FLASH_START
	hex "Flash device start address in hex"
	help
	  This is start address of the flash to be used as storage backend.

config DISK_FLASH_MAX_RW_SIZE
	int "Flash device max read-write size in decimal"
	help
	  This is the maximum number of bytes that the
	  flash_write API can accept per invocation.
	  API.

config DISK_FLASH_ERASE_ALIGNMENT
	hex "Flash device erase alignment in hex"
	help
	  This is the start address alignment required by
	  the flash component.

config DISK_ERASE_BLOCK_SIZE
	hex "Flash device erasable block size in hex"
	help
	  This is typically the minimum block size that
	  is erased at one time in flash storage.
	  Typically it is equal to the flash memory page size.

config DISK_VOLUME_SIZE
	hex "Flash device volume size in hex"
	help
	  This is the file system volume size in bytes.

endif # DISK_ACCESS_FLASH

if DISK_ACCESS_SDHC

config DISK_SDHC_VOLUME_NAME
	string "SDHC Disk mount point or drive name"
	default "SDHC"
	help
	  Disk name as per file system naming guidelines.

endif # DISK_ACCESS_SDHC

endmenu
