
Add code to load simple fitImage from the kernel volume, the args volume is unnecessary.
Signed-off-by: Marek Vasut marex@denx.de Cc: Ladislav Michl ladis@linux-mips.org Cc: Tom Rini trini@konsulko.com --- common/spl/spl_ubi.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/common/spl/spl_ubi.c b/common/spl/spl_ubi.c index 67e5fadd7c..6addd46ece 100644 --- a/common/spl/spl_ubi.c +++ b/common/spl/spl_ubi.c @@ -11,6 +11,14 @@ #include <ubispl.h> #include <spl.h>
+static ulong spl_ubi_load_read(struct spl_load_info *load, ulong sector, + ulong count, void *buf) +{ + if (buf != (void *)CONFIG_SPL_LOAD_FIT_ADDRESS + sector) + memcpy(buf, (void *)(CONFIG_SYS_LOAD_ADDR + sector), count); + return count; +} + int spl_ubi_load_image(struct spl_image_info *spl_image, struct spl_boot_device *bootdev) { @@ -54,7 +62,19 @@ int spl_ubi_load_image(struct spl_image_info *spl_image, ret = ubispl_load_volumes(&info, volumes, 2); if (!ret) { header = (struct image_header *)volumes[0].load_addr; - spl_parse_image_header(spl_image, header); + + if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) && + image_get_magic(header) == FDT_MAGIC) { + struct spl_load_info load; + + debug("Found FIT\n"); + load.bl_len = 1; + load.read = spl_ubi_load_read; + spl_load_simple_fit(spl_image, &load, 0, header); + } else { + spl_parse_image_header(spl_image, header); + } + puts("Linux loaded.\n"); goto out; }