summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Wu <josh.wu@atmel.com>2015-11-24 16:34:01 +0800
committerAndreas Bießmann <andreas.devel@googlemail.com>2016-02-02 11:49:11 +0100
commit258b21fc69c93172d8e4afaeff3a7303740ce7c6 (patch)
treee911cb055ffa4b9797d7fbee230e19512d348395
parentfa651f5d53372dd7a40fd2bcf701694d359820ce (diff)
downloadu-boot-258b21fc69c93172d8e4afaeff3a7303740ce7c6.tar.gz
u-boot-258b21fc69c93172d8e4afaeff3a7303740ce7c6.tar.xz
u-boot-258b21fc69c93172d8e4afaeff3a7303740ce7c6.zip
atmel_nand: Add 32 bit ecc support for sama5d2 chip
Also if minimum ecc requirment is bigger then what we support, then just use our maxium pmecc support. But it is not safe, so we'll output a warning about this. Signed-off-by: Josh Wu <josh.wu@atmel.com> Acked-by: Scott Wood <scottwood@freescale.com> Reviewed-by: Andreas Bießmann <andreas.devel@googlemail.com>
-rw-r--r--drivers/mtd/nand/atmel_nand.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
index 73fd403886..7cc1de0313 100644
--- a/drivers/mtd/nand/atmel_nand.c
+++ b/drivers/mtd/nand/atmel_nand.c
@@ -80,6 +80,7 @@ static struct nand_ecclayout atmel_pmecc_oobinfo;
* 8-bits 13-bytes 14-bytes
* 12-bits 20-bytes 21-bytes
* 24-bits 39-bytes 42-bytes
+ * 32-bits 52-bytes 56-bytes
*/
static int pmecc_get_ecc_bytes(int cap, int sector_size)
{
@@ -638,6 +639,9 @@ static void atmel_pmecc_core_init(struct mtd_info *mtd)
case 24:
val = PMECC_CFG_BCH_ERR24;
break;
+ case 32:
+ val = PMECC_CFG_BCH_ERR32;
+ break;
}
if (host->pmecc_sector_size == 512)
@@ -723,7 +727,11 @@ static int pmecc_choose_ecc(struct atmel_nand_host *host,
else if (*cap <= 24)
host->pmecc_corr_cap = 24;
else
- return -EINVAL;
+#ifdef CONFIG_SAMA5D2
+ host->pmecc_corr_cap = 32;
+#else
+ host->pmecc_corr_cap = 24;
+#endif
}
if (host->pmecc_sector_size == 0) {
/* use the most fitable sector size (the near smaller one ) */