1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #include <cbfs.h> 4 #include <device/device.h> 5 #include <smbios.h> 6 #include <string.h> 7 8 #define MAX_SERIAL_LENGTH 0x100 9 smbios_mainboard_serial_number(void)10const char *smbios_mainboard_serial_number(void) 11 { 12 static char serial_number[MAX_SERIAL_LENGTH + 1] = {0}; 13 14 if (serial_number[0] != 0) 15 return serial_number; 16 17 size_t serial_len = cbfs_load("serial_number", serial_number, MAX_SERIAL_LENGTH); 18 if (serial_len) { 19 serial_number[serial_len] = '\0'; 20 return serial_number; 21 } 22 23 strncpy(serial_number, CONFIG_MAINBOARD_SERIAL_NUMBER, 24 MAX_SERIAL_LENGTH); 25 26 return serial_number; 27 } 28