# SPDX-License-Identifier: GPL-2.0-only
menuconfig MTD_RAW_NAND
	tristate "Raw/Parallel NAND Device Support"
	select MTD_NAND_CORE
	select MTD_NAND_ECC
	help
	  This enables support for accessing all type of raw/parallel
	  NAND flash devices. For further information see
	  <http://www.linux-mtd.infradead.org/doc/nand.html>.

if MTD_RAW_NAND

comment "Raw/parallel NAND flash controllers"

config MTD_NAND_DENALI
	tristate

config MTD_NAND_DENALI_PCI
	tristate "Denali NAND controller on Intel Moorestown"
	select MTD_NAND_DENALI
	depends on PCI
	help
	  Enable the driver for NAND flash on Intel Moorestown, using the
	  Denali NAND controller core.

config MTD_NAND_DENALI_DT
	tristate "Denali NAND controller as a DT device"
	select MTD_NAND_DENALI
	depends on HAS_DMA && HAVE_CLK && OF && HAS_IOMEM
	help
	  Enable the driver for NAND flash on platforms using a Denali NAND
	  controller as a DT device.

config MTD_NAND_AMS_DELTA
	tristate "Amstrad E3 NAND controller"
	depends on MACH_AMS_DELTA || COMPILE_TEST
	default y
	help
	  Support for NAND flash on Amstrad E3 (Delta).

config MTD_NAND_OMAP2
	tristate "OMAP2, OMAP3, OMAP4 and Keystone NAND controller"
	depends on ARCH_OMAP2PLUS || ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
	depends on HAS_IOMEM
	depends on OMAP_GPMC
	help
	  Support for NAND flash on Texas Instruments OMAP2, OMAP3, OMAP4
	  and Keystone platforms.

config MTD_NAND_OMAP_BCH
	depends on MTD_NAND_OMAP2
	bool "Support hardware based BCH error correction"
	default n
	select BCH
	help
	  This config enables the ELM hardware engine, which can be used to
	  locate and correct errors when using BCH ECC scheme. This offloads
	  the cpu from doing ECC error searching and correction. However some
	  legacy OMAP families like OMAP2xxx, OMAP3xxx do not have ELM engine
	  so this is optional for them.

config MTD_NAND_OMAP_BCH_BUILD
	def_tristate MTD_NAND_OMAP2 && MTD_NAND_OMAP_BCH

config MTD_NAND_AU1550
	tristate "Au1550/1200 NAND support"
	depends on MIPS_ALCHEMY
	help
	  This enables the driver for the NAND flash controller on the
	  AMD/Alchemy 1550 SOC.

config MTD_NAND_NDFC
	tristate "IBM/MCC 4xx NAND controller"
	depends on 4xx
	select MTD_NAND_ECC_SW_HAMMING
	select MTD_NAND_ECC_SW_HAMMING_SMC
	help
	  NDFC Nand Flash Controllers are integrated in IBM/AMCC's 4xx SoCs

config MTD_NAND_S3C2410
	tristate "Samsung S3C NAND controller"
	depends on ARCH_S3C64XX
	help
	  This enables the NAND flash controller on the S3C24xx and S3C64xx
	  SoCs

	  No board specific support is done by this driver, each board
	  must advertise a platform_device for the driver to attach.

config MTD_NAND_S3C2410_DEBUG
	bool "Samsung S3C NAND controller debug"
	depends on MTD_NAND_S3C2410
	help
	  Enable debugging of the S3C NAND driver

config MTD_NAND_S3C2410_CLKSTOP
	bool "Samsung S3C NAND IDLE clock stop"
	depends on MTD_NAND_S3C2410
	default n
	help
	  Stop the clock to the NAND controller when there is no chip
	  selected to save power. This will mean there is a small delay
	  when the is NAND chip selected or released, but will save
	  approximately 5mA of power when there is nothing happening.

config MTD_NAND_SHARPSL
	tristate "Sharp SL Series (C7xx + others) NAND controller"
	depends on ARCH_PXA || COMPILE_TEST
	depends on HAS_IOMEM

config MTD_NAND_CAFE
	tristate "OLPC CAFÉ NAND controller"
	depends on PCI
	select REED_SOLOMON
	select REED_SOLOMON_DEC16
	help
	  Use NAND flash attached to the CAFÉ chip designed for the OLPC
	  laptop.

config MTD_NAND_CS553X
	tristate "CS5535/CS5536 (AMD Geode companion) NAND controller"
	depends on X86_32
	depends on !UML && HAS_IOMEM
	help
	  The CS553x companion chips for the AMD Geode processor
	  include NAND flash controllers with built-in hardware ECC
	  capabilities; enabling this option will allow you to use
	  these. The driver will check the MSRs to verify that the
	  controller is enabled for NAND, and currently requires that
	  the controller be in MMIO mode.

	  If you say "m", the module will be called cs553x_nand.

config MTD_NAND_ATMEL
	tristate "Atmel AT91 NAND Flash/SmartMedia NAND controller"
	depends on ARCH_AT91 || COMPILE_TEST
	depends on HAS_IOMEM
	select GENERIC_ALLOCATOR
	select MFD_ATMEL_SMC
	help
	  Enables support for NAND Flash / Smart Media Card interface
	  on Atmel AT91 processors.

config MTD_NAND_ORION
	tristate "Marvell Orion NAND controller"
	depends on PLAT_ORION
	help
	  This enables the NAND flash controller on Orion machines.

	  No board specific support is done by this driver, each board
	  must advertise a platform_device for the driver to attach.

config MTD_NAND_MARVELL
	tristate "Marvell EBU NAND controller"
	depends on PXA3xx || ARCH_MMP || PLAT_ORION || ARCH_MVEBU || \
		   COMPILE_TEST
	depends on HAS_IOMEM
	help
	  This enables the NAND flash controller driver for Marvell boards,
	  including:
	  - PXA3xx processors (NFCv1)
	  - 32-bit Armada platforms (XP, 37x, 38x, 39x) (NFCv2)
	  - 64-bit Aramda platforms (7k, 8k, ac5) (NFCv2)

config MTD_NAND_SLC_LPC32XX
	tristate "NXP LPC32xx SLC NAND controller"
	depends on ARCH_LPC32XX || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Enables support for NXP's LPC32XX SLC (i.e. for Single Level Cell
	  chips) NAND controller. This is the default for the PHYTEC 3250
	  reference board which contains a NAND256R3A2CZA6 chip.

	  Please check the actual NAND chip connected and its support
	  by the SLC NAND controller.

config MTD_NAND_MLC_LPC32XX
	tristate "NXP LPC32xx MLC NAND controller"
	depends on ARCH_LPC32XX || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Uses the LPC32XX MLC (i.e. for Multi Level Cell chips) NAND
	  controller. This is the default for the WORK92105 controller
	  board.

	  Please check the actual NAND chip connected and its support
	  by the MLC NAND controller.

config MTD_NAND_PASEMI
	tristate "PA Semi PWRficient NAND controller"
	depends on PPC_PASEMI
	help
	  Enables support for NAND Flash interface on PA Semi PWRficient
	  based boards

source "drivers/mtd/nand/raw/brcmnand/Kconfig"

config MTD_NAND_BCM47XXNFLASH
	tristate "BCM4706 BCMA NAND controller"
	depends on BCMA_NFLASH
	depends on BCMA
	help
	  BCMA bus can have various flash memories attached, they are
	  registered by bcma as platform devices. This enables driver for
	  NAND flash memories. For now only BCM4706 is supported.

config MTD_NAND_MPC5121_NFC
	tristate "MPC5121 NAND controller"
	depends on PPC_MPC512x
	help
	  This enables the driver for the NAND flash controller on the
	  MPC5121 SoC.

config MTD_NAND_GPMI_NAND
	tristate "Freescale GPMI NAND controller"
	depends on MXS_DMA
	help
	  Enables NAND Flash support for IMX23, IMX28 or IMX6.
	  The GPMI controller is very powerful, with the help of BCH
	  module, it can do the hardware ECC. The GPMI supports several
	  NAND flashs at the same time.

config MTD_NAND_FSL_ELBC
	tristate "Freescale eLBC NAND controller"
	depends on FSL_SOC
	select FSL_LBC
	help
	  Various Freescale chips, including the 8313, include a NAND Flash
	  Controller Module with built-in hardware ECC capabilities.
	  Enabling this option will enable you to use this to control
	  external NAND devices.

config MTD_NAND_FSL_IFC
	tristate "Freescale IFC NAND controller"
	depends on FSL_SOC || ARCH_LAYERSCAPE || SOC_LS1021A || COMPILE_TEST
	depends on HAS_IOMEM
	select FSL_IFC
	select MEMORY
	help
	  Various Freescale chips e.g P1010, include a NAND Flash machine
	  with built-in hardware ECC capabilities.
	  Enabling this option will enable you to use this to control
	  external NAND devices.

config MTD_NAND_FSL_UPM
	tristate "Freescale UPM NAND controller"
	depends on PPC_83xx || PPC_85xx
	select FSL_LBC
	help
	  Enables support for NAND Flash chips wired onto Freescale PowerPC
	  processor localbus with User-Programmable Machine support.

config MTD_NAND_VF610_NFC
	tristate "Freescale VF610/MPC5125 NAND controller"
	depends on (SOC_VF610 || COMPILE_TEST)
	depends on HAS_IOMEM
	help
	  Enables support for NAND Flash Controller on some Freescale
	  processors like the VF610, MPC5125, MCF54418 or Kinetis K70.
	  The driver supports a maximum 2k page size. With 2k pages and
	  64 bytes or more of OOB, hardware ECC with up to 32-bit error
	  correction is supported. Hardware ECC is only enabled through
	  device tree.

config MTD_NAND_MXC
	tristate "Freescale MXC NAND controller"
	depends on ARCH_MXC || COMPILE_TEST
	depends on HAS_IOMEM && OF
	help
	  This enables the driver for the NAND flash controller on the
	  MXC processors.

config MTD_NAND_SH_FLCTL
	tristate "Renesas SuperH FLCTL NAND controller"
	depends on SUPERH || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Several Renesas SuperH CPU has FLCTL. This option enables support
	  for NAND Flash using FLCTL.

config MTD_NAND_DAVINCI
	tristate "DaVinci/Keystone NAND controller"
	depends on ARCH_DAVINCI || (ARCH_KEYSTONE && TI_AEMIF) || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Enable the driver for NAND flash chips on Texas Instruments
	  DaVinci/Keystone processors.

config MTD_NAND_TXX9NDFMC
	tristate "TXx9 NAND controller"
	depends on SOC_TX4938 || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  This enables the NAND flash controller on the TXx9 SoCs.

config MTD_NAND_SOCRATES
	tristate "Socrates NAND controller"
	depends on SOCRATES
	help
	  Enables support for NAND Flash chips wired onto Socrates board.

source "drivers/mtd/nand/raw/ingenic/Kconfig"

config MTD_NAND_FSMC
	tristate "ST Micros FSMC NAND controller"
	depends on OF && HAS_IOMEM
	depends on PLAT_SPEAR || ARCH_NOMADIK || ARCH_U8500 || COMPILE_TEST
	help
	  Enables support for NAND Flash chips on the ST Microelectronics
	  Flexible Static Memory Controller (FSMC)

config MTD_NAND_XWAY
	bool "Lantiq XWAY NAND controller"
	depends on LANTIQ && SOC_TYPE_XWAY
	help
	  Enables support for NAND Flash chips on Lantiq XWAY SoCs. NAND is attached
	  to the External Bus Unit (EBU).

config MTD_NAND_SUNXI
	tristate "Allwinner NAND controller"
	depends on ARCH_SUNXI || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Enables support for NAND Flash chips on Allwinner SoCs.

config MTD_NAND_HISI504
	tristate "Hisilicon Hip04 NAND controller"
	depends on ARCH_HISI || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Enables support for NAND controller on Hisilicon SoC Hip04.

config MTD_NAND_QCOM
	tristate "QCOM NAND controller"
	depends on ARCH_QCOM || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Enables support for NAND flash chips on SoCs containing the EBI2 NAND
	  controller. This controller is found on IPQ806x SoC.

config MTD_NAND_MTK
	tristate "MTK NAND controller"
	depends on MTD_NAND_ECC_MEDIATEK
	depends on ARCH_MEDIATEK || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Enables support for NAND controller on MTK SoCs.
	  This controller is found on mt27xx, mt81xx, mt65xx SoCs.

config MTD_NAND_MXIC
	tristate "Macronix raw NAND controller"
	depends on HAS_IOMEM || COMPILE_TEST
	help
	  This selects the Macronix raw NAND controller driver.

config MTD_NAND_TEGRA
	tristate "NVIDIA Tegra NAND controller"
	depends on ARCH_TEGRA || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  Enables support for NAND flash controller on NVIDIA Tegra SoC.
	  The driver has been developed and tested on a Tegra 2 SoC. DMA
	  support, raw read/write page as well as HW ECC read/write page
	  is supported. Extra OOB bytes when using HW ECC are currently
	  not supported.

config MTD_NAND_STM32_FMC2
	tristate "Support for NAND controller on STM32MP SoCs"
	depends on ARCH_STM32 || COMPILE_TEST
	select MFD_SYSCON
	help
	  Enables support for NAND Flash chips on SoCs containing the FMC2
	  NAND controller. This controller is found on STM32MP SoCs.
	  The controller supports a maximum 8k page size and supports
	  a maximum 8-bit correction error per sector of 512 bytes.

config MTD_NAND_MESON
	tristate "Support for NAND controller on Amlogic's Meson SoCs"
	depends on COMMON_CLK && (ARCH_MESON || COMPILE_TEST)
	select MFD_SYSCON
	help
	  Enables support for NAND controller on Amlogic's Meson SoCs.
	  This controller is found on Meson SoCs.

config MTD_NAND_GPIO
	tristate "GPIO assisted NAND controller"
	depends on GPIOLIB || COMPILE_TEST
	depends on HAS_IOMEM
	help
	  This enables a NAND flash driver where control signals are
	  connected to GPIO pins, and commands and data are communicated
	  via a memory mapped interface.

config MTD_NAND_PLATFORM
	tristate "Generic NAND controller"
	depends on HAS_IOMEM
	help
	  This implements a generic NAND driver for on-SOC platform
	  devices. You will need to provide platform-specific functions
	  via platform_data.

config MTD_NAND_CADENCE
	tristate "Support Cadence NAND (HPNFC) controller"
	depends on OF && HAS_IOMEM
	help
	  Enable the driver for NAND flash on platforms using a Cadence NAND
	  controller.

config MTD_NAND_ARASAN
	tristate "Support for Arasan NAND flash controller"
	depends on HAS_IOMEM && HAS_DMA
	select BCH
	help
	  Enables the driver for the Arasan NAND flash controller on
	  Zynq Ultrascale+ MPSoC.

config MTD_NAND_INTEL_LGM
	tristate "Support for NAND controller on Intel LGM SoC"
	depends on OF
	depends on HAS_IOMEM
	help
	  Enables support for NAND Flash chips on Intel's LGM SoC.
	  NAND flash controller interfaced through the External Bus Unit.

config MTD_NAND_ROCKCHIP
	tristate "Rockchip NAND controller"
	depends on ARCH_ROCKCHIP && HAS_IOMEM
	help
	  Enables support for NAND controller on Rockchip SoCs.
	  There are four different versions of NAND FLASH Controllers,
	  including:
	    NFC v600: RK2928, RK3066, RK3188
	    NFC v622: RK3036, RK3128
	    NFC v800: RK3308, RV1108
	    NFC v900: PX30, RK3326

config MTD_NAND_PL35X
	tristate "ARM PL35X NAND controller"
	depends on OF
	depends on PL353_SMC
	help
	  Enables support for PrimeCell SMC PL351 and PL353 NAND
	  controller found on Zynq7000.

config MTD_NAND_RENESAS
	tristate "Renesas R-Car Gen3 & RZ/N1 NAND controller"
	depends on ARCH_RENESAS || COMPILE_TEST
	help
	  Enables support for the NAND controller found on Renesas R-Car
	  Gen3 and RZ/N1 SoC families.

comment "Misc"

config MTD_SM_COMMON
	tristate
	default n

config MTD_NAND_NANDSIM
	tristate "Support for NAND Flash Simulator"
	help
	  The simulator may simulate various NAND flash chips for the
	  MTD nand layer.

config MTD_NAND_RICOH
	tristate "Ricoh xD card reader"
	default n
	depends on PCI
	select MTD_SM_COMMON
	help
	  Enable support for Ricoh R5C852 xD card reader
	  You also need to enable either
	  NAND SSFDC (SmartMedia) read only translation layer' or new
	  experimental, readwrite
	  'SmartMedia/xD new translation layer'

config MTD_NAND_DISKONCHIP
	tristate "DiskOnChip 2000, Millennium and Millennium Plus (NAND reimplementation)"
	depends on HAS_IOMEM
	select REED_SOLOMON
	select REED_SOLOMON_DEC16
	help
	  This is a reimplementation of M-Systems DiskOnChip 2000,
	  Millennium and Millennium Plus as a standard NAND device driver,
	  as opposed to the earlier self-contained MTD device drivers.
	  This should enable, among other things, proper JFFS2 operation on
	  these devices.

config MTD_NAND_DISKONCHIP_PROBE_ADVANCED
	bool "Advanced detection options for DiskOnChip"
	depends on MTD_NAND_DISKONCHIP
	help
	  This option allows you to specify nonstandard address at which to
	  probe for a DiskOnChip, or to change the detection options.  You
	  are unlikely to need any of this unless you are using LinuxBIOS.
	  Say 'N'.

config MTD_NAND_DISKONCHIP_PROBE_ADDRESS
	hex "Physical address of DiskOnChip" if MTD_NAND_DISKONCHIP_PROBE_ADVANCED
	depends on MTD_NAND_DISKONCHIP
	default "0"
	help
	  By default, the probe for DiskOnChip devices will look for a
	  DiskOnChip at every multiple of 0x2000 between 0xC8000 and 0xEE000.
	  This option allows you to specify a single address at which to probe
	  for the device, which is useful if you have other devices in that
	  range which get upset when they are probed.

	  (Note that on PowerPC, the normal probe will only check at
	  0xE4000000.)

	  Normally, you should leave this set to zero, to allow the probe at
	  the normal addresses.

config MTD_NAND_DISKONCHIP_PROBE_HIGH
	bool "Probe high addresses"
	depends on MTD_NAND_DISKONCHIP_PROBE_ADVANCED
	help
	  By default, the probe for DiskOnChip devices will look for a
	  DiskOnChip at every multiple of 0x2000 between 0xC8000 and 0xEE000.
	  This option changes to make it probe between 0xFFFC8000 and
	  0xFFFEE000.  Unless you are using LinuxBIOS, this is unlikely to be
	  useful to you.  Say 'N'.

config MTD_NAND_DISKONCHIP_BBTWRITE
	bool "Allow BBT writes on DiskOnChip Millennium and 2000TSOP"
	depends on MTD_NAND_DISKONCHIP
	help
	  On DiskOnChip devices shipped with the INFTL filesystem (Millennium
	  and 2000 TSOP/Alon), Linux reserves some space at the end of the
	  device for the Bad Block Table (BBT).  If you have existing INFTL
	  data on your device (created by non-Linux tools such as M-Systems'
	  DOS drivers), your data might overlap the area Linux wants to use for
	  the BBT.  If this is a concern for you, leave this option disabled and
	  Linux will not write BBT data into this area.
	  The downside of leaving this option disabled is that if bad blocks
	  are detected by Linux, they will not be recorded in the BBT, which
	  could cause future problems.
	  Once you enable this option, new filesystems (INFTL or others, created
	  in Linux or other operating systems) will not use the reserved area.
	  The only reason not to enable this option is to prevent damage to
	  preexisting filesystems.
	  Even if you leave this disabled, you can enable BBT writes at module
	  load time (assuming you build diskonchip as a module) with the module
	  parameter "inftl_bbt_write=1".

endif # MTD_RAW_NAND
