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 <anshuld@ti.com>
This commit is contained in:
Anshul Dalal
2025-10-18 01:03:09 +05:30
committed by Tom Rini
parent 81951cfffd
commit a6a801fcd6

View File

@@ -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