menuconfig MTD
	tristate "Memory Technology Device (MTD) support"
	depends on GENERIC_IO
	help
	  Memory Technology Devices are flash, RAM and similar chips, often
	  used for solid state file systems on embedded devices. This option
	  will provide the generic support for MTD drivers to register
	  themselves with the kernel and for potential users of MTD devices
	  to enumerate the devices which are present and obtain a handle on
	  them. It will also allow you to select individual drivers for
	  particular hardware and users of MTD devices. If unsure, say N.

if MTD

config MTD_TESTS
	tristate "MTD tests support (DANGEROUS)"
	depends on m
	help
	  This option includes various MTD tests into compilation. The tests
	  should normally be compiled as kernel modules. The modules perform
	  various checks and verifications when loaded.

	  WARNING: some of the tests will ERASE entire MTD device which they
	  test. Do not use these tests unless you really know what you do.

config MTD_REDBOOT_PARTS
	tristate "RedBoot partition table parsing"
	---help---
	  RedBoot is a ROM monitor and bootloader which deals with multiple
	  'images' in flash devices by putting a table one of the erase
	  blocks on the device, similar to a partition table, which gives
	  the offsets, lengths and names of all the images stored in the
	  flash.

	  If you need code which can detect and parse this table, and register
	  MTD 'partitions' corresponding to each image in the table, enable
	  this option.

	  You will still need the parsing functions to be called by the driver
	  for your particular device. It won't happen automatically. The
	  SA1100 map driver (CONFIG_MTD_SA1100) has an option for this, for
	  example.

if MTD_REDBOOT_PARTS

config MTD_REDBOOT_DIRECTORY_BLOCK
	int "Location of RedBoot partition table"
	default "-1"
	---help---
	  This option is the Linux counterpart to the
	  CYGNUM_REDBOOT_FIS_DIRECTORY_BLOCK RedBoot compile time
	  option.

	  The option specifies which Flash sectors holds the RedBoot
	  partition table.  A zero or positive value gives an absolute
	  erase block number. A negative value specifies a number of
	  sectors before the end of the device.

	  For example "2" means block number 2, "-1" means the last
	  block and "-2" means the penultimate block.

config MTD_REDBOOT_PARTS_UNALLOCATED
	bool "Include unallocated flash regions"
	help
	  If you need to register each unallocated flash region as a MTD
	  'partition', enable this option.

config MTD_REDBOOT_PARTS_READONLY
	bool "Force read-only for RedBoot system images"
	help
	  If you need to force read-only for 'RedBoot', 'RedBoot Config' and
	  'FIS directory' images, enable this option.

endif # MTD_REDBOOT_PARTS

config MTD_CMDLINE_PARTS
	tristate "Command line partition table parsing"
	depends on MTD
	---help---
	  Allow generic configuration of the MTD partition tables via the kernel
	  command line. Multiple flash resources are supported for hardware where
	  different kinds of flash memory are available.

	  You will still need the parsing functions to be called by the driver
	  for your particular device. It won't happen automatically. The
	  SA1100 map driver (CONFIG_MTD_SA1100) has an option for this, for
	  example.

	  The format for the command line is as follows:

	  mtdparts=<mtddef>[;<mtddef]
	  <mtddef>  := <mtd-id>:<partdef>[,<partdef>]
	  <partdef> := <size>[@offset][<name>][ro]
	  <mtd-id>  := unique id used in mapping driver/device
	  <size>    := standard linux memsize OR "-" to denote all
	  remaining space
	  <name>    := (NAME)

	  Due to the way Linux handles the command line, no spaces are
	  allowed in the partition definition, including mtd id's and partition
	  names.

	  Examples:

	  1 flash resource (mtd-id "sa1100"), with 1 single writable partition:
	  mtdparts=sa1100:-

	  Same flash, but 2 named partitions, the first one being read-only:
	  mtdparts=sa1100:256k(ARMboot)ro,-(root)

	  If unsure, say 'N'.

config MTD_AFS_PARTS
	tristate "ARM Firmware Suite partition parsing"
	depends on (ARM || ARM64)
	---help---
	  The ARM Firmware Suite allows the user to divide flash devices into
	  multiple 'images'. Each such image has a header containing its name
	  and offset/size etc.

	  If you need code which can detect and parse these tables, and
	  register MTD 'partitions' corresponding to each image detected,
	  enable this option.

	  You will still need the parsing functions to be called by the driver
	  for your particular device. It won't happen automatically. The
	  'physmap' map driver (CONFIG_MTD_PHYSMAP) does this, for example.

config MTD_OF_PARTS
	tristate "OpenFirmware partitioning information support"
	default y
	depends on OF
	help
	  This provides a partition parsing function which derives
	  the partition map from the children of the flash node,
	  as described in Documentation/devicetree/bindings/mtd/partition.txt.

config MTD_AR7_PARTS
	tristate "TI AR7 partitioning support"
	---help---
	  TI AR7 partitioning support

config MTD_BCM63XX_PARTS
	tristate "BCM63XX CFE partitioning support"
	depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
	select CRC32
	help
	  This provides partions parsing for BCM63xx devices with CFE
	  bootloaders.

config MTD_BCM47XX_PARTS
	tristate "BCM47XX partitioning support"
	depends on BCM47XX || ARCH_BCM_5301X
	help
	  This provides partitions parser for devices based on BCM47xx
	  boards.

comment "User Modules And Translation Layers"

#
# MTD block device support is select'ed if needed
#
config MTD_BLKDEVS
	tristate

config MTD_BLOCK
	tristate "Caching block device access to MTD devices"
	depends on BLOCK
	select MTD_BLKDEVS
	---help---
	  Although most flash chips have an erase size too large to be useful
	  as block devices, it is possible to use MTD devices which are based
	  on RAM chips in this manner. This block device is a user of MTD
	  devices performing that function.

	  At the moment, it is also required for the Journalling Flash File
	  System(s) to obtain a handle on the MTD device when it's mounted
	  (although JFFS and JFFS2 don't actually use any of the functionality
	  of the mtdblock device).

	  Later, it may be extended to perform read/erase/modify/write cycles
	  on flash chips to emulate a smaller block size. Needless to say,
	  this is very unsafe, but could be useful for file systems which are
	  almost never written to.

	  You do not need this option for use with the DiskOnChip devices. For
	  those, enable NFTL support (CONFIG_NFTL) instead.

config MTD_BLOCK_RO
	tristate "Readonly block device access to MTD devices"
	depends on MTD_BLOCK!=y && BLOCK
	select MTD_BLKDEVS
	help
	  This allows you to mount read-only file systems (such as cramfs)
	  from an MTD device, without the overhead (and danger) of the caching
	  driver.

	  You do not need this option for use with the DiskOnChip devices. For
	  those, enable NFTL support (CONFIG_NFTL) instead.

config FTL
	tristate "FTL (Flash Translation Layer) support"
	depends on BLOCK
	select MTD_BLKDEVS
	---help---
	  This provides support for the original Flash Translation Layer which
	  is part of the PCMCIA specification. It uses a kind of pseudo-
	  file system on a flash device to emulate a block device with
	  512-byte sectors, on top of which you put a 'normal' file system.

	  You may find that the algorithms used in this code are patented
	  unless you live in the Free World where software patents aren't
	  legal - in the USA you are only permitted to use this on PCMCIA
	  hardware, although under the terms of the GPL you're obviously
	  permitted to copy, modify and distribute the code as you wish. Just
	  not use it.

config NFTL
	tristate "NFTL (NAND Flash Translation Layer) support"
	depends on BLOCK
	select MTD_BLKDEVS
	---help---
	  This provides support for the NAND Flash Translation Layer which is
	  used on M-Systems' DiskOnChip devices. It uses a kind of pseudo-
	  file system on a flash device to emulate a block device with
	  512-byte sectors, on top of which you put a 'normal' file system.

	  You may find that the algorithms used in this code are patented
	  unless you live in the Free World where software patents aren't
	  legal - in the USA you are only permitted to use this on DiskOnChip
	  hardware, although under the terms of the GPL you're obviously
	  permitted to copy, modify and distribute the code as you wish. Just
	  not use it.

config NFTL_RW
	bool "Write support for NFTL"
	depends on NFTL
	help
	  Support for writing to the NAND Flash Translation Layer, as used
	  on the DiskOnChip.

config INFTL
	tristate "INFTL (Inverse NAND Flash Translation Layer) support"
	depends on BLOCK
	select MTD_BLKDEVS
	---help---
	  This provides support for the Inverse NAND Flash Translation
	  Layer which is used on M-Systems' newer DiskOnChip devices. It
	  uses a kind of pseudo-file system on a flash device to emulate
	  a block device with 512-byte sectors, on top of which you put
	  a 'normal' file system.

	  You may find that the algorithms used in this code are patented
	  unless you live in the Free World where software patents aren't
	  legal - in the USA you are only permitted to use this on DiskOnChip
	  hardware, although under the terms of the GPL you're obviously
	  permitted to copy, modify and distribute the code as you wish. Just
	  not use it.

config RFD_FTL
        tristate "Resident Flash Disk (Flash Translation Layer) support"
	depends on BLOCK
	select MTD_BLKDEVS
	---help---
	  This provides support for the flash translation layer known
	  as the Resident Flash Disk (RFD), as used by the Embedded BIOS
	  of General Software. There is a blurb at:

		http://www.gensw.com/pages/prod/bios/rfd.htm

config SSFDC
	tristate "NAND SSFDC (SmartMedia) read only translation layer"
	depends on BLOCK
	select MTD_BLKDEVS
	help
	  This enables read only access to SmartMedia formatted NAND
	  flash. You can mount it with FAT file system.


config SM_FTL
	tristate "SmartMedia/xD new translation layer"
	depends on BLOCK
	select MTD_BLKDEVS
	select MTD_NAND_ECC
	help
	  This enables EXPERIMENTAL R/W support for SmartMedia/xD
	  FTL (Flash translation layer).
	  Write support is only lightly tested, therefore this driver
	  isn't recommended to use with valuable data (anyway if you have
	  valuable data, do backups regardless of software/hardware you
	  use, because you never know what will eat your data...)
	  If you only need R/O access, you can use older R/O driver
	  (CONFIG_SSFDC)

config MTD_OOPS
	tristate "Log panic/oops to an MTD buffer"
	help
	  This enables panic and oops messages to be logged to a circular
	  buffer in a flash partition where it can be read back at some
	  later point.

config MTD_SWAP
	tristate "Swap on MTD device support"
	depends on MTD && SWAP
	select MTD_BLKDEVS
	help
	  Provides volatile block device driver on top of mtd partition
          suitable for swapping.  The mapping of written blocks is not saved.
	  The driver provides wear leveling by storing erase counter into the
	  OOB.

config MTD_PARTITIONED_MASTER
	bool "Retain master device when partitioned"
	default n
	depends on MTD
	help
	  For historical reasons, by default, either a master is present or
	  several partitions are present, but not both. The concern was that
	  data listed in multiple partitions was dangerous; however, SCSI does
	  this and it is frequently useful for applications. This config option
	  leaves the master in even if the device is partitioned. It also makes
	  the parent of the partition device be the master device, rather than
	  what lies behind the master.

source "drivers/mtd/chips/Kconfig"

source "drivers/mtd/maps/Kconfig"

source "drivers/mtd/devices/Kconfig"

source "drivers/mtd/nand/Kconfig"

source "drivers/mtd/onenand/Kconfig"

source "drivers/mtd/lpddr/Kconfig"

source "drivers/mtd/spi-nor/Kconfig"

source "drivers/mtd/ubi/Kconfig"

endif # MTD
