- for (page = ONENAND_START_PAGE;
- page < ONENAND_PAGES_PER_BLOCK; page++) {
-
- onenand_read_page(0, page, buf + offset, pagesize);
- offset += pagesize;
+ for (block = 0; block < nblocks; block++) {
+ for (; page < ONENAND_PAGES_PER_BLOCK; page++) {
+ if (onenand_read_page(block, page, buf + offset,
+ pagesize)) {
+ /* This block is bad. Skip it
+ * and read next block */
+ offset -= page * pagesize;
+ nblocks++;
+ break;
+ }
+ offset += pagesize;
+ }
+ page = 0;