drivers/vpd: Add support to read device serial from VPD

Add functions to read the system and mainboard serial numbers
from VPD tables stored in flash.

Remove board-specific implementations for google/drallion and
google/sarien and select the new Kconfig instead.

Test: build/boot google/akemi with RO_VPD region persisted from
stock Google firmware, verify system/mainboard serial numbers
present via dmidecode.

Change-Id: I14ae07cd8b764e1e22d58577c7cc697ca1496bd5
Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/49050
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Michael Niewöhner <foss@mniewoehner.de>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Matt DeVillier
2020-05-31 12:31:15 -05:00
committed by Patrick Georgi
parent 1717231b74
commit 8bdb006db5
7 changed files with 34 additions and 42 deletions

View File

@@ -19,3 +19,8 @@ config VPD_FMAP_SIZE
default 0x4000
help
Size in bytes of the FMAP region created to store VPD tables.
config SMBIOS_SERIAL_FROM_VPD
bool "Load device serial from VPD"
depends on VPD && GENERATE_SMBIOS_TABLES
default n

View File

@@ -5,3 +5,4 @@ verstage-$(CONFIG_VPD) += vpd_decode.c vpd.c
romstage-$(CONFIG_VPD) += vpd_decode.c vpd.c
postcar-$(CONFIG_VPD) += vpd_decode.c vpd.c
ramstage-$(CONFIG_VPD) += vpd_decode.c vpd.c
ramstage-$(CONFIG_SMBIOS_SERIAL_FROM_VPD) += vpd_serial.c

View File

@@ -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 "";
}