menuconfig MTD_ONENAND
	tristate "OneNAND Device Support"
	depends on MTD
	select MTD_PARTITIONS
	help
	  This enables support for accessing all type of OneNAND flash
	  devices. For further information see
	  <http://www.samsung.com/Products/Semiconductor/OneNAND/index.htm>

if MTD_ONENAND

config MTD_ONENAND_VERIFY_WRITE
	bool "Verify OneNAND page writes"
	help
	  This adds an extra check when data is written to the flash. The
	  OneNAND 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_ONENAND_GENERIC
	tristate "OneNAND Flash device via platform device driver"
	help
	  Support for OneNAND flash via platform device driver.

config MTD_ONENAND_OMAP2
	tristate "OneNAND on OMAP2/OMAP3 support"
	depends on MTD_ONENAND && (ARCH_OMAP2 || ARCH_OMAP3)
	help
	  Support for a OneNAND flash device connected to an OMAP2/OMAP3 CPU
	  via the GPMC memory controller.

config MTD_ONENAND_SAMSUNG
        tristate "OneNAND on Samsung SOC controller support"
        depends on MTD_ONENAND && (ARCH_S3C64XX || ARCH_S5PC100 || ARCH_S5PV210)
        help
          Support for a OneNAND flash device connected to an Samsung SOC
          S3C64XX/S5PC1XX controller.

config MTD_ONENAND_OTP
	bool "OneNAND OTP Support"
	select HAVE_MTD_OTP
	help
	  One Block of the NAND Flash Array memory is reserved as
	  a One-Time Programmable Block memory area.
	  Also, 1st Block of NAND Flash Array can be used as OTP.

	  The OTP block can be read, programmed and locked using the same
	  operations as any other NAND Flash Array memory block.
	  OTP block cannot be erased.

	  OTP block is fully-guaranteed to be a valid block.

config MTD_ONENAND_2X_PROGRAM
	bool "OneNAND 2X program support"
	help
	  The 2X Program is an extension of Program Operation.
	  Since the device is equipped with two DataRAMs, and two-plane NAND
	  Flash memory array, these two component enables simultaneous program
	  of 4KiB. Plane1 has only even blocks such as block0, block2, block4
	  while Plane2 has only odd blocks such as block1, block3, block5.
	  So MTD regards it as 4KiB page size and 256KiB block size

	  Now the following chips support it. (KFXXX16Q2M)
	    Demux: KFG2G16Q2M, KFH4G16Q2M, KFW8G16Q2M,
	    Mux:   KFM2G16Q2M, KFN4G16Q2M,

	  And more recent chips

config MTD_ONENAND_SIM
	tristate "OneNAND simulator support"
	help
	  The simulator may simulate various OneNAND flash chips for the
	  OneNAND MTD layer.

endif # MTD_ONENAND
