summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand/atmel/pmecc.h
diff options
context:
space:
mode:
authorRomain Izard <romain.izard.pro@gmail.com>2017-09-28 11:46:23 +0200
committerBoris Brezillon <boris.brezillon@free-electrons.com>2017-10-07 11:28:05 +0200
commit143b0ab97d7a40df399cfbc6e925107bed1c7953 (patch)
treec24127b71537b6d88468040c0cb47877ff57bb76 /drivers/mtd/nand/atmel/pmecc.h
parentmtd: nand: qcom: support for command descriptor formation (diff)
downloadlinux-143b0ab97d7a40df399cfbc6e925107bed1c7953.tar.xz
linux-143b0ab97d7a40df399cfbc6e925107bed1c7953.zip
mtd: nand: atmel: Avoid ECC errors when leaving backup mode
During backup mode, the contents of all registers will be cleared as the SoC will be completely powered down. For a product that boots on NAND Flash memory, the bootloader will obviously use the related controller to read the Flash and correct any detected error in the memory, before handling back control to the kernel's resuming entry point. But it does not clean the NAND controller registers after use and on its side the kernel driver expects the error locator to be powered down and in a clean state. Add a resume hook for the PMECC error locator, and reset its registers. Signed-off-by: Romain Izard <romain.izard.pro@gmail.com> Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Diffstat (limited to 'drivers/mtd/nand/atmel/pmecc.h')
-rw-r--r--drivers/mtd/nand/atmel/pmecc.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/mtd/nand/atmel/pmecc.h b/drivers/mtd/nand/atmel/pmecc.h
index a8ddbfca2ea5..817e0dd9fd15 100644
--- a/drivers/mtd/nand/atmel/pmecc.h
+++ b/drivers/mtd/nand/atmel/pmecc.h
@@ -61,6 +61,7 @@ atmel_pmecc_create_user(struct atmel_pmecc *pmecc,
struct atmel_pmecc_user_req *req);
void atmel_pmecc_destroy_user(struct atmel_pmecc_user *user);
+void atmel_pmecc_reset(struct atmel_pmecc *pmecc);
int atmel_pmecc_enable(struct atmel_pmecc_user *user, int op);
void atmel_pmecc_disable(struct atmel_pmecc_user *user);
int atmel_pmecc_wait_rdy(struct atmel_pmecc_user *user);