summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand/atmel_nand.c
diff options
context:
space:
mode:
authorHerve Codina <herve.codina@celad.com>2014-02-28 16:53:44 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2014-03-03 08:56:28 +0100
commitad22ad38ea21ac3ee00e9cfb6f6883527d02c376 (patch)
tree3a22b75ce8f5d7981f5fc7289d301a030a26a9e4 /drivers/mtd/nand/atmel_nand.c
parent49d9b9bea71b13fa44153e2e21c681722fbafa5a (diff)
downloadbarebox-ad22ad38ea21ac3ee00e9cfb6f6883527d02c376.tar.gz
barebox-ad22ad38ea21ac3ee00e9cfb6f6883527d02c376.tar.xz
mtd: nand: atmel pmecc: disable subpage writes
I am using an sam5d35 and its pmecc nand ecc controller. In barebox, using similar atmel_nand.c the system crashes. The problem was a call to chip->ecc.hwctl from nand_write_subpage_hwecc (nand_base.c) when we write a sub page. chip->ecc.hwctl function is not set when we are using PMECC controller. As a workaround, i set NAND_NO_SUBPAGE_WRITE for PMECC controller in order to disable sub page access in nand_write_page. I think we can have the same problem in Linux. I do not performed subpage nand writes from Linux but i made the following patch according to my Barebox defect. Signed-off-by: Herve Codina <Herve.CODINA@celad.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.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c
index 658ae528d6..2e9f61f119 100644
--- a/drivers/mtd/nand/atmel_nand.c
+++ b/drivers/mtd/nand/atmel_nand.c
@@ -837,6 +837,7 @@ static int __init atmel_pmecc_nand_init_params(struct device_d *dev,
return err_no;
}
+ nand_chip->options |= NAND_NO_SUBPAGE_WRITE;
nand_chip->ecc.read_page = atmel_nand_pmecc_read_page;
nand_chip->ecc.write_page = atmel_nand_pmecc_write_page;