[U-Boot-Users] NAND drivers bug
Terence Soh
Terence.Soh at appliedbiosystems.com
Tue Aug 8 12:08:33 CEST 2006
Hi,
I refer to the nand driver code in the git and wishes to report some bugs.
1) nand erase <start> <end>
The erase operation terminates if a bad block is encountered. It should be
int nand_erase_nand (struct mtd_info *mtd, struct erase_info *instr, int
allowbbt)
{
....
while (len) {
#ifndef NAND_ALLOW_ERASE_ALL
/* Check if we have a bad block, we do not erase bad
blocks ! */
if (nand_block_checkbad(mtd, ((loff_t) page) <<
this->page_shift, 0, allowbbt)) {
#if 0
printk (KERN_WARNING "nand_erase: attempt to erase
a bad block at address 0x%08x\n", page * mtd->oobblock);
instr->state = MTD_ERASE_FAILED;
goto erase_exit;
#else
/* bad block; ignore */
page += pages_per_block;
len -= (1 << this->phys_erase_shift);
continue;
#endif
}
#endif
2) nand_write_ecc and/or nand_write_page writes to the nand flash without
checking if the block is bad. I believe that in the linux kernel, this
checking is taken care of in the fs layer (jffs2/yaffs).
Regards,
Terence.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.denx.de/pipermail/u-boot/attachments/20060808/6b8c7309/attachment.htm
More information about the U-Boot
mailing list