arch/x86/smbios: Add support for wake-up type in smbios type 1

Add system wake-up type in smbios type 1 - system information.

TESTED=On S9S, can override original value and show expected result
using "dmidecode -t 1".

Signed-off-by: Tim Chu <Tim.Chu@quantatw.com>
Change-Id: If79ba65426f1f18ebb55a0f3ef022bee83c1a93b
Reviewed-on: https://review.coreboot.org/c/coreboot/+/58436
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Jonathan Zhang <jonzhang@fb.com>
This commit is contained in:
Tim Chu 2021-10-19 01:45:12 +00:00 committed by Felix Held
parent 91e8c2a1d4
commit 13ab1d7879
3 changed files with 19 additions and 0 deletions

View File

@ -489,6 +489,7 @@ static int smbios_write_type1(unsigned long *current, int handle)
t->manufacturer = smbios_add_string(t->eos, smbios_system_manufacturer());
t->product_name = smbios_add_string(t->eos, smbios_system_product_name());
t->serial_number = smbios_add_string(t->eos, smbios_system_serial_number());
t->wakeup_type = smbios_system_wakeup_type();
t->sku = smbios_add_string(t->eos, smbios_system_sku());
t->version = smbios_add_string(t->eos, smbios_system_version());
#ifdef CONFIG_MAINBOARD_FAMILY

View File

@ -27,6 +27,11 @@ __weak void smbios_fill_dimm_asset_tag(const struct dimm_info *dimm, struct smbi
t->asset_tag = smbios_add_string(t->eos, buf);
}
__weak smbios_wakeup_type smbios_system_wakeup_type(void)
{
return SMBIOS_WAKEUP_TYPE_RESERVED;
}
__weak const char *smbios_mainboard_bios_version(void)
{
return NULL;

View File

@ -308,6 +308,18 @@ struct smbios_type0 {
u8 eos[2];
} __packed;
typedef enum {
SMBIOS_WAKEUP_TYPE_RESERVED = 0x00,
SMBIOS_WAKEUP_TYPE_OTHER = 0x01,
SMBIOS_WAKEUP_TYPE_UNKNOWN = 0x02,
SMBIOS_WAKEUP_TYPE_APM_TIMER = 0x03,
SMBIOS_WAKEUP_TYPE_MODEM_RING = 0x04,
SMBIOS_WAKEUP_TYPE_LAN_REMOTE = 0x05,
SMBIOS_WAKEUP_TYPE_POWER_SWITCH = 0x06,
SMBIOS_WAKEUP_TYPE_PCI_PME = 0x07,
SMBIOS_WAKEUP_TYPE_AC_POWER_RESTORED = 0x08,
} smbios_wakeup_type;
struct smbios_type1 {
struct smbios_header header;
u8 manufacturer;
@ -962,6 +974,7 @@ void smbios_fill_dimm_asset_tag(const struct dimm_info *dimm,
void smbios_fill_dimm_locator(const struct dimm_info *dimm,
struct smbios_type17 *t);
smbios_wakeup_type smbios_system_wakeup_type(void);
smbios_board_type smbios_mainboard_board_type(void);
smbios_enclosure_type smbios_mainboard_enclosure_type(void);