aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand/nand_base.c
diff options
context:
space:
mode:
authorScott Wood <scottwood@freescale.com>2007-12-13 12:15:28 -0500
committerDavid Woodhouse <dwmw2@infradead.org>2008-01-08 02:51:57 -0500
commit78b65179d08e7e4466ba69d5ede85035a2c96358 (patch)
tree274983abdb3635b371bc5c9495d56e26934f2116 /drivers/mtd/nand/nand_base.c
parent36f97bc617e2c31d16b74e89cd2406de4d24ede5 (diff)
[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@freescale.com> Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'drivers/mtd/nand/nand_base.c')
-rw-r--r--drivers/mtd/nand/nand_base.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index e29c1da7f56e..85a7283845ff 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)
2469 chip->ecc.write_oob = nand_write_oob_std; 2469 chip->ecc.write_oob = nand_write_oob_std;
2470 2470
2471 case NAND_ECC_HW_SYNDROME: 2471 case NAND_ECC_HW_SYNDROME:
2472 if (!chip->ecc.calculate || !chip->ecc.correct || 2472 if ((!chip->ecc.calculate || !chip->ecc.correct ||
2473 !chip->ecc.hwctl) { 2473 !chip->ecc.hwctl) &&
2474 (!chip->ecc.read_page ||
2475 chip->ecc.read_page == nand_read_page_hwecc) ||
2476 !chip->ecc.write_page ||
2477 chip->ecc.write_page == nand_write_page_hwecc) {
2474 printk(KERN_WARNING "No ECC functions supplied, " 2478 printk(KERN_WARNING "No ECC functions supplied, "
2475 "Hardware ECC not possible\n"); 2479 "Hardware ECC not possible\n");
2476 BUG(); 2480 BUG();