Browse Source

mtd: nand: sunxi: fix bitflips in erased pages

Use the nand_check_erased_ecc_chunk() function to test if the ECC error
was triggered by an erased page containing a few bitflips.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Boris BREZILLON 9 years ago
parent
commit
146b503e10
1 changed files with 3 additions and 1 deletions
  1. 3 1
      drivers/mtd/nand/sunxi_nand.c

+ 3 - 1
drivers/mtd/nand/sunxi_nand.c

@@ -611,7 +611,9 @@ static int sunxi_nfc_hw_ecc_read_chunk(struct mtd_info *mtd,
 	sunxi_nfc_read_buf(mtd, oob, ecc->bytes + 4);
 	sunxi_nfc_read_buf(mtd, oob, ecc->bytes + 4);
 
 
 	if (status & NFC_ECC_ERR(0)) {
 	if (status & NFC_ECC_ERR(0)) {
-		ret = -EIO;
+		ret = nand_check_erased_ecc_chunk(data,	ecc->size,
+						  oob, ecc->bytes + 4,
+						  NULL, 0, ecc->strength);
 	} else {
 	} else {
 		/*
 		/*
 		 * The engine protects 4 bytes of OOB data per chunk.
 		 * The engine protects 4 bytes of OOB data per chunk.