summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnshul Dalal <[email protected]>2025-10-18 01:03:09 +0530
committerTom Rini <[email protected]>2025-10-20 10:14:00 -0600
commita6a801fcd6cf5c484f8df6341573e364ddc948c7 (patch)
tree4412fcf47de69346c829c24810d3f00695091ee0
parent81951cfffdc85e07ddeb2fa33a1a0fbbac6806f0 (diff)
spl: spi: refactor spl_spi_load_image for falcon mode
This patch moves the falcon mode handling logic out of spl_spi_load_image to spl_spi_load_image_os, this allows for cleaner handling for fallback to U-Boot in case falcon mode fails. Signed-off-by: Anshul Dalal <[email protected]>
-rw-r--r--common/spl/spl_spi.c31
1 files changed, 24 insertions, 7 deletions
diff --git a/common/spl/spl_spi.c b/common/spl/spl_spi.c
index c2b188371c2..45718824cbf 100644
--- a/common/spl/spl_spi.c
+++ b/common/spl/spl_spi.c
@@ -49,6 +49,25 @@ u32 __weak spl_spi_boot_cs(void)
return CONFIG_SF_DEFAULT_CS;
}
+#if IS_ENABLED(CONFIG_SPL_OS_BOOT)
+static int spl_spi_load_image_os(struct spl_image_info *spl_image,
+ struct spl_boot_device *bootdev,
+ struct spi_flash *flash,
+ struct spl_load_info *load)
+{
+ int err = spl_load(spl_image, bootdev, load, 0,
+ CONFIG_SYS_SPI_KERNEL_OFFS);
+
+ if (err)
+ return err;
+
+ /* Read device tree. */
+ return spi_flash_read(flash, CONFIG_SYS_SPI_ARGS_OFFS,
+ CONFIG_SYS_SPI_ARGS_SIZE,
+ (void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR);
+}
+#endif
+
/*
* The main entry for SPI booting. It's necessary that SDRAM is already
* configured and available since this code loads the main U-Boot image
@@ -81,15 +100,13 @@ static int spl_spi_load_image(struct spl_image_info *spl_image,
#if CONFIG_IS_ENABLED(OS_BOOT)
if (!spl_start_uboot()) {
- int err = spl_load(spl_image, bootdev, &load, 0,
- CONFIG_SYS_SPI_KERNEL_OFFS);
+ err = spl_spi_load_image_os(spl_image, bootdev, flash, &load);
if (!err)
- /* Read device tree. */
- return spi_flash_read(
- flash, CONFIG_SYS_SPI_ARGS_OFFS,
- CONFIG_SYS_SPI_ARGS_SIZE,
- (void *)CONFIG_SPL_PAYLOAD_ARGS_ADDR);
+ return 0;
+
+ printf("%s: Failed in falcon boot: %d, fallback to U-Boot",
+ __func__, err);
}
#endif