menuconfig NAND
	bool "NAND support              "
	select MTD_NAND_IDS
	help
	  This enables support for accessing all type of NAND flash
	  devices. For further information see
	  <http://www.linux-mtd.infradead.org/doc/nand.html>.

if NAND

config MTD_NAND_ECC_BCH
	bool "Support software BCH ECC"
	default n
	help
	  This enables support for software BCH error correction. Binary BCH
	  codes are more powerful and cpu intensive than traditional Hamming
	  ECC codes. They are used with NAND devices requiring more than 1 bit
	  of error correction.

config MTD_NAND_BCH
	tristate
	depends on MTD_NAND_ECC_BCH
	default MTD_NAND


config NAND_WRITE
	bool
	default y
	prompt "Support writing to Nand"

config NAND_ECC_SOFT
	bool
	default y
	prompt "Support software ecc"

config NAND_ECC_HW
	bool
	default y
	prompt "Support hardware ecc"

config NAND_ECC_HW_SYNDROME
	bool
	default y
	prompt "Support syndrome hardware ecc controllers"

config NAND_ECC_HW_NONE
	bool
	default y
	prompt "Support skipping ecc support"

config NAND_COMCERTO_ECC_8_HW_BCH
	bool
	depends on NAND_COMCERTO && !(NAND_COMCERTO_ECC_24_HW_BCH)
	default n
	prompt "Comcerto ECC-8 syndrome calculation using BCH"

config NAND_COMCERTO_ECC_24_HW_BCH
	bool
	depends on NAND_COMCERTO
	default y
	prompt "Comcerto ECC-24 syndrome calculation using BCH"

config COMCERTO_NAND_ERASE_FBB
	bool
	depends on NAND_COMCERTO
	default y
	prompt "comcerto NAND erase false bad blocks"

config NAND_INFO
	bool
	default y
	prompt "Nand vendor/size information"
	help
	  Show informational strings about the vendor and nand flash type
	  during startup

config NAND_BBT
	bool
	default y
	prompt "support bad block tables"
	help
	  Say y here to include support for bad block tables. This speeds
	  up the process of checking for bad blocks

config NAND_READ_OOB
	bool
	default y
	prompt "create a device for reading the OOB data"

config NAND_IMX
	bool
	prompt "i.MX NAND driver"
	depends on ARCH_IMX21 || ARCH_IMX27 || ARCH_IMX31 || ARCH_IMX35 || ARCH_IMX25 || ARCH_IMX51

config NAND_OMAP_GPMC
	tristate "NAND Flash Support for GPMC based OMAP platforms"
	depends on OMAP_GPMC
	help
	 Support for NAND flash using GPMC. GPMC is a common memory
	 interface found on Texas Instrument's OMAP platforms

config NAND_ATMEL
	bool
	prompt "Atmel (AT91SAM9xxx) NAND driver"
	depends on ARCH_AT91

config NAND_S3C24X0
	bool
	prompt "Samsung S3C24X0 NAND driver"
	depends on ARCH_S3C24xx
	help
	  Add support for processor's NAND device controller.

config NAND_COMCERTO
        bool
	prompt "Comcerto NAND driver"
	depends on MTD && NAND && ARCH_COMCERTO

config MTD_NAND_VERIFY_WRITE
	bool "Verify NAND page writes"
	help
	  This adds an extra check when data is written to the flash. The
	  NAND flash device internally checks only bits transitioning
	  from 1 to 0. There is a rare possibility that even though the
	  device thinks the write was successful, a bit could have been
	  flipped accidentally due to device wear or something else.

config MTD_NAND_ECC_SMC
	bool "NAND ECC Smart Media byte order"
	default n
	help
	  Software ECC according to the Smart Media Specification.
	  The original Linux implementation had byte 0 and 1 swapped.

config MTD_NAND_MUSEUM_IDS
	bool "Enable chip ids for obsolete ancient NAND devices"
	depends on MTD_NAND
	default n
	help
	  Enable this option only when your board has first generation
	  NAND chips (page size 256 byte, erase size 4-8KiB). The IDs
	  of these chips were reused by later, larger chips.

config MTD_NAND_IDS
	tristate

config MTD_NAND_DISKONCHIP
	tristate "DiskOnChip 2000, Millennium and Millennium Plus"
	depends on EXPERIMENTAL && BROKEN
	help
	  This is a reimplementation of M-Systems DiskOnChip 2000,
	  Millennium and Millennium Plus as a standard NAND device driver,
	  as opposed to the earlier self-contained MTD device drivers.
	  This should enable, among other things, proper JFFS2 operation on
	  these devices.

config MTD_NAND_DISKONCHIP_BBTWRITE
	bool "Allow BBT writes on DiskOnChip Millennium and 2000TSOP"
	depends on MTD_NAND_DISKONCHIP
	help
	  On DiskOnChip devices shipped with the INFTL filesystem (Millennium
	  and 2000 TSOP/Alon), Linux reserves some space at the end of the
	  device for the Bad Block Table (BBT).  If you have existing INFTL
	  data on your device (created by non-Linux tools such as M-Systems'
	  DOS drivers), your data might overlap the area Linux wants to use for
	  the BBT.  If this is a concern for you, leave this option disabled and
	  Linux will not write BBT data into this area.
	  The downside of leaving this option disabled is that if bad blocks
	  are detected by Linux, they will not be recorded in the BBT, which
	  could cause future problems.
	  Once you enable this option, new filesystems (INFTL or others, created
	  in Linux or other operating systems) will not use the reserved area.
	  The only reason not to enable this option is to prevent damage to
	  preexisting filesystems.
	  Even if you leave this disabled, you can enable BBT writes at module
	  load time (assuming you build diskonchip as a module) with the module
	  parameter "inftl_bbt_write=1".

config MTD_NAND_NOMADIK
	tristate "ST Nomadik 8815 NAND support"
	depends on ARCH_NOMADIK
	help
	  Driver for the NAND flash controller on the Nomadik, with ECC.

endif
