aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Anderson <sean.anderson@seco.com>2022-04-22 14:27:42 -0400
committerTom Rini <trini@konsulko.com>2022-05-04 15:43:42 -0400
commit932c471dc04e25c885a9cefd7dbbc0203fee8902 (patch)
treed6dd3d3f504e23d5b3927d5b659e526529d2254f
parent0da384797cf4f93d26ccf0c0e188b5f56336a4d8 (diff)
downloadu-boot-932c471dc04e25c885a9cefd7dbbc0203fee8902.zip
u-boot-932c471dc04e25c885a9cefd7dbbc0203fee8902.tar.gz
u-boot-932c471dc04e25c885a9cefd7dbbc0203fee8902.tar.bz2
spl: Convert mmc to spl_load
This converts the mmc loader to spl_load. Legacy images are handled by spl_load (via spl_parse_image_header), so mmc_load_legacy can be omitted. Signed-off-by: Sean Anderson <sean.anderson@seco.com> Reviewed-by: Stefan Roese <sr@denx.de>
-rw-r--r--common/spl/spl_mmc.c73
1 files changed, 6 insertions, 67 deletions
diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
index 6116a68..93a28cd 100644
--- a/common/spl/spl_mmc.c
+++ b/common/spl/spl_mmc.c
@@ -17,48 +17,6 @@
#include <mmc.h>
#include <image.h>
-static int mmc_load_legacy(struct spl_image_info *spl_image,
- struct spl_boot_device *bootdev,
- struct mmc *mmc,
- ulong sector, struct image_header *header)
-{
- u32 image_offset_sectors;
- u32 image_size_sectors;
- unsigned long count;
- u32 image_offset;
- int ret;
-
- ret = spl_parse_image_header(spl_image, bootdev, header);
- if (ret)
- return ret;
-
- /* convert offset to sectors - round down */
- image_offset_sectors = spl_image->offset / mmc->read_bl_len;
- /* calculate remaining offset */
- image_offset = spl_image->offset % mmc->read_bl_len;
-
- /* convert size to sectors - round up */
- image_size_sectors = (spl_image->size + mmc->read_bl_len - 1) /
- mmc->read_bl_len;
-
- /* Read the header too to avoid extra memcpy */
- count = blk_dread(mmc_get_blk_desc(mmc),
- sector + image_offset_sectors,
- image_size_sectors,
- (void *)(ulong)spl_image->load_addr);
- debug("read %x sectors to %lx\n", image_size_sectors,
- spl_image->load_addr);
- if (count != image_size_sectors)
- return -EIO;
-
- if (image_offset)
- memmove((void *)(ulong)spl_image->load_addr,
- (void *)(ulong)spl_image->load_addr + image_offset,
- spl_image->size);
-
- return 0;
-}
-
static ulong h_spl_load_read(struct spl_load_info *load, ulong sector,
ulong count, void *buf)
{
@@ -86,6 +44,11 @@ int mmc_load_image_raw_sector(struct spl_image_info *spl_image,
struct image_header *header;
struct blk_desc *bd = mmc_get_blk_desc(mmc);
int ret = 0;
+ struct spl_load_info load = {
+ .dev = mmc,
+ .bl_len = mmc->read_bl_len,
+ .read = h_spl_load_read,
+ };
header = spl_get_load_buffer(-sizeof(*header), bd->blksz);
@@ -97,31 +60,7 @@ int mmc_load_image_raw_sector(struct spl_image_info *spl_image,
goto end;
}
- if (IS_ENABLED(CONFIG_SPL_LOAD_FIT) &&
- image_get_magic(header) == FDT_MAGIC) {
- struct spl_load_info load;
-
- debug("Found FIT\n");
- load.dev = mmc;
- load.priv = NULL;
- load.filename = NULL;
- load.bl_len = mmc->read_bl_len;
- load.read = h_spl_load_read;
- ret = spl_load_simple_fit(spl_image, &load, sector, header);
- } else if (IS_ENABLED(CONFIG_SPL_LOAD_IMX_CONTAINER)) {
- struct spl_load_info load;
-
- load.dev = mmc;
- load.priv = NULL;
- load.filename = NULL;
- load.bl_len = mmc->read_bl_len;
- load.read = h_spl_load_read;
-
- ret = spl_load_imx_container(spl_image, &load, sector);
- } else {
- ret = mmc_load_legacy(spl_image, bootdev, mmc, sector, header);
- }
-
+ ret = spl_load(spl_image, bootdev, &load, header, 0, sector);
end:
if (ret) {
#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT