diff options
-rw-r--r-- | arch/arm/mach-imx/imx8/parser.c | 16 | ||||
-rw-r--r-- | common/spl/spl_spi.c | 15 |
2 files changed, 31 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/imx8/parser.c b/arch/arm/mach-imx/imx8/parser.c index 5186b1c83c..7ddb1702bf 100644 --- a/arch/arm/mach-imx/imx8/parser.c +++ b/arch/arm/mach-imx/imx8/parser.c @@ -230,3 +230,19 @@ int mmc_load_image_parse_container(struct spl_image_info *spl_image, return ret; } + +int spi_load_image_parse_container(struct spl_image_info *spl_image, + struct spi_flash *flash, + unsigned long offset) +{ + int ret = 0; + + current_dev_type = QSPI_DEV; + device = flash; + + start_offset = offset; + + ret = read_auth_container(spl_image); + + return ret; +} diff --git a/common/spl/spl_spi.c b/common/spl/spl_spi.c index c26896ed65..5551397e95 100644 --- a/common/spl/spl_spi.c +++ b/common/spl/spl_spi.c @@ -58,6 +58,15 @@ unsigned long __weak spl_spi_get_uboot_raw_sector(struct spi_flash *flash) } #endif +#ifdef CONFIG_PARSE_CONTAINER +int __weak spi_load_image_parse_container(struct spl_image_info *spl_image, + struct spi_flash *flash, + unsigned long offset) +{ + return -EINVAL; +} +#endif + static ulong spl_spi_fit_read(struct spl_load_info *load, ulong sector, ulong count, void *buf) { @@ -134,12 +143,18 @@ static int spl_spi_load_image(struct spl_image_info *spl_image, payload_offs, header); } else { +#ifdef CONFIG_PARSE_CONTAINER + err = spi_load_image_parse_container(spl_image, + flash, + payload_offs); +#else err = spl_parse_image_header(spl_image, header); if (err) return err; err = spi_flash_read(flash, payload_offs, spl_image->size, (void *)spl_image->load_addr); +#endif } } |