common/armflash: load_image returns success or failure
Change the load_image so that it returns success or failure of the command (using CMD_RET_SUCCESS or CMD_RET_FAILURE). This way, hush scripts can optionally load different files depending upon the system configuration. A simple example: if afs load ${kernel_name} ${kernel_addr}; then echo loaded; else echo \ not loaded; fi Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
1a9717fb30
commit
6607d397c2
|
@ -175,7 +175,7 @@ static void parse_flash(void)
|
||||||
parse_bank(bank);
|
parse_bank(bank);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void load_image(const char * const name, const ulong address)
|
static int load_image(const char * const name, const ulong address)
|
||||||
{
|
{
|
||||||
struct afs_image *afi = NULL;
|
struct afs_image *afi = NULL;
|
||||||
int i;
|
int i;
|
||||||
|
@ -191,7 +191,7 @@ static void load_image(const char * const name, const ulong address)
|
||||||
}
|
}
|
||||||
if (!afi) {
|
if (!afi) {
|
||||||
printf("image \"%s\" not found in flash\n", name);
|
printf("image \"%s\" not found in flash\n", name);
|
||||||
return;
|
return CMD_RET_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < afi->region_count; i++) {
|
for (i = 0; i < afi->region_count; i++) {
|
||||||
|
@ -204,7 +204,7 @@ static void load_image(const char * const name, const ulong address)
|
||||||
to = afi->regions[i].load_address;
|
to = afi->regions[i].load_address;
|
||||||
} else {
|
} else {
|
||||||
printf("no valid load address\n");
|
printf("no valid load address\n");
|
||||||
return;
|
return CMD_RET_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy((void *)to, (void *)from, afi->regions[i].size);
|
memcpy((void *)to, (void *)from, afi->regions[i].size);
|
||||||
|
@ -215,6 +215,7 @@ static void load_image(const char * const name, const ulong address)
|
||||||
to,
|
to,
|
||||||
afi->regions[i].size);
|
afi->regions[i].size);
|
||||||
}
|
}
|
||||||
|
return CMD_RET_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_images(void)
|
static void print_images(void)
|
||||||
|
@ -274,12 +275,12 @@ static int do_afs(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
} else if (argc == 3 && !strcmp(argv[1], "exists")) {
|
} else if (argc == 3 && !strcmp(argv[1], "exists")) {
|
||||||
ret = exists(argv[2]);
|
ret = exists(argv[2]);
|
||||||
} else if (argc == 3 && !strcmp(argv[1], "load")) {
|
} else if (argc == 3 && !strcmp(argv[1], "load")) {
|
||||||
load_image(argv[2], 0x0);
|
ret = load_image(argv[2], 0x0);
|
||||||
} else if (argc == 4 && !strcmp(argv[1], "load")) {
|
} else if (argc == 4 && !strcmp(argv[1], "load")) {
|
||||||
ulong load_addr;
|
ulong load_addr;
|
||||||
|
|
||||||
load_addr = simple_strtoul(argv[3], NULL, 16);
|
load_addr = simple_strtoul(argv[3], NULL, 16);
|
||||||
load_image(argv[2], load_addr);
|
ret = load_image(argv[2], load_addr);
|
||||||
} else {
|
} else {
|
||||||
return CMD_RET_USAGE;
|
return CMD_RET_USAGE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue