mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-26 07:17:10 +00:00
upl: Plumb in universal payload to the init process
Read the UPL early in boot so that it is available. For now none of the information is used. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
ec2186acbc
commit
0fc406ab20
3 changed files with 35 additions and 1 deletions
12
boot/Kconfig
12
boot/Kconfig
|
@ -763,7 +763,9 @@ config UPL_READ
|
||||||
help
|
help
|
||||||
Provides support for decoding a UPL-format payload into a C structure
|
Provides support for decoding a UPL-format payload into a C structure
|
||||||
which can be used elsewhere in U-Boot. This is just the reading
|
which can be used elsewhere in U-Boot. This is just the reading
|
||||||
implementation, useful for trying it out.
|
implementation, useful for trying it out. See UPL_IN for how
|
||||||
|
to tell U-Boot to actually read it on startup and use it for memory
|
||||||
|
and device information, etc.
|
||||||
|
|
||||||
config UPL_WRITE
|
config UPL_WRITE
|
||||||
bool "upl - Support writing a Universal Payload handoff"
|
bool "upl - Support writing a Universal Payload handoff"
|
||||||
|
@ -774,6 +776,14 @@ config UPL_WRITE
|
||||||
for how to tell U-Boot SPL to actually write it before jumping to
|
for how to tell U-Boot SPL to actually write it before jumping to
|
||||||
the next phase.
|
the next phase.
|
||||||
|
|
||||||
|
config UPL_IN
|
||||||
|
bool "upl - Read the UPL handoff on startup"
|
||||||
|
select UPL_READ
|
||||||
|
help
|
||||||
|
Read an SPL handoff when U-Boot starts and use it to provide
|
||||||
|
devices, memory layout, etc. required by U-Boot. This allows U-Boot
|
||||||
|
to function as a payload in the meaning of the specification.
|
||||||
|
|
||||||
if SPL
|
if SPL
|
||||||
|
|
||||||
config SPL_UPL
|
config SPL_UPL
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
#include <sysreset.h>
|
#include <sysreset.h>
|
||||||
#include <timer.h>
|
#include <timer.h>
|
||||||
#include <trace.h>
|
#include <trace.h>
|
||||||
|
#include <upl.h>
|
||||||
#include <video.h>
|
#include <video.h>
|
||||||
#include <watchdog.h>
|
#include <watchdog.h>
|
||||||
#include <asm/cache.h>
|
#include <asm/cache.h>
|
||||||
|
@ -859,6 +860,26 @@ __weak int clear_bss(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int initf_upl(void)
|
||||||
|
{
|
||||||
|
struct upl *upl;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (!IS_ENABLED(CONFIG_UPL_IN) || !(gd->flags & GD_FLG_UPL))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
upl = malloc(sizeof(struct upl));
|
||||||
|
if (upl)
|
||||||
|
ret = upl_read_handoff(upl, oftree_default());
|
||||||
|
if (ret) {
|
||||||
|
printf("UPL handoff: read failure (err=%dE)\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
gd_set_upl(upl);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static const init_fnc_t init_sequence_f[] = {
|
static const init_fnc_t init_sequence_f[] = {
|
||||||
setup_mon_len,
|
setup_mon_len,
|
||||||
#ifdef CONFIG_OF_CONTROL
|
#ifdef CONFIG_OF_CONTROL
|
||||||
|
@ -868,6 +889,7 @@ static const init_fnc_t init_sequence_f[] = {
|
||||||
trace_early_init,
|
trace_early_init,
|
||||||
#endif
|
#endif
|
||||||
initf_malloc,
|
initf_malloc,
|
||||||
|
initf_upl,
|
||||||
log_init,
|
log_init,
|
||||||
initf_bootstage, /* uses its own timer, so does not need DM */
|
initf_bootstage, /* uses its own timer, so does not need DM */
|
||||||
event_init,
|
event_init,
|
||||||
|
|
|
@ -521,6 +521,8 @@ static int dm_announce(void)
|
||||||
uclass_count);
|
uclass_count);
|
||||||
if (CONFIG_IS_ENABLED(OF_REAL))
|
if (CONFIG_IS_ENABLED(OF_REAL))
|
||||||
printf(", devicetree: %s", fdtdec_get_srcname());
|
printf(", devicetree: %s", fdtdec_get_srcname());
|
||||||
|
if (CONFIG_IS_ENABLED(UPL))
|
||||||
|
printf(", universal payload active");
|
||||||
printf("\n");
|
printf("\n");
|
||||||
if (IS_ENABLED(CONFIG_OF_HAS_PRIOR_STAGE) &&
|
if (IS_ENABLED(CONFIG_OF_HAS_PRIOR_STAGE) &&
|
||||||
(gd->fdt_src == FDTSRC_SEPARATE ||
|
(gd->fdt_src == FDTSRC_SEPARATE ||
|
||||||
|
|
Loading…
Add table
Reference in a new issue