|
@@ -2595,8 +2595,12 @@ int nand_scan_tail(struct mtd_info *mtd)
|
|
chip->ecc.write_oob = nand_write_oob_std;
|
|
chip->ecc.write_oob = nand_write_oob_std;
|
|
|
|
|
|
case NAND_ECC_HW_SYNDROME:
|
|
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, "
|
|
printk(KERN_WARNING "No ECC functions supplied, "
|
|
"Hardware ECC not possible\n");
|
|
"Hardware ECC not possible\n");
|
|
BUG();
|
|
BUG();
|