[U-Boot] [PATCH] spl: spi: Support full fitImage handling

Handle the case where the full fitImage support is enabled. In this case, the whole fitImage must be loaded up front as some parts of the fitImage code require memory-mapped access to the entire fitImage.
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, 11 insertions(+), 2 deletions(-)
diff --git a/common/spl/spl_spi.c b/common/spl/spl_spi.c index df46046729..ba60a3a3c5 100644 --- a/common/spl/spl_spi.c +++ b/common/spl/spl_spi.c @@ -110,8 +110,17 @@ static int spl_spi_load_image(struct spl_image_info *spl_image, return err; }
- if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) && - image_get_magic(header) == FDT_MAGIC) { + if (IS_ENABLED(CONFIG_SPL_LOAD_FIT_FULL) && + image_get_magic(header) == FDT_MAGIC) { + err = spi_flash_read(flash, payload_offs, + roundup(fdt_totalsize(header), 4), + (void *)CONFIG_SYS_LOAD_ADDR); + if (err) + return err; + err = spl_parse_image_header(spl_image, + (struct image_header *)CONFIG_SYS_LOAD_ADDR); + } else if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) && + image_get_magic(header) == FDT_MAGIC) { struct spl_load_info load;
debug("Found FIT\n");

Hi Marek, On 31 May 2018 at 07:59, Marek Vasut marex@denx.de wrote:
Handle the case where the full fitImage support is enabled. In this case, the whole fitImage must be loaded up front as some parts of the fitImage code require memory-mapped access to the entire fitImage.
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, 11 insertions(+), 2 deletions(-)
diff --git a/common/spl/spl_spi.c b/common/spl/spl_spi.c index df46046729..ba60a3a3c5 100644 --- a/common/spl/spl_spi.c +++ b/common/spl/spl_spi.c @@ -110,8 +110,17 @@ static int spl_spi_load_image(struct spl_image_info *spl_image, return err; }
if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
image_get_magic(header) == FDT_MAGIC) {
if (IS_ENABLED(CONFIG_SPL_LOAD_FIT_FULL) &&
image_get_magic(header) == FDT_MAGIC) {
err = spi_flash_read(flash, payload_offs,
roundup(fdt_totalsize(header), 4),
(void *)CONFIG_SYS_LOAD_ADDR);
map_sysmem(CONFIG_SYS_LOAD_ADDR, fdt_totalsize(header))
otherwise your sandbox test won't work
if (err)
return err;
err = spl_parse_image_header(spl_image,
(struct image_header *)CONFIG_SYS_LOAD_ADDR);
Same here
} else if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
image_get_magic(header) == FDT_MAGIC) { struct spl_load_info load; debug("Found FIT\n");
-- 2.16.2
Regards, Simon

On 06/07/2018 10:28 PM, Simon Glass wrote:
Hi Marek, On 31 May 2018 at 07:59, Marek Vasut marex@denx.de wrote:
Handle the case where the full fitImage support is enabled. In this case, the whole fitImage must be loaded up front as some parts of the fitImage code require memory-mapped access to the entire fitImage.
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, 11 insertions(+), 2 deletions(-)
diff --git a/common/spl/spl_spi.c b/common/spl/spl_spi.c index df46046729..ba60a3a3c5 100644 --- a/common/spl/spl_spi.c +++ b/common/spl/spl_spi.c @@ -110,8 +110,17 @@ static int spl_spi_load_image(struct spl_image_info *spl_image, return err; }
if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
image_get_magic(header) == FDT_MAGIC) {
if (IS_ENABLED(CONFIG_SPL_LOAD_FIT_FULL) &&
image_get_magic(header) == FDT_MAGIC) {
err = spi_flash_read(flash, payload_offs,
roundup(fdt_totalsize(header), 4),
(void *)CONFIG_SYS_LOAD_ADDR);
map_sysmem(CONFIG_SYS_LOAD_ADDR, fdt_totalsize(header))
otherwise your sandbox test won't work
Is this map_sysmem stuff explained anywhere ?

Hi Marek,
On 7 June 2018 at 12:55, Marek Vasut marex@denx.de wrote:
On 06/07/2018 10:28 PM, Simon Glass wrote:
Hi Marek, On 31 May 2018 at 07:59, Marek Vasut marex@denx.de wrote:
Handle the case where the full fitImage support is enabled. In this case, the whole fitImage must be loaded up front as some parts of the fitImage code require memory-mapped access to the entire fitImage.
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, 11 insertions(+), 2 deletions(-)
diff --git a/common/spl/spl_spi.c b/common/spl/spl_spi.c index df46046729..ba60a3a3c5 100644 --- a/common/spl/spl_spi.c +++ b/common/spl/spl_spi.c @@ -110,8 +110,17 @@ static int spl_spi_load_image(struct spl_image_info *spl_image, return err; }
if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
image_get_magic(header) == FDT_MAGIC) {
if (IS_ENABLED(CONFIG_SPL_LOAD_FIT_FULL) &&
image_get_magic(header) == FDT_MAGIC) {
err = spi_flash_read(flash, payload_offs,
roundup(fdt_totalsize(header), 4),
(void *)CONFIG_SYS_LOAD_ADDR);
map_sysmem(CONFIG_SYS_LOAD_ADDR, fdt_totalsize(header))
otherwise your sandbox test won't work
Is this map_sysmem stuff explained anywhere ?
Yes, see board/sandbox/README.sandbox
Regards, Simon

On Thu, May 31, 2018 at 05:59:29PM +0200, Marek Vasut wrote:
Handle the case where the full fitImage support is enabled. In this case, the whole fitImage must be loaded up front as some parts of the fitImage code require memory-mapped access to the entire fitImage.
Signed-off-by: Marek Vasut marex@denx.de Cc: Pantelis Antoniou pantelis.antoniou@konsulko.com Cc: Simon Glass sjg@chromium.org
Applied to u-boot/master, thanks!
participants (3)
-
Marek Vasut
-
Simon Glass
-
Tom Rini