diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/cmd_nand.c | 54 | ||||
-rw-r--r-- | common/env_nand.c | 26 |
2 files changed, 40 insertions, 40 deletions
diff --git a/common/cmd_nand.c b/common/cmd_nand.c index a4c67c1..84b6272 100644 --- a/common/cmd_nand.c +++ b/common/cmd_nand.c @@ -201,7 +201,7 @@ static void do_nand_status(nand_info_t *nand) unsigned long nand_env_oob_offset; int do_nand_env_oob(cmd_tbl_t *cmdtp, nand_info_t *nand, - int argc, char * const argv[]) + int argc, char * const argv[]) { int ret; uint32_t oob_buf[ENV_OFFSET_SIZE/sizeof(uint32_t)]; @@ -210,10 +210,10 @@ int do_nand_env_oob(cmd_tbl_t *cmdtp, nand_info_t *nand, if (!strcmp(cmd, "get")) { ret = get_nand_env_oob(nand, &nand_env_oob_offset); - if (!ret) - printf("0x%08lx\n", nand_env_oob_offset); - else + if (ret) return 1; + + printf("0x%08lx\n", nand_env_oob_offset); } else if (!strcmp(cmd, "set")) { ulong addr; size_t dummy_size; @@ -222,17 +222,17 @@ int do_nand_env_oob(cmd_tbl_t *cmdtp, nand_info_t *nand, if (argc < 3) goto usage; - if (arg_off_size(argc-2, argv + 2, nand, &addr, - &dummy_size) < 0) { + if (arg_off_size(argc - 2, argv + 2, nand, &addr, + &dummy_size) < 0) { printf("Offset or partition name expected\n"); return 1; } if (nand->oobavail < ENV_OFFSET_SIZE) { - printf("Insufficient available OOB bytes: %d OOB bytes" - " available but %d required for env.oob support\n", - nand->oobavail, - ENV_OFFSET_SIZE); + printf("Insufficient available OOB bytes:\n" + "%d OOB bytes available but %d required for " + "env.oob support\n", + nand->oobavail, ENV_OFFSET_SIZE); return 1; } @@ -251,23 +251,23 @@ int do_nand_env_oob(cmd_tbl_t *cmdtp, nand_info_t *nand, oob_buf[1] = addr / nand->erasesize; ret = nand->write_oob(nand, ENV_OFFSET_SIZE, &ops); - if (!ret) { - ret = get_nand_env_oob(nand, &nand_env_oob_offset); - if (ret) { - printf("Error reading env offset in OOB\n"); - return ret; - } - - if (addr != nand_env_oob_offset) { - printf("Verification of env offset in OOB " - "failed: 0x%08lx expected but got " - "0x%08lx\n", addr, nand_env_oob_offset); - return 1; - } - } else { + if (ret) { printf("Error writing OOB block 0\n"); return ret; } + + ret = get_nand_env_oob(nand, &nand_env_oob_offset); + if (ret) { + printf("Error reading env offset in OOB\n"); + return ret; + } + + if (addr != nand_env_oob_offset) { + printf("Verification of env offset in OOB failed: " + "0x%08lx expected but got 0x%08lx\n", + addr, nand_env_oob_offset); + return 1; + } } else { goto usage; } @@ -369,8 +369,10 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[]) #ifdef CONFIG_ENV_OFFSET_OOB /* this command operates only on the first nand device */ - if (strcmp(cmd, "env.oob") == 0) - return do_nand_env_oob(cmdtp, &nand_info[0], argc - 1, argv + 1); + if (strcmp(cmd, "env.oob") == 0) { + return do_nand_env_oob(cmdtp, &nand_info[0], + argc - 1, argv + 1); + } #endif /* the following commands operate on the current device */ diff --git a/common/env_nand.c b/common/env_nand.c index 47d9848..a5e1038 100644 --- a/common/env_nand.c +++ b/common/env_nand.c @@ -299,23 +299,21 @@ int get_nand_env_oob(nand_info_t *nand, unsigned long *result) ops.oobbuf = (void *) oob_buf; ret = nand->read_oob(nand, ENV_OFFSET_SIZE, &ops); + if (ret) { + printf("error reading OOB block 0\n"); + return ret; + } - if (!ret) { - if (oob_buf[0] == ENV_OOB_MARKER) { - *result = oob_buf[1] * nand->erasesize; - } else if (oob_buf[0] == ENV_OOB_MARKER_OLD) { - *result = oob_buf[1]; - } else { - printf("No dynamic environment marker in OOB block 0" - "\n"); - ret = -ENOENT; - goto fail; - } + if (oob_buf[0] == ENV_OOB_MARKER) { + *result = oob_buf[1] * nand->erasesize; + } else if (oob_buf[0] == ENV_OOB_MARKER_OLD) { + *result = oob_buf[1]; } else { - printf("error reading OOB block 0\n"); + printf("No dynamic environment marker in OOB block 0\n"); + return -ENOENT; } -fail: - return ret; + + return 0; } #endif |