[MTD] [NAND] Don't panic if a controller driver does ecc its own way.

Linux-MTD Mailing List linux-mtd at lists.infradead.org
Thu Jan 10 17:59:01 EST 2008


Gitweb:     http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=78b65179d08e7e4466ba69d5ede85035a2c96358
Commit:     78b65179d08e7e4466ba69d5ede85035a2c96358
Parent:     36f97bc617e2c31d16b74e89cd2406de4d24ede5
Author:     Scott Wood <scottwood at freescale.com>
AuthorDate: Thu Dec 13 11:15:28 2007 -0600
Committer:  David Woodhouse <dwmw2 at infradead.org>
CommitDate: Tue Jan 8 07:51:57 2008 +0000

    [MTD] [NAND] Don't panic if a controller driver does ecc its own way.
    
    Some hardware, such as the enhanced local bus controller used on some
    mpc83xx chips, does ecc transparently when reading and writing data, rather
    than providing a generic calculate/correct mechanism that can be exported to
    the nand subsystem.
    
    The subsystem should not BUG() when calculate, correct, or hwctl are
    missing, if the methods that call them have been overridden.
    
    Signed-off-by: Scott Wood <scottwood at freescale.com>
    Signed-off-by: David Woodhouse <dwmw2 at infradead.org>
---
 drivers/mtd/nand/nand_base.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index e29c1da..85a7283 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -2469,8 +2469,12 @@ int nand_scan_tail(struct mtd_info *mtd)
 			chip->ecc.write_oob = nand_write_oob_std;
 
 	case NAND_ECC_HW_SYNDROME:
-		if (!chip->ecc.calculate || !chip->ecc.correct ||
-		    !chip->ecc.hwctl) {
+		if ((!chip->ecc.calculate || !chip->ecc.correct ||
+		     !chip->ecc.hwctl) &&
+		    (!chip->ecc.read_page ||
+		     chip->ecc.read_page == nand_read_page_hwecc) ||
+		     !chip->ecc.write_page ||
+		     chip->ecc.write_page == nand_write_page_hwecc) {
 			printk(KERN_WARNING "No ECC functions supplied, "
 			       "Hardware ECC not possible\n");
 			BUG();



More information about the linux-mtd-cvs mailing list