mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
spl: spi: fix loss of spl_load() error on soft reset
When CONFIG_SPI_FLASH_SOFT_RESET is enabled, spi_nor_remove() is called after spl_load() to switch the flash back to legacy SPI mode. However, the return value of spi_nor_remove() unconditionally overwrites the return value of spl_load(), discarding any load error. Fix this by preserving the spl_load() error and only propagating the spi_nor_remove() error as a fallback. Also log a message when spi_nor_remove() fails, since in the case where spl_load() already failed its error would otherwise be silently discarded. Signed-off-by: Dimitrios Siganos <dimitris@siganos.org>
This commit is contained in:
committed by
Tom Rini
parent
a3075db94d
commit
e7ad95aa3f
@@ -124,8 +124,16 @@ static int spl_spi_load_image(struct spl_image_info *spl_image,
|
||||
}
|
||||
|
||||
err = spl_load(spl_image, bootdev, &load, 0, payload_offs);
|
||||
if (IS_ENABLED(CONFIG_SPI_FLASH_SOFT_RESET))
|
||||
err = spi_nor_remove(flash);
|
||||
if (IS_ENABLED(CONFIG_SPI_FLASH_SOFT_RESET)) {
|
||||
int ret = spi_nor_remove(flash);
|
||||
|
||||
if (ret) {
|
||||
printf("%s: Failed to remove SPI NOR flash: %d\n",
|
||||
__func__, ret);
|
||||
if (!err)
|
||||
err = ret;
|
||||
}
|
||||
}
|
||||
return err;
|
||||
}
|
||||
/* Use priorty 1 so that boards can override this */
|
||||
|
||||
Reference in New Issue
Block a user