Add support for fetching the image position in RAM from control DT
rather than hard-coding it. While doing so, return the return value
of spl_parse_header_image() to make it possible to test application
of DTOs on U-Boot's control DT.

Signed-off-by: Marek Vasut <ma...@denx.de>
Cc: Pantelis Antoniou <pantelis.anton...@konsulko.com>
Cc: Simon Glass <s...@chromium.org>
---
 common/spl/spl_spi.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/common/spl/spl_spi.c b/common/spl/spl_spi.c
index 42880d56b9..c2613a494b 100644
--- a/common/spl/spl_spi.c
+++ b/common/spl/spl_spi.c
@@ -75,6 +75,7 @@ static int spl_spi_load_image(struct spl_image_info 
*spl_image,
        unsigned payload_offs = CONFIG_SYS_SPI_U_BOOT_OFFS;
        struct spi_flash *flash;
        struct image_header *header;
+       unsigned image_offs, image_size;
 
        /*
         * Load U-Boot image from SPI flash into RAM
@@ -96,6 +97,18 @@ static int spl_spi_load_image(struct spl_image_info 
*spl_image,
        payload_offs = fdtdec_get_config_int(gd->fdt_blob,
                                             "u-boot,spl-payload-offset",
                                             payload_offs);
+       image_offs = fdtdec_get_config_int(gd->fdt_blob,
+                                          "u-boot,spl-image-offset", 0);
+       image_size = fdtdec_get_config_int(gd->fdt_blob,
+                                          "u-boot,spl-image-size", 0);
+       if (image_size) {
+               err = spi_flash_read(flash, image_offs,
+                                    image_size,
+                                    (void *)CONFIG_SYS_TEXT_BASE);
+               if (err)
+                       return err;
+               return spl_parse_image_header(spl_image, header);
+       }
 #endif
 
 #ifdef CONFIG_SPL_OS_BOOT
-- 
2.15.0

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to