libpayload: add support for vboot_handoff
The vboot_handoff structure needs to be parsed from the coreboot tables. Add a placeholder in sysinfo as well as the ability to parse the coreboot table entry concering the vboot_handoff structure. Built with unified boot loader and ebuild changes. Can find and use the VbInitParams for doing kernel selection. Change-Id: If40a863b4a445fa5f7814325add03355fd0ac647 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/2720 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
committed by
Ronald G. Minnich
parent
1cb414de63
commit
5ca4f4119b
@ -79,6 +79,14 @@ static void cb_parse_serial(void *ptr, struct sysinfo_t *info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_CHROMEOS
|
#ifdef CONFIG_CHROMEOS
|
||||||
|
static void cb_parse_vboot_handoff(unsigned char *ptr, struct sysinfo_t *info)
|
||||||
|
{
|
||||||
|
struct cb_vboot_handoff *vbho = (struct cb_vboot_handoff *)ptr;
|
||||||
|
|
||||||
|
info->vboot_handoff = vbho->vboot_handoff_addr;
|
||||||
|
info->vboot_handoff_size = vbho->vboot_handoff_size;
|
||||||
|
}
|
||||||
|
|
||||||
static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info)
|
static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info)
|
||||||
{
|
{
|
||||||
struct cb_vbnv *vbnv = (struct cb_vbnv *)ptr;
|
struct cb_vbnv *vbnv = (struct cb_vbnv *)ptr;
|
||||||
@ -258,6 +266,9 @@ static int cb_parse_header(void *addr, int len, struct sysinfo_t *info)
|
|||||||
case CB_TAG_VBNV:
|
case CB_TAG_VBNV:
|
||||||
cb_parse_vbnv(ptr, info);
|
cb_parse_vbnv(ptr, info);
|
||||||
break;
|
break;
|
||||||
|
case CB_TAG_VBOOT_HANDOFF:
|
||||||
|
cb_parse_vboot_handoff(ptr, info);
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
case CB_TAG_TIMESTAMPS:
|
case CB_TAG_TIMESTAMPS:
|
||||||
cb_parse_tstamp(ptr, info);
|
cb_parse_tstamp(ptr, info);
|
||||||
|
@ -209,6 +209,14 @@ struct cb_vbnv {
|
|||||||
uint32_t vbnv_size;
|
uint32_t vbnv_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define CB_TAG_VBOOT_HANDOFF 0x0020
|
||||||
|
struct cb_vboot_handoff {
|
||||||
|
uint32_t tag;
|
||||||
|
uint32_t size;
|
||||||
|
void *vboot_handoff_addr;
|
||||||
|
uint32_t vboot_handoff_size;
|
||||||
|
};
|
||||||
|
|
||||||
#define CB_TAG_CMOS_OPTION_TABLE 0x00c8
|
#define CB_TAG_CMOS_OPTION_TABLE 0x00c8
|
||||||
struct cb_cmos_option_table {
|
struct cb_cmos_option_table {
|
||||||
u32 tag;
|
u32 tag;
|
||||||
|
@ -88,6 +88,8 @@ struct sysinfo_t {
|
|||||||
struct cb_mainboard *mainboard;
|
struct cb_mainboard *mainboard;
|
||||||
|
|
||||||
#ifdef CONFIG_CHROMEOS
|
#ifdef CONFIG_CHROMEOS
|
||||||
|
void *vboot_handoff;
|
||||||
|
u32 vboot_handoff_size;
|
||||||
void *vdat_addr;
|
void *vdat_addr;
|
||||||
u32 vdat_size;
|
u32 vdat_size;
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user