aboutsummaryrefslogtreecommitdiffstats
path: root/package/boot/uboot-mediatek/patches/001-mtk-0023-spl-nand-support-loading-legacy-image-with-payload-c.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/boot/uboot-mediatek/patches/001-mtk-0023-spl-nand-support-loading-legacy-image-with-payload-c.patch')
-rw-r--r--package/boot/uboot-mediatek/patches/001-mtk-0023-spl-nand-support-loading-legacy-image-with-payload-c.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/package/boot/uboot-mediatek/patches/001-mtk-0023-spl-nand-support-loading-legacy-image-with-payload-c.patch b/package/boot/uboot-mediatek/patches/001-mtk-0023-spl-nand-support-loading-legacy-image-with-payload-c.patch
new file mode 100644
index 0000000000..7bcc896565
--- /dev/null
+++ b/package/boot/uboot-mediatek/patches/001-mtk-0023-spl-nand-support-loading-legacy-image-with-payload-c.patch
@@ -0,0 +1,64 @@
+From b4e5137067d34a099efd921532ece177560789ca Mon Sep 17 00:00:00 2001
+From: Weijie Gao <weijie.gao@mediatek.com>
+Date: Fri, 20 May 2022 11:24:04 +0800
+Subject: [PATCH 23/25] spl: nand: support loading legacy image with payload
+ compressed
+
+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@gmail.com>
+Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
+---
+ 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 82a10ffa63..7b7579a2df 100644
+--- a/common/spl/spl_nand.c
++++ b/common/spl/spl_nand.c
+@@ -56,6 +56,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;
+@@ -93,6 +108,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.36.1
+