Since commit ff94bc40af34 (mtd, ubi, ubifs: resync with Linux-3.14),
the "nand scrub" command has not been working.

The scrub is a U-Boot extension and we have to modify nand_base.c
that originates in Linux.

Mark the code with #ifdef __UBOOT__ so we will never accidentally
drop it when we re-sync the NAND framework with Linux in the future.

Signed-off-by: Masahiro Yamada <yamad...@jp.panasonic.com>
Cc: Scott Wood <scottw...@freescale.com>
Cc: Heiko Schocher <h...@denx.de>
---

 drivers/mtd/nand/nand_base.c | 5 +++++
 include/linux/mtd/mtd.h      | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 70e780c..83bd033 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -2905,8 +2905,13 @@ int nand_erase_nand(struct mtd_info *mtd, struct 
erase_info *instr,
                WATCHDOG_RESET();
 
                /* Check if we have a bad block, we do not erase bad blocks! */
+#ifdef __UBOOT__
+               if (!instr->scrub && nand_block_checkbad(mtd, ((loff_t) page) <<
+                                       chip->page_shift, 0, allowbbt)) {
+#else
                if (nand_block_checkbad(mtd, ((loff_t) page) <<
                                        chip->page_shift, 0, allowbbt)) {
+#endif
                        pr_warn("%s: attempt to erase a bad block at page 
0x%08x\n",
                                    __func__, page);
                        instr->state = MTD_ERASE_FAILED;
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
index 8666413..2b4e218 100644
--- a/include/linux/mtd/mtd.h
+++ b/include/linux/mtd/mtd.h
@@ -52,7 +52,9 @@ struct erase_info {
        u_long priv;
        u_char state;
        struct erase_info *next;
+#ifdef __UBOOT__
        int scrub;
+#endif
 };
 
 struct mtd_erase_region_info {
-- 
1.9.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to