Commit 63fb8c17 authored by Christian Gmeiner's avatar Christian Gmeiner Committed by Bin Meng

x86: coreboot: add SMBIOS cbmem entry parsing

Signed-off-by: default avatarChristian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Bin Meng's avatarBin Meng <bmeng.cn@gmail.com>
parent 8dcb0950
......@@ -69,6 +69,17 @@ static void cb_parse_vbnv(unsigned char *ptr, struct sysinfo_t *info)
info->vbnv_size = vbnv->vbnv_size;
}
static void cb_parse_cbmem_entry(unsigned char *ptr, struct sysinfo_t *info)
{
struct cb_cbmem_entry *entry = (struct cb_cbmem_entry *)ptr;
if (entry->id != CBMEM_ID_SMBIOS)
return;
info->smbios_start = entry->address;
info->smbios_size = entry->entry_size;
}
static void cb_parse_gpios(unsigned char *ptr, struct sysinfo_t *info)
{
int i;
......@@ -206,6 +217,9 @@ static int cb_parse_header(void *addr, int len, struct sysinfo_t *info)
case CB_TAG_VBNV:
cb_parse_vbnv(ptr, info);
break;
case CB_TAG_CBMEM_ENTRY:
cb_parse_cbmem_entry(ptr, info);
break;
default:
cb_parse_unhandled(rec->tag, ptr);
break;
......
......@@ -49,6 +49,8 @@ struct sysinfo_t {
u32 vdat_size;
void *tstamp_table;
void *cbmem_cons;
u64 smbios_start;
u32 smbios_size;
struct cb_serial *serial;
};
......
......@@ -214,6 +214,17 @@ struct cb_vbnv {
uint32_t vbnv_size;
};
#define CB_TAG_CBMEM_ENTRY 0x0031
#define CBMEM_ID_SMBIOS 0x534d4254
struct cb_cbmem_entry {
uint32_t tag;
uint32_t size;
uint64_t address;
uint32_t entry_size;
uint32_t id;
};
#define CB_TAG_CMOS_OPTION_TABLE 0x00c8
struct cb_cmos_option_table {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment