
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 marex@denx.de Cc: Pantelis Antoniou pantelis.antoniou@konsulko.com Cc: Simon Glass sjg@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