[coreboot-gerrit] New patch to review for coreboot: pcengines/apu2: Add serial number in SMBIOS

Kyösti Mälkki (kyosti.malkki@gmail.com) gerrit at coreboot.org
Mon Jan 16 21:07:44 CET 2017


Kyösti Mälkki (kyosti.malkki at gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18154

-gerrit

commit 3388bc4e943253f499066742acf383a8b3657cff
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date:   Mon Jan 16 19:50:28 2017 +0200

    pcengines/apu2: Add serial number in SMBIOS
    
    Change-Id: Ic8149b1dd19d70935e00881cffa7ead0960d1c78
    Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
---
 src/mainboard/pcengines/apu2/mainboard.c | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/src/mainboard/pcengines/apu2/mainboard.c b/src/mainboard/pcengines/apu2/mainboard.c
index 7421355..d2ab638 100644
--- a/src/mainboard/pcengines/apu2/mainboard.c
+++ b/src/mainboard/pcengines/apu2/mainboard.c
@@ -191,6 +191,38 @@ static void mainboard_enable(device_t dev)
 }
 
 /*
+ * We will stuff a modified version of the first NICs (BDF 1:0.0) MAC address
+ * into the smbios serial number location.
+ */
+const char *smbios_mainboard_serial_number(void)
+{
+	static char serial[10];
+	device_t nic_dev;
+	uintptr_t bar10;
+	u32 mac_addr = 0;
+	int i;
+
+	nic_dev = dev_find_slot(1, PCI_DEVFN(0, 0));
+	if ((serial[0] != 0) || !nic_dev)
+		return serial;
+
+	/* Read in the last 3 bytes of NIC's MAC address. */
+	bar10 = pci_read_config32(nic_dev, 0x10);
+	bar10 &= 0xFFFE0000;
+	bar10 += 0x5400;
+	for (i = 3; i < 6; i++) {
+		mac_addr <<= 8;
+		mac_addr |= read8((u8 *)bar10 + i);
+	}
+	mac_addr &= 0x00FFFFFF;
+	mac_addr /= 4;
+	mac_addr -= 64;
+
+	snprintf(serial, sizeof(serial), "%d", mac_addr);
+	return serial;
+}
+
+/*
  * We will stuff the memory size into the smbios sku location.
  */
 const char *smbios_mainboard_sku(void)



More information about the coreboot-gerrit mailing list