nand_read_skip_bad() already loops over blocks and handles bad block check
so eliminate this redundant logic.

Signed-off-by: Tim Harvey <thar...@gateworks.com>
---
 common/env_nand.c | 32 ++++++--------------------------
 1 file changed, 6 insertions(+), 26 deletions(-)

diff --git a/common/env_nand.c b/common/env_nand.c
index bab89fd..2036a0e 100644
--- a/common/env_nand.c
+++ b/common/env_nand.c
@@ -268,35 +268,15 @@ static int readenv(size_t offset, u_char *buf)
 #else
 static int readenv(size_t offset, u_char *buf)
 {
-       size_t end = offset + CONFIG_ENV_RANGE;
-       size_t amount_loaded = 0;
-       size_t blocksize, len;
-       u_char *char_ptr;
+       nand_info_t *nand = &nand_info[0];
+       size_t len;
 
-       blocksize = nand_info[0].erasesize;
-       if (!blocksize)
+       len = CONFIG_ENV_SIZE;
+       debug("%s: offset=0x%08x len=0x%08x\n", __func__, offset, len);
+       if (nand_read_skip_bad(nand, offset, &len, NULL, nand->size, buf))
                return 1;
 
-       len = min(blocksize, (size_t)CONFIG_ENV_SIZE);
-       debug("%s: offset=0x%08x blocksize=0x%08x len=0x%08x\n",
-             __func__, offset, blocksize, len);
-
-       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_skip_bad(&nand_info[0], offset,
-                                              &len, NULL,
-                                              nand_info[0].size, char_ptr))
-                               return 1;
-
-                       offset += blocksize;
-                       amount_loaded += len;
-               }
-       }
-
-       if (amount_loaded != CONFIG_ENV_SIZE)
+       if (len != CONFIG_ENV_SIZE)
                return 1;
 
        return 0;
-- 
1.9.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to