diff options
author | Tim Chu <Tim.Chu@quantatw.com> | 2021-10-19 01:45:12 +0000 |
---|---|---|
committer | Felix Held <felix-coreboot@felixheld.de> | 2021-10-21 20:06:59 +0000 |
commit | 13ab1d787907e0af9744ce1afbb855e9c5a2bb50 (patch) | |
tree | 9c87684bb195a173df6c0e37f5f1fc9d1c4ee494 | |
parent | 91e8c2a1d40c5a41869b2a9595fb2cc2c5f579f5 (diff) |
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>
-rw-r--r-- | src/arch/x86/smbios.c | 1 | ||||
-rw-r--r-- | src/arch/x86/smbios_defaults.c | 5 | ||||
-rw-r--r-- | src/include/smbios.h | 13 |
3 files changed, 19 insertions, 0 deletions
diff --git a/src/arch/x86/smbios.c b/src/arch/x86/smbios.c index 04f8717e72..ea429713ae 100644 --- a/src/arch/x86/smbios.c +++ b/src/arch/x86/smbios.c @@ -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 diff --git a/src/arch/x86/smbios_defaults.c b/src/arch/x86/smbios_defaults.c index 30bbea1a8e..8b62ebba14 100644 --- a/src/arch/x86/smbios_defaults.c +++ b/src/arch/x86/smbios_defaults.c @@ -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; diff --git a/src/include/smbios.h b/src/include/smbios.h index fd9fbd40c9..2fb6297ea3 100644 --- a/src/include/smbios.h +++ b/src/include/smbios.h @@ -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); |