[U-Boot] [RFC] Kconfig: Migrate SYS_NAND_ECC... et al question

Adam Ford aford173 at gmail.com
Tue Aug 8 04:07:58 UTC 2017


I am trying to migrate ECC Scheme, SYS_NAND_ECCBYTES,
SYS_NAND_ECCSIZE, and SYS_NAND_ECCSIZE to Kconfig with the changes
I am attaching.

I my ideal scenario, the selection of scheme would set
CONFIG_NAND_OMAP_ECCSCHEME to whatever menu option is defined, then
corresponding default values of CONFIG_SYS_NAND_ECCSIZE and
CONFIG_SYS_NAND_ECCBYTES, but I can't figure out how to make that
work.

When I run the migration tool, all the omap2plus boards fail.

If anyone has any suggestions, I'm open to ideas.  I have been
testing this on the Logic PD DM3730 Kit.

Signed-off-by: Adam Ford <aford173 at gmail.com>

diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
index 75cbff9..a2e5a30 100644
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -45,6 +45,54 @@ config NAND_OMAP_GPMC
 	  do ECC calculation (not ECC error detection) for HAM1, BCH4, BCH8
 	  and BCH16 ECC algorithms.
 
+if NAND_OMAP_GPMC
+choice
+	prompt "OMAP ECC Scheme"
+	default OMAP_ECC_HAM1_CODE_SW
+
+config	OMAP_ECC_HAM1_CODE_SW
+	bool "1-bit Hamming code using software lib. (legacy)"
+	help
+	  1-bit Hamming code using software lib.
+	  (for legacy devices only)
+
+config	OMAP_ECC_HAM1_CODE_HW
+	bool "1-bit Hamming code using GPMC hardware. (legacy)"
+	help
+	  1-bit Hamming code using GPMC hardware.
+	  (for legacy devices only)
+
+config	OMAP_ECC_BCH8_CODE_HW_DETECTION_SW
+	bool "8-bit BCH code w/ HW detection and SW correction"
+	depends on !NAND_OMAP_ELM
+	select BCH
+	help
+	  8-bit BCH code with
+	  - ecc calculation using GPMC hardware engine,
+	  - error detection using software library.
+	  - requires CONFIG_BCH to enable software BCH library
+	  (For legacy device which do not have ELM h/w engine)
+
+config	OMAP_ECC_BCH8_CODE_HW
+	depends on NAND_OMAP_ELM
+	bool "8-bit BCH code w/ HW detection and ELM engine"
+	help
+	  8-bit BCH code with
+	  - ecc calculation using GPMC hardware engine,
+	  - error detection using ELM hardware engine.
+
+config	OMAP_ECC_BCH16_CODE_HW
+	depends on NAND_OMAP_ELM
+	bool "16-bit BCH code w/ HW detection and ELM engine"
+	help
+	  16-bit BCH code with
+	  - ecc calculation using GPMC hardware engine,
+	  - error detection using ELM hardware engine.
+
+endchoice
+
+endif
+
 config NAND_OMAP_GPMC_PREFETCH
 	bool "Enable GPMC Prefetch"
 	depends on NAND_OMAP_GPMC
@@ -170,6 +218,27 @@ config SYS_NAND_BUSWIDTH_16BIT
 	    not available while configuring controller. So a static CONFIG_NAND_xx
 	    is needed to know the device's bus-width in advance.
 
+config SYS_NAND_ECCBYTES
+	int "ECC Bytes"
+	help
+	  Defines the size and behavior of the NAND that SPL uses to read U-Boot.
+	  Number of ECC bytes generated to protect 512 bytes of data, which is:
+	  3 for HAM1_xx ecc schemes
+	  7 for BCH4_xx ecc schemes
+	  14 for BCH8_xx ecc schemes
+	  26 for BCH16_xx ecc schemes
+
+config SYS_NAND_ECCSIZE
+	int "ECC Size"
+	default 512
+
+config SYS_NAND_MAX_ECCPOS
+	int "maximum number of ECC bytes supported"
+	help
+	  If specified, overrides the maximum number of ECC bytes
+	  supported.  Useful for reducing image size, especially with SPL.
+	  This must be at least 48 if nand_base.c is used.
+
 if SPL
 
 config SYS_NAND_U_BOOT_LOCATIONS
diff --git a/lib/Kconfig b/lib/Kconfig
index 2f5a210..1194345 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -1,5 +1,12 @@
 menu "Library routines"
 
+config BCH
+	bool "Enable Software based BCH ECC"
+	help
+	  Enables software based BCH ECC algorithm present in lib/bch.c
+	  This is used by SoC platforms which do not have built-in ELM
+	  hardware engine required for BCH ECC correction.
+
 config CC_OPTIMIZE_LIBS_FOR_SPEED
 	bool "Optimize libraries for speed"
 	help
-- 
2.7.4



More information about the U-Boot mailing list