[MTD] OneNAND: fix onenand_wait bug in read ecc error
authorKyungmin Park <kyungmin.park@samsung.com>
Fri, 29 Dec 2006 02:51:40 +0000 (11:51 +0900)
committerArtem Bityutskiy <dedekind@infradead.org>
Wed, 10 Jan 2007 12:40:16 +0000 (14:40 +0200)
Even though there is ECC error. OneNAND driver updates the buffram as valid

Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
drivers/mtd/onenand/onenand_base.c

index 0037cee..e80857b 100644 (file)
@@ -298,7 +298,7 @@ static int onenand_wait(struct mtd_info *mtd, int state)
        unsigned long timeout;
        unsigned int flags = ONENAND_INT_MASTER;
        unsigned int interrupt = 0;
-       unsigned int ctrl, ecc;
+       unsigned int ctrl;
 
        /* The 20 msec is enough */
        timeout = jiffies + msecs_to_jiffies(20);
@@ -324,7 +324,7 @@ static int onenand_wait(struct mtd_info *mtd, int state)
        }
 
        if (interrupt & ONENAND_INT_READ) {
-               ecc = this->read_word(this->base + ONENAND_REG_ECC_STATUS);
+               int ecc = this->read_word(this->base + ONENAND_REG_ECC_STATUS);
                if (ecc) {
                        DEBUG(MTD_DEBUG_LEVEL0, "onenand_wait: ECC error = 0x%04x\n", ecc);
                        if (ecc & ONENAND_ECC_2BIT_ALL)
@@ -332,6 +332,7 @@ static int onenand_wait(struct mtd_info *mtd, int state)
                        else if (ecc & ONENAND_ECC_1BIT_ALL)
                                mtd->ecc_stats.corrected++;
                }
+               return ecc;
        }
 
        return 0;