[U-Boot] [PATCH 9/9] spl: spi: Add support for fetching image position from control DT

Marek Vasut marex at denx.de
Thu Dec 28 12:06:21 UTC 2017


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



More information about the U-Boot mailing list