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

menu "File Systems"

config FILE_SYSTEM
	bool "File system support"
	default n
	help
	  Enables support for file system.

if FILE_SYSTEM

choice
	prompt "Supported file systems"
	default NO_FILE_SYSTEM

config NO_FS
	bool "No File System"
	help
	  No file system chosen.

config FAT_FILESYSTEM_ELM
	bool "ELM FAT File System"
	select DISK_ACCESS
	help
	  Use the ELM FAT File system implementation.

config FILE_SYSTEM_NFFS
	bool "NFFS file system support"
	select FLASH_PAGE_LAYOUT
	help
	  Enables NFFS file system support.
	  Note: NFFS requires 1-byte unaligned access to flash thus it
	  will not work on devices that support only aligned flash access.

endchoice

config FILE_SYSTEM_SHELL
	bool "Enable file system shell"
	depends on CONSOLE_SHELL
	help
	  This shell provides basic browsing of the contents of the
	  file system.


menu "NFFS Settings"
	visible if FILE_SYSTEM_NFFS

config FS_NFFS_FLASH_DEV_NAME
	string
	prompt "Flash device name to be used"

config FS_NFFS_NUM_INODES
	int "Maximum number of inodes"
	range 1 32768
	default 100

config FS_NFFS_NUM_BLOCKS
	int "Maximum number of blocks"
	range 1 32768
	default 100

config FS_NFFS_NUM_FILES
	int "Maximum number of opened files"
	range 1 256
	default 4

config FS_NFFS_NUM_DIRS
	int "Maximum number of opened directories"
	range 1 256
	default 4

config FS_NFFS_NUM_CACHE_INODES
	int "Number of cached files' inodes"
	range 1 512
	default 4

config FS_NFFS_NUM_CACHE_BLOCKS
	int "Number of cached blocks"
	range 1 512
	default 64

source "ext/fs/nffs/Kconfig"

endmenu

endif # FILE_SYSTEM

endmenu
