diff mbox series

[1/2] cmd: smbios: type 1 wake-up time, family

Message ID 20240208104952.19964-2-heinrich.schuchardt@canonical.com
State Changes Requested
Delegated to: Tom Rini
Headers show
Series smbios: fill wake-up type | expand

Commit Message

Heinrich Schuchardt Feb. 8, 2024, 10:49 a.m. UTC
Correct type 1 output

* render wake up time as string
* print family string
* remove duplicate serial number output

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
---
 cmd/smbios.c | 25 +++++++++++++++++++++++--
 1 file changed, 23 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/cmd/smbios.c b/cmd/smbios.c
index 66f6b761378..f79619c1f0b 100644
--- a/cmd/smbios.c
+++ b/cmd/smbios.c
@@ -14,6 +14,18 @@ 
 
 DECLARE_GLOBAL_DATA_PTR;
 
+static const char * const wakeup_type_strings[] = {
+	"Reserved",		/* 0x00 */
+	"Other",		/* 0x01 */
+	"Unknown",		/* 0x02 */
+	"APM Timer",		/* 0x03 */
+	"Modem Ring",		/* 0x04 */
+	"Lan Remote",		/* 0x05 */
+	"Power Switch",		/* 0x06 */
+	"PCI PME#",		/* 0x07 */
+	"AC Power Restored",	/* 0x08 */
+};
+
 /**
  * smbios_get_string() - get SMBIOS string from table
  *
@@ -72,6 +84,14 @@  void smbios_print_str(const char *label, void *table, u8 index)
 	printf("\t%s: %s\n", label, smbios_get_string(table, index));
 }
 
+const char *smbios_wakeup_type_str(u8 wakeup_type)
+{
+	if (wakeup_type >= ARRAY_SIZE(wakeup_type_strings))
+		/* Values over 0x08 are reserved. */
+		wakeup_type = 0;
+	return wakeup_type_strings[wakeup_type];
+}
+
 static void smbios_print_type1(struct smbios_type1 *table)
 {
 	printf("System Information\n");
@@ -81,11 +101,12 @@  static void smbios_print_type1(struct smbios_type1 *table)
 	smbios_print_str("Serial Number", table, table->serial_number);
 	if (table->length >= 0x19) {
 		printf("\tUUID: %pUl\n", table->uuid);
-		smbios_print_str("Wake Up Type", table, table->serial_number);
+		printf("\tWake-up Type: %s\n",
+		       smbios_wakeup_type_str(table->wakeup_type));
 	}
 	if (table->length >= 0x1b) {
-		smbios_print_str("Serial Number", table, table->serial_number);
 		smbios_print_str("SKU Number", table, table->sku_number);
+		smbios_print_str("Family", table, table->family);
 	}
 }