# SPDX-License-Identifier: GPL-2.0-only

menu "NAND"

config MTD_NAND_CORE
	tristate

source "drivers/mtd/nand/onenand/Kconfig"
source "drivers/mtd/nand/raw/Kconfig"
source "drivers/mtd/nand/spi/Kconfig"

menu "ECC engine support"

config MTD_NAND_ECC
       bool
       select MTD_NAND_CORE

config MTD_NAND_ECC_SW_HAMMING
	bool "Software Hamming ECC engine"
	default y if MTD_RAW_NAND
	select MTD_NAND_ECC
	help
	  This enables support for software Hamming error
	  correction. This correction can correct up to 1 bit error
	  per chunk and detect up to 2 bit errors. While it used to be
	  widely used with old parts, newer NAND chips usually require
	  more strength correction and in this case BCH or RS will be
	  preferred.

config MTD_NAND_ECC_SW_HAMMING_SMC
	bool "NAND ECC Smart Media byte order"
	depends on MTD_NAND_ECC_SW_HAMMING
	default n
	help
	  Software ECC according to the Smart Media Specification.
	  The original Linux implementation had byte 0 and 1 swapped.

config MTD_NAND_ECC_SW_BCH
	bool "Software BCH ECC engine"
	select BCH
	select MTD_NAND_ECC
	default n
	help
	  This enables support for software BCH error correction. Binary BCH
	  codes are more powerful and cpu intensive than traditional Hamming
	  ECC codes. They are used with NAND devices requiring more than 1 bit
	  of error correction.

config MTD_NAND_ECC_MXIC
	bool "Macronix external hardware ECC engine"
	depends on HAS_IOMEM
	select MTD_NAND_ECC
	help
	  This enables support for the hardware ECC engine from Macronix.

config MTD_NAND_ECC_MEDIATEK
	tristate "Mediatek hardware ECC engine"
	depends on HAS_IOMEM
	depends on ARCH_MEDIATEK || COMPILE_TEST
	select MTD_NAND_ECC
	help
	  This enables support for the hardware ECC engine from Mediatek.

endmenu

endmenu