All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] cmd: source: Use script from default config
@ 2021-12-31 14:11 Sven Schwermer
  2021-12-31 14:11 ` [PATCH 2/2] f_sdp: Retry sourcing default FIT script Sven Schwermer
  0 siblings, 1 reply; 2+ messages in thread
From: Sven Schwermer @ 2021-12-31 14:11 UTC (permalink / raw)
  To: u-boot; +Cc: Sven Schwermer

When sourcing FIT images, source the script node from the "bootscr"
property within the default configuration. If
board_fit_config_name_match is overridden, this will determine the
selected configuration rather than the default one.

The old behaviour is inconsistent with the FIT image specification which
does not mention a "default" property in the "/images" node.

Signed-off-by: Sven Schwermer <sven@svenschwermer.de>
---
 boot/Makefile   |  8 ++------
 cmd/source.c    | 22 +++++++++++++---------
 include/image.h |  1 +
 3 files changed, 16 insertions(+), 15 deletions(-)

diff --git a/boot/Makefile b/boot/Makefile
index 2938c3f145..51181b10fc 100644
--- a/boot/Makefile
+++ b/boot/Makefile
@@ -24,14 +24,10 @@ obj-$(CONFIG_ANDROID_AB) += android_ab.o
 obj-$(CONFIG_ANDROID_BOOT_IMAGE) += image-android.o image-android-dt.o
 obj-$(CONFIG_$(SPL_TPL_)OF_LIBFDT) += image-fdt.o
 obj-$(CONFIG_$(SPL_TPL_)FIT_SIGNATURE) += fdt_region.o
-obj-$(CONFIG_$(SPL_TPL_)FIT) += image-fit.o
-obj-$(CONFIG_$(SPL_)MULTI_DTB_FIT) += boot_fit.o common_fit.o
+obj-$(CONFIG_$(SPL_TPL_)FIT) += common_fit.o image-fit.o
+obj-$(CONFIG_$(SPL_)MULTI_DTB_FIT) += boot_fit.o
 obj-$(CONFIG_$(SPL_TPL_)IMAGE_SIGN_INFO) += image-sig.o
 obj-$(CONFIG_$(SPL_TPL_)FIT_SIGNATURE) += image-fit-sig.o
 obj-$(CONFIG_$(SPL_TPL_)FIT_CIPHER) += image-cipher.o
 
 obj-$(CONFIG_CMD_ADTIMG) += image-android-dt.o
-
-ifdef CONFIG_SPL_BUILD
-obj-$(CONFIG_SPL_LOAD_FIT) += common_fit.o
-endif
diff --git a/cmd/source.c b/cmd/source.c
index 81e015b64e..a7d65ce377 100644
--- a/cmd/source.c
+++ b/cmd/source.c
@@ -26,19 +26,23 @@
 
 #if defined(CONFIG_FIT)
 /**
- * get_default_image() - Return default property from /images
+ * get_default_bootscr() - Return default boot script unit name.
+ * 
+ * The default configuration is used unless board_fit_config_name_match
+ * is overridden.
  *
- * Return: Pointer to value of default property (or NULL)
+ * Return: Pointer to value of bootscr property (or NULL)
  */
-static const char *get_default_image(const void *fit)
+static const char *get_default_bootscr(const void *fit)
 {
-	int images_noffset;
+	int noffset;
 
-	images_noffset = fdt_path_offset(fit, FIT_IMAGES_PATH);
-	if (images_noffset < 0)
+	/* get default or board-specific configuration node */
+	noffset = fit_find_config_node(fit);
+	if (noffset < 0)
 		return NULL;
 
-	return fdt_getprop(fit, images_noffset, FIT_DEFAULT_PROP, NULL);
+	return fdt_getprop(fit, noffset, FIT_BOOTSCR_PROP, NULL);
 }
 #endif
 
@@ -113,7 +117,7 @@ int image_source_script(ulong addr, const char *fit_uname)
 		}
 
 		if (!fit_uname)
-			fit_uname = get_default_image(fit_hdr);
+			fit_uname = get_default_bootscr(fit_hdr);
 
 		if (!fit_uname) {
 			puts("No FIT subimage unit name\n");
@@ -128,7 +132,7 @@ int image_source_script(ulong addr, const char *fit_uname)
 		}
 
 		if (!fit_image_check_type (fit_hdr, noffset, IH_TYPE_SCRIPT)) {
-			puts ("Not a image image\n");
+			puts ("Not a script image\n");
 			return 1;
 		}
 
diff --git a/include/image.h b/include/image.h
index fd662e74b4..67c70952bd 100644
--- a/include/image.h
+++ b/include/image.h
@@ -936,6 +936,7 @@ int booti_setup(ulong image, ulong *relocated_addr, ulong *size,
 #define FIT_KERNEL_PROP		"kernel"
 #define FIT_RAMDISK_PROP	"ramdisk"
 #define FIT_FDT_PROP		"fdt"
+#define FIT_BOOTSCR_PROP	"bootscr"
 #define FIT_LOADABLE_PROP	"loadables"
 #define FIT_DEFAULT_PROP	"default"
 #define FIT_SETUP_PROP		"setup"
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [PATCH 2/2] f_sdp: Retry sourcing default FIT script
  2021-12-31 14:11 [PATCH 1/2] cmd: source: Use script from default config Sven Schwermer
@ 2021-12-31 14:11 ` Sven Schwermer
  0 siblings, 0 replies; 2+ messages in thread
From: Sven Schwermer @ 2021-12-31 14:11 UTC (permalink / raw)
  To: u-boot; +Cc: Sven Schwermer

"script@1" is not a valid node name if the "reg" property is missing.
The yocto build system embeds the boot script as an image that's pointed
to by the "bootscr" property within the default configuration. That is
what we use here as the fallback when sourcing the "script@1" fails.
This implementation should be backward-compatible with existing ITS
files.

Signed-off-by: Sven Schwermer <sven@svenschwermer.de>
---
 drivers/usb/gadget/f_sdp.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/f_sdp.c b/drivers/usb/gadget/f_sdp.c
index e48aa2f90d..2eb85aa8a6 100644
--- a/drivers/usb/gadget/f_sdp.c
+++ b/drivers/usb/gadget/f_sdp.c
@@ -866,7 +866,11 @@ static int sdp_handle_in_ep(struct spl_image_info *spl_image)
 			jump_to_image_no_args(&spl_image);
 #else
 			/* In U-Boot, allow jumps to scripts */
-			image_source_script(sdp_func->jmp_address, "script@1");
+#if defined(CONFIG_FIT)
+			if (image_source_script(sdp_func->jmp_address, "script@1"))
+				/* Retry with default configuration script */
+#endif
+				image_source_script(sdp_func->jmp_address, NULL);
 #endif
 		}
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-12-31 14:12 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-31 14:11 [PATCH 1/2] cmd: source: Use script from default config Sven Schwermer
2021-12-31 14:11 ` [PATCH 2/2] f_sdp: Retry sourcing default FIT script Sven Schwermer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.