summaryrefslogtreecommitdiff
path: root/cpu/arm926ejs
diff options
context:
space:
mode:
authorSudhakar Rajashekara <x0096290@linux-psp-server.(none)>2009-03-26 10:11:28 -0400
committerJustin Waters <justin.waters@timesys.com>2009-09-09 14:03:22 -0400
commitd6292d79e4748444b44c3db12f8f45b29092592d (patch)
tree634b817aa33c57abc56294c7f2592040d8408fea /cpu/arm926ejs
parent472656e548484cdc0bb56c368efce43c97d0ef5f (diff)
Fix for 1 Bit hardware ECC.
Signed-off-by: Sudhakar Rajashekara <x0096290@linux-psp-server.(none)>
Diffstat (limited to 'cpu/arm926ejs')
-rw-r--r--cpu/arm926ejs/da8xx/nand.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/cpu/arm926ejs/da8xx/nand.c b/cpu/arm926ejs/da8xx/nand.c
index 014e2b0c113..c3a309c1b25 100644
--- a/cpu/arm926ejs/da8xx/nand.c
+++ b/cpu/arm926ejs/da8xx/nand.c
@@ -121,6 +121,7 @@ static void nand_davinci_enable_hwecc(struct mtd_info *mtd, int mode)
{
emifregs emif_addr;
int dummy;
+ int region = 2;
emif_addr = (emifregs)DAVINCI_ASYNC_EMIF_CNTRL_BASE;
@@ -129,7 +130,7 @@ static void nand_davinci_enable_hwecc(struct mtd_info *mtd, int mode)
dummy = emif_addr->NANDF3ECC;
dummy = emif_addr->NANDF4ECC;
- emif_addr->NANDFCR |= (1 << 8);
+ emif_addr->NANDFCR |= (1 << (8 + region - 1)) | (1 << (region - 1));
}
static u_int32_t nand_davinci_readecc(struct mtd_info *mtd, u_int32_t region)
@@ -177,7 +178,7 @@ static int nand_davinci_calculate_ecc(struct mtd_info *mtd, const u_char *dat, u
region++;
}
#else
- const int region = 1;
+ const int region = 2;
tmp = nand_davinci_readecc(mtd, region);
@@ -422,7 +423,7 @@ static void nand_flash_init(void)
emif_regs->AB2CR = acfg2;
emif_regs->AB3CR = acfg3;
emif_regs->AB4CR = acfg4;
- emif_regs->NANDFCR = 0x00000101;
+ emif_regs->NANDFCR = 0x00000202;
}
int board_nand_init(struct nand_chip *nand)