# drivers/mtd/maps/Kconfig
# $Id: Kconfig,v 1.18 2005/11/07 11:14:24 gleixner Exp $

menu "Self-contained MTD device drivers"
	depends on MTD!=n

config MTD_PMC551
	tristate "Ramix PMC551 PCI Mezzanine RAM card support"
	depends on PCI
	---help---
	  This provides a MTD device driver for the Ramix PMC551 RAM PCI card
	  from Ramix Inc. <http://www.ramix.com/products/memory/pmc551.html>.
	  These devices come in memory configurations from 32M - 1G.  If you
	  have one, you probably want to enable this.

	  If this driver is compiled as a module you get the ability to select
	  the size of the aperture window pointing into the devices memory.
	  What this means is that if you have a 1G card, normally the kernel
	  will use a 1G memory map as its view of the device.  As a module,
	  you can select a 1M window into the memory and the driver will
	  "slide" the window around the PMC551's memory.  This was
	  particularly useful on the 2.2 kernels on PPC architectures as there
	  was limited kernel space to deal with.

config MTD_PMC551_BUGFIX
	bool "PMC551 256M DRAM Bugfix"
	depends on MTD_PMC551
	help
	  Some of Ramix's PMC551 boards with 256M configurations have invalid
	  column and row mux values.  This option will fix them, but will
	  break other memory configurations.  If unsure say N.

config MTD_PMC551_DEBUG
	bool "PMC551 Debugging"
	depends on MTD_PMC551
	help
	  This option makes the PMC551 more verbose during its operation and
	  is only really useful if you are developing on this driver or
	  suspect a possible hardware or driver bug.  If unsure say N.

config MTD_MS02NV
	tristate "DEC MS02-NV NVRAM module support"
	depends on MACH_DECSTATION
	help
	  This is an MTD driver for the DEC's MS02-NV (54-20948-01) battery
	  backed-up NVRAM module.  The module was originally meant as an NFS
	  accelerator.  Say Y here if you have a DECstation 5000/2x0 or a
	  DECsystem 5900 equipped with such a module.

	  If you want to compile this driver as a module ( = code which can be
	  inserted in and removed from the running kernel whenever you want),
	  say M here and read <file:Documentation/kbuild/modules.txt>.
	  The module will be called ms02-nv.ko.

config MTD_DATAFLASH
	tristate "Support for AT45xxx DataFlash"
	depends on SPI_MASTER && EXPERIMENTAL
	help
	  This enables access to AT45xxx DataFlash chips, using SPI.
	  Sometimes DataFlash chips are packaged inside MMC-format
	  cards; at this writing, the MMC stack won't handle those.

config MTD_M25P80
	tristate "Support most SPI Flash chips (AT26DF, M25P, W25X, ...)"
	depends on SPI_MASTER && EXPERIMENTAL
	help
	  This enables access to most modern SPI flash chips, used for
	  program and data storage.   Series supported include Atmel AT26DF,
	  Spansion S25SL, SST 25VF, ST M25P, and Winbond W25X.  Other chips
	  are supported as well.  See the driver source for the current list,
	  or to add other chips.

	  Note that the original DataFlash chips (AT45 series, not AT26DF),
	  need an entirely different driver.

	  Set up your spi devices with the right board-specific platform data,
	  if you want to specify device partitioning or to use a device which
	  doesn't support the JEDEC ID instruction.

config M25PXX_USE_FAST_READ
	bool "Use FAST_READ OPCode allowing SPI CLK <= 50MHz"
	depends on MTD_M25P80
	default y
	help
	  This option enables FAST_READ access supported by ST M25Pxx.

config MTD_SLRAM
	tristate "Uncached system RAM"
	help
	  If your CPU cannot cache all of the physical memory in your machine,
	  you can still use it for storage or swap by using this driver to
	  present it to the system as a Memory Technology Device.

config MTD_PHRAM
	tristate "Physical system RAM"
	help
	  This is a re-implementation of the slram driver above.

	  Use this driver to access physical memory that the kernel proper
	  doesn't have access to, memory beyond the mem=xxx limit, nvram,
	  memory on the video card, etc...

config MTD_LART
	tristate "28F160xx flash driver for LART"
	depends on SA1100_LART
	help
	  This enables the flash driver for LART. Please note that you do
	  not need any mapping/chip driver for LART. This one does it all
	  for you, so go disable all of those if you enabled some of them (:

config MTD_MTDRAM
	tristate "Test driver using RAM"
	help
	  This enables a test MTD device driver which uses vmalloc() to
	  provide storage.  You probably want to say 'N' unless you're
	  testing stuff.

config MTDRAM_TOTAL_SIZE
	int "MTDRAM device size in KiB"
	depends on MTD_MTDRAM
	default "4096"
	help
	  This allows you to configure the total size of the MTD device
	  emulated by the MTDRAM driver.  If the MTDRAM driver is built
	  as a module, it is also possible to specify this as a parameter when
	  loading the module.

config MTDRAM_ERASE_SIZE
	int "MTDRAM erase block size in KiB"
	depends on MTD_MTDRAM
	default "128"
	help
	  This allows you to configure the size of the erase blocks in the
	  device emulated by the MTDRAM driver.  If the MTDRAM driver is built
	  as a module, it is also possible to specify this as a parameter when
	  loading the module.

#If not a module (I don't want to test it as a module)
config MTDRAM_ABS_POS
	hex "SRAM Hexadecimal Absolute position or 0"
	depends on MTD_MTDRAM=y
	default "0"
	help
	  If you have system RAM accessible by the CPU but not used by Linux
	  in normal operation, you can give the physical address at which the
	  available RAM starts, and the MTDRAM driver will use it instead of
	  allocating space from Linux's available memory. Otherwise, leave
	  this set to zero. Most people will want to leave this as zero.

config MTD_BLOCK2MTD
	tristate "MTD using block device"
	depends on BLOCK
	help
	  This driver allows a block device to appear as an MTD. It would
	  generally be used in the following cases:

	  Using Compact Flash as an MTD, these usually present themselves to
	  the system as an ATA drive.
	  Testing MTD users (eg JFFS2) on large media and media that might
	  be removed during a write (using the floppy drive).

comment "Disk-On-Chip Device Drivers"

config MTD_DOC2000
	tristate "M-Systems Disk-On-Chip 2000 and Millennium (DEPRECATED)"
	select MTD_DOCPROBE
	select MTD_NAND_IDS
	---help---
	  This provides an MTD device driver for the M-Systems DiskOnChip
	  2000 and Millennium devices.  Originally designed for the DiskOnChip
	  2000, it also now includes support for the DiskOnChip Millennium.
	  If you have problems with this driver and the DiskOnChip Millennium,
	  you may wish to try the alternative Millennium driver below. To use
	  the alternative driver, you will need to undefine DOC_SINGLE_DRIVER
	  in the <file:drivers/mtd/devices/docprobe.c> source code.

	  If you use this device, you probably also want to enable the NFTL
	  'NAND Flash Translation Layer' option below, which is used to
	  emulate a block device by using a kind of file system on the flash
	  chips.

	  NOTE: This driver is deprecated and will probably be removed soon.
	  Please try the new DiskOnChip driver under "NAND Flash Device
	  Drivers".

config MTD_DOC2001
	tristate "M-Systems Disk-On-Chip Millennium-only alternative driver (DEPRECATED)"
	select MTD_DOCPROBE
	select MTD_NAND_IDS
	---help---
	  This provides an alternative MTD device driver for the M-Systems
	  DiskOnChip Millennium devices.  Use this if you have problems with
	  the combined DiskOnChip 2000 and Millennium driver above.  To get
	  the DiskOnChip probe code to load and use this driver instead of
	  the other one, you will need to undefine DOC_SINGLE_DRIVER near
	  the beginning of <file:drivers/mtd/devices/docprobe.c>.

	  If you use this device, you probably also want to enable the NFTL
	  'NAND Flash Translation Layer' option below, which is used to
	  emulate a block device by using a kind of file system on the flash
	  chips.

	  NOTE: This driver is deprecated and will probably be removed soon.
	  Please try the new DiskOnChip driver under "NAND Flash Device
	  Drivers".

config MTD_DOC2001PLUS
	tristate "M-Systems Disk-On-Chip Millennium Plus"
	select MTD_DOCPROBE
	select MTD_NAND_IDS
	---help---
	  This provides an MTD device driver for the M-Systems DiskOnChip
	  Millennium Plus devices.

	  If you use this device, you probably also want to enable the INFTL
	  'Inverse NAND Flash Translation Layer' option below, which is used
	  to emulate a block device by using a kind of file system on the
	  flash chips.

	  NOTE: This driver will soon be replaced by the new DiskOnChip driver
	  under "NAND Flash Device Drivers" (currently that driver does not
	  support all Millennium Plus devices).

config MTD_DOCPROBE
	tristate
	select MTD_DOCECC

config MTD_DOCECC
	tristate

config MTD_DOCPROBE_ADVANCED
	bool "Advanced detection options for DiskOnChip"
	depends on MTD_DOCPROBE
	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_DOCPROBE_ADDRESS
	hex "Physical address of DiskOnChip" if MTD_DOCPROBE_ADVANCED
	depends on MTD_DOCPROBE
	default "0x0000" if MTD_DOCPROBE_ADVANCED
	default "0" if !MTD_DOCPROBE_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 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_DOCPROBE_HIGH
	bool "Probe high addresses"
	depends on MTD_DOCPROBE_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_DOCPROBE_55AA
	bool "Probe for 0x55 0xAA BIOS Extension Signature"
	depends on MTD_DOCPROBE_ADVANCED
	help
	  Check for the 0x55 0xAA signature of a DiskOnChip, and do not
	  continue with probing if it is absent.  The signature will always be
	  present for a DiskOnChip 2000 or a normal DiskOnChip Millennium.
	  Only if you have overwritten the first block of a DiskOnChip
	  Millennium will it be absent.  Enable this option if you are using
	  LinuxBIOS or if you need to recover a DiskOnChip Millennium on which
	  you have managed to wipe the first block.

endmenu

