summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand/atmel_nand.c
diff options
context:
space:
mode:
authorRaphael Poggi <poggi.raph@gmail.com>2014-07-17 14:12:20 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2014-07-18 07:35:33 +0200
commitd581be714390fed896cf4a61fa6b81b613949898 (patch)
treeed13f436990d1a0dfb29874d28a847c783f8d0dc /drivers/mtd/nand/atmel_nand.c
parentc280f534127add4a01473e729756f61fc52144a7 (diff)
downloadbarebox-d581be714390fed896cf4a61fa6b81b613949898.tar.gz
barebox-d581be714390fed896cf4a61fa6b81b613949898.tar.xz
mtd: atmel_nand: fix bit error correction
When pmecc uses a 1024 sector size to correct bit error, the gf dimension must be 14. So this commit chooses the right degree for different sector size (512 or 1024). Signed-off-by: Raphaƫl Poggi <poggi.raph@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mtd/nand/atmel_nand.c')
-rw-r--r--drivers/mtd/nand/atmel_nand.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
index a02f38fc42..1ce7d4d49d 100644
--- a/drivers/mtd/nand/atmel_nand.c
+++ b/drivers/mtd/nand/atmel_nand.c
@@ -796,7 +796,8 @@ static int __init atmel_pmecc_nand_init_params(struct device_d *dev,
switch (mtd->writesize) {
case 2048:
case 4096:
- host->pmecc_degree = PMECC_GF_DIMENSION_13;
+ host->pmecc_degree = (sector_size == 512) ?
+ PMECC_GF_DIMENSION_13 : PMECC_GF_DIMENSION_14;
host->pmecc_cw_len = (1 << host->pmecc_degree) - 1;
host->pmecc_sector_number = mtd->writesize / sector_size;
host->pmecc_bytes_per_sector = pmecc_get_ecc_bytes(