[U-Boot] Possible bug in NAND driver

Paulraj, Sandeep s-paulraj at ti.com
Mon Jul 13 21:34:42 CEST 2009


If we refer to the following code snippet from nand_util.c

rval = nand_read (nand, offset, &read_length, p_buffer);

                if (rval != 0) {

                          printf ("NAND read from offset %llx failed %d\n",

                                  offset, rval);

                         *length -= left_to_read;

                          return rval;

                  }


The above code will return failure even after ECC errors are corrected.

This is because of the following line of code in nand_base.c

return  mtd->ecc_stats.corrected - stats.corrected ? -EUCLEAN : 0;

This is in the nand_do_read_ops in nand_bsae.c


I see that changing

if (rval != 0)


to

if (rval != 0 && rval != -EUCLEAN )


solves the problem.

I can submit a patch if required.


Thanks,
Sandeep



More information about the U-Boot mailing list