> Hi, guys I got a problem. I move a part of source code of > linux/driver/mtd/nand to the u-boot. But I found that the u-boot can not > mark the phsical bad block . when I run nand_erase() or nand_scrub(), it > return error num as below: linux/driver/mtd/nand/nand_base.c > 2589 chip->erase_cmd(mtd, page & chip->pagemask); 2590 > status = chip->waitfunc(mtd, chip); 2592 /* > 2593 * See if operation failed and additional status > checks are 2594 * available > 2595 */ > 2596 if ((status & NAND_STATUS_FAIL) && > (chip->errstat)) 2597 status = chip->errstat(mtd, > chip, FL_ERASING, 2598 > status, page); 2600 /* See if block erase succeeded */ > 2601 if (status & NAND_STATUS_FAIL) { > 2602 DEBUG(MTD_DEBUG_LEVEL0, "%s: Failed erase, > " 2603 "page 0x%08x\n", __func__, > page); 2604 instr->state = MTD_ERASE_FAILED; > 2605 instr->fail_addr = > 2606 ((loff_t)page << > chip->page_shift); 2607 goto erase_exit; > 2608 } > you can find that if block erase is failed(status==-1), it only > mark the instr(we will not use the instr later), and go to the erase_exit. > So there is no code to mark the oob of the phisical bad block, neither add > it to the bad block table. so ,I add the code of writing oob of the > phisical bad block when it is erased failed, such as below: > chip->erase_cmd(mtd, page & chip->pagemask);2589 > > - Ignored: > 2590 status = chip->waitfunc(mtd, chip); > 2592 /* > 2593 * See if operation failed and additional status > checks are 2594 * available > 2595 */ > 2596 if ((status & NAND_STATUS_FAIL) && > (chip->errstat)) 2597 status = chip->errstat(mtd, > chip, FL_ERASING, 2598 > status, page); 2600 /* See if block erase succeeded */ > 2601 if (status & NAND_STATUS_FAIL) { > 2602 DEBUG(MTD_DEBUG_LEVEL0, "%s: Failed erase, > " 2603 "page 0x%08x\n", __func__, > page); 2604 instr->state = MTD_ERASE_FAILED; > 2605 instr->fail_addr = > 2606 ((loff_t)page << > chip->page_shift); nand_write_oob(addr); > 2607 goto erase_exit; > 2608 } > > Guys, what do you think of it , and what would you to if you got > this problem.
Can you please fix your mailer and send this stuff again? It's really hard to decode what you're asking please. M _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot