mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-26 06:30:39 +00:00
nand/fsl_ifc: Increase eccstat[] for IFC 2.0
IFC 2.0 doubled the SRAM size, which means double the number of ECCSTAT registers. Fix the resulting array overflow. Signed-off-by: Scott Wood <scottwood@freescale.com> Reviewed-by: York Sun <yorksun@freescale.com>
This commit is contained in:
parent
45bc6fd108
commit
585acc9de6
1 changed files with 9 additions and 2 deletions
|
@ -292,7 +292,7 @@ static int fsl_ifc_run_command(struct mtd_info *mtd)
|
|||
struct fsl_ifc *ifc = ctrl->regs;
|
||||
u32 timeo = (CONFIG_SYS_HZ * 10) / 1000;
|
||||
u32 time_start;
|
||||
u32 eccstat[4] = {0};
|
||||
u32 eccstat[8] = {0};
|
||||
int i;
|
||||
|
||||
/* set the chip select for NAND Transaction */
|
||||
|
@ -325,8 +325,15 @@ static int fsl_ifc_run_command(struct mtd_info *mtd)
|
|||
int sector = bufnum * chip->ecc.steps;
|
||||
int sector_end = sector + chip->ecc.steps - 1;
|
||||
|
||||
for (i = sector / 4; i <= sector_end / 4; i++)
|
||||
for (i = sector / 4; i <= sector_end / 4; i++) {
|
||||
if (i >= ARRAY_SIZE(eccstat)) {
|
||||
printf("%s: eccstat too small for %d\n",
|
||||
__func__, i);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
eccstat[i] = ifc_in32(&ifc->ifc_nand.nand_eccstat[i]);
|
||||
}
|
||||
|
||||
for (i = sector; i <= sector_end; i++) {
|
||||
errors = check_read_ecc(mtd, ctrl, eccstat, i);
|
||||
|
|
Loading…
Reference in a new issue