|
|
|
@ -4089,32 +4089,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org> |
|
|
|
|
struct nand_chip *chip = mtd->priv;
|
|
|
|
|
--- a/drivers/mtd/nand/nand_bbt.c
|
|
|
|
|
+++ b/drivers/mtd/nand/nand_bbt.c
|
|
|
|
|
@@ -1378,6 +1378,47 @@ int nand_isbad_bbt(struct mtd_info *mtd,
|
|
|
|
|
@@ -1378,6 +1378,25 @@ int nand_isbad_bbt(struct mtd_info *mtd,
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
+/**
|
|
|
|
|
+ * nand_markbad_bbt - [NAND Interface] Mark a block bad in the BBT
|
|
|
|
|
+ * @mtd: MTD device structure
|
|
|
|
|
+ * @offs: offset of the bad block
|
|
|
|
|
+ */
|
|
|
|
|
+int nand_markbad_bbt(struct mtd_info *mtd, loff_t offs)
|
|
|
|
|
+{
|
|
|
|
|
+ struct nand_chip *this = mtd->priv;
|
|
|
|
|
+ int block, ret = 0;
|
|
|
|
|
+
|
|
|
|
|
+ block = (int)(offs >> this->bbt_erase_shift);
|
|
|
|
|
+
|
|
|
|
|
+ /* Mark bad block in memory */
|
|
|
|
|
+ bbt_mark_entry(this, block, BBT_BLOCK_WORN);
|
|
|
|
|
+
|
|
|
|
|
+ /* Update flash-based bad block table */
|
|
|
|
|
+ if (this->bbt_options & NAND_BBT_USE_FLASH)
|
|
|
|
|
+ ret = nand_update_bbt(mtd, offs);
|
|
|
|
|
+
|
|
|
|
|
+ return ret;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void nand_bbt_set(struct mtd_info *mtd, int page, int flag)
|
|
|
|
|
+{
|
|
|
|
|
+ struct nand_chip *this = mtd->priv;
|
|
|
|
|