libpayload: Parse the ACPI RSDP table entry
Change-Id: I583cda63c3f0b58f8d198ed5ecea7c4619c7a897 Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/62576 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
This commit is contained in:
parent
4a3331d93c
commit
cddba4528d
|
@ -83,6 +83,7 @@ enum {
|
|||
CB_TAG_BOARD_CONFIG = 0x0040,
|
||||
CB_TAG_ACPI_CNVS = 0x0041,
|
||||
CB_TAG_TYPE_C_INFO = 0x0042,
|
||||
CB_TAG_ACPI_RSDP = 0x0043,
|
||||
CB_TAG_CMOS_OPTION_TABLE = 0x00c8,
|
||||
CB_TAG_OPTION = 0x00c9,
|
||||
CB_TAG_OPTION_ENUM = 0x00ca,
|
||||
|
@ -422,6 +423,16 @@ struct cb_cmos_checksum {
|
|||
u32 type;
|
||||
};
|
||||
|
||||
/*
|
||||
* Handoff the ACPI RSDP
|
||||
*/
|
||||
struct cb_acpi_rsdp {
|
||||
uint32_t tag;
|
||||
uint32_t size;
|
||||
struct cbuint64 rsdp_pointer; /* Address of the ACPI RSDP */
|
||||
};
|
||||
|
||||
|
||||
/* Helpful inlines */
|
||||
|
||||
static inline u64 cb_unpack64(struct cbuint64 val)
|
||||
|
|
|
@ -111,6 +111,7 @@ struct sysinfo_t {
|
|||
uintptr_t mrc_cache;
|
||||
uintptr_t acpi_gnvs;
|
||||
uintptr_t acpi_cnvs;
|
||||
uintptr_t acpi_rsdp;
|
||||
|
||||
#define UNDEFINED_STRAPPING_ID (~0)
|
||||
#define UNDEFINED_FW_CONFIG ~((uint64_t)0)
|
||||
|
|
|
@ -268,6 +268,12 @@ static void cb_parse_cbmem_entry(void *ptr, struct sysinfo_t *info)
|
|||
}
|
||||
}
|
||||
|
||||
static void cb_parse_rsdp(void *ptr, struct sysinfo_t *info)
|
||||
{
|
||||
const struct cb_acpi_rsdp *cb_acpi_rsdp = ptr;
|
||||
info->acpi_rsdp = cb_unpack64(cb_acpi_rsdp->rsdp_pointer);
|
||||
}
|
||||
|
||||
int cb_parse_header(void *addr, int len, struct sysinfo_t *info)
|
||||
{
|
||||
struct cb_header *header;
|
||||
|
@ -408,6 +414,9 @@ int cb_parse_header(void *addr, int len, struct sysinfo_t *info)
|
|||
cb_parse_tsc_info(ptr, info);
|
||||
break;
|
||||
#endif
|
||||
case CB_TAG_ACPI_RSDP:
|
||||
cb_parse_rsdp(ptr, info);
|
||||
break;
|
||||
default:
|
||||
cb_parse_arch_specific(rec, info);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue