aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Chu <Tim.Chu@quantatw.com>2021-10-19 01:45:12 +0000
committerFelix Held <felix-coreboot@felixheld.de>2021-10-21 20:06:59 +0000
commit13ab1d787907e0af9744ce1afbb855e9c5a2bb50 (patch)
tree9c87684bb195a173df6c0e37f5f1fc9d1c4ee494
parent91e8c2a1d40c5a41869b2a9595fb2cc2c5f579f5 (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.c1
-rw-r--r--src/arch/x86/smbios_defaults.c5
-rw-r--r--src/include/smbios.h13
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);