|
@@ -394,6 +394,17 @@ static int nand_default_block_markbad(struct mtd_info *mtd, loff_t ofs)
|
|
|
uint8_t buf[2] = { 0, 0 };
|
|
|
int block, ret, i = 0;
|
|
|
|
|
|
+ if (!(chip->bbt_options & NAND_BBT_USE_FLASH)) {
|
|
|
+ struct erase_info einfo;
|
|
|
+
|
|
|
+ /* Attempt erase before marking OOB */
|
|
|
+ memset(&einfo, 0, sizeof(einfo));
|
|
|
+ einfo.mtd = mtd;
|
|
|
+ einfo.addr = ofs;
|
|
|
+ einfo.len = 1 << chip->phys_erase_shift;
|
|
|
+ nand_erase_nand(mtd, &einfo, 0);
|
|
|
+ }
|
|
|
+
|
|
|
if (chip->bbt_options & NAND_BBT_SCANLASTPAGE)
|
|
|
ofs += mtd->erasesize - mtd->writesize;
|
|
|
|