# drivers/mtd/maps/Kconfig
# $Id: Kconfig,v 1.60 2005/11/07 08:33:35 gleixner 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 ELAN
	select MTD_PARTITIONS
	select MTD_JEDECPROBE
	select MTD_CFI_AMDSTD
	help
	  This provides a driver for the on-board flash of the Technologic
	  System's TS-5500 board. The 2MB flash is split into 3 partitions
	  which are accessed as separate MTD devices.

	  mtd0 and mtd2 are the two BIOS drives, which use the resident
	  flash disk (RFD) flash translation layer.

	  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_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_MAINSTONE
	tristate "CFI Flash device mapped on Intel Mainstone XScale eval board"
	depends on MACH_MAINSTONE && MTD_CFI_INTELEXT
	select MTD_PARTITIONS
	help
	  This provides a driver for the on-board flash of the Intel
	  'Mainstone PXA27x 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_ALCHEMY
	tristate '  AMD Alchemy Pb1xxx/Db1xxx/RDK MTD support' 
	depends on SOC_AU1X00
	help
	  Flash memory access on AMD Alchemy Pb/Db/RDK Reference Boards

config MTD_MTX1
	tristate "4G Systems MTX-1 Flash device"
	depends on MIPS && MIPS_MTX1
	help
	  Flash memory access on 4G Systems MTX-1 Board. If you have one of
	  these boards and would like to use the flash chips on it, say 'Y'.

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 MTD_JEDECPROBE && 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 && 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 && (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 && 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 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 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 && 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 && 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 && 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 && 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 && 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 && ( 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_TQM834x
	tristate "Flash device mapped on TQ Components TQM834x Boards"
	depends on MTD_CFI && TQM834x
	help
	  This enables access routines for the flash chips on the
	  TQ Components TQM834x boards. 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 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 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 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 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 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 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 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 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 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 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 ARCH_EDB7312 && 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 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 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 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 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'.

config MTD_PQ2FADS
	tristate "JEDEC flash SIMM mapped on PQ2FADS and 8272ADS boards"
	depends on (ADS8272 || PQ2FADS) && MTD_PARTITIONS && MTD_JEDECPROBE && MTD_PHYSMAP && MTD_CFI_GEOMETRY && MTD_CFI_INTELEXT
	help
	 This enables access to flash SIMM on PQ2FADS-like boards

config MTD_OMAP_NOR
	tristate "TI OMAP board mappings"
	depends on MTD_CFI && ARCH_OMAP
	help
	  This enables access to the NOR flash chips on TI OMAP-based
	  boards defining flash platform devices and flash platform data.
	  These boards include the Innovator, H2, H3, OSK, Perseus2, and
	  more.  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_PCMCIA_ANONYMOUS
	bool "Use PCMCIA MTD drivers for anonymous PCMCIA cards"
	depends on MTD_PCMCIA
	default N
	help
	  If this option is enabled, PCMCIA cards which do not report
	  anything about themselves are assumed to be MTD cards.

	  If unsure, say N.

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 platform 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

