diff options
author | Andreas Dannenberg | 2019-06-04 17:55:46 -0500 |
---|---|---|
committer | Tom Rini | 2019-07-17 11:12:54 -0400 |
commit | e1eb6ada4e38086d3d7cfd11c898a360098f7681 (patch) | |
tree | af890038e2619a8827e477fb2ba84fb511d331f7 /include/spl.h | |
parent | a5a5d997b41a1b63eed67e78fac1d015e3e070e2 (diff) |
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>
Diffstat (limited to 'include/spl.h')
-rw-r--r-- | include/spl.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/include/spl.h b/include/spl.h index a9aaef345fa..a90f971a239 100644 --- a/include/spl.h +++ b/include/spl.h @@ -109,6 +109,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 * @info: Structure containing the information required to load data. @@ -331,6 +340,23 @@ 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 */ void spl_invoke_atf(struct spl_image_info *spl_image); |