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_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
        tristate "Support Denali NAND controller"
        help
	  Enable support for the Denali NAND controller.  This should be
	  combined with either the PCI or platform drivers to provide device
	  registration.

config MTD_NAND_DENALI_PCI
        tristate "Support Denali NAND controller on Intel Moorestown"
	depends on PCI && MTD_NAND_DENALI
        help
          Enable the driver for NAND flash on Intel Moorestown, using the
          Denali NAND controller core.

config MTD_NAND_DENALI_DT
	tristate "Support Denali NAND controller as a DT device"
	depends on HAVE_CLK && MTD_NAND_DENALI
	help
	  Enable the driver for NAND flash on platforms using a Denali NAND
	  controller as a DT device.

config MTD_NAND_DENALI_SCRATCH_REG_ADDR
        hex "Denali NAND size scratch register address"
        default "0xFF108018"
        depends on MTD_NAND_DENALI_PCI
        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_OMAP_BCH
	depends on MTD_NAND && MTD_NAND_OMAP2 && ARCH_OMAP3
	bool "Enable support for hardware BCH error correction"
	default n
	select BCH
	select BCH_CONST_PARAMS
	help
	 Support for hardware BCH error correction.

choice
	prompt "BCH error correction capability"
	depends on MTD_NAND_OMAP_BCH

config MTD_NAND_OMAP_BCH8
	bool "8 bits / 512 bytes (recommended)"
	help
	 Support correcting up to 8 bitflips per 512-byte block.
	 This will use 13 bytes of spare area per 512 bytes of page data.
	 This is the recommended mode, as 4-bit mode does not work
	 on some OMAP3 revisions, due to a hardware bug.

config MTD_NAND_OMAP_BCH4
	bool "4 bits / 512 bytes"
	help
	 Support correcting up to 4 bitflips per 512-byte block.
	 This will use 7 bytes of spare area per 512 bytes of page data.
	 Note that this mode does not work on some OMAP3 revisions, due to a
	 hardware bug. Please check your OMAP datasheet before selecting this
	 mode.

endchoice

if MTD_NAND_OMAP_BCH
config BCH_CONST_M
	default 13
config BCH_CONST_T
	default 4 if MTD_NAND_OMAP_BCH4
	default 8 if MTD_NAND_OMAP_BCH8
endif

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_S3C24XX || 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_DISKONCHIP
	tristate "DiskOnChip 2000, Millennium and Millennium Plus (NAND reimplementation) (EXPERIMENTAL)"
	depends on EXPERIMENTAL
	depends on HAS_IOMEM
	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 && HAS_IOMEM
	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.

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_SLC_LPC32XX
	tristate "NXP LPC32xx SLC Controller"
	depends on ARCH_LPC32XX
	help
	  Enables support for NXP's LPC32XX SLC (i.e. for Single Level Cell
	  chips) NAND controller. This is the default for the PHYTEC 3250
	  reference board which contains a NAND256R3A2CZA6 chip.

	  Please check the actual NAND chip connected and its support
	  by the SLC NAND controller.

config MTD_NAND_MLC_LPC32XX
	tristate "NXP LPC32xx MLC Controller"
	depends on ARCH_LPC32XX
	help
	  Uses the LPC32XX MLC (i.e. for Multi Level Cell chips) NAND
	  controller. This is the default for the WORK92105 controller
	  board.

	  Please check the actual NAND chip connected and its support
	  by the MLC NAND controller.

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
        tristate "GPMI NAND Flash Controller driver"
        depends on MTD_NAND && MXS_DMA
        help
	 Enables NAND Flash support for IMX23, IMX28 or IMX6.
	 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_BCM47XXNFLASH
	tristate "R/O support for NAND flash on BCMA bus"
	depends on BCMA_NFLASH
	help
	  BCMA bus can have various flash memories attached, they are
	  registered by bcma as platform devices. This enables driver for
	  NAND flash memories. For now only read mode for BCM4706 is
	  implemented.

config MTD_NAND_PLATFORM
	tristate "Support for generic platform NAND driver"
	depends on HAS_IOMEM
	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_IFC
	tristate "NAND support for Freescale IFC controller"
	depends on MTD_NAND && FSL_SOC
	select FSL_IFC
	help
	  Various Freescale chips e.g P1010, include a NAND Flash machine
	  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 ARCH_MXC
	help
	  This enables the driver for the NAND flash controller on the
	  MXC processors.

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)

config MTD_NAND_XWAY
	tristate "Support for NAND on Lantiq XWAY SoC"
	depends on LANTIQ && SOC_TYPE_XWAY
	select MTD_NAND_PLATFORM
	help
	  Enables support for NAND Flash chips on Lantiq XWAY SoCs. NAND is attached
	  to the External Bus Unit (EBU).

endif # MTD_NAND
