# drivers/mtd/maps/Kconfig
# $Id: Kconfig,v 1.44 2005/02/18 11:03:45 bjd Exp $

menu "Mapping drivers for chip access"
	depends on MTD!=n

config MTD_COMPLEX_MAPPINGS
	bool "Support non-linear mappings of flash chips"
	depends on MTD
	help
	  This causes the chip drivers to allow for complicated
	  paged mappings of flash chips.

config MTD_PHYSMAP
	tristate "CFI Flash device in physical memory map"
	depends on MTD_CFI
	help
	  This provides a 'mapping' driver which allows the CFI probe and
	  command set driver code to communicate with flash chips which
	  are mapped physically into the CPU's memory. You will need to
	  configure the physical address and size of the flash chips on
	  your particular board as well as the bus width, either statically
	  with config options or at run-time.

config MTD_PHYSMAP_START
	hex "Physical start address of flash mapping"
	depends on MTD_PHYSMAP
	default "0x8000000"
	help
	  This is the physical memory location at which the flash chips
	  are mapped on your particular target board. Refer to the
	  memory map which should hopefully be in the documentation for
	  your board.
	  Ignore this option if you use run-time physmap configuration
	  (i.e., run-time calling physmap_configure()).

config MTD_PHYSMAP_LEN
	hex "Physical length of flash mapping"
	depends on MTD_PHYSMAP
	default "0x4000000"
	help
	  This is the total length of the mapping of the flash chips on
	  your particular board. If there is space, or aliases, in the
	  physical memory map between the chips, this could be larger
	  than the total amount of flash present. Refer to the memory
	  map which should hopefully be in the documentation for your
	  board.
	  Ignore this option if you use run-time physmap configuration
	  (i.e., run-time calling physmap_configure()).

config MTD_PHYSMAP_BANKWIDTH
	int "Bank width in octets"
	depends on MTD_PHYSMAP
	default "2"
	help
	  This is the total width of the data bus of the flash devices
	  in octets. For example, if you have a data bus width of 32
	  bits, you would set the bus width octect value to 4. This is
	  used internally by the CFI drivers.
	  Ignore this option if you use run-time physmap configuration
	  (i.e., run-time calling physmap_configure()).

config MTD_SUN_UFLASH
	tristate "Sun Microsystems userflash support"
	depends on (SPARC32 || SPARC64) && MTD_CFI
	help
	  This provides a 'mapping' driver which supports the way in 
	  which user-programmable flash chips are connected on various 
	  Sun Microsystems boardsets.  This driver will require CFI support 
	  in the kernel, so if you did not enable CFI previously, do that now.

config MTD_PNC2000
	tristate "CFI Flash device mapped on Photron PNC-2000"
	depends on X86 && MTD_CFI && MTD_PARTITIONS
	help
	  PNC-2000 is the name of Network Camera product from PHOTRON
	  Ltd. in Japan. It uses CFI-compliant flash.

config MTD_SC520CDP
	tristate "CFI Flash device mapped on AMD SC520 CDP"
	depends on X86 && MTD_CFI
	help
	  The SC520 CDP board has two banks of CFI-compliant chips and one
	  Dual-in-line JEDEC chip. This 'mapping' driver supports that
	  arrangement, implementing three MTD devices.

config MTD_NETSC520
	tristate "CFI Flash device mapped on AMD NetSc520"
	depends on X86 && MTD_CFI && MTD_PARTITIONS
	help
	  This enables access routines for the flash chips on the AMD NetSc520
	  demonstration board. If you have one of these boards and would like 
	  to use the flash chips on it, say 'Y'.

config MTD_TS5500
	tristate "JEDEC Flash device mapped on Technologic Systems TS-5500"
	depends on X86 && MTD_JEDECPROBE && MTD_PARTITIONS
	help
	  This provides a driver for the on-board flash of the Technologic
	  System's TS-5500 board. The flash is split into 3 partitions
	  which are accessed as separate MTD devices.

	  mtd0 and mtd2 are the two BIOS drives. Unfortunately the BIOS
	  uses a proprietary flash translation layer from General Software,
	  which is not supported (the drives cannot be mounted). You can
	  create your own file system (jffs for example), but the BIOS
	  won't be able to boot from it.

	  mtd1 allows you to reprogram your BIOS. BE VERY CAREFUL.

	  Note that jumper 3 ("Write Enable Drive A") must be set
	  otherwise detection won't succeeed.

config MTD_SBC_GXX
	tristate "CFI Flash device mapped on Arcom SBC-GXx boards"
	depends on X86 && MTD_CFI_INTELEXT && MTD_PARTITIONS && MTD_COMPLEX_MAPPINGS
	help
	  This provides a driver for the on-board flash of Arcom Control
	  Systems' SBC-GXn family of boards, formerly known as SBC-MediaGX.
	  By default the flash is split into 3 partitions which are accessed
	  as separate MTD devices. This board utilizes Intel StrataFlash.
	  More info at
	  <http://www.arcomcontrols.com/products/icp/pc104/processors/SBC_GX1.htm>.

config MTD_ELAN_104NC
	tristate "CFI Flash device mapped on Arcom ELAN-104NC"
	depends on X86 && MTD_CFI_INTELEXT && MTD_PARTITIONS && MTD_COMPLEX_MAPPINGS
	help
	  This provides a driver for the on-board flash of the Arcom Control
	  System's ELAN-104NC development board. By default the flash
	  is split into 3 partitions which are accessed as separate MTD
	  devices. This board utilizes Intel StrataFlash. More info at
	  <http://www.arcomcontrols.com/products/icp/pc104/processors/ELAN104NC.htm>.

config MTD_LUBBOCK
	tristate "CFI Flash device mapped on Intel Lubbock XScale eval board"
	depends on ARCH_LUBBOCK && MTD_CFI_INTELEXT && MTD_PARTITIONS
	help
	  This provides a driver for the on-board flash of the Intel
	  'Lubbock' XScale evaluation board.

config MTD_OCTAGON
	tristate "JEDEC Flash device mapped on Octagon 5066 SBC"
	depends on X86 && MTD_JEDEC && MTD_COMPLEX_MAPPINGS
	help
	  This provides a 'mapping' driver which supports the way in which
	  the flash chips are connected in the Octagon-5066 Single Board
	  Computer. More information on the board is available at
	  <http://www.octagonsystems.com/CPUpages/5066.html>.

config MTD_VMAX
	tristate "JEDEC Flash device mapped on Tempustech VMAX SBC301"
	depends on X86 && MTD_JEDEC && MTD_COMPLEX_MAPPINGS
	help
	  This provides a 'mapping' driver which supports the way in which
	  the flash chips are connected in the Tempustech VMAX SBC301 Single
	  Board Computer. More information on the board is available at
	  <http://www.tempustech.com/>.

config MTD_SCx200_DOCFLASH
	tristate "Flash device mapped with DOCCS on NatSemi SCx200"
	depends on SCx200 && MTD_CFI && MTD_PARTITIONS
	help
	  Enable support for a flash chip mapped using the DOCCS signal on a
	  National Semiconductor SCx200 processor.

	  If you don't know what to do here, say N.

	  If compiled as a module, it will be called scx200_docflash.

config MTD_AMD76XROM
	tristate "BIOS flash chip on AMD76x southbridge"
	depends on X86 && MTD_JEDECPROBE
	help
	  Support for treating the BIOS flash chip on AMD76x motherboards
	  as an MTD device - with this you can reprogram your BIOS.

	  BE VERY CAREFUL.

config MTD_ICHXROM
	tristate "BIOS flash chip on Intel Controller Hub 2/3/4/5"
	depends on X86 && MTD_JEDECPROBE
	help
	  Support for treating the BIOS flash chip on ICHX motherboards
	  as an MTD device - with this you can reprogram your BIOS.

	  BE VERY CAREFUL.

config MTD_SCB2_FLASH
	tristate "BIOS flash chip on Intel SCB2 boards"
	depends on X86 && MTD_JEDECPROBE
	help
	  Support for treating the BIOS flash chip on Intel SCB2 boards
	  as an MTD device - with this you can reprogram your BIOS.

	  BE VERY CAREFUL.

config MTD_TSUNAMI
	tristate "Flash chips on Tsunami TIG bus"
	depends on ALPHA_TSUNAMI && MTD_COMPLEX_MAPPINGS
	help
	  Support for the flash chip on Tsunami TIG bus.

config MTD_LASAT
	tristate "Flash chips on LASAT board"
	depends on LASAT
	help
	  Support for the flash chips on the Lasat 100 and 200 boards.

config MTD_NETtel
	tristate "CFI flash device on SnapGear/SecureEdge"
	depends on X86 && MTD_PARTITIONS && MTD_JEDECPROBE
	help
	  Support for flash chips on NETtel/SecureEdge/SnapGear boards.

config MTD_PB1XXX
	tristate "Flash devices on Alchemy PB1xxx boards"
	depends on MIPS && ( MIPS_PB1000 || MIPS_PB1100 || MIPS_PB1500 )
	help
	  Flash memory access on Alchemy Pb1000/Pb1100/Pb1500 boards

config MTD_PB1XXX_BOOT
	bool "PB1x00 boot flash device"
	depends on MTD_PB1XXX && ( MIPS_PB1100 || MIPS_PB1500 )
	help
	  Use the first of the two 32MiB flash banks on Pb1100/Pb1500 board.
	  You can say 'Y' to both this and 'MTD_PB1XXX_USER' below, to use
	  both banks.

config MTD_PB1XXX_USER
	bool "PB1x00 user flash device"
	depends on MTD_PB1XXX && ( MIPS_PB1100 || MIPS_PB1500 )
	default y if MTD_PB1XX_BOOT = n
	help
	  Use the second of the two 32MiB flash banks on Pb1100/Pb1500 board.
	  You can say 'Y' to both this and 'MTD_PB1XXX_BOOT' above, to use
	  both banks.

config MTD_PB1550
	tristate "Flash devices on Alchemy PB1550 board"
	depends on MIPS && MIPS_PB1550
	help
	  Flash memory access on Alchemy Pb1550 board

config MTD_PB1550_BOOT
	bool "PB1550 boot flash device"
	depends on MTD_PB1550
	help
	  Use the first of the two 64MiB flash banks on Pb1550 board.
	  You can say 'Y' to both this and 'MTD_PB1550_USER' below, to use
	  both banks.

config MTD_PB1550_USER
	bool "PB1550 user flash device"
	depends on MTD_PB1550
	default y if MTD_PB1550_BOOT = n
	help
	  Use the second of the two 64MiB flash banks on Pb1550 board.
	  You can say 'Y' to both this and 'MTD_PB1550_BOOT' above, to use
	  both banks.

config MTD_DB1550
	tristate "Flash devices on Alchemy DB1550 board"
	depends on MIPS && MIPS_DB1550
	help
	  Flash memory access on Alchemy Db1550 board

config MTD_DB1550_BOOT
	bool "DB1550 boot flash device"
	depends on MTD_DB1550
	help
	  Use the first of the two 64MiB flash banks on Db1550 board.
	  You can say 'Y' to both this and 'MTD_DB1550_USER' below, to use
	  both banks.

config MTD_DB1550_USER
	bool "DB1550 user flash device"
	depends on MTD_DB1550
	default y if MTD_DB1550_BOOT = n
	help
	  Use the second of the two 64MiB flash banks on Db1550 board.
	  You can say 'Y' to both this and 'MTD_DB1550_BOOT' above, to use
	  both banks.

config MTD_DILNETPC
	tristate "CFI Flash device mapped on DIL/Net PC"
	depends on X86 && MTD_CONCAT && MTD_PARTITIONS && MTD_CFI_INTELEXT
	help
	  MTD map driver for SSV DIL/Net PC Boards "DNP" and "ADNP".
	  For details, see <http://www.ssv-embedded.de/ssv/pc104/p169.htm>
 	  and <http://www.ssv-embedded.de/ssv/pc104/p170.htm>

config MTD_DILNETPC_BOOTSIZE
	hex "Size of DIL/Net PC flash boot partition"
	depends on MTD_DILNETPC
	default "0x80000"
	help
	  The amount of space taken up by the kernel or Etherboot
	  on the DIL/Net PC flash chips.

config MTD_L440GX
	tristate "BIOS flash chip on Intel L440GX boards"
	depends on X86 && MTD_JEDECPROBE
	help
	  Support for treating the BIOS flash chip on Intel L440GX motherboards
	  as an MTD device - with this you can reprogram your BIOS.

	  BE VERY CAREFUL.

config MTD_SBC8240
	tristate "Flash device on SBC8240"
	depends on PPC32 && MTD_JEDECPROBE && 6xx && 8260
	help
          Flash access on the SBC8240 board from Wind River.  See
          <http://www.windriver.com/products/sbc8240/>

config MTD_TQM8XXL
	tristate "CFI Flash device mapped on TQM8XXL"
	depends on MTD_CFI && PPC32 && 8xx && TQM8xxL
	help
	  The TQM8xxL PowerPC board has up to two banks of CFI-compliant
	  chips, currently uses AMD one. This 'mapping' driver supports
	  that arrangement, allowing the CFI probe and command set driver
	  code to communicate with the chips on the TQM8xxL board. More at
	  <http://www.denx.de/embedded-ppc-en.html>.

config MTD_RPXLITE
	tristate "CFI Flash device mapped on RPX Lite or CLLF"
	depends on MTD_CFI && PPC32 && 8xx && (RPXCLASSIC || RPXLITE)
	help
	  The RPXLite PowerPC board has CFI-compliant chips mapped in
	  a strange sparse mapping. This 'mapping' driver supports that
	  arrangement, allowing the CFI probe and command set driver code
	  to communicate with the chips on the RPXLite board. More at
	  <http://www.embeddedplanet.com/>.

config MTD_MBX860
	tristate "System flash on MBX860 board"
	depends on MTD_CFI && PPC32 && 8xx && MBX
	help
	  This enables access routines for the flash chips on the Motorola
	  MBX860 board. If you have one of these boards and would like
	  to use the flash chips on it, say 'Y'.

config MTD_DBOX2
	tristate "CFI Flash device mapped on D-Box2"
	depends on PPC32 && 8xx && DBOX2 && MTD_CFI_INTELSTD && MTD_CFI_INTELEXT && MTD_CFI_AMDSTD
	help
	  This enables access routines for the flash chips on the Nokia/Sagem
	  D-Box 2 board. If you have one of these boards and would like to use
	  the flash chips on it, say 'Y'.

config MTD_CFI_FLAGADM
	tristate "CFI Flash device mapping on FlagaDM"
	depends on PPC32 && 8xx && MTD_CFI
	help
	  Mapping for the Flaga digital module. If you don't have one, ignore
	  this setting.

config MTD_BEECH
	tristate "CFI Flash device mapped on IBM 405LP Beech"
	depends on MTD_CFI && PPC32 && 40x && BEECH
	help
	  This enables access routines for the flash chips on the IBM
	  405LP Beech board. If you have one of these boards and would like
	  to use the flash chips on it, say 'Y'.

config MTD_ARCTIC
	tristate "CFI Flash device mapped on IBM 405LP Arctic"
	depends on MTD_CFI && PPC32 && 40x && ARCTIC2
	help
	  This enables access routines for the flash chips on the IBM 405LP
	  Arctic board. If you have one of these boards and would like to
	  use the flash chips on it, say 'Y'.

config MTD_WALNUT
	tristate "Flash device mapped on IBM 405GP Walnut"
	depends on MTD_JEDECPROBE && PPC32 && 40x && WALNUT
	help
	  This enables access routines for the flash chips on the IBM 405GP
	  Walnut board. If you have one of these boards and would like to
	  use the flash chips on it, say 'Y'.

config MTD_EBONY
	tristate "Flash devices mapped on IBM 440GP Ebony"
	depends on MTD_JEDECPROBE && PPC32 && 44x && EBONY
	help
	  This enables access routines for the flash chips on the IBM 440GP
	  Ebony board. If you have one of these boards and would like to
	  use the flash chips on it, say 'Y'.

config MTD_OCOTEA
	tristate "Flash devices mapped on IBM 440GX Ocotea"
	depends on MTD_CFI && PPC32 && 44x && OCOTEA
	help
	  This enables access routines for the flash chips on the IBM 440GX
	  Ocotea board. If you have one of these boards and would like to
	  use the flash chips on it, say 'Y'.

config MTD_REDWOOD
	tristate "CFI Flash devices mapped on IBM Redwood"
	depends on MTD_CFI && PPC32 && 4xx && 40x && ( REDWOOD_4 || REDWOOD_5 || REDWOOD_6 )
	help
	  This enables access routines for the flash chips on the IBM
	  Redwood board. If you have one of these boards and would like to
	  use the flash chips on it, say 'Y'.

config MTD_CSTM_MIPS_IXX
	tristate "Flash chip mapping on ITE QED-4N-S01B, Globespan IVR or custom board"
	depends on MIPS && MTD_CFI && MTD_JEDECPROBE && MTD_PARTITIONS
	help
	  This provides a mapping driver for the Integrated Technology
	  Express, Inc (ITE) QED-4N-S01B eval board and the Globespan IVR
	  Reference Board. It provides the necessary addressing, length,
	  buswidth, vpp code and addition setup of the flash device for
	  these boards. In addition, this mapping driver can be used for
	  other boards via setting of the CONFIG_MTD_CSTM_MIPS_IXX_START/
	  LEN/BUSWIDTH parameters. This mapping will provide one mtd device
	  using one partition. The start address can be offset from the
	  beginning of flash and the len can be less than the total flash
	  device size to allow a window into the flash. Both CFI and JEDEC
	  probes are called.

config MTD_CSTM_MIPS_IXX_START
	hex "Physical start address of flash mapping"
	depends on MTD_CSTM_MIPS_IXX
	default "0x8000000"
	help
	  This is the physical memory location that the MTD driver will
	  use for the flash chips on your particular target board. 
	  Refer to the memory map which should hopefully be in the 
	  documentation for your board.

config MTD_CSTM_MIPS_IXX_LEN
	hex "Physical length of flash mapping"
	depends on MTD_CSTM_MIPS_IXX
	default "0x4000000"
	help
	  This is the total length that the MTD driver will use for the 
	  flash chips on your particular board.  Refer to the memory
	  map which should hopefully be in the documentation for your
	  board.

config MTD_CSTM_MIPS_IXX_BUSWIDTH
	int "Bus width in octets"
	depends on MTD_CSTM_MIPS_IXX
	default "2"
	help
	  This is the total bus width of the mapping of the flash chips
	  on your particular board.

config MTD_OCELOT
	tristate "Momenco Ocelot boot flash device"
	depends on MIPS && MOMENCO_OCELOT
	help
	  This enables access routines for the boot flash device and for the
	  NVRAM on the Momenco Ocelot board. If you have one of these boards
	  and would like access to either of these, say 'Y'.

config MTD_SOLUTIONENGINE
	tristate "CFI Flash device mapped on Hitachi SolutionEngine"
	depends on SUPERH && MTD_CFI && MTD_REDBOOT_PARTS
	help
	  This enables access to the flash chips on the Hitachi SolutionEngine and
	  similar boards. Say 'Y' if you are building a kernel for such a board.

config MTD_ARM_INTEGRATOR
	tristate "CFI Flash device mapped on ARM Integrator/P720T"
	depends on ARM && MTD_CFI

config MTD_CDB89712
	tristate "Cirrus CDB89712 evaluation board mappings"
	depends on ARM && MTD_CFI && ARCH_CDB89712
	help
	  This enables access to the flash or ROM chips on the CDB89712 board.
	  If you have such a board, say 'Y'.

config MTD_SA1100
	tristate "CFI Flash device mapped on StrongARM SA11x0"
	depends on ARM && MTD_CFI && ARCH_SA1100 && MTD_PARTITIONS
	help
	  This enables access to the flash chips on most platforms based on
	  the SA1100 and SA1110, including the Assabet and the Compaq iPAQ.
	  If you have such a board, say 'Y'.

config MTD_IPAQ
	tristate "CFI Flash device mapped on Compaq/HP iPAQ"
	depends on ARM && IPAQ_HANDHELD && MTD_CFI
	help
	  This provides a driver for the on-board flash of the iPAQ.

config MTD_DC21285
	tristate "CFI Flash device mapped on DC21285 Footbridge"
	depends on ARM && MTD_CFI && ARCH_FOOTBRIDGE && MTD_COMPLEX_MAPPINGS
	help
	  This provides a driver for the flash accessed using Intel's
	  21285 bridge used with Intel's StrongARM processors. More info at
	  <http://www.intel.com/design/bridge/docs/21285_documentation.htm>.

config MTD_IQ80310
	tristate "CFI Flash device mapped on the XScale IQ80310 board"
	depends on ARM && MTD_CFI && ARCH_IQ80310
	help
	  This enables access routines for the flash chips on the Intel XScale
	  IQ80310 evaluation board. If you have one of these boards and would 
	  like to use the flash chips on it, say 'Y'.

config MTD_IXP4XX
	tristate "CFI Flash device mapped on Intel IXP4xx based systems"
	depends on ARM && MTD_CFI && MTD_COMPLEX_MAPPINGS && ARCH_IXP4XX
	help
	  This enables MTD access to flash devices on platforms based 
	  on Intel's IXP4xx family of network processors such as the
	  IXDP425 and Coyote. If you have an IXP4xx based board and
	  would like to use the flash chips on it, say 'Y'.

config MTD_IXP2000
	tristate "CFI Flash device mapped on Intel IXP2000 based systems"
	depends on ARM && MTD_CFI && MTD_COMPLEX_MAPPINGS && ARCH_IXP2000
	help
	  This enables MTD access to flash devices on platforms based 
	  on Intel's IXP2000 family of network processors such as the
	  IXDP425 and Coyote. If you have an IXP2000 based board and
	  would like to use the flash chips on it, say 'Y'.

config MTD_EPXA10DB
	tristate "CFI Flash device mapped on Epxa10db"
	depends on ARM && MTD_CFI && MTD_PARTITIONS && ARCH_CAMELOT
	help
	  This enables support for the flash devices on the Altera
	  Excalibur XA10 Development Board. If you are building a kernel
	  for on of these boards then you should say 'Y' otherwise say 'N'.

config MTD_FORTUNET
	tristate "CFI Flash device mapped on the FortuNet board"
	depends on ARM && MTD_CFI && MTD_PARTITIONS && SA1100_FORTUNET
	help
	  This enables access to the Flash on the FortuNet board.  If you
	  have such a board, say 'Y'.

config MTD_AUTCPU12
	tristate "NV-RAM mapping AUTCPU12 board"
	depends on ARM && ARCH_AUTCPU12
	help
	  This enables access to the NV-RAM on autronix autcpu12 board.
	  If you have such a board, say 'Y'.

config MTD_EDB7312
	tristate "CFI Flash device mapped on EDB7312"
	depends on ARM && MTD_CFI
	help
	  This enables access to the CFI Flash on the Cogent EDB7312 board.
	  If you have such a board, say 'Y' here.

config MTD_IMPA7
	tristate "JEDEC Flash device mapped on impA7"
	depends on ARM && MTD_JEDECPROBE
	help
	  This enables access to the NOR Flash on the impA7 board of
	  implementa GmbH. If you have such a board, say 'Y' here.

config MTD_CEIVA
	tristate "JEDEC Flash device mapped on Ceiva/Polaroid PhotoMax Digital Picture Frame"
	depends on ARM && MTD_JEDECPROBE && ARCH_CEIVA
	help
	  This enables access to the flash chips on the Ceiva/Polaroid
	  PhotoMax Digital Picture Frame.
	  If you have such a device, say 'Y'.

config MTD_NOR_TOTO
	tristate "NOR Flash device on TOTO board"
	depends on ARM && ARCH_OMAP && OMAP_TOTO
	help
	  This enables access to the NOR flash on the Texas Instruments
	  TOTO board.

config MTD_H720X
	tristate "Hynix evaluation board mappings"
	depends on ARM && MTD_CFI && ( ARCH_H7201 || ARCH_H7202 )
	help
	  This enables access to the flash chips on the Hynix evaluation boards.
	  If you have such a board, say 'Y'.

config MTD_MPC1211
	tristate "CFI Flash device mapped on Interface MPC-1211"
	depends on SUPERH && SH_MPC1211 && MTD_CFI
	help
	  This enables access to the flash chips on the Interface MPC-1211(CTP/PCI/MPC-SH02).
	  If you have such a board, say 'Y'.

# This needs CFI or JEDEC, depending on the cards found.
config MTD_PCI
	tristate "PCI MTD driver"
	depends on MTD && PCI && MTD_COMPLEX_MAPPINGS
	help
	  Mapping for accessing flash devices on add-in cards like the Intel XScale
	  IQ80310 card, and the Intel EBSA285 card in blank ROM programming mode
	  (please see the manual for the link settings).

	  If you are not sure, say N.

config MTD_PCMCIA
	tristate "PCMCIA MTD driver"
	depends on MTD && PCMCIA && MTD_COMPLEX_MAPPINGS && BROKEN
	help
	  Map driver for accessing PCMCIA linear flash memory cards. These
	  cards are usually around 4-16MiB in size. This does not include
	  Compact Flash cards which are treated as IDE devices.

config MTD_UCLINUX
	tristate "Generic uClinux RAM/ROM filesystem support"
	depends on MTD_PARTITIONS && !MMU
	help
	  Map driver to support image based filesystems for uClinux.

config MTD_WRSBC8260
	tristate "Map driver for WindRiver PowerQUICC II MPC82xx board"
	depends on (SBC82xx || SBC8560)
	select MTD_PARTITIONS
	select MTD_MAP_BANK_WIDTH_4
	select MTD_MAP_BANK_WIDTH_1
	select MTD_CFI_I1
	select MTD_CFI_I4
	help
	  Map driver for WindRiver PowerQUICC II MPC82xx board. Drives
	  all three flash regions on CS0, CS1 and CS6 if they are configured
	  correctly by the boot loader.

config MTD_DMV182
        tristate "Map driver for Dy-4 SVME/DMV-182 board."
        depends on DMV182
        select MTD_PARTITIONS
	select MTD_MAP_BANK_WIDTH_32
	select MTD_CFI_I8
	select MTD_CFI_AMDSTD
        help
          Map driver for Dy-4 SVME/DMV-182 board.

config MTD_BAST
	tristate "Map driver for Simtec BAST (EB2410ITX) or Thorcom VR1000"
	depends on ARCH_BAST || MACH_VR1000
	select MTD_PARTITIONS
	select MTD_MAP_BANK_WIDTH_16
	select MTD_JEDECPROBE
	help
	  Map driver for NOR flash on the Simtec BAST (EB2410ITX), or the
	  Thorcom VR1000

	  Note, this driver *cannot* over-ride the WP link on the
	  board, or currently detect the state of the link.

config MTD_BAST_MAXSIZE
	int "Maximum size for BAST flash area (MiB)"
	depends on MTD_BAST
	default "4"

config MTD_SHARP_SL
	bool "ROM maped on Sharp SL Series"
	depends on MTD && ARCH_PXA
	help
	  This enables access to the flash chip on the Sharp SL Series of PDAs.

config MTD_PLATRAM
	tristate "Map driver for platfrom device RAM (mtd-ram)"
	depends on MTD
	select MTD_RAM
	help
	  Map driver for RAM areas described via the platform device
	  system.

	  This selection automatically selects the map_ram driver.

endmenu

