cmd: fit_image: Add default property for FIT format scripts
authorAlex Kiernan <alex.kiernan@gmail.com>
Fri, 22 Jun 2018 14:58:02 +0000 (14:58 +0000)
committerTom Rini <trini@konsulko.com>
Thu, 19 Jul 2018 20:17:58 +0000 (16:17 -0400)
When sourcing a FIT format script, if we've not been told the unit name
to use, look for a default property at the root of /images to work out
which unit we should use.

Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
cmd/source.c

index 92481c4..6d98a1c 100644 (file)
 #include <asm/byteorder.h>
 #include <asm/io.h>
 
+#if defined(CONFIG_FIT)
+/**
+ * get_default_image() - Return default property from /images
+ *
+ * Return: Pointer to value of default property (or NULL)
+ */
+static const char *get_default_image(const void *fit)
+{
+       int images_noffset;
+
+       images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH);
+       if (images_noffset < 0)
+               return NULL;
+
+       return fdt_getprop(fit, images_noffset, FIT_DEFAULT_PROP, NULL);
+}
+#endif
+
 int
 source (ulong addr, const char *fit_uname)
 {
@@ -87,17 +105,20 @@ source (ulong addr, const char *fit_uname)
 #endif
 #if defined(CONFIG_FIT)
        case IMAGE_FORMAT_FIT:
-               if (fit_uname == NULL) {
-                       puts ("No FIT subimage unit name\n");
-                       return 1;
-               }
-
                fit_hdr = buf;
                if (!fit_check_format (fit_hdr)) {
                        puts ("Bad FIT image format\n");
                        return 1;
                }
 
+               if (!fit_uname)
+                       fit_uname = get_default_image(fit_hdr);
+
+               if (!fit_uname) {
+                       puts("No FIT subimage unit name\n");
+                       return 1;
+               }
+
                /* get script component image node offset */
                noffset = fit_image_get_node (fit_hdr, fit_uname);
                if (noffset < 0) {