[MTD] NAND: Remove empty block ECC workaround

David Woodhouse dwmw2 at infradead.org
Tue Nov 7 22:38:28 EST 2006


Commit:     63a1423763c6c38eeeaf6dc8cee986514ab67aed
Parent:     7608194c4ae454fab23b8d940986eeb9c58c3478
commit 63a1423763c6c38eeeaf6dc8cee986514ab67aed
Author:     David Woodhouse <dwmw2 at infradead.org>
AuthorDate: Fri Oct 27 22:12:02 2006 +0300
Commit:     David Woodhouse <dwmw2 at infradead.org>
CommitDate: Fri Oct 27 22:12:02 2006 +0300

    [MTD] NAND: Remove empty block ECC workaround
    
    They fixed the hardware so that ECC doesn't fail on reading an empty
    block.
    
    Signed-off-by: David Woodhouse <dwmw2 at infradead.org>
---
 drivers/mtd/nand/cafe.c |   28 +---------------------------
 1 files changed, 1 insertions(+), 27 deletions(-)

diff --git a/drivers/mtd/nand/cafe.c b/drivers/mtd/nand/cafe.c
index d894c72..887040c 100644
--- a/drivers/mtd/nand/cafe.c
+++ b/drivers/mtd/nand/cafe.c
@@ -356,26 +356,6 @@ static int cafe_nand_read_oob(struct mtd
  * The hw generator calculates the error syndrome automatically. Therefor
  * we need a special oob layout and handling.
  */
-
-static unsigned short cafe_empty_syndromes[8] = { 4095, 748, 2629, 2920, 875, 1454, 51, 1456 };
-
-static int is_all_ff(unsigned char *buf, int len)
-{
-	unsigned long *lbuf = (void *)buf;
-	int i;
-
-	for (i=0; i < (len/sizeof(long)); i++) {
-		if (lbuf[i] != ~0UL)
-			return 0;
-	}
-	i *= sizeof(long);
-	for (; i< len; i++) {
-		if (buf[i] != 0xff)
-			return 0;
-	}
-	return 1;
-}
-
 static int cafe_nand_read_page(struct mtd_info *mtd, struct nand_chip *chip,
 			       uint8_t *buf)
 {
@@ -398,13 +378,7 @@ static int cafe_nand_read_page(struct mt
 			syn[i+1] = (tmp >> 16) & 0xfff;
 		} 
 
-		/* FIXME: http://dev.laptop.org/ticket/215 */
-		if (!memcmp(syn, cafe_empty_syndromes, sizeof(syn))
-		    && is_all_ff(chip->oob_poi, 14)
-		    && is_all_ff(buf, mtd->writesize)) {
-			dev_dbg(&cafe->pdev->dev, "ECC error reported on empty block\n");
-			/* It was an empty block. Nothing to fix here except the hardware */
-		} else if ((i = cafe_correct_ecc(buf, syn)) < 0) {
+		if ((i = cafe_correct_ecc(buf, syn)) < 0) {
 			dev_dbg(&cafe->pdev->dev, "Failed to correct ECC\n");
 			mtd->ecc_stats.failed++;
 		} else {


More information about the Commits-kernel mailing list