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 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
