summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Agner <stefan.agner@toradex.com>2015-10-05 16:05:02 -0700
committerStefan Agner <stefan.agner@toradex.com>2015-10-05 16:05:02 -0700
commitb33f457f4240b0244533a2bb5bba7648a1e8c0cc (patch)
treeca6778c55258df5e945abb1b219c9617ef9d3d83
parent2c572f62c17e314a35934cca08b7cdfc6a1dde95 (diff)
toradex: configblock: fix command return codes
Return success/failure depending whether config block loading succeeded or failed (e.g. if written in different ECC format or not available at all).
-rw-r--r--board/toradex/common/configblock.c37
1 files changed, 19 insertions, 18 deletions
diff --git a/board/toradex/common/configblock.c b/board/toradex/common/configblock.c
index f007073e2b..ba6aa49a69 100644
--- a/board/toradex/common/configblock.c
+++ b/board/toradex/common/configblock.c
@@ -334,13 +334,14 @@ static int do_cfgblock_create(cmd_tbl_t *cmdtp, int flag, int argc,
struct toradex_tag *tag;
size_t size = TRDX_CFG_BLOCK_MAX_SIZE;
int offset = 0;
- int ret;
+ int ret = CMD_RET_SUCCESS;
+ int err;
/* Allocate RAM area for config block */
config_block = memalign(ARCH_DMA_MINALIGN, size);
if (!config_block) {
printf("Not enough malloc space available!\n");
- return -ENOMEM;
+ return CMD_RET_FAILURE;
}
memset(config_block, 0xff, size);
@@ -355,33 +356,30 @@ static int do_cfgblock_create(cmd_tbl_t *cmdtp, int flag, int argc,
printf("NAND erase block %d need to be erased before creating "
"a Toradex config block\n",
CONFIG_TRDX_CFG_BLOCK_OFFSET / nand_info[0].erasesize);
- ret = 0;
goto out;
#else
char message[CONFIG_SYS_CBSIZE];
sprintf(message, "A valid Toradex config block is present, "
"still recreate? [y/N] ");
- if (!cli_readline(message)) {
- ret = 0;
+ if (!cli_readline(message))
goto out;
- }
- if (console_buffer[0] != 'y' && console_buffer[0] != 'Y') {
- ret = 0;
+ if (console_buffer[0] != 'y' && console_buffer[0] != 'Y')
goto out;
- }
#endif
}
/* Parse new Toradex config block data... */
if (argc < 3)
- ret = get_cfgblock_interactive();
+ err = get_cfgblock_interactive();
else
- ret = get_cfgblock_barcode(argv[2]);
+ err = get_cfgblock_barcode(argv[2]);
- if (ret)
+ if (err) {
+ ret = CMD_RET_FAILURE;
goto out;
+ }
/* Convert serial number to MAC address (the storage format) */
trdx_eth_addr.oui = htonl(0x00142dUL << 8);
@@ -416,14 +414,15 @@ static int do_cfgblock_create(cmd_tbl_t *cmdtp, int flag, int argc,
memset(config_block + offset, 0, 32 - offset);
#ifdef CONFIG_TRDX_CFG_BLOCK_IS_IN_MMC
- ret = trdx_cfg_block_mmc_storage(config_block, 1);
+ err = trdx_cfg_block_mmc_storage(config_block, 1);
#elif defined(CONFIG_TRDX_CFG_BLOCK_IS_IN_NAND)
- ret = write_trdx_cfg_block_to_nand(config_block);
+ err = write_trdx_cfg_block_to_nand(config_block);
#else
- ret = -EINVAL;
+ err = -EINVAL;
#endif
- if (ret) {
+ if (err) {
printf("Failed to write Toradex config block: %d\n", ret);
+ ret = CMD_RET_FAILURE;
goto out;
}
@@ -446,10 +445,12 @@ static int do_cfgblock(cmd_tbl_t *cmdtp, int flag, int argc,
return do_cfgblock_create(cmdtp, flag, argc, argv);
} else if (!strcmp(argv[1], "reload")) {
ret = read_trdx_cfg_block();
- if (ret)
+ if (ret) {
printf("Failed to reload Toradex config block: %d\n",
ret);
- return 0;
+ return CMD_RET_FAILURE;
+ }
+ return CMD_RET_SUCCESS;
}
return CMD_RET_USAGE;