spl: spl_nor: Move legacy image loading into spl_legacy.c

Move the legacy image loading into spl_legacy.c. This makes it easier
to extend the legacy image handling with new features that other
SPL loaders might use (e.g. spl_spi.c etc).

No functional change intended.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Weijie Gao <weijie.gao@mediatek.com>
Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Cc: Simon Goldschmidt <simon.k.r.goldschmidt@gmail.com>
Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
This commit is contained in:
Stefan Roese 2020-04-21 09:28:43 +02:00 committed by Daniel Schwierzeck
parent 5ae526b61f
commit 2fc91ed3ba
3 changed files with 40 additions and 8 deletions

View File

@ -51,3 +51,23 @@ int spl_parse_legacy_header(struct spl_image_info *spl_image,
return 0;
}
int spl_load_legacy_img(struct spl_image_info *spl_image,
struct spl_load_info *load, ulong header)
{
struct image_header hdr;
int ret;
/* Read header into local struct */
load->read(load, header, sizeof(hdr), &hdr);
ret = spl_parse_image_header(spl_image, &hdr);
if (ret)
return ret;
/* Read image */
load->read(load, header + sizeof(hdr), spl_image->size,
(void *)(unsigned long)spl_image->load_addr);
return 0;
}

View File

@ -107,14 +107,13 @@ static int spl_nor_load_image(struct spl_image_info *spl_image,
spl_nor_get_uboot_base());
}
ret = spl_parse_image_header(spl_image,
(const struct image_header *)spl_nor_get_uboot_base());
if (ret)
return ret;
memcpy((void *)(unsigned long)spl_image->load_addr,
(void *)(spl_nor_get_uboot_base() + sizeof(struct image_header)),
spl_image->size);
/* Legacy image handling */
if (IS_ENABLED(CONFIG_SPL_LEGACY_IMAGE_SUPPORT)) {
load.bl_len = 1;
load.read = spl_nor_load_read;
return spl_load_legacy_img(spl_image, &load,
spl_nor_get_uboot_base());
}
return 0;
}

View File

@ -223,6 +223,19 @@ int spl_load_simple_fit(struct spl_image_info *spl_image,
#define SPL_COPY_PAYLOAD_ONLY 1
#define SPL_FIT_FOUND 2
/**
* spl_load_legacy_img() - Loads a legacy image from a device.
* @spl_image: Image description to set up
* @load: Structure containing the information required to load data.
* @header: Pointer to image header (including appended image)
*
* Reads an legacy image from the device. Loads u-boot image to
* specified load address.
* Returns 0 on success.
*/
int spl_load_legacy_img(struct spl_image_info *spl_image,
struct spl_load_info *load, ulong header);
/**
* spl_load_imx_container() - Loads a imx container image from a device.
* @spl_image: Image description to set up