# drivers/mtd/nand/Kconfig

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

config MTD_NAND_CMD
        string "Nand Command with no bootargs"
        default "nand_mtd:0x100000@0x0(uboot)ro,0x200000@0x100000(uimage),0xc80000@0x300000(rootfs),0x100000@0xf80000(varfs),0x4000000@0x100000(flash)"
        help

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_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_EDB7312
	tristate "Support for Cirrus Logic EBD7312 evaluation board"
	depends on ARCH_EDB7312
	help
	  This enables the driver for the Cirrus Logic EBD7312 evaluation
	  board to access the onboard NAND Flash.

config MTD_NAND_H1900
	tristate "iPAQ H1900 flash"
	depends on ARCH_PXA && MTD_PARTITIONS
	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
	help
	  Support for NAND flash on Amstrad E3 (Delta).

config MTD_NAND_OMAP2
	tristate "NAND Flash device on OMAP2 and OMAP3"
	depends on ARM && MTD_NAND && (ARCH_OMAP2 || ARCH_OMAP3)
	help
          Support for NAND flash on Texas Instruments OMAP2 and OMAP3 platforms.

config MTD_NAND_OMAP_PREFETCH
	bool "GPMC prefetch support for NAND Flash device"
	depends on MTD_NAND && MTD_NAND_OMAP2
	default y
	help
	 The NAND device can be accessed for Read/Write using GPMC PREFETCH engine
	 to improve the performance.

config MTD_NAND_OMAP_PREFETCH_DMA
	depends on MTD_NAND_OMAP_PREFETCH
	bool "DMA mode"
	default n
	help
	 The GPMC PREFETCH engine can be configured eigther in MPU interrupt mode
	 or in DMA interrupt mode.
	 Say y for DMA mode or MPU mode will be used

config MTD_NAND_TS7250
	tristate "NAND Flash device on TS-7250 board"
	depends on MACH_TS72XX
	help
	  Support for NAND flash on Technologic Systems TS-7250 platform.

config MTD_NAND_IDS
	tristate

config MTD_NAND_AU1550
	tristate "Au1550/1200 NAND support"
	depends on SOC_AU1200 || SOC_AU1550
	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) && MTD_NAND
	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_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_SHARPSL
	tristate "Support for NAND Flash on Sharp SL Series (C7xx + others)"
	depends on ARCH_PXA

config MTD_NAND_BASLER_EXCITE
	tristate  "Support for NAND Flash on Basler eXcite"
	depends on BASLER_EXCITE
	help
          This enables the driver for the NAND flash device found on the
          Basler eXcite Smart Camera. If built as a module, the driver
          will be named excite_nandflash.

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

endchoice

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

config MTD_NAND_PXA3xx_BUILTIN
	bool "Use builtin definitions for some NAND chips (deprecated)"
	depends on MTD_NAND_PXA3xx
	help
	  This enables builtin definitions for some NAND chips. This
	  is deprecated in favor of platform specific data.

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

config MTD_NAND_PASEMI
	tristate "NAND support for PA Semi PWRficient"
	depends on MTD_NAND && 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 MTD_NAND && 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"
	depends on MTD_PARTITIONS
	help
	  The simulator may simulate various NAND flash chips for the
	  MTD nand layer.

config MTD_NAND_PLATFORM
	tristate "Support for generic platform NAND driver"
	depends on MTD_NAND
	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 MTD_NAND && 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 && MTD_NAND
	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 MTD_NAND && PPC_OF
	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 MTD_NAND && (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_MXC
	tristate "MXC NAND support"
	depends on ARCH_MX2 || ARCH_MX3
	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 MTD_NAND && SUPERH && CPU_SUBTYPE_SH7723
	help
	  Several Renesas SuperH CPU has FLCTL. This option enables support
	  for NAND Flash using FLCTL. This driver support SH7723.

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 MTD_NAND && SOCRATES
	help
	  Enables support for NAND Flash chips wired onto Socrates board.

config MTD_NAND_W90P910
	tristate "Support for NAND on w90p910 evaluation board."
	depends on ARCH_W90X900 && MTD_PARTITIONS
	help
	  This enables the driver for the NAND Flash on evaluation board based
	  on w90p910.

endif # MTD_NAND
