diff options
| -rw-r--r-- | arch/arm/cpu/armv7/am33xx/Makefile | 1 | ||||
| -rw-r--r-- | arch/arm/include/asm/omap_elm.h (renamed from arch/arm/include/asm/arch-am33xx/elm.h) | 0 | ||||
| -rw-r--r-- | doc/README.nand | 19 | ||||
| -rw-r--r-- | drivers/mtd/nand/Makefile | 1 | ||||
| -rw-r--r-- | drivers/mtd/nand/omap_elm.c (renamed from arch/arm/cpu/armv7/am33xx/elm.c) | 6 | ||||
| -rw-r--r-- | drivers/mtd/nand/omap_gpmc.c | 2 | ||||
| -rw-r--r-- | include/configs/am335x_evm.h | 2 | ||||
| -rw-r--r-- | include/configs/am335x_igep0033.h | 1 | ||||
| -rw-r--r-- | include/configs/siemens-am33x-common.h | 1 | 
9 files changed, 28 insertions, 5 deletions
| diff --git a/arch/arm/cpu/armv7/am33xx/Makefile b/arch/arm/cpu/armv7/am33xx/Makefile index 966fcab71..5566310d9 100644 --- a/arch/arm/cpu/armv7/am33xx/Makefile +++ b/arch/arm/cpu/armv7/am33xx/Makefile @@ -19,4 +19,3 @@ obj-y	+= ddr.o  obj-y	+= emif4.o  obj-y	+= board.o  obj-y	+= mux.o -obj-$(CONFIG_NAND_OMAP_GPMC)	+= elm.o diff --git a/arch/arm/include/asm/arch-am33xx/elm.h b/arch/arm/include/asm/omap_elm.h index 45454eaf0..45454eaf0 100644 --- a/arch/arm/include/asm/arch-am33xx/elm.h +++ b/arch/arm/include/asm/omap_elm.h diff --git a/doc/README.nand b/doc/README.nand index 3a507b6c8..ce7ea5e1e 100644 --- a/doc/README.nand +++ b/doc/README.nand @@ -179,6 +179,25 @@ Configuration Options:        Please convert your driver even if you don't need the extra        flexibility, so that one day we can eliminate the old mechanism. + +Platform specific options +========================= +   CONFIG_NAND_OMAP_GPMC +	Enables omap_gpmc.c driver for OMAPx and AMxxxx platforms. +	GPMC controller is used for parallel NAND flash devices, and can +	do ECC calculation (not ECC error detection) for HAM1, BCH4, BCH8 +	and BCH16 ECC algorithms. + +   CONFIG_NAND_OMAP_ELM +	Enables omap_elm.c driver for OMAPx and AMxxxx platforms. +	ELM controller is used for ECC error detection (not ECC calculation) +	of BCH4, BCH8 and BCH16 ECC algorithms. +	Some legacy platforms like OMAP3xx do not have in-built ELM h/w engine, +	thus such SoC platforms need to depend on software library for ECC error +	detection. However ECC calculation on such plaforms would still be +	done by GPMC controller. + +  NOTE:  ===== diff --git a/drivers/mtd/nand/Makefile b/drivers/mtd/nand/Makefile index eb1eafaf0..e145cd184 100644 --- a/drivers/mtd/nand/Makefile +++ b/drivers/mtd/nand/Makefile @@ -58,6 +58,7 @@ obj-$(CONFIG_NAND_S3C2410) += s3c2410_nand.o  obj-$(CONFIG_NAND_SPEAR) += spr_nand.o  obj-$(CONFIG_TEGRA_NAND) += tegra_nand.o  obj-$(CONFIG_NAND_OMAP_GPMC) += omap_gpmc.o +obj-$(CONFIG_NAND_OMAP_ELM) += omap_elm.o  obj-$(CONFIG_NAND_PLAT) += nand_plat.o  obj-$(CONFIG_NAND_DOCG4) += docg4.o diff --git a/arch/arm/cpu/armv7/am33xx/elm.c b/drivers/mtd/nand/omap_elm.c index 8f1d6afdd..2aa7807f3 100644 --- a/arch/arm/cpu/armv7/am33xx/elm.c +++ b/drivers/mtd/nand/omap_elm.c @@ -18,7 +18,7 @@  #include <asm/errno.h>  #include <asm/arch/cpu.h>  #include <asm/omap_gpmc.h> -#include <asm/arch/elm.h> +#include <asm/omap_elm.h>  #define ELM_DEFAULT_POLY (0) @@ -127,7 +127,7 @@ int elm_check_error(u8 *syndrome, u32 nibbles, u32 *error_count,  	for (i = 0; i < *error_count; i++) {  		error_locations[i] = -			readl(&elm_cfg->error_location[poly].error_location_x[i]); +		     readl(&elm_cfg->error_location[poly].error_location_x[i]);  	}  	return 0; @@ -175,7 +175,7 @@ void elm_reset(void)  {  	/* initiate reset */  	writel((readl(&elm_cfg->sysconfig) | ELM_SYSCONFIG_SOFTRESET), -				&elm_cfg->sysconfig); +			&elm_cfg->sysconfig);  	/* wait for reset complete and normal operation */  	while ((readl(&elm_cfg->sysstatus) & ELM_SYSSTATUS_RESETDONE) != diff --git a/drivers/mtd/nand/omap_gpmc.c b/drivers/mtd/nand/omap_gpmc.c index ec1787f22..c8288597a 100644 --- a/drivers/mtd/nand/omap_gpmc.c +++ b/drivers/mtd/nand/omap_gpmc.c @@ -16,7 +16,7 @@  #include <linux/compiler.h>  #include <nand.h>  #ifdef CONFIG_AM33XX -#include <asm/arch/elm.h> +#include <asm/omap_elm.h>  #endif  static uint8_t cs; diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h index c2ba7e35d..73d8b4dfb 100644 --- a/include/configs/am335x_evm.h +++ b/include/configs/am335x_evm.h @@ -221,6 +221,8 @@  #define CONFIG_SPL_LDSCRIPT		"$(CPUDIR)/am33xx/u-boot-spl.lds"  #ifdef CONFIG_NAND +#define CONFIG_NAND_OMAP_GPMC +#define CONFIG_NAND_OMAP_ELM  #define CONFIG_SYS_NAND_5_ADDR_CYCLE  #define CONFIG_SYS_NAND_PAGE_COUNT	(CONFIG_SYS_NAND_BLOCK_SIZE / \  					 CONFIG_SYS_NAND_PAGE_SIZE) diff --git a/include/configs/am335x_igep0033.h b/include/configs/am335x_igep0033.h index 2c69d4e30..88ced7311 100644 --- a/include/configs/am335x_igep0033.h +++ b/include/configs/am335x_igep0033.h @@ -187,6 +187,7 @@  /* NAND support */  #define CONFIG_NAND  #define CONFIG_NAND_OMAP_GPMC +#define CONFIG_NAND_OMAP_ELM  #define GPMC_NAND_ECC_LP_x16_LAYOUT	1  #define CONFIG_SYS_NAND_BASE		(0x08000000)	/* phys address CS0 */  #define CONFIG_SYS_MAX_NAND_DEVICE	1 diff --git a/include/configs/siemens-am33x-common.h b/include/configs/siemens-am33x-common.h index 9eb0a04da..f3b41975c 100644 --- a/include/configs/siemens-am33x-common.h +++ b/include/configs/siemens-am33x-common.h @@ -431,6 +431,7 @@  		"\0"  #define CONFIG_NAND_OMAP_GPMC +#define CONFIG_NAND_OMAP_ELM  #define GPMC_NAND_ECC_LP_x16_LAYOUT	1  #define CONFIG_SYS_NAND_BASE		(0x08000000)	/* physical address */  							/* to access nand at */ |