smbios: Supply tag type 2 (base board information)
Information really contained in it is mostly the same as in type 1 tag. However Linux uses type 2 to match hardware. Duplicate the info. Change-Id: I75e13d764464053ecab4a833fbb83836cedf26e6 Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com> Reviewed-on: http://review.coreboot.org/5322 Tested-by: build bot (Jenkins) Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
This commit is contained in:
parent
7d48f04bb4
commit
47089f29f0
|
@ -217,6 +217,24 @@ static int smbios_write_type1(unsigned long *current, int handle)
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int smbios_write_type2(unsigned long *current, int handle)
|
||||||
|
{
|
||||||
|
struct smbios_type2 *t = (struct smbios_type2 *)*current;
|
||||||
|
int len = sizeof(struct smbios_type2);
|
||||||
|
|
||||||
|
memset(t, 0, sizeof(struct smbios_type2));
|
||||||
|
t->type = SMBIOS_BOARD_INFORMATION;
|
||||||
|
t->handle = handle;
|
||||||
|
t->length = len - 2;
|
||||||
|
t->manufacturer = smbios_add_string(t->eos, smbios_mainboard_manufacturer());
|
||||||
|
t->product_name = smbios_add_string(t->eos, smbios_mainboard_product_name());
|
||||||
|
t->serial_number = smbios_add_string(t->eos, smbios_mainboard_serial_number());
|
||||||
|
t->version = smbios_add_string(t->eos, smbios_mainboard_version());
|
||||||
|
len = t->length + smbios_string_table_len(t->eos);
|
||||||
|
*current += len;
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
static int smbios_write_type3(unsigned long *current, int handle)
|
static int smbios_write_type3(unsigned long *current, int handle)
|
||||||
{
|
{
|
||||||
struct smbios_type3 *t = (struct smbios_type3 *)*current;
|
struct smbios_type3 *t = (struct smbios_type3 *)*current;
|
||||||
|
@ -372,6 +390,7 @@ unsigned long smbios_write_tables(unsigned long current)
|
||||||
tables = current;
|
tables = current;
|
||||||
len = smbios_write_type0(¤t, handle++);
|
len = smbios_write_type0(¤t, handle++);
|
||||||
len += smbios_write_type1(¤t, handle++);
|
len += smbios_write_type1(¤t, handle++);
|
||||||
|
len += smbios_write_type2(¤t, handle++);
|
||||||
len += smbios_write_type3(¤t, handle++);
|
len += smbios_write_type3(¤t, handle++);
|
||||||
len += smbios_write_type4(¤t, handle++);
|
len += smbios_write_type4(¤t, handle++);
|
||||||
#if CONFIG_ELOG
|
#if CONFIG_ELOG
|
||||||
|
|
|
@ -37,6 +37,7 @@ void smbios_mainboard_set_uuid(u8 *uuid);
|
||||||
typedef enum {
|
typedef enum {
|
||||||
SMBIOS_BIOS_INFORMATION=0,
|
SMBIOS_BIOS_INFORMATION=0,
|
||||||
SMBIOS_SYSTEM_INFORMATION=1,
|
SMBIOS_SYSTEM_INFORMATION=1,
|
||||||
|
SMBIOS_BOARD_INFORMATION=2,
|
||||||
SMBIOS_SYSTEM_ENCLOSURE=3,
|
SMBIOS_SYSTEM_ENCLOSURE=3,
|
||||||
SMBIOS_PROCESSOR_INFORMATION=4,
|
SMBIOS_PROCESSOR_INFORMATION=4,
|
||||||
SMBIOS_CACHE_INFORMATION=7,
|
SMBIOS_CACHE_INFORMATION=7,
|
||||||
|
@ -102,6 +103,17 @@ struct smbios_type1 {
|
||||||
char eos[2];
|
char eos[2];
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
|
struct smbios_type2 {
|
||||||
|
u8 type;
|
||||||
|
u8 length;
|
||||||
|
u16 handle;
|
||||||
|
u8 manufacturer;
|
||||||
|
u8 product_name;
|
||||||
|
u8 version;
|
||||||
|
u8 serial_number;
|
||||||
|
char eos[2];
|
||||||
|
} __attribute__((packed));
|
||||||
|
|
||||||
struct smbios_type3 {
|
struct smbios_type3 {
|
||||||
u8 type;
|
u8 type;
|
||||||
u8 length;
|
u8 length;
|
||||||
|
|
Loading…
Reference in New Issue