mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 23:51:33 +00:00
spl: Set up the bloblist in SPL
The bloblist is normally set up in SPL ready for use by U-Boot. Add a simple implementation of this to the common SPL code. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
9f407d4ef0
commit
e945a72623
2 changed files with 43 additions and 2 deletions
|
@ -7,6 +7,7 @@
|
|||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <bloblist.h>
|
||||
#include <binman_sym.h>
|
||||
#include <dm.h>
|
||||
#include <spl.h>
|
||||
|
@ -343,6 +344,14 @@ static int spl_common_init(bool setup_malloc)
|
|||
return ret;
|
||||
}
|
||||
#endif
|
||||
if (CONFIG_IS_ENABLED(BLOBLIST)) {
|
||||
ret = bloblist_init();
|
||||
if (ret) {
|
||||
debug("%s: Failed to set up bloblist: ret=%d\n",
|
||||
__func__, ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
if (CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)) {
|
||||
ret = fdtdec_setup();
|
||||
if (ret) {
|
||||
|
@ -481,6 +490,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
|
|||
BOOT_DEVICE_NONE,
|
||||
};
|
||||
struct spl_image_info spl_image;
|
||||
int ret;
|
||||
|
||||
debug(">>spl:board_init_r()\n");
|
||||
|
||||
|
@ -527,6 +537,12 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
|
|||
}
|
||||
|
||||
spl_perform_fixups(&spl_image);
|
||||
if (CONFIG_IS_ENABLED(BLOBLIST)) {
|
||||
ret = bloblist_finish();
|
||||
if (ret)
|
||||
printf("Warning: Failed to finish bloblist (ret=%d)\n",
|
||||
ret);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CPU_V7M
|
||||
spl_image.entry_point |= 0x1;
|
||||
|
@ -563,8 +579,6 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
|
|||
gd->malloc_ptr / 1024);
|
||||
#endif
|
||||
#ifdef CONFIG_BOOTSTAGE_STASH
|
||||
int ret;
|
||||
|
||||
bootstage_mark_name(BOOTSTAGE_ID_END_SPL, "end_spl");
|
||||
ret = bootstage_stash((void *)CONFIG_BOOTSTAGE_STASH_ADDR,
|
||||
CONFIG_BOOTSTAGE_STASH_SIZE);
|
||||
|
|
|
@ -21,6 +21,33 @@
|
|||
#define MMCSD_MODE_FS 2
|
||||
#define MMCSD_MODE_EMMCBOOT 3
|
||||
|
||||
/*
|
||||
* u_boot_first_phase() - check if this is the first U-Boot phase
|
||||
*
|
||||
* U-Boot has up to three phases: TPL, SPL and U-Boot proper. Depending on the
|
||||
* build flags we can determine whether the current build is for the first
|
||||
* phase of U-Boot or not. If there is no SPL, then this is U-Boot proper. If
|
||||
* there is SPL but no TPL, the the first phase is SPL. If there is TPL, then
|
||||
* it is the first phase.
|
||||
*
|
||||
* @returns true if this is the first phase of U-Boot
|
||||
*
|
||||
*/
|
||||
static inline bool u_boot_first_phase(void)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_TPL)) {
|
||||
if (IS_ENABLED(CONFIG_TPL_BUILD))
|
||||
return true;
|
||||
} else if (IS_ENABLED(CONFIG_SPL)) {
|
||||
if (IS_ENABLED(CONFIG_SPL_BUILD))
|
||||
return true;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
struct spl_image_info {
|
||||
const char *name;
|
||||
u8 os;
|
||||
|
|
Loading…
Reference in a new issue