NAND: catch read errors when building BBT

nand_build_bbt() was ignoring the return value from nand_read_page() and
blindly continuing.
It now passes the return value up to the caller if the read fails.

Signed-off-by: Jon Povey <jon.povey@racelogic.co.uk>
__archive__
Jon Povey 2010-05-17 16:15:35 +09:00 committed by Øyvind Harboe
parent 3ecc191b36
commit fafed75d98
1 changed files with 4 additions and 1 deletions

View File

@ -226,6 +226,7 @@ int nand_build_bbt(struct nand_device *nand, int first, int last)
int i;
int pages_per_block = (nand->erase_size / nand->page_size);
uint8_t oob[6];
int ret;
if ((first < 0) || (first >= nand->num_blocks))
first = 0;
@ -236,7 +237,9 @@ int nand_build_bbt(struct nand_device *nand, int first, int last)
page = first * pages_per_block;
for (i = first; i <= last; i++)
{
nand_read_page(nand, page, NULL, 0, oob, 6);
ret = nand_read_page(nand, page, NULL, 0, oob, 6);
if (ret != ERROR_OK)
return ret;
if (((nand->device->options & NAND_BUSWIDTH_16) && ((oob[0] & oob[1]) != 0xff))
|| (((nand->page_size == 512) && (oob[5] != 0xff)) ||