xref: /aosp_15_r20/external/coreboot/src/drivers/generic/cbfs-serial/cbfs-serial.c (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
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)10 const 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