Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 78b65179 authored by Scott Wood's avatar Scott Wood Committed by David Woodhouse
Browse files

[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: default avatarScott Wood <scottwood@freescale.com>
Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
parent 36f97bc6
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -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();