summaryrefslogtreecommitdiff
path: root/cmd/source.c
diff options
context:
space:
mode:
authorAlex Kiernan <alex.kiernan@gmail.com>2018-06-22 14:58:02 +0000
committerTom Rini <trini@konsulko.com>2018-07-19 16:17:58 -0400
commit201d9cd2b36d8f2f416537d0df63024ab0f53eec (patch)
treee2b565e24171e69ff823ac28a07cd9802ba381fe /cmd/source.c
parent8d545790729434f4ba718dd9a6a1b55dcf7e94c4 (diff)
downloadu-boot-201d9cd2b36d8f2f416537d0df63024ab0f53eec.tar.gz
u-boot-201d9cd2b36d8f2f416537d0df63024ab0f53eec.tar.bz2
u-boot-201d9cd2b36d8f2f416537d0df63024ab0f53eec.zip
cmd: fit_image: Add default property for FIT format scripts
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>
Diffstat (limited to 'cmd/source.c')
-rw-r--r--cmd/source.c31
1 files changed, 26 insertions, 5 deletions
diff --git a/cmd/source.c b/cmd/source.c
index 92481c4fff..6d98a1cfd3 100644
--- a/cmd/source.c
+++ b/cmd/source.c
@@ -22,6 +22,24 @@
#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) {