diff options
| -rw-r--r-- | drivers/mtd/nand/nand_spl_simple.c | 42 | ||||
| -rw-r--r-- | include/configs/am3517_crane.h | 4 | ||||
| -rw-r--r-- | include/configs/am3517_evm.h | 4 | ||||
| -rw-r--r-- | include/configs/devkit8000.h | 5 | ||||
| -rw-r--r-- | include/configs/hawkboard.h | 5 | ||||
| -rw-r--r-- | include/configs/omap3_beagle.h | 4 | ||||
| -rw-r--r-- | include/configs/omap3_evm.h | 4 | ||||
| -rw-r--r-- | include/configs/omap3_evm_quick_nand.h | 4 | 
8 files changed, 17 insertions, 55 deletions
| diff --git a/drivers/mtd/nand/nand_spl_simple.c b/drivers/mtd/nand/nand_spl_simple.c index 7eb08a3b0..4a4d02f4c 100644 --- a/drivers/mtd/nand/nand_spl_simple.c +++ b/drivers/mtd/nand/nand_spl_simple.c @@ -27,6 +27,11 @@ static int nand_ecc_pos[] = CONFIG_SYS_NAND_ECCPOS;  static nand_info_t mtd;  static struct nand_chip nand_chip; +#define ECCSTEPS	(CONFIG_SYS_NAND_PAGE_SIZE / \ +					CONFIG_SYS_NAND_ECCSIZE) +#define ECCTOTAL	(ECCSTEPS * CONFIG_SYS_NAND_ECCBYTES) + +  #if (CONFIG_SYS_NAND_PAGE_SIZE <= 512)  /*   * NAND command for small page NAND devices (512) @@ -145,29 +150,21 @@ static int nand_is_bad_block(int block)  static int nand_read_page(int block, int page, uchar *dst)  {  	struct nand_chip *this = mtd.priv; -	u_char *ecc_calc; -	u_char *ecc_code; -	u_char *oob_data; +	u_char ecc_calc[ECCTOTAL]; +	u_char ecc_code[ECCTOTAL]; +	u_char oob_data[CONFIG_SYS_NAND_OOBSIZE];  	int i;  	int eccsize = CONFIG_SYS_NAND_ECCSIZE;  	int eccbytes = CONFIG_SYS_NAND_ECCBYTES; -	int eccsteps = CONFIG_SYS_NAND_ECCSTEPS; +	int eccsteps = ECCSTEPS;  	uint8_t *p = dst; -	/* -	 * No malloc available for now, just use some temporary locations -	 * in SDRAM -	 */ -	ecc_calc = (u_char *)(CONFIG_SYS_SDRAM_BASE + 0x10000); -	ecc_code = ecc_calc + 0x100; -	oob_data = ecc_calc + 0x200; -  	nand_command(block, page, 0, NAND_CMD_READOOB);  	this->read_buf(&mtd, oob_data, CONFIG_SYS_NAND_OOBSIZE);  	nand_command(block, page, 0, NAND_CMD_READ0);  	/* Pick the ECC bytes out of the oob data */ -	for (i = 0; i < CONFIG_SYS_NAND_ECCTOTAL; i++) +	for (i = 0; i < ECCTOTAL; i++)  		ecc_code[i] = oob_data[nand_ecc_pos[i]]; @@ -184,24 +181,17 @@ static int nand_read_page(int block, int page, uchar *dst)  static int nand_read_page(int block, int page, void *dst)  {  	struct nand_chip *this = mtd.priv; -	u_char *ecc_calc; -	u_char *ecc_code; -	u_char *oob_data; +	u_char ecc_calc[ECCTOTAL]; +	u_char ecc_code[ECCTOTAL]; +	u_char oob_data[CONFIG_SYS_NAND_OOBSIZE];  	int i;  	int eccsize = CONFIG_SYS_NAND_ECCSIZE;  	int eccbytes = CONFIG_SYS_NAND_ECCBYTES; -	int eccsteps = CONFIG_SYS_NAND_ECCSTEPS; +	int eccsteps = ECCSTEPS;  	uint8_t *p = dst;  	nand_command(block, page, 0, NAND_CMD_READ0); -	/* No malloc available for now, just use some temporary locations -	 * in SDRAM -	 */ -	ecc_calc = (u_char *)(CONFIG_SYS_SDRAM_BASE + 0x10000); -	ecc_code = ecc_calc + 0x100; -	oob_data = ecc_calc + 0x200; -  	for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {  		if (this->ecc.mode != NAND_ECC_SOFT)  			this->ecc.hwctl(&mtd, NAND_ECC_READ); @@ -211,10 +201,10 @@ static int nand_read_page(int block, int page, void *dst)  	this->read_buf(&mtd, oob_data, CONFIG_SYS_NAND_OOBSIZE);  	/* Pick the ECC bytes out of the oob data */ -	for (i = 0; i < CONFIG_SYS_NAND_ECCTOTAL; i++) +	for (i = 0; i < ECCTOTAL; i++)  		ecc_code[i] = oob_data[nand_ecc_pos[i]]; -	eccsteps = CONFIG_SYS_NAND_ECCSTEPS; +	eccsteps = ECCSTEPS;  	p = dst;  	for (i = 0 ; eccsteps; eccsteps--, i += eccbytes, p += eccsize) { diff --git a/include/configs/am3517_crane.h b/include/configs/am3517_crane.h index 0a0c261bf..b0dd2f0af 100644 --- a/include/configs/am3517_crane.h +++ b/include/configs/am3517_crane.h @@ -359,10 +359,6 @@  						10, 11, 12, 13}  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 -#define CONFIG_SYS_NAND_ECCSTEPS	(CONFIG_SYS_NAND_PAGE_SIZE / \ -						CONFIG_SYS_NAND_ECCSIZE) -#define CONFIG_SYS_NAND_ECCTOTAL	(CONFIG_SYS_NAND_ECCBYTES * \ -						CONFIG_SYS_NAND_ECCSTEPS)  #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 d44eeec5b..f797f3ffd 100644 --- a/include/configs/am3517_evm.h +++ b/include/configs/am3517_evm.h @@ -360,10 +360,6 @@  						10, 11, 12, 13}  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 -#define CONFIG_SYS_NAND_ECCSTEPS	(CONFIG_SYS_NAND_PAGE_SIZE / \ -						CONFIG_SYS_NAND_ECCSIZE) -#define CONFIG_SYS_NAND_ECCTOTAL	(CONFIG_SYS_NAND_ECCBYTES * \ -						CONFIG_SYS_NAND_ECCSTEPS)  #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 758326bb9..2b6a6ee09 100644 --- a/include/configs/devkit8000.h +++ b/include/configs/devkit8000.h @@ -343,11 +343,6 @@  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 -#define CONFIG_SYS_NAND_ECCSTEPS	(CONFIG_SYS_NAND_PAGE_SIZE / \ -						CONFIG_SYS_NAND_ECCSIZE) -#define CONFIG_SYS_NAND_ECCTOTAL       (CONFIG_SYS_NAND_ECCBYTES * \ -						CONFIG_SYS_NAND_ECCSTEPS) -  #define CONFIG_SYS_NAND_U_BOOT_START   CONFIG_SYS_TEXT_BASE  #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000 diff --git a/include/configs/hawkboard.h b/include/configs/hawkboard.h index 12acb27ae..65b3b78ab 100644 --- a/include/configs/hawkboard.h +++ b/include/configs/hawkboard.h @@ -138,11 +138,8 @@  #define CONFIG_SYS_NAND_BAD_BLOCK_POS	0  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	10 -#define CONFIG_SYS_NAND_ECCSTEPS	(CONFIG_SYS_NAND_PAGE_SIZE /	 \ -					 CONFIG_SYS_NAND_ECCSIZE)  #define CONFIG_SYS_NAND_OOBSIZE		64 -#define CONFIG_SYS_NAND_ECCTOTAL	(CONFIG_SYS_NAND_ECCBYTES *	\ -					CONFIG_SYS_NAND_ECCSTEPS) +  #endif /* CONFIG_SYS_USE_NAND */  /* diff --git a/include/configs/omap3_beagle.h b/include/configs/omap3_beagle.h index 91af8a025..4c7a686d3 100644 --- a/include/configs/omap3_beagle.h +++ b/include/configs/omap3_beagle.h @@ -418,10 +418,6 @@  						10, 11, 12, 13}  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 -#define CONFIG_SYS_NAND_ECCSTEPS	(CONFIG_SYS_NAND_PAGE_SIZE / \ -						CONFIG_SYS_NAND_ECCSIZE) -#define CONFIG_SYS_NAND_ECCTOTAL	(CONFIG_SYS_NAND_ECCBYTES * \ -						CONFIG_SYS_NAND_ECCSTEPS)  #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 2ce3959fd..1fcb7af9f 100644 --- a/include/configs/omap3_evm.h +++ b/include/configs/omap3_evm.h @@ -121,10 +121,6 @@  						10, 11, 12, 13}  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 -#define CONFIG_SYS_NAND_ECCSTEPS	(CONFIG_SYS_NAND_PAGE_SIZE / \ -						CONFIG_SYS_NAND_ECCSIZE) -#define CONFIG_SYS_NAND_ECCTOTAL       (CONFIG_SYS_NAND_ECCBYTES * \ -						CONFIG_SYS_NAND_ECCSTEPS)  #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 2f879c0bf..362fa1d72 100644 --- a/include/configs/omap3_evm_quick_nand.h +++ b/include/configs/omap3_evm_quick_nand.h @@ -91,10 +91,6 @@  						10, 11, 12, 13}  #define CONFIG_SYS_NAND_ECCSIZE		512  #define CONFIG_SYS_NAND_ECCBYTES	3 -#define CONFIG_SYS_NAND_ECCSTEPS	(CONFIG_SYS_NAND_PAGE_SIZE / \ -						CONFIG_SYS_NAND_ECCSIZE) -#define CONFIG_SYS_NAND_ECCTOTAL       (CONFIG_SYS_NAND_ECCBYTES * \ -						CONFIG_SYS_NAND_ECCSTEPS)  #define CONFIG_SYS_NAND_U_BOOT_START   CONFIG_SYS_TEXT_BASE  #define CONFIG_SYS_NAND_U_BOOT_OFFS	0x80000 |