mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-06-22 14:41:42 +00:00
spl: Make image loader infrastructure more universal
The current U-Boot SPL image loader infrastructure is very powerful, able to initialize and load from a variety of boot media however it is strongly geared towards loading specific types of images in a very specific way. To address the need being able to use this infrastructure to load arbitrary image files go ahead and refactor it as follows: - Refactor existing spl_mmc_load_image function into superset function, accepting additional arguments such as filenames and media load offset (same concept can also be applied toother spl_XXX_load_image functions) - Extend the loader function to "remember" their peripheral initialization status so that the init is only done once during the boot process, - Extend the FIT image loading function to allow skipping the parsing/ processing of the FIT contents (so that this can be done separately in a more customized fashion) - Populate the SPL_LOAD_IMAGE_METHOD() list with a trampoline function, invoking the newly refactored superset functions in a way to maintain compatibility with the existing behavior This refactoring initially covers MMC/SD card loading (RAW and FS-based). Signed-off-by: Andreas Dannenberg <dannenberg@ti.com> Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
parent
a5a5d997b4
commit
e1eb6ada4e
3 changed files with 91 additions and 25 deletions
|
@ -108,6 +108,15 @@ struct spl_load_info {
|
|||
*/
|
||||
binman_sym_extern(ulong, u_boot_any, image_pos);
|
||||
|
||||
/**
|
||||
* spl_load_simple_fit_skip_processing() - Hook to allow skipping the FIT
|
||||
* image processing during spl_load_simple_fit().
|
||||
*
|
||||
* Return true to skip FIT processing, false to preserve the full code flow
|
||||
* of spl_load_simple_fit().
|
||||
*/
|
||||
bool spl_load_simple_fit_skip_processing(void);
|
||||
|
||||
/**
|
||||
* spl_load_simple_fit() - Loads a fit image from a device.
|
||||
* @spl_image: Image description to set up
|
||||
|
@ -330,6 +339,23 @@ int spl_dfu_cmd(int usbctrl, char *dfu_alt_info, char *interface, char *devstr);
|
|||
int spl_mmc_load_image(struct spl_image_info *spl_image,
|
||||
struct spl_boot_device *bootdev);
|
||||
|
||||
/**
|
||||
* spl_mmc_load() - Load an image file from MMC/SD media
|
||||
*
|
||||
* @param spl_image Image data filled in by loading process
|
||||
* @param bootdev Describes which device to load from
|
||||
* @param filename Name of file to load (in FS mode)
|
||||
* @param raw_part Partition to load from (in RAW mode)
|
||||
* @param raw_sect Sector to load from (in RAW mode)
|
||||
*
|
||||
* @return 0 on success, otherwise error code
|
||||
*/
|
||||
int spl_mmc_load(struct spl_image_info *spl_image,
|
||||
struct spl_boot_device *bootdev,
|
||||
const char *filename,
|
||||
int raw_part,
|
||||
unsigned long raw_sect);
|
||||
|
||||
/**
|
||||
* spl_invoke_atf - boot using an ARM trusted firmware image
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue