# 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"
	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 || MTD_JEDECPROBE || MTD_ROM
	help
	  This provides a 'mapping' driver which allows the NOR Flash and
	  ROM driver code to communicate with 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 octet 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_PHYSMAP_OF
	tristate "Flash device in physical memory map based on OF description"
	depends on PPC_OF && (MTD_CFI || MTD_JEDECPROBE || MTD_ROM)
	help
	  This provides a 'mapping' driver which allows the NOR Flash and
	  ROM driver code to communicate with chips which are mapped
	  physically into the CPU's memory. The mapping description here is
	  taken from OF device tree.

config MTD_PMC_MSP_EVM
	tristate "CFI Flash device mapped on PMC-Sierra MSP"
	depends on PMC_MSP && MTD_CFI
	select MTD_PARTITIONS
	help
	  This provides a 'mapping' driver which supports the way
	  in which user-programmable flash chips are connected on the
	  PMC-Sierra MSP eval/demo boards.

choice
	prompt "Maximum mappable memory available for flash IO"
	depends on MTD_PMC_MSP_EVM
	default MSP_FLASH_MAP_LIMIT_32M

config MSP_FLASH_MAP_LIMIT_32M
	bool "32M"

endchoice

config MSP_FLASH_MAP_LIMIT
	hex
	default "0x02000000"
	depends on MSP_FLASH_MAP_LIMIT_32M

config MTD_PMC_MSP_RAMROOT
	tristate "Embedded RAM block device for root on PMC-Sierra MSP"
	depends on PMC_MSP_EMBEDDED_ROOTFS && \
			(MTD_BLOCK || MTD_BLOCK_RO) && \
			MTD_RAM
	help
	  This provides support for the embedded root file system
          on PMC MSP devices.  This memory is mapped as a MTD block device.

config MTD_SUN_UFLASH
	tristate "Sun Microsystems userflash support"
	depends on SPARC && MTD_CFI && PCI
	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_PXA2XX
	tristate "CFI Flash device mapped on Intel XScale PXA2xx based boards"
	depends on (PXA25x || PXA27x) && MTD_CFI_INTELEXT
	select MTD_PARTITIONS
	help
	  This provides a driver for the NOR flash attached to a PXA2xx chip.

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_ESB2ROM
        tristate "BIOS flash chip on Intel ESB Controller Hub 2"
        depends on X86 && MTD_JEDECPROBE && PCI
        help
          Support for treating the BIOS flash chip on ESB2 motherboards
          as an MTD device - with this you can reprogram your BIOS.

          BE VERY CAREFUL.

config MTD_CK804XROM
	tristate "BIOS flash chip on Nvidia CK804"
	depends on X86 && MTD_JEDECPROBE && PCI
	help
	  Support for treating the BIOS flash chip on nvidia 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_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 && MTD_PARTITIONS && MTD_CFI
	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_MTX1 && MTD_CFI
	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_WALNUT
	tristate "Flash device mapped on IBM 405GP Walnut"
	depends on MTD_JEDECPROBE && WALNUT && !PPC_MERGE
	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 && !PPC_MERGE
	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 && !PPC_MERGE
	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_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_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 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 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 mapped on Sharp SL Series"
	depends on ARCH_PXA
	help
	  This enables access to the flash chip on the Sharp SL Series of PDAs.

config MTD_INTEL_VR_NOR
	tristate "NOR flash on Intel Vermilion Range Expansion Bus CS0"
	depends on PCI
	help
	  Map driver for a NOR flash bank located on the Expansion Bus of the
	  Intel Vermilion Range chipset.

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

	  This selection automatically selects the map_ram driver.

endmenu

