x86: Store the coreboot table address in global_data
At present this information is used to locate and parse the tables but is not stored. Store it so that we can display it to the user, e.g. with the 'bdinfo' command. Note that now the GD_FLG_SKIP_LL_INIT flag is set in get_coreboot_info(), so it is always set when booting from coreboot. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Wolfgang Wallner <wolfgang.wallner@br-automation.com>
This commit is contained in:
parent
487852b51b
commit
9ef168676c
3 changed files with 14 additions and 2 deletions
|
@ -10,6 +10,8 @@
|
|||
#include <net.h>
|
||||
#include <asm/arch/sysinfo.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
/*
|
||||
* This needs to be in the .data section so that it's copied over during
|
||||
* relocation. By default it's put in the .bss section which is simply filled
|
||||
|
@ -243,6 +245,10 @@ int get_coreboot_info(struct sysinfo_t *info)
|
|||
if (addr < 0)
|
||||
return addr;
|
||||
ret = cb_parse_header((void *)addr, 0x1000, info);
|
||||
if (!ret)
|
||||
return -ENOENT;
|
||||
gd->arch.coreboot_table = addr;
|
||||
gd->flags |= GD_FLG_SKIP_LL_INIT;
|
||||
|
||||
return ret == 1 ? 0 : -ENOENT;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -455,10 +455,15 @@ int x86_cpu_init_f(void)
|
|||
|
||||
int x86_cpu_reinit_f(void)
|
||||
{
|
||||
long addr;
|
||||
|
||||
setup_identity();
|
||||
setup_pci_ram_top();
|
||||
if (locate_coreboot_table() >= 0)
|
||||
addr = locate_coreboot_table();
|
||||
if (addr >= 0) {
|
||||
gd->arch.coreboot_table = addr;
|
||||
gd->flags |= GD_FLG_SKIP_LL_INIT;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -123,6 +123,7 @@ struct arch_global_data {
|
|||
#endif
|
||||
void *itss_priv; /* Private ITSS data pointer */
|
||||
ulong acpi_start; /* Start address of ACPI tables */
|
||||
ulong coreboot_table; /* Address of coreboot table */
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue