smbios: Extend Baseboard (or Module) Information (type2)
Add more information on baseboard as described in SMBIOS Reference Specification 3.1.1. Change-Id: I9fe1c4fe70c66f8a7fcc75b93672421ae808bf1b Signed-off-by: Julien Viard de Galbert <jviarddegalbert@online.net> Reviewed-on: https://review.coreboot.org/23842 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
parent
ae6210e500
commit
9a31dfeb18
|
@ -381,6 +381,26 @@ void __attribute__((weak)) smbios_mainboard_set_uuid(u8 *uuid)
|
|||
}
|
||||
#endif
|
||||
|
||||
const char *__attribute__((weak)) smbios_mainboard_asset_tag(void)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
u8 __attribute__((weak)) smbios_mainboard_feature_flags(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char *__attribute__((weak)) smbios_mainboard_location_in_chassis(void)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
smbios_board_type __attribute__((weak)) smbios_mainboard_board_type(void)
|
||||
{
|
||||
return SMBIOS_BOARD_TYPE_UNKNOWN;
|
||||
}
|
||||
|
||||
const char *__attribute__((weak)) smbios_mainboard_sku(void)
|
||||
{
|
||||
return "";
|
||||
|
@ -419,7 +439,8 @@ static int smbios_write_type1(unsigned long *current, int handle)
|
|||
return len;
|
||||
}
|
||||
|
||||
static int smbios_write_type2(unsigned long *current, int handle)
|
||||
static int smbios_write_type2(unsigned long *current, int handle,
|
||||
const int chassis_handle)
|
||||
{
|
||||
struct smbios_type2 *t = (struct smbios_type2 *)*current;
|
||||
int len = sizeof(struct smbios_type2);
|
||||
|
@ -435,6 +456,12 @@ static int smbios_write_type2(unsigned long *current, int handle)
|
|||
t->serial_number = smbios_add_string(t->eos,
|
||||
smbios_mainboard_serial_number());
|
||||
t->version = smbios_add_string(t->eos, smbios_mainboard_version());
|
||||
t->asset_tag = smbios_add_string(t->eos, smbios_mainboard_asset_tag());
|
||||
t->feature_flags = smbios_mainboard_feature_flags();
|
||||
t->location_in_chassis = smbios_add_string(t->eos,
|
||||
smbios_mainboard_location_in_chassis());
|
||||
t->board_type = smbios_mainboard_board_type();
|
||||
t->chassis_handle = chassis_handle;
|
||||
len = t->length + smbios_string_table_len(t->eos);
|
||||
*current += len;
|
||||
return len;
|
||||
|
@ -642,7 +669,8 @@ unsigned long smbios_write_tables(unsigned long current)
|
|||
update_max(len, max_struct_size, smbios_write_type1(¤t,
|
||||
handle++));
|
||||
update_max(len, max_struct_size, smbios_write_type2(¤t,
|
||||
handle++));
|
||||
handle, handle + 1)); /* The chassis handle is the next one */
|
||||
handle++;
|
||||
update_max(len, max_struct_size, smbios_write_type3(¤t,
|
||||
handle++));
|
||||
update_max(len, max_struct_size, smbios_write_type4(¤t,
|
||||
|
|
|
@ -37,6 +37,10 @@ const char *smbios_mainboard_serial_number(void);
|
|||
const char *smbios_mainboard_version(void);
|
||||
void smbios_mainboard_set_uuid(u8 *uuid);
|
||||
const char *smbios_mainboard_bios_version(void);
|
||||
const char *smbios_mainboard_asset_tag(void);
|
||||
u8 smbios_mainboard_feature_flags(void);
|
||||
const char *smbios_mainboard_location_in_chassis(void);
|
||||
|
||||
const char *smbios_mainboard_sku(void);
|
||||
u8 smbios_mainboard_enclosure_type(void);
|
||||
#ifdef CONFIG_MAINBOARD_FAMILY
|
||||
|
@ -267,6 +271,22 @@ struct smbios_type1 {
|
|||
u8 eos[2];
|
||||
} __packed;
|
||||
|
||||
typedef enum {
|
||||
SMBIOS_BOARD_TYPE_UNKNOWN = 0x01,
|
||||
SMBIOS_BOARD_TYPE_OTHER = 0x02,
|
||||
SMBIOS_BOARD_TYPE_SERVER_BLADE = 0x03,
|
||||
SMBIOS_BOARD_TYPE_CONNECTIVITY_SWITCH = 0x04,
|
||||
SMBIOS_BOARD_TYPE_SYSTEM_MANAGEMENT_MODULE = 0x05,
|
||||
SMBIOS_BOARD_TYPE_PROCESSOR_MODULE = 0x06,
|
||||
SMBIOS_BOARD_TYPE_IO_MODULE = 0x07,
|
||||
SMBIOS_BOARD_TYPE_MEMORY_MODULE = 0x08,
|
||||
SMBIOS_BOARD_TYPE_DAUGHTER_BOARD = 0x09,
|
||||
SMBIOS_BOARD_TYPE_MOTHERBOARD = 0x0a,
|
||||
SMBIOS_BOARD_TYPE_PROCESSOR_MEMORY_MODULE = 0x0b,
|
||||
SMBIOS_BOARD_TYPE_PROCESSOR_IO_MODULE = 0x0c,
|
||||
SMBIOS_BOARD_TYPE_INTERCONNECT_BOARD = 0x0d,
|
||||
} smbios_board_type;
|
||||
|
||||
struct smbios_type2 {
|
||||
u8 type;
|
||||
u8 length;
|
||||
|
@ -275,6 +295,11 @@ struct smbios_type2 {
|
|||
u8 product_name;
|
||||
u8 version;
|
||||
u8 serial_number;
|
||||
u8 asset_tag;
|
||||
u8 feature_flags;
|
||||
u8 location_in_chassis;
|
||||
u16 chassis_handle;
|
||||
u8 board_type;
|
||||
u8 eos[2];
|
||||
} __packed;
|
||||
|
||||
|
@ -510,4 +535,6 @@ struct smbios_type127 {
|
|||
void smbios_fill_dimm_manufacturer_from_id(uint16_t mod_id,
|
||||
struct smbios_type17 *t);
|
||||
|
||||
smbios_board_type smbios_mainboard_board_type(void);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue