pcengines/apu2: Add serial number in SMBIOS

Change-Id: Ic8149b1dd19d70935e00881cffa7ead0960d1c78
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/18154
Tested-by: build bot (Jenkins)
Reviewed-by: Piotr Król <piotr.krol@3mdeb.com>
This commit is contained in:
Kyösti Mälkki 2017-01-16 19:50:28 +02:00
parent 104074994d
commit 01bf599ea8
1 changed files with 32 additions and 0 deletions

View File

@ -190,6 +190,38 @@ static void mainboard_enable(device_t dev)
pirq_setup();
}
/*
* 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.
*/