common/armflash: add command to check if image exists
authorRyan Harkin <ryan.harkin@linaro.org>
Fri, 9 Oct 2015 16:18:04 +0000 (17:18 +0100)
committerTom Rini <trini@konsulko.com>
Sun, 11 Oct 2015 21:12:04 +0000 (17:12 -0400)
Add a command to the ARM flash support to check if an image exists or
not.

If the image is found, it will return CMD_RET_SUCCESS, else
CMD_RET_FAILURE.  This allows hush scripts to conditionally load images.

A simple example:

if afs exists ${kernel_name}; then echo found; else echo \
not found; fi

Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
common/cmd_armflash.c

index 1db92b05992acb61aa3a79be6e3653b7fa303d7e..a37f5c463a191ff0c45d41bfa16a7e2b61c94c11 100644 (file)
@@ -251,10 +251,28 @@ static void print_images(void)
        }
 }
 
+static int exists(const char * const name)
+{
+       int i;
+
+       parse_flash();
+       for (i = 0; i < num_afs_images; i++) {
+               struct afs_image *afi = &afs_images[i];
+
+               if (strcmp(afi->name, name) == 0)
+                       return CMD_RET_SUCCESS;
+       }
+       return CMD_RET_FAILURE;
+}
+
 static int do_afs(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
+       int ret = CMD_RET_SUCCESS;
+
        if (argc == 1) {
                print_images();
+       } else if (argc == 3 && !strcmp(argv[1], "exists")) {
+               ret = exists(argv[2]);
        } else if (argc == 3 && !strcmp(argv[1], "load")) {
                load_image(argv[2], 0x0);
        } else if (argc == 4 && !strcmp(argv[1], "load")) {
@@ -266,12 +284,14 @@ static int do_afs(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                return CMD_RET_USAGE;
        }
 
-       return 0;
+       return ret;
 }
 
 U_BOOT_CMD(afs, 4, 0, do_afs, "show AFS partitions",
           "no arguments\n"
           "    - list images in flash\n"
+          "exists <image>\n"
+          "    - returns 1 if an image exists, else 0\n"
           "load <image>\n"
           "    - load an image to the location indicated in the header\n"
           "load <image> 0x<address>\n"