mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-04-01 12:01:31 +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 <common.h>
|
||||||
|
#include <bloblist.h>
|
||||||
#include <binman_sym.h>
|
#include <binman_sym.h>
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
#include <spl.h>
|
#include <spl.h>
|
||||||
|
@ -343,6 +344,14 @@ static int spl_common_init(bool setup_malloc)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#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)) {
|
if (CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)) {
|
||||||
ret = fdtdec_setup();
|
ret = fdtdec_setup();
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -481,6 +490,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
|
||||||
BOOT_DEVICE_NONE,
|
BOOT_DEVICE_NONE,
|
||||||
};
|
};
|
||||||
struct spl_image_info spl_image;
|
struct spl_image_info spl_image;
|
||||||
|
int ret;
|
||||||
|
|
||||||
debug(">>spl:board_init_r()\n");
|
debug(">>spl:board_init_r()\n");
|
||||||
|
|
||||||
|
@ -527,6 +537,12 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
|
||||||
}
|
}
|
||||||
|
|
||||||
spl_perform_fixups(&spl_image);
|
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
|
#ifdef CONFIG_CPU_V7M
|
||||||
spl_image.entry_point |= 0x1;
|
spl_image.entry_point |= 0x1;
|
||||||
|
@ -563,8 +579,6 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
|
||||||
gd->malloc_ptr / 1024);
|
gd->malloc_ptr / 1024);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_BOOTSTAGE_STASH
|
#ifdef CONFIG_BOOTSTAGE_STASH
|
||||||
int ret;
|
|
||||||
|
|
||||||
bootstage_mark_name(BOOTSTAGE_ID_END_SPL, "end_spl");
|
bootstage_mark_name(BOOTSTAGE_ID_END_SPL, "end_spl");
|
||||||
ret = bootstage_stash((void *)CONFIG_BOOTSTAGE_STASH_ADDR,
|
ret = bootstage_stash((void *)CONFIG_BOOTSTAGE_STASH_ADDR,
|
||||||
CONFIG_BOOTSTAGE_STASH_SIZE);
|
CONFIG_BOOTSTAGE_STASH_SIZE);
|
||||||
|
|
|
@ -21,6 +21,33 @@
|
||||||
#define MMCSD_MODE_FS 2
|
#define MMCSD_MODE_FS 2
|
||||||
#define MMCSD_MODE_EMMCBOOT 3
|
#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 {
|
struct spl_image_info {
|
||||||
const char *name;
|
const char *name;
|
||||||
u8 os;
|
u8 os;
|
||||||
|
|
Loading…
Add table
Reference in a new issue