menu "MTD Support"

config MTD_PARTITIONS
	bool

config MTD
	bool "Enable MTD layer"
	help
	  Enable the MTD stack, necessary to interact with NAND, NOR,
	  SPI-NOR, SPI-NAND, OneNAND, etc.

config DM_MTD
	bool "Enable Driver Model for MTD drivers"
	depends on DM
	help
	  Enable driver model for Memory Technology Devices (MTD), such as
	  flash, RAM and similar chips, often used for solid state file
	  systems on embedded devices.

config MTD_NOR_FLASH
	bool "Enable parallel NOR flash support"
	help
	  Enable support for parallel NOR flash.

config SYS_MTDPARTS_RUNTIME
	bool "Allow MTDPARTS to be configured at runtime"
	depends on MTD
	help
	  This option allows to call the function board_mtdparts_default to
	  dynamically build the variables mtdids and mtdparts at runtime.

config FLASH_CFI_DRIVER
	bool "Enable CFI Flash driver"
	select USE_SYS_MAX_FLASH_BANKS
	help
	  The Common Flash Interface specification was developed by Intel,
	  AMD and other flash manufactures. It provides a universal method
	  for probing the capabilities of flash devices. If you wish to
	  support any device that is CFI-compliant, you need to enable this
	  option. Visit <http://www.amd.com/products/nvd/overview/cfi.html>
	  for more information on CFI.

config CFI_FLASH
	bool "Enable Driver Model for CFI Flash driver"
	depends on DM_MTD
	select FLASH_CFI_DRIVER
	help
	  The Common Flash Interface specification was developed by Intel,
	  AMD and other flash manufactures. It provides a universal method
	  for probing the capabilities of flash devices. If you wish to
	  support any device that is CFI-compliant, you need to enable this
	  option. Visit <http://www.amd.com/products/nvd/overview/cfi.html>
	  for more information on CFI.

config CFI_FLASH_USE_WEAK_ACCESSORS
	bool "Allow read/write functions to be overridden"
	depends on FLASH_CFI_DRIVER
	help
	  Enable this option to allow for the flash_{read,write}{8,16,32,64}
	  functions to be overridden by the platform.

config SYS_FLASH_USE_BUFFER_WRITE
	bool "Enable buffered writes to flash"
	depends on FLASH_CFI_DRIVER
	help
	  Use buffered writes to flash.

config FLASH_CFI_MTD
	bool "Enable CFI MTD driver"
	depends on FLASH_CFI_DRIVER
	help
	  This option enables the building of the cfi_mtd driver
	  in the drivers directory. The driver exports CFI flash
	  to the MTD layer.

config SYS_FLASH_PROTECTION
	bool "Use hardware flash protection"
	depends on FLASH_CFI_DRIVER
	help
	  If defined, hardware flash sectors protection is used
	  instead of U-Boot software protection.

config SYS_FLASH_CFI
	bool "Define extra elements in CFI for flash geometry"
	depends on FLASH_CFI_DRIVER
	help
	  Define if the flash driver uses extra elements in the
	  common flash structure for storing flash geometry.

config ALTERA_QSPI
	bool "Altera Generic Quad SPI Controller"
	depends on DM_MTD
	select USE_SYS_MAX_FLASH_BANKS
	help
	  This enables access to Altera EPCQ/EPCS flash chips using the
	  Altera Generic Quad SPI Controller. The controller converts SPI
	  NOR flash to parallel flash interface. Please find details on the
	  "Embedded Peripherals IP User Guide" of Altera.

config FLASH_PIC32
	bool "Microchip PIC32 Flash driver"
	depends on MACH_PIC32 && DM_MTD
	select USE_SYS_MAX_FLASH_BANKS
	help
	  This enables access to Microchip PIC32 internal non-CFI flash
	  chips through PIC32 Non-Volatile-Memory Controller.

config RENESAS_RPC_HF
	bool "Renesas RCar Gen3 RPC HyperFlash driver"
	depends on RCAR_GEN3 && DM_MTD
	help
	  This enables access to HyperFlash memory through the Renesas
	  RCar Gen3 RPC controller.

config HBMC_AM654
	bool "HyperBus controller driver for AM65x SoC"
	depends on SYSCON
	help
	 This is the driver for HyperBus controller on TI's AM65x and
	 other SoCs

config STM32_FLASH
	bool "STM32 MCU Flash driver"
	depends on ARCH_STM32
	select USE_SYS_MAX_FLASH_BANKS
	help
	 This is the driver of embedded flash for some STMicroelectronics
	 STM32 MCU.

config USE_SYS_MAX_FLASH_BANKS
	bool "Enable Max number of Flash memory banks"
	help
	  When this option is enabled, the CONFIG_SYS_MAX_FLASH_BANKS
	  will be defined.

config SYS_MAX_FLASH_BANKS
	int "Max number of Flash memory banks"
	depends on USE_SYS_MAX_FLASH_BANKS
	default 1
	help
	 Max number of Flash memory banks using by the MTD framework, in the
	 flash CFI driver and in some other driver to define the flash_info
	 struct declaration.

config SYS_MAX_FLASH_BANKS_DETECT
	bool "Detection of flash banks number in CFI driver"
	depends on CFI_FLASH && FLASH_CFI_DRIVER
	help
	 This enables detection of number of flash banks in CFI driver,
	 to reduce the effective number of flash bank, between 0 and
	 CONFIG_SYS_MAX_FLASH_BANKS

source "drivers/mtd/nand/Kconfig"

config SYS_NAND_MAX_CHIPS
	int "NAND max chips"
	depends on MTD_RAW_NAND || CMD_ONENAND || TARGET_S5PC210_UNIVERSAL || \
		SPL_OMAP3_ID_NAND
	default 1
	help
	  The maximum number of NAND chips per device to be supported.

source "drivers/mtd/spi/Kconfig"

source "drivers/mtd/ubi/Kconfig"

endmenu
