# Copyright (c) 2019-2020 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

config APP_WIPE_STORAGE
	bool "Option to clear the flash area before mounting"
	help
	  Use this to force an existing file system to be created.

choice
	prompt "Storage and file system type used by the application"
	default APP_MSC_STORAGE_NONE
	help
	  Specify the type of storage and file system.

config APP_MSC_STORAGE_NONE
	bool "Use RAM disk as block device"

config APP_MSC_STORAGE_RAM
	bool "Use RAM disk and FAT file system"
	imply FILE_SYSTEM
	imply FAT_FILESYSTEM_ELM

config APP_MSC_STORAGE_FLASH_FATFS
	bool "Use FLASH disk and FAT file system"
	imply DISK_DRIVER_FLASH
	imply FILE_SYSTEM
	imply FAT_FILESYSTEM_ELM

config APP_MSC_STORAGE_FLASH_LITTLEFS
	bool "Use FLASH disk and LittleFS"
	imply DISK_DRIVER_FLASH
	imply FILE_SYSTEM
	imply FILE_SYSTEM_LITTLEFS

config APP_MSC_STORAGE_SDCARD
	bool "Use SDHC and FAT file system"
	imply DISK_DRIVER_SDMMC
	imply FILE_SYSTEM
	imply FAT_FILESYSTEM_ELM

endchoice

config MASS_STORAGE_DISK_NAME
	default "NAND" if DISK_DRIVER_FLASH
	default "RAM" if DISK_DRIVER_RAM
	default "SD" if DISK_DRIVER_SDMMC

if DISK_DRIVER_FLASH

config FLASH_MAP
	default y

config FLASH_PAGE_LAYOUT
	default y

config FLASH_LOG_LEVEL
	default 3

if NORDIC_QSPI_NOR

config NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE
	default 4096

endif # NORDIC_QSPI_NOR

endif # DISK_DRIVER_FLASH

source "Kconfig.zephyr"
