aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/vpd/vpd_serial.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/vpd/vpd_serial.c')
-rw-r--r--src/drivers/vpd/vpd_serial.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/drivers/vpd/vpd_serial.c b/src/drivers/vpd/vpd_serial.c
new file mode 100644
index 0000000000..528dcbb368
--- /dev/null
+++ b/src/drivers/vpd/vpd_serial.c
@@ -0,0 +1,26 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+
+#include <smbios.h>
+
+#include "vpd.h"
+#include "vpd_tables.h"
+
+#define VPD_KEY_SYSTEM_SERIAL "serial_number"
+#define VPD_KEY_MAINBOARD_SERIAL "mlb_serial_number"
+#define VPD_SERIAL_LEN 64
+
+const char *smbios_system_serial_number(void)
+{
+ static char serial[VPD_SERIAL_LEN];
+ if (vpd_gets(VPD_KEY_SYSTEM_SERIAL, serial, VPD_SERIAL_LEN, VPD_RO))
+ return serial;
+ return "";
+}
+
+const char *smbios_mainboard_serial_number(void)
+{
+ static char serial[VPD_SERIAL_LEN];
+ if (vpd_gets(VPD_KEY_MAINBOARD_SERIAL, serial, VPD_SERIAL_LEN, VPD_RO))
+ return serial;
+ return "";
+}