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

menu "Disk"

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

if DISK_ACCESS
choice
	prompt "Storage backend selection"

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

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

endchoice

if DISK_ACCESS_FLASH

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

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

config DISK_FLASH_MAX_RW_SIZE
	int
	help
	  This is the maximum number of bytes that the
	  flash_write API can do per invocation.
	  API.

config DISK_FLASH_ERASE_ALIGNMENT
	hex
	help
	  This is the start address alignment required by
	  the flash component.

config DISK_ERASE_BLOCK_SIZE
	hex
	help
	  This is typically the minimum block size that
	  is erased at one time in flash storage.

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

endif # DISK_ACCESS_FLASH
endif # DISK_ACCESS
endmenu
