# drivers/mtd/maps/Kconfig
# $Id: Kconfig,v 1.61 2005/11/07 11:14:26 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 "0"
	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 SPARC && 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 && MTD_CONCAT
	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
	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 succeed.

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 "LASAT flash device"
	depends on LASAT && MTD_CFI
	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_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_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
	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

