config MTD_NAND_ECC
	tristate

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


menuconfig MTD_NAND
	tristate "NAND Device Support"
	depends on MTD
	select MTD_NAND_IDS
	select MTD_NAND_ECC
	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 MTD_NAND

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_BCH
	tristate
	select BCH
	depends on MTD_NAND_ECC_BCH
	default MTD_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_SM_COMMON
	tristate
	default n

config MTD_NAND_MUSEUM_IDS
	bool "Enable chip ids for obsolete ancient NAND devices"
	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_AUTCPU12
	tristate "SmartMediaCard on autronix autcpu12 board"
	depends on ARCH_AUTCPU12
	help
	  This enables the driver for the autronix autcpu12 board to
	  access the SmartMediaCard.

config MTD_NAND_DENALI
       depends on PCI
        tristate "Support Denali NAND controller on Intel Moorestown"
        help
          Enable the driver for NAND flash on Intel Moorestown, using the
          Denali NAND controller core.
 
config MTD_NAND_DENALI_SCRATCH_REG_ADDR
        hex "Denali NAND size scratch register address"
        default "0xFF108018"
        depends on MTD_NAND_DENALI
        help
          Some platforms place the NAND chip size in a scratch register
          because (some versions of) the driver aren't able to automatically
          determine the size of certain chips. Set the address of the
          scratch register here to enable this feature. On Intel Moorestown
          boards, the scratch register is at 0xFF108018.

config MTD_NAND_H1900
	tristate "iPAQ H1900 flash"
	depends on ARCH_PXA && BROKEN
	help
	  This enables the driver for the iPAQ h1900 flash.

config MTD_NAND_GPIO
	tristate "GPIO NAND Flash driver"
	depends on GENERIC_GPIO && ARM
	help
	  This enables a GPIO based NAND flash driver.

config MTD_NAND_SPIA
	tristate "NAND Flash device on SPIA board"
	depends on ARCH_P720T
	help
	  If you had to ask, you don't have one. Say 'N'.

config MTD_NAND_AMS_DELTA
	tristate "NAND Flash device on Amstrad E3"
	depends on MACH_AMS_DELTA
	default y
	help
	  Support for NAND flash on Amstrad E3 (Delta).

config MTD_NAND_OMAP2
	tristate "NAND Flash device on OMAP2, OMAP3 and OMAP4"
	depends on ARCH_OMAP2PLUS
	help
          Support for NAND flash on Texas Instruments OMAP2, OMAP3 and OMAP4
	  platforms.

config MTD_NAND_IDS
	tristate

config MTD_NAND_RICOH
	tristate "Ricoh xD card reader"
	default n
	depends on PCI
	select MTD_SM_COMMON
	help
	  Enable support for Ricoh R5C852 xD card reader
	  You also need to enable ether
	  NAND SSFDC (SmartMedia) read only translation layer' or new
	  expermental, readwrite
	  'SmartMedia/xD new translation layer'

config MTD_NAND_AU1550
	tristate "Au1550/1200 NAND support"
	depends on MIPS_ALCHEMY
	help
	  This enables the driver for the NAND flash controller on the
	  AMD/Alchemy 1550 SOC.

config MTD_NAND_BF5XX
	tristate "Blackfin on-chip NAND Flash Controller driver"
	depends on BF54x || BF52x
	help
	  This enables the Blackfin on-chip NAND flash controller

	  No board specific support is done by this driver, each board
	  must advertise a platform_device for the driver to attach.

	  This driver can also be built as a module. If so, the module
	  will be called bf5xx-nand.

config MTD_NAND_BF5XX_HWECC
	bool "BF5XX NAND Hardware ECC"
	default y
	depends on MTD_NAND_BF5XX
	help
	  Enable the use of the BF5XX's internal ECC generator when
	  using NAND.

config MTD_NAND_BF5XX_BOOTROM_ECC
	bool "Use Blackfin BootROM ECC Layout"
	default n
	depends on MTD_NAND_BF5XX_HWECC
	help
	  If you wish to modify NAND pages and allow the Blackfin on-chip
	  BootROM to boot from them, say Y here.  This is only necessary
	  if you are booting U-Boot out of NAND and you wish to update
	  U-Boot from Linux' userspace.  Otherwise, you should say N here.

	  If unsure, say N.

config MTD_NAND_RTC_FROM4
	tristate "Renesas Flash ROM 4-slot interface board (FROM_BOARD4)"
	depends on SH_SOLUTION_ENGINE
	select REED_SOLOMON
	select REED_SOLOMON_DEC8
	select BITREVERSE
	help
	  This enables the driver for the Renesas Technology AG-AND
	  flash interface board (FROM_BOARD4)

config MTD_NAND_PPCHAMELEONEVB
	tristate "NAND Flash device on PPChameleonEVB board"
	depends on PPCHAMELEONEVB && BROKEN
	help
	  This enables the NAND flash driver on the PPChameleon EVB Board.

config MTD_NAND_S3C2410
	tristate "NAND Flash support for Samsung S3C SoCs"
	depends on ARCH_S3C2410 || ARCH_S3C64XX
	help
	  This enables the NAND flash controller on the S3C24xx and S3C64xx
	  SoCs

	  No board specific support is done by this driver, each board
	  must advertise a platform_device for the driver to attach.

config MTD_NAND_S3C2410_DEBUG
	bool "Samsung S3C NAND driver debug"
	depends on MTD_NAND_S3C2410
	help
	  Enable debugging of the S3C NAND driver

config MTD_NAND_S3C2410_HWECC
	bool "Samsung S3C NAND Hardware ECC"
	depends on MTD_NAND_S3C2410
	help
	  Enable the use of the controller's internal ECC generator when
	  using NAND. Early versions of the chips have had problems with
	  incorrect ECC generation, and if using these, the default of
	  software ECC is preferable.

config MTD_NAND_NDFC
	tristate "NDFC NanD Flash Controller"
	depends on 4xx
	select MTD_NAND_ECC_SMC
	help
	 NDFC Nand Flash Controllers are integrated in IBM/AMCC's 4xx SoCs

config MTD_NAND_S3C2410_CLKSTOP
	bool "Samsung S3C NAND IDLE clock stop"
	depends on MTD_NAND_S3C2410
	default n
	help
	  Stop the clock to the NAND controller when there is no chip
	  selected to save power. This will mean there is a small delay
	  when the is NAND chip selected or released, but will save
	  approximately 5mA of power when there is nothing happening.

config MTD_NAND_BCM_UMI
	tristate "NAND Flash support for BCM Reference Boards"
	depends on ARCH_BCMRING
	help
	  This enables the NAND flash controller on the BCM UMI block.

	  No board specific support is done by this driver, each board
	  must advertise a platform_device for the driver to attach.

config MTD_NAND_BCM_UMI_HWCS
	bool "BCM UMI NAND Hardware CS"
	depends on MTD_NAND_BCM_UMI
	help
	  Enable the use of the BCM UMI block's internal CS using NAND.
	  This should only be used if you know the external NAND CS can toggle.

config MTD_NAND_DISKONCHIP
	tristate "DiskOnChip 2000, Millennium and Millennium Plus (NAND reimplementation) (EXPERIMENTAL)"
	depends on EXPERIMENTAL
	select REED_SOLOMON
	select REED_SOLOMON_DEC16
	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_PROBE_ADVANCED
        bool "Advanced detection options for DiskOnChip"
        depends on MTD_NAND_DISKONCHIP
        help
          This option allows you to specify nonstandard address at which to
          probe for a DiskOnChip, or to change the detection options.  You
          are unlikely to need any of this unless you are using LinuxBIOS.
          Say 'N'.

config MTD_NAND_DISKONCHIP_PROBE_ADDRESS
        hex "Physical address of DiskOnChip" if MTD_NAND_DISKONCHIP_PROBE_ADVANCED
        depends on MTD_NAND_DISKONCHIP
        default "0"
        ---help---
        By default, the probe for DiskOnChip devices will look for a
        DiskOnChip at every multiple of 0x2000 between 0xC8000 and 0xEE000.
        This option allows you to specify a single address at which to probe
        for the device, which is useful if you have other devices in that
        range which get upset when they are probed.

        (Note that on PowerPC, the normal probe will only check at
        0xE4000000.)

        Normally, you should leave this set to zero, to allow the probe at
        the normal addresses.

config MTD_NAND_DISKONCHIP_PROBE_HIGH
        bool "Probe high addresses"
        depends on MTD_NAND_DISKONCHIP_PROBE_ADVANCED
        help
          By default, the probe for DiskOnChip devices will look for a
          DiskOnChip at every multiple of 0x2000 between 0xC8000 and 0xEE000.
          This option changes to make it probe between 0xFFFC8000 and
          0xFFFEE000.  Unless you are using LinuxBIOS, this is unlikely to be
          useful to you.  Say 'N'.

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_DOCG4
	tristate "Support for DiskOnChip G4 (EXPERIMENTAL)"
	depends on EXPERIMENTAL
	select BCH
	select BITREVERSE
	help
	  Support for diskonchip G4 nand flash, found in various smartphones and
	  PDAs, among them the Palm Treo680, HTC Prophet and Wizard, Toshiba
	  Portege G900, Asus P526, and O2 XDA Zinc.

	  With this driver you will be able to use UBI and create a ubifs on the
	  device, so you may wish to consider enabling UBI and UBIFS as well.

	  These devices ship with the Mys/Sandisk SAFTL formatting, for which
	  there is currently no mtd parser, so you may want to use command line
	  partitioning to segregate write-protected blocks. On the Treo680, the
	  first five erase blocks (256KiB each) are write-protected, followed
	  by the block containing the saftl partition table.  This is probably
	  typical.

config MTD_NAND_SHARPSL
	tristate "Support for NAND Flash on Sharp SL Series (C7xx + others)"
	depends on ARCH_PXA

config MTD_NAND_CAFE
	tristate "NAND support for OLPC CAFÉ chip"
	depends on PCI
	select REED_SOLOMON
	select REED_SOLOMON_DEC16
	help
	  Use NAND flash attached to the CAFÉ chip designed for the OLPC
	  laptop.

config MTD_NAND_CS553X
	tristate "NAND support for CS5535/CS5536 (AMD Geode companion chip)"
	depends on X86_32
	help
	  The CS553x companion chips for the AMD Geode processor
	  include NAND flash controllers with built-in hardware ECC
	  capabilities; enabling this option will allow you to use
	  these. The driver will check the MSRs to verify that the
	  controller is enabled for NAND, and currently requires that
	  the controller be in MMIO mode.

	  If you say "m", the module will be called cs553x_nand.

config MTD_NAND_ATMEL
	tristate "Support for NAND Flash / SmartMedia on AT91 and AVR32"
	depends on ARCH_AT91 || AVR32
	help
	  Enables support for NAND Flash / Smart Media Card interface
	  on Atmel AT91 and AVR32 processors.
choice
	prompt "ECC management for NAND Flash / SmartMedia on AT91 / AVR32"
	depends on MTD_NAND_ATMEL

config MTD_NAND_ATMEL_ECC_HW
	bool "Hardware ECC"
	depends on ARCH_AT91SAM9263 || ARCH_AT91SAM9260 || AVR32
	help
	  Use hardware ECC instead of software ECC when the chip
	  supports it.

	  The hardware ECC controller is capable of single bit error
	  correction and 2-bit random detection per page.

	  NB : hardware and software ECC schemes are incompatible.
	  If you switch from one to another, you'll have to erase your
	  mtd partition.

	  If unsure, say Y

config MTD_NAND_ATMEL_ECC_SOFT
	bool "Software ECC"
	help
	  Use software ECC.

	  NB : hardware and software ECC schemes are incompatible.
	  If you switch from one to another, you'll have to erase your
	  mtd partition.

config MTD_NAND_ATMEL_ECC_NONE
	bool "No ECC (testing only, DANGEROUS)"
	depends on DEBUG_KERNEL
	help
	  No ECC will be used.
	  It's not a good idea and it should be reserved for testing
	  purpose only.

	  If unsure, say N

endchoice

config MTD_NAND_PXA3xx
	tristate "Support for NAND flash devices on PXA3xx"
	depends on PXA3xx || ARCH_MMP
	help
	  This enables the driver for the NAND flash device found on
	  PXA3xx processors

config MTD_NAND_CM_X270
	tristate "Support for NAND Flash on CM-X270 modules"
	depends on MACH_ARMCORE

config MTD_NAND_PASEMI
	tristate "NAND support for PA Semi PWRficient"
	depends on PPC_PASEMI
	help
	  Enables support for NAND Flash interface on PA Semi PWRficient
	  based boards

config MTD_NAND_TMIO
	tristate "NAND Flash device on Toshiba Mobile IO Controller"
	depends on MFD_TMIO
	help
	  Support for NAND flash connected to a Toshiba Mobile IO
	  Controller in some PDAs, including the Sharp SL6000x.

config MTD_NAND_NANDSIM
	tristate "Support for NAND Flash Simulator"
	help
	  The simulator may simulate various NAND flash chips for the
	  MTD nand layer.

config MTD_NAND_GPMI_NAND
        bool "GPMI NAND Flash Controller driver"
        depends on MTD_NAND && (SOC_IMX23 || SOC_IMX28)
        help
	 Enables NAND Flash support for IMX23 or IMX28.
	 The GPMI controller is very powerful, with the help of BCH
	 module, it can do the hardware ECC. The GPMI supports several
	 NAND flashs at the same time. The GPMI may conflicts with other
	 block, such as SD card. So pay attention to it when you enable
	 the GPMI.

config MTD_NAND_PLATFORM
	tristate "Support for generic platform NAND driver"
	help
	  This implements a generic NAND driver for on-SOC platform
	  devices. You will need to provide platform-specific functions
	  via platform_data.

config MTD_ALAUDA
	tristate "MTD driver for Olympus MAUSB-10 and Fujifilm DPC-R1"
	depends on USB
	help
	  These two (and possibly other) Alauda-based cardreaders for
	  SmartMedia and xD allow raw flash access.

config MTD_NAND_ORION
	tristate "NAND Flash support for Marvell Orion SoC"
	depends on PLAT_ORION
	help
	  This enables the NAND flash controller on Orion machines.

	  No board specific support is done by this driver, each board
	  must advertise a platform_device for the driver to attach.

config MTD_NAND_FSL_ELBC
	tristate "NAND support for Freescale eLBC controllers"
	depends on PPC_OF
	select FSL_LBC
	help
	  Various Freescale chips, including the 8313, include a NAND Flash
	  Controller Module with built-in hardware ECC capabilities.
	  Enabling this option will enable you to use this to control
	  external NAND devices.

config MTD_NAND_FSL_UPM
	tristate "Support for NAND on Freescale UPM"
	depends on PPC_83xx || PPC_85xx
	select FSL_LBC
	help
	  Enables support for NAND Flash chips wired onto Freescale PowerPC
	  processor localbus with User-Programmable Machine support.

config MTD_NAND_MPC5121_NFC
	tristate "MPC5121 built-in NAND Flash Controller support"
	depends on PPC_MPC512x
	help
	  This enables the driver for the NAND flash controller on the
	  MPC5121 SoC.

config MTD_NAND_MXC
	tristate "MXC NAND support"
	depends on IMX_HAVE_PLATFORM_MXC_NAND
	help
	  This enables the driver for the NAND flash controller on the
	  MXC processors.

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.

config MTD_NAND_SH_FLCTL
	tristate "Support for NAND on Renesas SuperH FLCTL"
	depends on SUPERH || ARCH_SHMOBILE
	help
	  Several Renesas SuperH CPU has FLCTL. This option enables support
	  for NAND Flash using FLCTL.

config MTD_NAND_DAVINCI
        tristate "Support NAND on DaVinci SoC"
        depends on ARCH_DAVINCI
        help
	  Enable the driver for NAND flash chips on Texas Instruments
	  DaVinci processors.

config MTD_NAND_TXX9NDFMC
	tristate "NAND Flash support for TXx9 SoC"
	depends on SOC_TX4938 || SOC_TX4939
	help
	  This enables the NAND flash controller on the TXx9 SoCs.

config MTD_NAND_SOCRATES
	tristate "Support for NAND on Socrates board"
	depends on SOCRATES
	help
	  Enables support for NAND Flash chips wired onto Socrates board.

config MTD_NAND_NUC900
	tristate "Support for NAND on Nuvoton NUC9xx/w90p910 evaluation boards."
	depends on ARCH_W90X900
	help
	  This enables the driver for the NAND Flash on evaluation board based
	  on w90p910 / NUC9xx.

config MTD_NAND_JZ4740
	tristate "Support for JZ4740 SoC NAND controller"
	depends on MACH_JZ4740
	help
		Enables support for NAND Flash on JZ4740 SoC based boards.

config MTD_NAND_FSMC
	tristate "Support for NAND on ST Micros FSMC"
	depends on PLAT_SPEAR || PLAT_NOMADIK || MACH_U300
	help
	  Enables support for NAND Flash chips on the ST Microelectronics
	  Flexible Static Memory Controller (FSMC)

endif # MTD_NAND
