On 10/25/2011 02:41 AM, Arno Steffen wrote: > I am feeling to spam the board but found finally the reason for this > behaviour. > > nand_read returns with -EUCLEAN in case of correcting errors, and this > will later on reported as BAD NAND, although this error is corrected. > > Correct me if I am wrong. What I did is chaning env_nand.c: > while (amount_loaded < CONFIG_ENV_SIZE && offset < end) { > if (nand_block_isbad(&nand_info[0], offset)) { > offset += blocksize; > } else { > char_ptr = &buf[amount_loaded]; > - if (nand_read(&nand_info[0], offset, &len, char_ptr)) { > - return 1; > + err = nand_read(&nand_info[0], offset, &len, char_ptr); > + if (err) { > + if (err != -EUCLEAN) { // Bad NAND has been > corrected, so no problem > + return 1; > + } > } > offset += blocksize; > amount_loaded += len; > } > > > Correct me if I am wrong, but it seems that all platform are suffered, > not just OMAP. > There will be compared a corrected bits before and after correction, > and it send an error message, if bits are corrected (instead of only > if it can not be corrected).
What version of U-Boot are you looking at? In readenv(), I see nand_read_skip_bad(), not nand_read(). nand_read_skip_bad() handles -EUCLEAN. -Scott _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot