[PATCH v6 23/25] spl: nand: support loading legacy image with payload compressed

Weijie Gao weijie.gao at mediatek.com
Fri May 20 05:24:04 CEST 2022


Add support to load legacy image with payload compressed. This redirects
the boot flow for all legacy images. If the payload is not compressed, the
actual behavior will remain unchanged.

Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck at gmail.com>
Signed-off-by: Weijie Gao <weijie.gao at mediatek.com>
---
v6 changes: none
v5 changes: none
v4 changes: new
---
 common/spl/spl_nand.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/common/spl/spl_nand.c b/common/spl/spl_nand.c
index fc61b447a5..3f3007a35d 100644
--- a/common/spl/spl_nand.c
+++ b/common/spl/spl_nand.c
@@ -59,6 +59,21 @@ static ulong spl_nand_fit_read(struct spl_load_info *load, ulong offs,
 	return size / load->bl_len;
 }
 
+static ulong spl_nand_legacy_read(struct spl_load_info *load, ulong offs,
+				  ulong size, void *dst)
+{
+	int err;
+
+	debug("%s: offs %lx, size %lx, dst %p\n",
+	      __func__, offs, size, dst);
+
+	err = nand_spl_load_image(offs, size, dst);
+	if (err)
+		return 0;
+
+	return size;
+}
+
 struct mtd_info * __weak nand_get_mtd(void)
 {
 	return NULL;
@@ -96,6 +111,18 @@ static int spl_nand_load_element(struct spl_image_info *spl_image,
 		load.bl_len = bl_len;
 		load.read = spl_nand_fit_read;
 		return spl_load_imx_container(spl_image, &load, offset / bl_len);
+	} else if (IS_ENABLED(CONFIG_SPL_LEGACY_IMAGE_FORMAT) &&
+		   image_get_magic(header) == IH_MAGIC) {
+		struct spl_load_info load;
+
+		debug("Found legacy image\n");
+		load.dev = NULL;
+		load.priv = NULL;
+		load.filename = NULL;
+		load.bl_len = 1;
+		load.read = spl_nand_legacy_read;
+
+		return spl_load_legacy_img(spl_image, bootdev, &load, offset);
 	} else {
 		err = spl_parse_image_header(spl_image, bootdev, header);
 		if (err)
-- 
2.17.1



More information about the U-Boot mailing list