18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ciconfig MTD_NAND_ECC_SW_HAMMING
38c2ecf20Sopenharmony_ci	tristate
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ciconfig MTD_NAND_ECC_SW_HAMMING_SMC
68c2ecf20Sopenharmony_ci	bool "NAND ECC Smart Media byte order"
78c2ecf20Sopenharmony_ci	depends on MTD_NAND_ECC_SW_HAMMING
88c2ecf20Sopenharmony_ci	default n
98c2ecf20Sopenharmony_ci	help
108c2ecf20Sopenharmony_ci	  Software ECC according to the Smart Media Specification.
118c2ecf20Sopenharmony_ci	  The original Linux implementation had byte 0 and 1 swapped.
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_cimenuconfig MTD_RAW_NAND
148c2ecf20Sopenharmony_ci	tristate "Raw/Parallel NAND Device Support"
158c2ecf20Sopenharmony_ci	select MTD_NAND_CORE
168c2ecf20Sopenharmony_ci	select MTD_NAND_ECC
178c2ecf20Sopenharmony_ci	select MTD_NAND_ECC_SW_HAMMING
188c2ecf20Sopenharmony_ci	help
198c2ecf20Sopenharmony_ci	  This enables support for accessing all type of raw/parallel
208c2ecf20Sopenharmony_ci	  NAND flash devices. For further information see
218c2ecf20Sopenharmony_ci	  <http://www.linux-mtd.infradead.org/doc/nand.html>.
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ciif MTD_RAW_NAND
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciconfig MTD_NAND_ECC_SW_BCH
268c2ecf20Sopenharmony_ci	bool "Support software BCH ECC"
278c2ecf20Sopenharmony_ci	select BCH
288c2ecf20Sopenharmony_ci	default n
298c2ecf20Sopenharmony_ci	help
308c2ecf20Sopenharmony_ci	  This enables support for software BCH error correction. Binary BCH
318c2ecf20Sopenharmony_ci	  codes are more powerful and cpu intensive than traditional Hamming
328c2ecf20Sopenharmony_ci	  ECC codes. They are used with NAND devices requiring more than 1 bit
338c2ecf20Sopenharmony_ci	  of error correction.
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_cicomment "Raw/parallel NAND flash controllers"
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ciconfig MTD_NAND_DENALI
388c2ecf20Sopenharmony_ci	tristate
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ciconfig MTD_NAND_DENALI_PCI
418c2ecf20Sopenharmony_ci	tristate "Denali NAND controller on Intel Moorestown"
428c2ecf20Sopenharmony_ci	select MTD_NAND_DENALI
438c2ecf20Sopenharmony_ci	depends on PCI
448c2ecf20Sopenharmony_ci	help
458c2ecf20Sopenharmony_ci	  Enable the driver for NAND flash on Intel Moorestown, using the
468c2ecf20Sopenharmony_ci	  Denali NAND controller core.
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ciconfig MTD_NAND_DENALI_DT
498c2ecf20Sopenharmony_ci	tristate "Denali NAND controller as a DT device"
508c2ecf20Sopenharmony_ci	select MTD_NAND_DENALI
518c2ecf20Sopenharmony_ci	depends on HAS_DMA && HAVE_CLK && OF
528c2ecf20Sopenharmony_ci	help
538c2ecf20Sopenharmony_ci	  Enable the driver for NAND flash on platforms using a Denali NAND
548c2ecf20Sopenharmony_ci	  controller as a DT device.
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ciconfig MTD_NAND_AMS_DELTA
578c2ecf20Sopenharmony_ci	tristate "Amstrad E3 NAND controller"
588c2ecf20Sopenharmony_ci	depends on MACH_AMS_DELTA || COMPILE_TEST
598c2ecf20Sopenharmony_ci	default y
608c2ecf20Sopenharmony_ci	help
618c2ecf20Sopenharmony_ci	  Support for NAND flash on Amstrad E3 (Delta).
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ciconfig MTD_NAND_OMAP2
648c2ecf20Sopenharmony_ci	tristate "OMAP2, OMAP3, OMAP4 and Keystone NAND controller"
658c2ecf20Sopenharmony_ci	depends on ARCH_OMAP2PLUS || ARCH_KEYSTONE || COMPILE_TEST
668c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
678c2ecf20Sopenharmony_ci	help
688c2ecf20Sopenharmony_ci	  Support for NAND flash on Texas Instruments OMAP2, OMAP3, OMAP4
698c2ecf20Sopenharmony_ci	  and Keystone platforms.
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ciconfig MTD_NAND_OMAP_BCH
728c2ecf20Sopenharmony_ci	depends on MTD_NAND_OMAP2
738c2ecf20Sopenharmony_ci	bool "Support hardware based BCH error correction"
748c2ecf20Sopenharmony_ci	default n
758c2ecf20Sopenharmony_ci	select BCH
768c2ecf20Sopenharmony_ci	help
778c2ecf20Sopenharmony_ci	  This config enables the ELM hardware engine, which can be used to
788c2ecf20Sopenharmony_ci	  locate and correct errors when using BCH ECC scheme. This offloads
798c2ecf20Sopenharmony_ci	  the cpu from doing ECC error searching and correction. However some
808c2ecf20Sopenharmony_ci	  legacy OMAP families like OMAP2xxx, OMAP3xxx do not have ELM engine
818c2ecf20Sopenharmony_ci	  so this is optional for them.
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_ciconfig MTD_NAND_OMAP_BCH_BUILD
848c2ecf20Sopenharmony_ci	def_tristate MTD_NAND_OMAP2 && MTD_NAND_OMAP_BCH
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ciconfig MTD_NAND_AU1550
878c2ecf20Sopenharmony_ci	tristate "Au1550/1200 NAND support"
888c2ecf20Sopenharmony_ci	depends on MIPS_ALCHEMY
898c2ecf20Sopenharmony_ci	help
908c2ecf20Sopenharmony_ci	  This enables the driver for the NAND flash controller on the
918c2ecf20Sopenharmony_ci	  AMD/Alchemy 1550 SOC.
928c2ecf20Sopenharmony_ci
938c2ecf20Sopenharmony_ciconfig MTD_NAND_NDFC
948c2ecf20Sopenharmony_ci	tristate "IBM/MCC 4xx NAND controller"
958c2ecf20Sopenharmony_ci	depends on 4xx
968c2ecf20Sopenharmony_ci	select MTD_NAND_ECC_SW_HAMMING_SMC
978c2ecf20Sopenharmony_ci	help
988c2ecf20Sopenharmony_ci	  NDFC Nand Flash Controllers are integrated in IBM/AMCC's 4xx SoCs
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_ciconfig MTD_NAND_S3C2410
1018c2ecf20Sopenharmony_ci	tristate "Samsung S3C NAND controller"
1028c2ecf20Sopenharmony_ci	depends on ARCH_S3C24XX || ARCH_S3C64XX
1038c2ecf20Sopenharmony_ci	help
1048c2ecf20Sopenharmony_ci	  This enables the NAND flash controller on the S3C24xx and S3C64xx
1058c2ecf20Sopenharmony_ci	  SoCs
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci	  No board specific support is done by this driver, each board
1088c2ecf20Sopenharmony_ci	  must advertise a platform_device for the driver to attach.
1098c2ecf20Sopenharmony_ci
1108c2ecf20Sopenharmony_ciconfig MTD_NAND_S3C2410_DEBUG
1118c2ecf20Sopenharmony_ci	bool "Samsung S3C NAND controller debug"
1128c2ecf20Sopenharmony_ci	depends on MTD_NAND_S3C2410
1138c2ecf20Sopenharmony_ci	help
1148c2ecf20Sopenharmony_ci	  Enable debugging of the S3C NAND driver
1158c2ecf20Sopenharmony_ci
1168c2ecf20Sopenharmony_ciconfig MTD_NAND_S3C2410_CLKSTOP
1178c2ecf20Sopenharmony_ci	bool "Samsung S3C NAND IDLE clock stop"
1188c2ecf20Sopenharmony_ci	depends on MTD_NAND_S3C2410
1198c2ecf20Sopenharmony_ci	default n
1208c2ecf20Sopenharmony_ci	help
1218c2ecf20Sopenharmony_ci	  Stop the clock to the NAND controller when there is no chip
1228c2ecf20Sopenharmony_ci	  selected to save power. This will mean there is a small delay
1238c2ecf20Sopenharmony_ci	  when the is NAND chip selected or released, but will save
1248c2ecf20Sopenharmony_ci	  approximately 5mA of power when there is nothing happening.
1258c2ecf20Sopenharmony_ci
1268c2ecf20Sopenharmony_ciconfig MTD_NAND_TANGO
1278c2ecf20Sopenharmony_ci	tristate "Tango NAND controller"
1288c2ecf20Sopenharmony_ci	depends on ARCH_TANGO || COMPILE_TEST
1298c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
1308c2ecf20Sopenharmony_ci	help
1318c2ecf20Sopenharmony_ci	  Enables the NAND Flash controller on Tango chips.
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ciconfig MTD_NAND_SHARPSL
1348c2ecf20Sopenharmony_ci	tristate "Sharp SL Series (C7xx + others) NAND controller"
1358c2ecf20Sopenharmony_ci	depends on ARCH_PXA || COMPILE_TEST
1368c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
1378c2ecf20Sopenharmony_ci
1388c2ecf20Sopenharmony_ciconfig MTD_NAND_CAFE
1398c2ecf20Sopenharmony_ci	tristate "OLPC CAFÉ NAND controller"
1408c2ecf20Sopenharmony_ci	depends on PCI
1418c2ecf20Sopenharmony_ci	select REED_SOLOMON
1428c2ecf20Sopenharmony_ci	select REED_SOLOMON_DEC16
1438c2ecf20Sopenharmony_ci	help
1448c2ecf20Sopenharmony_ci	  Use NAND flash attached to the CAFÉ chip designed for the OLPC
1458c2ecf20Sopenharmony_ci	  laptop.
1468c2ecf20Sopenharmony_ci
1478c2ecf20Sopenharmony_ciconfig MTD_NAND_CS553X
1488c2ecf20Sopenharmony_ci	tristate "CS5535/CS5536 (AMD Geode companion) NAND controller"
1498c2ecf20Sopenharmony_ci	depends on X86_32
1508c2ecf20Sopenharmony_ci	depends on !UML && HAS_IOMEM
1518c2ecf20Sopenharmony_ci	help
1528c2ecf20Sopenharmony_ci	  The CS553x companion chips for the AMD Geode processor
1538c2ecf20Sopenharmony_ci	  include NAND flash controllers with built-in hardware ECC
1548c2ecf20Sopenharmony_ci	  capabilities; enabling this option will allow you to use
1558c2ecf20Sopenharmony_ci	  these. The driver will check the MSRs to verify that the
1568c2ecf20Sopenharmony_ci	  controller is enabled for NAND, and currently requires that
1578c2ecf20Sopenharmony_ci	  the controller be in MMIO mode.
1588c2ecf20Sopenharmony_ci
1598c2ecf20Sopenharmony_ci	  If you say "m", the module will be called cs553x_nand.
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ciconfig MTD_NAND_ATMEL
1628c2ecf20Sopenharmony_ci	tristate "Atmel AT91 NAND Flash/SmartMedia NAND controller"
1638c2ecf20Sopenharmony_ci	depends on ARCH_AT91 || COMPILE_TEST
1648c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
1658c2ecf20Sopenharmony_ci	select GENERIC_ALLOCATOR
1668c2ecf20Sopenharmony_ci	select MFD_ATMEL_SMC
1678c2ecf20Sopenharmony_ci	help
1688c2ecf20Sopenharmony_ci	  Enables support for NAND Flash / Smart Media Card interface
1698c2ecf20Sopenharmony_ci	  on Atmel AT91 processors.
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ciconfig MTD_NAND_ORION
1728c2ecf20Sopenharmony_ci	tristate "Marvell Orion NAND controller"
1738c2ecf20Sopenharmony_ci	depends on PLAT_ORION
1748c2ecf20Sopenharmony_ci	help
1758c2ecf20Sopenharmony_ci	  This enables the NAND flash controller on Orion machines.
1768c2ecf20Sopenharmony_ci
1778c2ecf20Sopenharmony_ci	  No board specific support is done by this driver, each board
1788c2ecf20Sopenharmony_ci	  must advertise a platform_device for the driver to attach.
1798c2ecf20Sopenharmony_ci
1808c2ecf20Sopenharmony_ciconfig MTD_NAND_MARVELL
1818c2ecf20Sopenharmony_ci	tristate "Marvell EBU NAND controller"
1828c2ecf20Sopenharmony_ci	depends on PXA3xx || ARCH_MMP || PLAT_ORION || ARCH_MVEBU || \
1838c2ecf20Sopenharmony_ci		   COMPILE_TEST
1848c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
1858c2ecf20Sopenharmony_ci	help
1868c2ecf20Sopenharmony_ci	  This enables the NAND flash controller driver for Marvell boards,
1878c2ecf20Sopenharmony_ci	  including:
1888c2ecf20Sopenharmony_ci	  - PXA3xx processors (NFCv1)
1898c2ecf20Sopenharmony_ci	  - 32-bit Armada platforms (XP, 37x, 38x, 39x) (NFCv2)
1908c2ecf20Sopenharmony_ci	  - 64-bit Aramda platforms (7k, 8k) (NFCv2)
1918c2ecf20Sopenharmony_ci
1928c2ecf20Sopenharmony_ciconfig MTD_NAND_SLC_LPC32XX
1938c2ecf20Sopenharmony_ci	tristate "NXP LPC32xx SLC NAND controller"
1948c2ecf20Sopenharmony_ci	depends on ARCH_LPC32XX || COMPILE_TEST
1958c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
1968c2ecf20Sopenharmony_ci	help
1978c2ecf20Sopenharmony_ci	  Enables support for NXP's LPC32XX SLC (i.e. for Single Level Cell
1988c2ecf20Sopenharmony_ci	  chips) NAND controller. This is the default for the PHYTEC 3250
1998c2ecf20Sopenharmony_ci	  reference board which contains a NAND256R3A2CZA6 chip.
2008c2ecf20Sopenharmony_ci
2018c2ecf20Sopenharmony_ci	  Please check the actual NAND chip connected and its support
2028c2ecf20Sopenharmony_ci	  by the SLC NAND controller.
2038c2ecf20Sopenharmony_ci
2048c2ecf20Sopenharmony_ciconfig MTD_NAND_MLC_LPC32XX
2058c2ecf20Sopenharmony_ci	tristate "NXP LPC32xx MLC NAND controller"
2068c2ecf20Sopenharmony_ci	depends on ARCH_LPC32XX || COMPILE_TEST
2078c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
2088c2ecf20Sopenharmony_ci	help
2098c2ecf20Sopenharmony_ci	  Uses the LPC32XX MLC (i.e. for Multi Level Cell chips) NAND
2108c2ecf20Sopenharmony_ci	  controller. This is the default for the WORK92105 controller
2118c2ecf20Sopenharmony_ci	  board.
2128c2ecf20Sopenharmony_ci
2138c2ecf20Sopenharmony_ci	  Please check the actual NAND chip connected and its support
2148c2ecf20Sopenharmony_ci	  by the MLC NAND controller.
2158c2ecf20Sopenharmony_ci
2168c2ecf20Sopenharmony_ciconfig MTD_NAND_PASEMI
2178c2ecf20Sopenharmony_ci	tristate "PA Semi PWRficient NAND controller"
2188c2ecf20Sopenharmony_ci	depends on PPC_PASEMI
2198c2ecf20Sopenharmony_ci	help
2208c2ecf20Sopenharmony_ci	  Enables support for NAND Flash interface on PA Semi PWRficient
2218c2ecf20Sopenharmony_ci	  based boards
2228c2ecf20Sopenharmony_ci
2238c2ecf20Sopenharmony_ciconfig MTD_NAND_TMIO
2248c2ecf20Sopenharmony_ci	tristate "Toshiba Mobile IO NAND controller"
2258c2ecf20Sopenharmony_ci	depends on MFD_TMIO
2268c2ecf20Sopenharmony_ci	help
2278c2ecf20Sopenharmony_ci	  Support for NAND flash connected to a Toshiba Mobile IO
2288c2ecf20Sopenharmony_ci	  Controller in some PDAs, including the Sharp SL6000x.
2298c2ecf20Sopenharmony_ci
2308c2ecf20Sopenharmony_ciconfig MTD_NAND_BRCMNAND
2318c2ecf20Sopenharmony_ci	tristate "Broadcom STB NAND controller"
2328c2ecf20Sopenharmony_ci	depends on ARM || ARM64 || MIPS || COMPILE_TEST
2338c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
2348c2ecf20Sopenharmony_ci	help
2358c2ecf20Sopenharmony_ci	  Enables the Broadcom NAND controller driver. The controller was
2368c2ecf20Sopenharmony_ci	  originally designed for Set-Top Box but is used on various BCM7xxx,
2378c2ecf20Sopenharmony_ci	  BCM3xxx, BCM63xxx, iProc/Cygnus and more.
2388c2ecf20Sopenharmony_ci
2398c2ecf20Sopenharmony_ciconfig MTD_NAND_BCM47XXNFLASH
2408c2ecf20Sopenharmony_ci	tristate "BCM4706 BCMA NAND controller"
2418c2ecf20Sopenharmony_ci	depends on BCMA_NFLASH
2428c2ecf20Sopenharmony_ci	depends on BCMA
2438c2ecf20Sopenharmony_ci	help
2448c2ecf20Sopenharmony_ci	  BCMA bus can have various flash memories attached, they are
2458c2ecf20Sopenharmony_ci	  registered by bcma as platform devices. This enables driver for
2468c2ecf20Sopenharmony_ci	  NAND flash memories. For now only BCM4706 is supported.
2478c2ecf20Sopenharmony_ci
2488c2ecf20Sopenharmony_ciconfig MTD_NAND_OXNAS
2498c2ecf20Sopenharmony_ci	tristate "Oxford Semiconductor NAND controller"
2508c2ecf20Sopenharmony_ci	depends on ARCH_OXNAS || COMPILE_TEST
2518c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
2528c2ecf20Sopenharmony_ci	help
2538c2ecf20Sopenharmony_ci	  This enables the NAND flash controller on Oxford Semiconductor SoCs.
2548c2ecf20Sopenharmony_ci
2558c2ecf20Sopenharmony_ciconfig MTD_NAND_MPC5121_NFC
2568c2ecf20Sopenharmony_ci	tristate "MPC5121 NAND controller"
2578c2ecf20Sopenharmony_ci	depends on PPC_MPC512x
2588c2ecf20Sopenharmony_ci	help
2598c2ecf20Sopenharmony_ci	  This enables the driver for the NAND flash controller on the
2608c2ecf20Sopenharmony_ci	  MPC5121 SoC.
2618c2ecf20Sopenharmony_ci
2628c2ecf20Sopenharmony_ciconfig MTD_NAND_GPMI_NAND
2638c2ecf20Sopenharmony_ci	tristate "Freescale GPMI NAND controller"
2648c2ecf20Sopenharmony_ci	depends on MXS_DMA
2658c2ecf20Sopenharmony_ci	help
2668c2ecf20Sopenharmony_ci	  Enables NAND Flash support for IMX23, IMX28 or IMX6.
2678c2ecf20Sopenharmony_ci	  The GPMI controller is very powerful, with the help of BCH
2688c2ecf20Sopenharmony_ci	  module, it can do the hardware ECC. The GPMI supports several
2698c2ecf20Sopenharmony_ci	  NAND flashs at the same time.
2708c2ecf20Sopenharmony_ci
2718c2ecf20Sopenharmony_ciconfig MTD_NAND_FSL_ELBC
2728c2ecf20Sopenharmony_ci	tristate "Freescale eLBC NAND controller"
2738c2ecf20Sopenharmony_ci	depends on FSL_SOC
2748c2ecf20Sopenharmony_ci	select FSL_LBC
2758c2ecf20Sopenharmony_ci	help
2768c2ecf20Sopenharmony_ci	  Various Freescale chips, including the 8313, include a NAND Flash
2778c2ecf20Sopenharmony_ci	  Controller Module with built-in hardware ECC capabilities.
2788c2ecf20Sopenharmony_ci	  Enabling this option will enable you to use this to control
2798c2ecf20Sopenharmony_ci	  external NAND devices.
2808c2ecf20Sopenharmony_ci
2818c2ecf20Sopenharmony_ciconfig MTD_NAND_FSL_IFC
2828c2ecf20Sopenharmony_ci	tristate "Freescale IFC NAND controller"
2838c2ecf20Sopenharmony_ci	depends on FSL_SOC || ARCH_LAYERSCAPE || SOC_LS1021A || COMPILE_TEST
2848c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
2858c2ecf20Sopenharmony_ci	select FSL_IFC
2868c2ecf20Sopenharmony_ci	select MEMORY
2878c2ecf20Sopenharmony_ci	help
2888c2ecf20Sopenharmony_ci	  Various Freescale chips e.g P1010, include a NAND Flash machine
2898c2ecf20Sopenharmony_ci	  with built-in hardware ECC capabilities.
2908c2ecf20Sopenharmony_ci	  Enabling this option will enable you to use this to control
2918c2ecf20Sopenharmony_ci	  external NAND devices.
2928c2ecf20Sopenharmony_ci
2938c2ecf20Sopenharmony_ciconfig MTD_NAND_FSL_UPM
2948c2ecf20Sopenharmony_ci	tristate "Freescale UPM NAND controller"
2958c2ecf20Sopenharmony_ci	depends on PPC_83xx || PPC_85xx
2968c2ecf20Sopenharmony_ci	select FSL_LBC
2978c2ecf20Sopenharmony_ci	help
2988c2ecf20Sopenharmony_ci	  Enables support for NAND Flash chips wired onto Freescale PowerPC
2998c2ecf20Sopenharmony_ci	  processor localbus with User-Programmable Machine support.
3008c2ecf20Sopenharmony_ci
3018c2ecf20Sopenharmony_ciconfig MTD_NAND_VF610_NFC
3028c2ecf20Sopenharmony_ci	tristate "Freescale VF610/MPC5125 NAND controller"
3038c2ecf20Sopenharmony_ci	depends on (SOC_VF610 || COMPILE_TEST)
3048c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
3058c2ecf20Sopenharmony_ci	help
3068c2ecf20Sopenharmony_ci	  Enables support for NAND Flash Controller on some Freescale
3078c2ecf20Sopenharmony_ci	  processors like the VF610, MPC5125, MCF54418 or Kinetis K70.
3088c2ecf20Sopenharmony_ci	  The driver supports a maximum 2k page size. With 2k pages and
3098c2ecf20Sopenharmony_ci	  64 bytes or more of OOB, hardware ECC with up to 32-bit error
3108c2ecf20Sopenharmony_ci	  correction is supported. Hardware ECC is only enabled through
3118c2ecf20Sopenharmony_ci	  device tree.
3128c2ecf20Sopenharmony_ci
3138c2ecf20Sopenharmony_ciconfig MTD_NAND_MXC
3148c2ecf20Sopenharmony_ci	tristate "Freescale MXC NAND controller"
3158c2ecf20Sopenharmony_ci	depends on ARCH_MXC || COMPILE_TEST
3168c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
3178c2ecf20Sopenharmony_ci	help
3188c2ecf20Sopenharmony_ci	  This enables the driver for the NAND flash controller on the
3198c2ecf20Sopenharmony_ci	  MXC processors.
3208c2ecf20Sopenharmony_ci
3218c2ecf20Sopenharmony_ciconfig MTD_NAND_SH_FLCTL
3228c2ecf20Sopenharmony_ci	tristate "Renesas SuperH FLCTL NAND controller"
3238c2ecf20Sopenharmony_ci	depends on SUPERH || COMPILE_TEST
3248c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
3258c2ecf20Sopenharmony_ci	help
3268c2ecf20Sopenharmony_ci	  Several Renesas SuperH CPU has FLCTL. This option enables support
3278c2ecf20Sopenharmony_ci	  for NAND Flash using FLCTL.
3288c2ecf20Sopenharmony_ci
3298c2ecf20Sopenharmony_ciconfig MTD_NAND_DAVINCI
3308c2ecf20Sopenharmony_ci	tristate "DaVinci/Keystone NAND controller"
3318c2ecf20Sopenharmony_ci	depends on ARCH_DAVINCI || (ARCH_KEYSTONE && TI_AEMIF) || COMPILE_TEST
3328c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
3338c2ecf20Sopenharmony_ci	help
3348c2ecf20Sopenharmony_ci	  Enable the driver for NAND flash chips on Texas Instruments
3358c2ecf20Sopenharmony_ci	  DaVinci/Keystone processors.
3368c2ecf20Sopenharmony_ci
3378c2ecf20Sopenharmony_ciconfig MTD_NAND_TXX9NDFMC
3388c2ecf20Sopenharmony_ci	tristate "TXx9 NAND controller"
3398c2ecf20Sopenharmony_ci	depends on SOC_TX4938 || SOC_TX4939 || COMPILE_TEST
3408c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
3418c2ecf20Sopenharmony_ci	help
3428c2ecf20Sopenharmony_ci	  This enables the NAND flash controller on the TXx9 SoCs.
3438c2ecf20Sopenharmony_ci
3448c2ecf20Sopenharmony_ciconfig MTD_NAND_SOCRATES
3458c2ecf20Sopenharmony_ci	tristate "Socrates NAND controller"
3468c2ecf20Sopenharmony_ci	depends on SOCRATES
3478c2ecf20Sopenharmony_ci	help
3488c2ecf20Sopenharmony_ci	  Enables support for NAND Flash chips wired onto Socrates board.
3498c2ecf20Sopenharmony_ci
3508c2ecf20Sopenharmony_cisource "drivers/mtd/nand/raw/ingenic/Kconfig"
3518c2ecf20Sopenharmony_ci
3528c2ecf20Sopenharmony_ciconfig MTD_NAND_FSMC
3538c2ecf20Sopenharmony_ci	tristate "ST Micros FSMC NAND controller"
3548c2ecf20Sopenharmony_ci	depends on OF && HAS_IOMEM
3558c2ecf20Sopenharmony_ci	depends on PLAT_SPEAR || ARCH_NOMADIK || ARCH_U8500 || MACH_U300 || \
3568c2ecf20Sopenharmony_ci		   COMPILE_TEST
3578c2ecf20Sopenharmony_ci	help
3588c2ecf20Sopenharmony_ci	  Enables support for NAND Flash chips on the ST Microelectronics
3598c2ecf20Sopenharmony_ci	  Flexible Static Memory Controller (FSMC)
3608c2ecf20Sopenharmony_ci
3618c2ecf20Sopenharmony_ciconfig MTD_NAND_XWAY
3628c2ecf20Sopenharmony_ci	bool "Lantiq XWAY NAND controller"
3638c2ecf20Sopenharmony_ci	depends on LANTIQ && SOC_TYPE_XWAY
3648c2ecf20Sopenharmony_ci	help
3658c2ecf20Sopenharmony_ci	  Enables support for NAND Flash chips on Lantiq XWAY SoCs. NAND is attached
3668c2ecf20Sopenharmony_ci	  to the External Bus Unit (EBU).
3678c2ecf20Sopenharmony_ci
3688c2ecf20Sopenharmony_ciconfig MTD_NAND_SUNXI
3698c2ecf20Sopenharmony_ci	tristate "Allwinner NAND controller"
3708c2ecf20Sopenharmony_ci	depends on ARCH_SUNXI || COMPILE_TEST
3718c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
3728c2ecf20Sopenharmony_ci	help
3738c2ecf20Sopenharmony_ci	  Enables support for NAND Flash chips on Allwinner SoCs.
3748c2ecf20Sopenharmony_ci
3758c2ecf20Sopenharmony_ciconfig MTD_NAND_HISI504
3768c2ecf20Sopenharmony_ci	tristate "Hisilicon Hip04 NAND controller"
3778c2ecf20Sopenharmony_ci	depends on ARCH_HISI || COMPILE_TEST
3788c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
3798c2ecf20Sopenharmony_ci	help
3808c2ecf20Sopenharmony_ci	  Enables support for NAND controller on Hisilicon SoC Hip04.
3818c2ecf20Sopenharmony_ci
3828c2ecf20Sopenharmony_ciconfig MTD_NAND_QCOM
3838c2ecf20Sopenharmony_ci	tristate "QCOM NAND controller"
3848c2ecf20Sopenharmony_ci	depends on ARCH_QCOM || COMPILE_TEST
3858c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
3868c2ecf20Sopenharmony_ci	help
3878c2ecf20Sopenharmony_ci	  Enables support for NAND flash chips on SoCs containing the EBI2 NAND
3888c2ecf20Sopenharmony_ci	  controller. This controller is found on IPQ806x SoC.
3898c2ecf20Sopenharmony_ci
3908c2ecf20Sopenharmony_ciconfig MTD_NAND_MTK
3918c2ecf20Sopenharmony_ci	tristate "MTK NAND controller"
3928c2ecf20Sopenharmony_ci	depends on ARCH_MEDIATEK || COMPILE_TEST
3938c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
3948c2ecf20Sopenharmony_ci	help
3958c2ecf20Sopenharmony_ci	  Enables support for NAND controller on MTK SoCs.
3968c2ecf20Sopenharmony_ci	  This controller is found on mt27xx, mt81xx, mt65xx SoCs.
3978c2ecf20Sopenharmony_ci
3988c2ecf20Sopenharmony_ciconfig MTD_NAND_MXIC
3998c2ecf20Sopenharmony_ci	tristate "Macronix raw NAND controller"
4008c2ecf20Sopenharmony_ci	depends on HAS_IOMEM || COMPILE_TEST
4018c2ecf20Sopenharmony_ci	help
4028c2ecf20Sopenharmony_ci	  This selects the Macronix raw NAND controller driver.
4038c2ecf20Sopenharmony_ci
4048c2ecf20Sopenharmony_ciconfig MTD_NAND_TEGRA
4058c2ecf20Sopenharmony_ci	tristate "NVIDIA Tegra NAND controller"
4068c2ecf20Sopenharmony_ci	depends on ARCH_TEGRA || COMPILE_TEST
4078c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
4088c2ecf20Sopenharmony_ci	help
4098c2ecf20Sopenharmony_ci	  Enables support for NAND flash controller on NVIDIA Tegra SoC.
4108c2ecf20Sopenharmony_ci	  The driver has been developed and tested on a Tegra 2 SoC. DMA
4118c2ecf20Sopenharmony_ci	  support, raw read/write page as well as HW ECC read/write page
4128c2ecf20Sopenharmony_ci	  is supported. Extra OOB bytes when using HW ECC are currently
4138c2ecf20Sopenharmony_ci	  not supported.
4148c2ecf20Sopenharmony_ci
4158c2ecf20Sopenharmony_ciconfig MTD_NAND_STM32_FMC2
4168c2ecf20Sopenharmony_ci	tristate "Support for NAND controller on STM32MP SoCs"
4178c2ecf20Sopenharmony_ci	depends on MACH_STM32MP157 || COMPILE_TEST
4188c2ecf20Sopenharmony_ci	select MFD_SYSCON
4198c2ecf20Sopenharmony_ci	help
4208c2ecf20Sopenharmony_ci	  Enables support for NAND Flash chips on SoCs containing the FMC2
4218c2ecf20Sopenharmony_ci	  NAND controller. This controller is found on STM32MP SoCs.
4228c2ecf20Sopenharmony_ci	  The controller supports a maximum 8k page size and supports
4238c2ecf20Sopenharmony_ci	  a maximum 8-bit correction error per sector of 512 bytes.
4248c2ecf20Sopenharmony_ci
4258c2ecf20Sopenharmony_ciconfig MTD_NAND_MESON
4268c2ecf20Sopenharmony_ci	tristate "Support for NAND controller on Amlogic's Meson SoCs"
4278c2ecf20Sopenharmony_ci	depends on ARCH_MESON || COMPILE_TEST
4288c2ecf20Sopenharmony_ci	select MFD_SYSCON
4298c2ecf20Sopenharmony_ci	help
4308c2ecf20Sopenharmony_ci	  Enables support for NAND controller on Amlogic's Meson SoCs.
4318c2ecf20Sopenharmony_ci	  This controller is found on Meson SoCs.
4328c2ecf20Sopenharmony_ci
4338c2ecf20Sopenharmony_ciconfig MTD_NAND_GPIO
4348c2ecf20Sopenharmony_ci	tristate "GPIO assisted NAND controller"
4358c2ecf20Sopenharmony_ci	depends on GPIOLIB || COMPILE_TEST
4368c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
4378c2ecf20Sopenharmony_ci	help
4388c2ecf20Sopenharmony_ci	  This enables a NAND flash driver where control signals are
4398c2ecf20Sopenharmony_ci	  connected to GPIO pins, and commands and data are communicated
4408c2ecf20Sopenharmony_ci	  via a memory mapped interface.
4418c2ecf20Sopenharmony_ci
4428c2ecf20Sopenharmony_ciconfig MTD_NAND_PLATFORM
4438c2ecf20Sopenharmony_ci	tristate "Generic NAND controller"
4448c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
4458c2ecf20Sopenharmony_ci	help
4468c2ecf20Sopenharmony_ci	  This implements a generic NAND driver for on-SOC platform
4478c2ecf20Sopenharmony_ci	  devices. You will need to provide platform-specific functions
4488c2ecf20Sopenharmony_ci	  via platform_data.
4498c2ecf20Sopenharmony_ci
4508c2ecf20Sopenharmony_ciconfig MTD_NAND_CADENCE
4518c2ecf20Sopenharmony_ci	tristate "Support Cadence NAND (HPNFC) controller"
4528c2ecf20Sopenharmony_ci	depends on (OF || COMPILE_TEST) && HAS_IOMEM
4538c2ecf20Sopenharmony_ci	help
4548c2ecf20Sopenharmony_ci	  Enable the driver for NAND flash on platforms using a Cadence NAND
4558c2ecf20Sopenharmony_ci	  controller.
4568c2ecf20Sopenharmony_ci
4578c2ecf20Sopenharmony_ciconfig MTD_NAND_ARASAN
4588c2ecf20Sopenharmony_ci	tristate "Support for Arasan NAND flash controller"
4598c2ecf20Sopenharmony_ci	depends on HAS_IOMEM && HAS_DMA
4608c2ecf20Sopenharmony_ci	select BCH
4618c2ecf20Sopenharmony_ci	help
4628c2ecf20Sopenharmony_ci	  Enables the driver for the Arasan NAND flash controller on
4638c2ecf20Sopenharmony_ci	  Zynq Ultrascale+ MPSoC.
4648c2ecf20Sopenharmony_ci
4658c2ecf20Sopenharmony_cicomment "Misc"
4668c2ecf20Sopenharmony_ci
4678c2ecf20Sopenharmony_ciconfig MTD_SM_COMMON
4688c2ecf20Sopenharmony_ci	tristate
4698c2ecf20Sopenharmony_ci	default n
4708c2ecf20Sopenharmony_ci
4718c2ecf20Sopenharmony_ciconfig MTD_NAND_NANDSIM
4728c2ecf20Sopenharmony_ci	tristate "Support for NAND Flash Simulator"
4738c2ecf20Sopenharmony_ci	help
4748c2ecf20Sopenharmony_ci	  The simulator may simulate various NAND flash chips for the
4758c2ecf20Sopenharmony_ci	  MTD nand layer.
4768c2ecf20Sopenharmony_ci
4778c2ecf20Sopenharmony_ciconfig MTD_NAND_RICOH
4788c2ecf20Sopenharmony_ci	tristate "Ricoh xD card reader"
4798c2ecf20Sopenharmony_ci	default n
4808c2ecf20Sopenharmony_ci	depends on PCI
4818c2ecf20Sopenharmony_ci	select MTD_SM_COMMON
4828c2ecf20Sopenharmony_ci	help
4838c2ecf20Sopenharmony_ci	  Enable support for Ricoh R5C852 xD card reader
4848c2ecf20Sopenharmony_ci	  You also need to enable ether
4858c2ecf20Sopenharmony_ci	  NAND SSFDC (SmartMedia) read only translation layer' or new
4868c2ecf20Sopenharmony_ci	  expermental, readwrite
4878c2ecf20Sopenharmony_ci	  'SmartMedia/xD new translation layer'
4888c2ecf20Sopenharmony_ci
4898c2ecf20Sopenharmony_ciconfig MTD_NAND_DISKONCHIP
4908c2ecf20Sopenharmony_ci	tristate "DiskOnChip 2000, Millennium and Millennium Plus (NAND reimplementation)"
4918c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
4928c2ecf20Sopenharmony_ci	select REED_SOLOMON
4938c2ecf20Sopenharmony_ci	select REED_SOLOMON_DEC16
4948c2ecf20Sopenharmony_ci	help
4958c2ecf20Sopenharmony_ci	  This is a reimplementation of M-Systems DiskOnChip 2000,
4968c2ecf20Sopenharmony_ci	  Millennium and Millennium Plus as a standard NAND device driver,
4978c2ecf20Sopenharmony_ci	  as opposed to the earlier self-contained MTD device drivers.
4988c2ecf20Sopenharmony_ci	  This should enable, among other things, proper JFFS2 operation on
4998c2ecf20Sopenharmony_ci	  these devices.
5008c2ecf20Sopenharmony_ci
5018c2ecf20Sopenharmony_ciconfig MTD_NAND_DISKONCHIP_PROBE_ADVANCED
5028c2ecf20Sopenharmony_ci	bool "Advanced detection options for DiskOnChip"
5038c2ecf20Sopenharmony_ci	depends on MTD_NAND_DISKONCHIP
5048c2ecf20Sopenharmony_ci	help
5058c2ecf20Sopenharmony_ci	  This option allows you to specify nonstandard address at which to
5068c2ecf20Sopenharmony_ci	  probe for a DiskOnChip, or to change the detection options.  You
5078c2ecf20Sopenharmony_ci	  are unlikely to need any of this unless you are using LinuxBIOS.
5088c2ecf20Sopenharmony_ci	  Say 'N'.
5098c2ecf20Sopenharmony_ci
5108c2ecf20Sopenharmony_ciconfig MTD_NAND_DISKONCHIP_PROBE_ADDRESS
5118c2ecf20Sopenharmony_ci	hex "Physical address of DiskOnChip" if MTD_NAND_DISKONCHIP_PROBE_ADVANCED
5128c2ecf20Sopenharmony_ci	depends on MTD_NAND_DISKONCHIP
5138c2ecf20Sopenharmony_ci	default "0"
5148c2ecf20Sopenharmony_ci	help
5158c2ecf20Sopenharmony_ci	  By default, the probe for DiskOnChip devices will look for a
5168c2ecf20Sopenharmony_ci	  DiskOnChip at every multiple of 0x2000 between 0xC8000 and 0xEE000.
5178c2ecf20Sopenharmony_ci	  This option allows you to specify a single address at which to probe
5188c2ecf20Sopenharmony_ci	  for the device, which is useful if you have other devices in that
5198c2ecf20Sopenharmony_ci	  range which get upset when they are probed.
5208c2ecf20Sopenharmony_ci
5218c2ecf20Sopenharmony_ci	  (Note that on PowerPC, the normal probe will only check at
5228c2ecf20Sopenharmony_ci	  0xE4000000.)
5238c2ecf20Sopenharmony_ci
5248c2ecf20Sopenharmony_ci	  Normally, you should leave this set to zero, to allow the probe at
5258c2ecf20Sopenharmony_ci	  the normal addresses.
5268c2ecf20Sopenharmony_ci
5278c2ecf20Sopenharmony_ciconfig MTD_NAND_DISKONCHIP_PROBE_HIGH
5288c2ecf20Sopenharmony_ci	bool "Probe high addresses"
5298c2ecf20Sopenharmony_ci	depends on MTD_NAND_DISKONCHIP_PROBE_ADVANCED
5308c2ecf20Sopenharmony_ci	help
5318c2ecf20Sopenharmony_ci	  By default, the probe for DiskOnChip devices will look for a
5328c2ecf20Sopenharmony_ci	  DiskOnChip at every multiple of 0x2000 between 0xC8000 and 0xEE000.
5338c2ecf20Sopenharmony_ci	  This option changes to make it probe between 0xFFFC8000 and
5348c2ecf20Sopenharmony_ci	  0xFFFEE000.  Unless you are using LinuxBIOS, this is unlikely to be
5358c2ecf20Sopenharmony_ci	  useful to you.  Say 'N'.
5368c2ecf20Sopenharmony_ci
5378c2ecf20Sopenharmony_ciconfig MTD_NAND_DISKONCHIP_BBTWRITE
5388c2ecf20Sopenharmony_ci	bool "Allow BBT writes on DiskOnChip Millennium and 2000TSOP"
5398c2ecf20Sopenharmony_ci	depends on MTD_NAND_DISKONCHIP
5408c2ecf20Sopenharmony_ci	help
5418c2ecf20Sopenharmony_ci	  On DiskOnChip devices shipped with the INFTL filesystem (Millennium
5428c2ecf20Sopenharmony_ci	  and 2000 TSOP/Alon), Linux reserves some space at the end of the
5438c2ecf20Sopenharmony_ci	  device for the Bad Block Table (BBT).  If you have existing INFTL
5448c2ecf20Sopenharmony_ci	  data on your device (created by non-Linux tools such as M-Systems'
5458c2ecf20Sopenharmony_ci	  DOS drivers), your data might overlap the area Linux wants to use for
5468c2ecf20Sopenharmony_ci	  the BBT.  If this is a concern for you, leave this option disabled and
5478c2ecf20Sopenharmony_ci	  Linux will not write BBT data into this area.
5488c2ecf20Sopenharmony_ci	  The downside of leaving this option disabled is that if bad blocks
5498c2ecf20Sopenharmony_ci	  are detected by Linux, they will not be recorded in the BBT, which
5508c2ecf20Sopenharmony_ci	  could cause future problems.
5518c2ecf20Sopenharmony_ci	  Once you enable this option, new filesystems (INFTL or others, created
5528c2ecf20Sopenharmony_ci	  in Linux or other operating systems) will not use the reserved area.
5538c2ecf20Sopenharmony_ci	  The only reason not to enable this option is to prevent damage to
5548c2ecf20Sopenharmony_ci	  preexisting filesystems.
5558c2ecf20Sopenharmony_ci	  Even if you leave this disabled, you can enable BBT writes at module
5568c2ecf20Sopenharmony_ci	  load time (assuming you build diskonchip as a module) with the module
5578c2ecf20Sopenharmony_ci	  parameter "inftl_bbt_write=1".
5588c2ecf20Sopenharmony_ci
5598c2ecf20Sopenharmony_ciendif # MTD_RAW_NAND
560