# SPDX-License-Identifier: GPL-2.0-only
menu "Mapping drivers for chip access"
	depends on MTD!=n
	depends on HAS_IOMEM

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 "Flash device in physical memory map"
	depends on MTD_CFI || MTD_JEDECPROBE || MTD_ROM || MTD_RAM || MTD_LPDDR
	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.

	  To compile this driver as a module, choose M here: the
	  module will be called physmap.

config MTD_PHYSMAP_COMPAT
	bool "Physmap compat support"
	depends on MTD_PHYSMAP
	default n
	help
	  Setup a simple mapping via the Kconfig options.  Normally the
	  physmap configuration options are done via your board's
	  resource file.

	  If unsure, say N here.

config MTD_PHYSMAP_START
	hex "Physical start address of flash mapping"
	depends on MTD_PHYSMAP_COMPAT
	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.

config MTD_PHYSMAP_LEN
	hex "Physical length of flash mapping"
	depends on MTD_PHYSMAP_COMPAT
	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.

config MTD_PHYSMAP_BANKWIDTH
	int "Bank width in octets"
	depends on MTD_PHYSMAP_COMPAT
	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.

config MTD_PHYSMAP_OF
	bool "Memory device in physical memory map based on OF description"
	depends on OF && MTD_PHYSMAP
	help
	  This provides a 'mapping' driver which allows the NOR Flash, ROM
	  and RAM 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_PHYSMAP_BT1_ROM
	bool "Baikal-T1 Boot ROMs OF-based physical memory map handling"
	depends on MTD_PHYSMAP_OF
	depends on MIPS_BAIKAL_T1 || COMPILE_TEST
	select MTD_COMPLEX_MAPPINGS
	select MULTIPLEXER
	select MUX_MMIO
	help
	  This provides some extra DT physmap parsing for the Baikal-T1
	  platforms, some detection and setting up ROMs-specific accessors.

config MTD_PHYSMAP_VERSATILE
	bool "ARM Versatile OF-based physical memory map handling"
	depends on MTD_PHYSMAP_OF
	depends on MFD_SYSCON
	default y if (ARCH_INTEGRATOR || ARCH_VERSATILE || ARCH_REALVIEW)
	help
	  This provides some extra DT physmap parsing for the ARM Versatile
	  platforms, basically to add a VPP (write protection) callback so
	  the flash can be taken out of write protection.

config MTD_PHYSMAP_GEMINI
	bool "Cortina Gemini OF-based physical memory map handling"
	depends on MTD_PHYSMAP_OF
	depends on MFD_SYSCON
	select MTD_COMPLEX_MAPPINGS
	default ARCH_GEMINI
	help
	  This provides some extra DT physmap parsing for the Gemini
	  platforms, some detection and setting up parallel mode on the
	  external interface.

config MTD_PHYSMAP_IXP4XX
	bool "Intel IXP4xx OF-based physical memory map handling"
	depends on MTD_PHYSMAP_OF
	depends on ARM
	select MTD_COMPLEX_MAPPINGS
	select MTD_CFI_BE_BYTE_SWAP if CPU_BIG_ENDIAN
	default ARCH_IXP4XX
	help
	  This provides some extra DT physmap parsing for the Intel IXP4xx
	  platforms, some elaborate endianness handling in particular.

config MTD_PHYSMAP_GPIO_ADDR
	bool "GPIO-assisted Flash Chip Support"
	depends on MTD_PHYSMAP
	depends on GPIOLIB || COMPILE_TEST
	depends on MTD_COMPLEX_MAPPINGS
	help
	  Extend the physmap driver to allow flashes to be partially
	  physically addressed and assisted by GPIOs.

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_SC520CDP
	tristate "CFI Flash device mapped on AMD SC520 CDP"
	depends on (MELAN || COMPILE_TEST) && 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 (MELAN || COMPILE_TEST) && MTD_CFI
	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 TS5500 || COMPILE_TEST
	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_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
	help
	  This provides a driver for the NOR flash attached to a PXA2xx chip.

config MTD_SCx200_DOCFLASH
	tristate "Flash device mapped with DOCCS on NatSemi SCx200"
	depends on SCx200 && MTD_CFI
	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 && PCI
	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_JEDECPROBE
	help
	  Support for flash chips on NETtel/SecureEdge/SnapGear boards.

config MTD_LANTIQ
	tristate "Lantiq SoC NOR support"
	depends on LANTIQ
	help
	  Support for NOR flash attached to the Lantiq SoC's External Bus Unit.

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_CFI_FLAGADM
	tristate "CFI Flash device mapping on FlagaDM"
	depends on PPC_8xx && MTD_CFI
	help
	  Mapping for the Flaga digital module. If you don't have one, ignore
	  this setting.

config MTD_SOLUTIONENGINE
	tristate "CFI Flash device mapped on Hitachi SolutionEngine"
	depends on SOLUTION_ENGINE && 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_SA1100
	tristate "CFI Flash device mapped on StrongARM SA11x0"
	depends on MTD_CFI && ARCH_SA1100
	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_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
	  <https://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 && MTD_CFI_ADV_OPTIONS
	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_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.

# 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
	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
	bool "Generic uClinux RAM/ROM filesystem support"
	depends on (MTD_RAM=y || MTD_ROM=y) && (!MMU || COLDFIRE)
	help
	  Map driver to support image based filesystems for uClinux.

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_RBTX4939
	tristate "Map driver for RBTX4939 board"
	depends on TOSHIBA_RBTX4939 && MTD_CFI && MTD_COMPLEX_MAPPINGS
	help
	  Map driver for NOR flash chips on RBTX4939 board.

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.

config MTD_VMU
	tristate "Map driver for Dreamcast VMU"
	depends on MAPLE
	help
	  This driver enables access to the Dreamcast Visual Memory Unit (VMU).

	  Most Dreamcast users will want to say Y here.

	  To build this as a module select M here, the module will be called
	  vmu-flash.

config MTD_PISMO
	tristate "MTD discovery driver for PISMO modules"
	depends on I2C
	depends on ARCH_VERSATILE
	help
	  This driver allows for discovery of PISMO modules - see
	  <http://www.pismoworld.org/>.  These are small modules containing
	  up to five memory devices (eg, SRAM, flash, DOC) described by an
	  I2C EEPROM.

	  This driver does not create any MTD maps itself; instead it
	  creates MTD physmap and MTD SRAM platform devices.  If you
	  enable this option, you should consider enabling MTD_PHYSMAP
	  and/or MTD_PLATRAM according to the devices on your module.

	  When built as a module, it will be called pismo.ko

endmenu
