diff mbox series

[U-Boot] cmd: fit_image: Add default property for FIT format scripts

Message ID 20180622145802.2097-1-alex.kiernan@gmail.com
State Accepted
Commit 201d9cd2b36d8f2f416537d0df63024ab0f53eec
Delegated to: Tom Rini
Headers show
Series [U-Boot] cmd: fit_image: Add default property for FIT format scripts | expand

Commit Message

Alex Kiernan June 22, 2018, 2:58 p.m. UTC
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>
---

 cmd/source.c | 31 ++++++++++++++++++++++++++-----
 1 file changed, 26 insertions(+), 5 deletions(-)

Comments

Simon Glass June 30, 2018, 4:19 a.m. UTC | #1
On 22 June 2018 at 07:58, Alex Kiernan <alex.kiernan@gmail.com> wrote:
> 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>
> ---
>
>  cmd/source.c | 31 ++++++++++++++++++++++++++-----
>  1 file changed, 26 insertions(+), 5 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>
Tom Rini July 20, 2018, 12:35 p.m. UTC | #2
On Fri, Jun 22, 2018 at 02:58:02PM +0000, Alex Kiernan wrote:

> 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>

Applied to u-boot/master, thanks!
diff mbox series

Patch

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) {