diff options
| -rw-r--r-- | doc/README.nand | 23 | ||||
| -rw-r--r-- | doc/README.omap3 | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/omap_gpmc.c | 13 | ||||
| -rw-r--r-- | include/configs/am335x_evm.h | 3 | ||||
| -rw-r--r-- | include/configs/am335x_igep0033.h | 1 | ||||
| -rw-r--r-- | include/configs/am3517_crane.h | 1 | ||||
| -rw-r--r-- | include/configs/am3517_evm.h | 1 | ||||
| -rw-r--r-- | include/configs/devkit8000.h | 1 | ||||
| -rw-r--r-- | include/configs/mcx.h | 2 | ||||
| -rw-r--r-- | include/configs/omap3_beagle.h | 1 | ||||
| -rw-r--r-- | include/configs/omap3_evm.h | 1 | ||||
| -rw-r--r-- | include/configs/omap3_evm_quick_nand.h | 1 | ||||
| -rw-r--r-- | include/configs/omap3_igep00x0.h | 1 | ||||
| -rw-r--r-- | include/configs/omap3_overo.h | 1 | ||||
| -rw-r--r-- | include/configs/siemens-am33x-common.h | 1 | ||||
| -rw-r--r-- | include/configs/tam3517-common.h | 2 | ||||
| -rw-r--r-- | include/configs/tricorder.h | 2 | 
17 files changed, 43 insertions, 15 deletions
| diff --git a/doc/README.nand b/doc/README.nand index 487548fcb..b91f1985d 100644 --- a/doc/README.nand +++ b/doc/README.nand @@ -208,6 +208,29 @@ Platform specific options  	detection. However ECC calculation on such plaforms would still be  	done by GPMC controller. +   CONFIG_NAND_OMAP_ECCSCHEME +	On OMAP platforms, this CONFIG specifies NAND ECC scheme. +	It can take following values: +	OMAP_ECC_HAM1_CODE_SW +		1-bit Hamming code using software lib. +		(for legacy devices only) +	OMAP_ECC_HAM1_CODE_HW +		1-bit Hamming code using GPMC hardware. +		(for legacy devices only) +	OMAP_ECC_BCH4_CODE_HW_DETECTION_SW +		4-bit BCH code (unsupported) +	OMAP_ECC_BCH4_CODE_HW +		4-bit BCH code (unsupported) +	OMAP_ECC_BCH8_CODE_HW_DETECTION_SW +		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) +	OMAP_ECC_BCH8_CODE_HW +		8-bit BCH code with +		- ecc calculation using GPMC hardware engine, +		- error detection using ELM hardware engine.  NOTE:  ===== diff --git a/doc/README.omap3 b/doc/README.omap3 index 1fbe79db3..a62c35740 100644 --- a/doc/README.omap3 +++ b/doc/README.omap3 @@ -161,8 +161,7 @@ BCH8  To enable hardware assisted BCH8 (8-bit BCH [Bose, Chaudhuri, Hocquenghem]) on  OMAP3 devices we can use the BCH library in lib/bch.c. To do so add CONFIG_BCH -to enable the library and CONFIG_NAND_OMAP_BCH8 to to enable hardware assisted -syndrom generation to your board config. +and set CONFIG_NAND_OMAP_ECCSCHEME=5 (refer README.nand) for selecting BCH8_SW.  The NAND OOB layout is the same as in linux kernel, if the linux kernel BCH8  implementation for OMAP3 works for you so the u-boot version should also.  When you require the SPL to read with BCH8 there are two more configs to diff --git a/drivers/mtd/nand/omap_gpmc.c b/drivers/mtd/nand/omap_gpmc.c index e6b289dec..5e7e6b337 100644 --- a/drivers/mtd/nand/omap_gpmc.c +++ b/drivers/mtd/nand/omap_gpmc.c @@ -1004,18 +1004,13 @@ int board_nand_init(struct nand_chip *nand)  	nand->ecc.layout = &omap_ecclayout;  	/* select ECC scheme */ -#if defined(CONFIG_NAND_OMAP_ELM) -	err = omap_select_ecc_scheme(nand, OMAP_ECC_BCH8_CODE_HW, +#if defined(CONFIG_NAND_OMAP_ECCSCHEME) +	err = omap_select_ecc_scheme(nand, CONFIG_NAND_OMAP_ECCSCHEME,  			CONFIG_SYS_NAND_PAGE_SIZE, CONFIG_SYS_NAND_OOBSIZE); -#elif defined(CONFIG_NAND_OMAP_BCH8) -	err = omap_select_ecc_scheme(nand, OMAP_ECC_BCH8_CODE_HW_DETECTION_SW, -			CONFIG_SYS_NAND_PAGE_SIZE, CONFIG_SYS_NAND_OOBSIZE); -#elif !defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_NAND_SOFTECC) +#else +	/* pagesize and oobsize are not required to configure sw ecc-scheme */  	err = omap_select_ecc_scheme(nand, OMAP_ECC_HAM1_CODE_SW,  			0, 0); -#else -	err = omap_select_ecc_scheme(nand, OMAP_ECC_HAM1_CODE_HW, -			CONFIG_SYS_NAND_PAGE_SIZE, CONFIG_SYS_NAND_OOBSIZE);  #endif  	if (err)  		return err; diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h index 73d8b4dfb..1d5916753 100644 --- a/include/configs/am335x_evm.h +++ b/include/configs/am335x_evm.h @@ -240,7 +240,8 @@  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	14 - +#define CONFIG_SYS_NAND_ONFI_DETECTION +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_BCH8_CODE_HW  #define CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE  #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000  #endif diff --git a/include/configs/am335x_igep0033.h b/include/configs/am335x_igep0033.h index 88ced7311..115d1b37c 100644 --- a/include/configs/am335x_igep0033.h +++ b/include/configs/am335x_igep0033.h @@ -264,6 +264,7 @@  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	14 +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_BCH8_CODE_HW  #define	CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE diff --git a/include/configs/am3517_crane.h b/include/configs/am3517_crane.h index c5e67bf87..b24ef5414 100644 --- a/include/configs/am3517_crane.h +++ b/include/configs/am3517_crane.h @@ -340,6 +340,7 @@  						10, 11, 12, 13}  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_HAM1_CODE_HW  #define CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE  #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000 diff --git a/include/configs/am3517_evm.h b/include/configs/am3517_evm.h index 5ff65c6d5..f13fd7001 100644 --- a/include/configs/am3517_evm.h +++ b/include/configs/am3517_evm.h @@ -334,6 +334,7 @@  						10, 11, 12, 13}  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_HAM1_CODE_HW  #define CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE  #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000 diff --git a/include/configs/devkit8000.h b/include/configs/devkit8000.h index 8343891cb..13315dc4b 100644 --- a/include/configs/devkit8000.h +++ b/include/configs/devkit8000.h @@ -327,6 +327,7 @@  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_HAM1_CODE_HW  #define CONFIG_SYS_NAND_U_BOOT_START   CONFIG_SYS_TEXT_BASE diff --git a/include/configs/mcx.h b/include/configs/mcx.h index 4619dfb3e..56102f571 100644 --- a/include/configs/mcx.h +++ b/include/configs/mcx.h @@ -353,7 +353,6 @@  #define CONFIG_SPL_FRAMEWORK  #define CONFIG_SPL_BOARD_INIT  #define CONFIG_SPL_NAND_SIMPLE -#define CONFIG_SPL_NAND_SOFTECC  #define CONFIG_SPL_LIBCOMMON_SUPPORT  #define CONFIG_SPL_LIBDISK_SUPPORT @@ -395,6 +394,7 @@  					 56, 57, 58, 59, 60, 61, 62, 63}  #define CONFIG_SYS_NAND_ECCSIZE		256  #define CONFIG_SYS_NAND_ECCBYTES	3 +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_HAM1_CODE_SW  #define CONFIG_SYS_NAND_U_BOOT_START   CONFIG_SYS_TEXT_BASE diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h index 47d990208..8b6863566 100644 --- a/include/configs/omap3_beagle.h +++ b/include/configs/omap3_beagle.h @@ -432,6 +432,7 @@  						10, 11, 12, 13}  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_HAM1_CODE_HW  #define CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE  #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000 diff --git a/include/configs/omap3_evm.h b/include/configs/omap3_evm.h index 3ace8bb6e..b7638fb8a 100644 --- a/include/configs/omap3_evm.h +++ b/include/configs/omap3_evm.h @@ -107,6 +107,7 @@  						10, 11, 12, 13}  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_HAM1_CODE_HW  #define CONFIG_SYS_NAND_U_BOOT_START   CONFIG_SYS_TEXT_BASE  #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000 diff --git a/include/configs/omap3_evm_quick_nand.h b/include/configs/omap3_evm_quick_nand.h index 9ecd70d55..4427e88b7 100644 --- a/include/configs/omap3_evm_quick_nand.h +++ b/include/configs/omap3_evm_quick_nand.h @@ -86,6 +86,7 @@  						10, 11, 12, 13}  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_HAM1_CODE_HW  #define CONFIG_SYS_NAND_U_BOOT_START   CONFIG_SYS_TEXT_BASE  #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000 diff --git a/include/configs/omap3_igep00x0.h b/include/configs/omap3_igep00x0.h index ac36ac695..cdaa9ba9a 100644 --- a/include/configs/omap3_igep00x0.h +++ b/include/configs/omap3_igep00x0.h @@ -362,6 +362,7 @@  						10, 11, 12, 13}  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_HAM1_CODE_HW  #define CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE  #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000  #endif diff --git a/include/configs/omap3_overo.h b/include/configs/omap3_overo.h index 46416946c..00d7c6ceb 100644 --- a/include/configs/omap3_overo.h +++ b/include/configs/omap3_overo.h @@ -325,6 +325,7 @@  						10, 11, 12, 13}  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_HAM1_CODE_HW  #define CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE  #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000 diff --git a/include/configs/siemens-am33x-common.h b/include/configs/siemens-am33x-common.h index f3b41975c..e3944782f 100644 --- a/include/configs/siemens-am33x-common.h +++ b/include/configs/siemens-am33x-common.h @@ -196,6 +196,7 @@  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	14 +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_BCH8_CODE_HW  #define CONFIG_SYS_NAND_ECCSTEPS	4  #define	CONFIG_SYS_NAND_ECCTOTAL	(CONFIG_SYS_NAND_ECCBYTES * \ diff --git a/include/configs/tam3517-common.h b/include/configs/tam3517-common.h index 683bc54a2..48698b57d 100644 --- a/include/configs/tam3517-common.h +++ b/include/configs/tam3517-common.h @@ -225,7 +225,6 @@  #define CONFIG_SPL_BOARD_INIT  #define CONFIG_SPL_CONSOLE  #define CONFIG_SPL_NAND_SIMPLE -#define CONFIG_SPL_NAND_SOFTECC  #define CONFIG_SPL_NAND_WORKSPACE	0x8f07f000 /* below BSS */  #define CONFIG_SPL_LIBCOMMON_SUPPORT @@ -262,6 +261,7 @@  					 56, 57, 58, 59, 60, 61, 62, 63}  #define CONFIG_SYS_NAND_ECCSIZE		256  #define CONFIG_SYS_NAND_ECCBYTES	3 +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_HAM1_CODE_SW  #define CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE diff --git a/include/configs/tricorder.h b/include/configs/tricorder.h index 590eab7e4..3ca1fd0e6 100644 --- a/include/configs/tricorder.h +++ b/include/configs/tricorder.h @@ -138,7 +138,6 @@  #define CONFIG_SYS_MAX_NAND_DEVICE	1		/* Max number of NAND */  							/* devices */ -#define CONFIG_NAND_OMAP_BCH8  #define CONFIG_BCH  #define CONFIG_SYS_NAND_MAX_OOBFREE	2  #define CONFIG_SYS_NAND_MAX_ECCPOS	56 @@ -376,6 +375,7 @@  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	13 +#define CONFIG_NAND_OMAP_ECCSCHEME	OMAP_ECC_BCH8_CODE_HW_DETECTION_SW  #define CONFIG_SYS_NAND_U_BOOT_START	CONFIG_SYS_TEXT_BASE |