If load of existing BBT fails (first run), scan device for factory-set
BBMs (Bad-Block Markers) and create a new flash-resident.

Signed-off-by: Lee Jones <lee.jo...@linaro.org>
---
 drivers/mtd/nand/stm_nand_bch.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/drivers/mtd/nand/stm_nand_bch.c b/drivers/mtd/nand/stm_nand_bch.c
index d1d84c1..6698b1f 100644
--- a/drivers/mtd/nand/stm_nand_bch.c
+++ b/drivers/mtd/nand/stm_nand_bch.c
@@ -1834,6 +1834,21 @@ static int stm_nand_bch_probe(struct platform_device 
*pdev)
        if (err)
                return err;
 
+       /* Load Flash-resident BBT */
+       err = bch_load_bbt(nandi, bbt_info);
+       if (err) {
+               dev_warn(nandi->dev,
+                       "failed to find BBTs:"
+                       "  scanning device for bad-block markers\n");
+
+               /* Scan, build, and write BBT */
+               nandi_scan_build_bbt(nandi, bbt_info);
+               err = bch_update_bbts(nandi, bbt_info, NAND_IBBT_UPDATE_BOTH,
+                                     bbt_info->bbt_vers[0] + 1);
+               if (err)
+                       return err;
+       }
+
        return 0;
 }
 
-- 
1.8.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to