diff mbox series

common: spl: spl_spi: Add in FIT image support for kernel/OS loading during Falcon boot mode while booting via SPI

Message ID CAPE2wM3tXj_jaHc0VaZ=3n_P0g7L_xYu5HAE390-_w+aDLHcjw@mail.gmail.com
State Deferred
Delegated to: Tom Rini
Headers show
Series common: spl: spl_spi: Add in FIT image support for kernel/OS loading during Falcon boot mode while booting via SPI | expand

Commit Message

Nathan Barrett-Morrison Feb. 8, 2022, 6:12 p.m. UTC
Hi Tom,

This patch adds support for Falcon mode boot via SPI flash boot devices
with FIT images.

While attempting to use Falcon boot mode with FIT images on SPI flash boot
devices, I've found the following additional code to be required.

Patch attached and also added inline below:

Sincerely,
Nathan

From b93c9122114ee701f13a62af63d74a0644fcef92 Mon Sep 17 00:00:00 2001
From: Nathan Barrett-Morrison <nathan.morrison@timesys.com>
Date: Tue, 8 Feb 2022 13:05:34 -0500
Subject: [PATCH] common: spl: spl_spi: Add in FIT image support for
kernel/OS
 loading during Falcon boot mode while booting via SPI

Signed-off-by: Nathan Barrett-Morrison <nathan.morrison@timesys.com>
Cc: Tom Rini <trini@konsulko.com>
---
 common/spl/spl_spi.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

  spi_flash_read(flash, CONFIG_SYS_SPI_KERNEL_OFFS, sizeof(*header),
        (void *)header);
@@ -47,6 +59,7 @@ static int spi_load_image_os(struct spl_image_info
*spl_image,
  spi_flash_read(flash, CONFIG_SYS_SPI_ARGS_OFFS,
        CONFIG_SYS_SPI_ARGS_SIZE,
        (void *)CONFIG_SYS_SPL_ARGS_ADDR);
+#endif

  return 0;
 }
diff mbox series

Patch

From b93c9122114ee701f13a62af63d74a0644fcef92 Mon Sep 17 00:00:00 2001
From: Nathan Barrett-Morrison <nathan.morrison@timesys.com>
Date: Tue, 8 Feb 2022 13:05:34 -0500
Subject: [PATCH] common: spl: spl_spi: Add in FIT image support for kernel/OS
 loading during Falcon boot mode while booting via SPI

Signed-off-by: Nathan Barrett-Morrison <nathan.morrison@timesys.com>
Cc: Tom Rini <trini@konsulko.com>
---
 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 4e20a23dea..82b396fc62 100644
--- a/common/spl/spl_spi.c
+++ b/common/spl/spl_spi.c
@@ -29,6 +29,18 @@  static int spi_load_image_os(struct spl_image_info *spl_image,
 {
 	int err;
 
+#if CONFIG_IS_ENABLED(LOAD_FIT_FULL) || CONFIG_IS_ENABLED(LOAD_FIT)
+	spi_flash_read(flash, CONFIG_SYS_SPI_KERNEL_OFFS, sizeof(struct fdt_header),
+		       (void *)header);
+
+	if (image_get_magic(header) == FDT_MAGIC)
+		spi_flash_read(flash, CONFIG_SYS_SPI_KERNEL_OFFS,
+		       roundup(fdt_totalsize(header), 4), CONFIG_SYS_LOAD_ADDR);
+
+	err = spl_parse_image_header(spl_image, CONFIG_SYS_LOAD_ADDR);
+	if (err)
+		return err;
+#else
 	/* Read for a header, parse or error out. */
 	spi_flash_read(flash, CONFIG_SYS_SPI_KERNEL_OFFS, sizeof(*header),
 		       (void *)header);
@@ -47,6 +59,7 @@  static int spi_load_image_os(struct spl_image_info *spl_image,
 	spi_flash_read(flash, CONFIG_SYS_SPI_ARGS_OFFS,
 		       CONFIG_SYS_SPI_ARGS_SIZE,
 		       (void *)CONFIG_SYS_SPL_ARGS_ADDR);
+#endif
 
 	return 0;
 }
-- 
2.30.2