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

# Hidden. Automatically selected by file systems or FCB that need it
config FS_FLASH_STORAGE_PARTITION
	bool

menu "File Systems"

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

config SYS_LOG_FS_LEVEL
	int "File System log level"
	depends on SYS_LOG
	default 0
	help
	  Sets log level for File System drivers.
	  Levels are:
	  - 0 OFF, do not write
	  - 1 ERROR, only write SYS_LOG_ERR
	  - 2 WARNING, write SYS_LOG_WRN in addition to previous level
	  - 3 INFO, write SYS_LOG_INF in addition to previous levels
	  - 4 DEBUG, write SYS_LOG_DBG in addition to previous levels

if FILE_SYSTEM

config APP_LINK_WITH_FS
	bool "Link 'app' with FS"
	default y
	help
	  Add FS header files to the 'app' include path. It may be
	  disabled if the include paths for FS are causing aliasing
	  issues for 'app'.

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
	select FS_FLASH_STORAGE_PARTITION
	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.

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 "FatFs Settings"
	visible if FAT_FILESYSTEM_ELM

config FS_FATFS_NUM_FILES
	int "Maximum number of opened files"
	default 4

config FS_FATFS_NUM_DIRS
	int "Maximum number of opened directories"
	default 4
endmenu

menu "NFFS Settings"
	visible if FILE_SYSTEM_NFFS

config FS_NFFS_FLASH_DEV_NAME
	string "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

source "subsys/fs/fcb/Kconfig"
source "subsys/fs/nvs/Kconfig"

endmenu
