summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2019-07-03 10:49:44 +0300
committerKyösti Mälkki <kyosti.malkki@gmail.com>2019-07-04 09:35:13 +0000
commitdace2498ecfadf645599aaa3ba8fef8cbb111c2d (patch)
tree232bc02b5c634d0e7e157e6a6095106dddc26b7e
parent367497486d637ff07518872ad21f2cf2d8443e80 (diff)
downloadcoreboot-dace2498ecfadf645599aaa3ba8fef8cbb111c2d.tar.xz
pcengines/apuX: Replace use of dev_find_slot()
Find the NIC device based on the PCIe root port function. Change-Id: Ia8c6e115c9b836ee60862427dfc9d46ca3dd1b69 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34003 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Michał Żygowski <michal.zygowski@3mdeb.com>
-rw-r--r--src/mainboard/pcengines/apu1/mainboard.c14
-rw-r--r--src/mainboard/pcengines/apu2/mainboard.c17
2 files changed, 15 insertions, 16 deletions
diff --git a/src/mainboard/pcengines/apu1/mainboard.c b/src/mainboard/pcengines/apu1/mainboard.c
index e5e30e031c..088c839239 100644
--- a/src/mainboard/pcengines/apu1/mainboard.c
+++ b/src/mainboard/pcengines/apu1/mainboard.c
@@ -206,17 +206,23 @@ static void mainboard_enable(struct device *dev)
const char *smbios_mainboard_serial_number(void)
{
static char serial[10];
- struct device *nic_dev;
+ struct device *dev;
uintptr_t bar18;
u32 mac_addr = 0;
int i;
- nic_dev = dev_find_slot(1, PCI_DEVFN(0, 0));
- if ((serial[0] != 0) || !nic_dev)
+ /* Already initialized. */
+ if (serial[0] != 0)
+ return serial;
+
+ dev = pcidev_on_root(4, 0);
+ if (dev)
+ dev = pcidev_path_behind(dev->link_list, PCI_DEVFN(0, 0));
+ if (!dev)
return serial;
/* Read in the last 3 bytes of NIC's MAC address. */
- bar18 = pci_read_config32(nic_dev, 0x18);
+ bar18 = pci_read_config32(dev, 0x18);
bar18 &= 0xFFFFFC00;
for (i = 3; i < 6; i++) {
mac_addr <<= 8;
diff --git a/src/mainboard/pcengines/apu2/mainboard.c b/src/mainboard/pcengines/apu2/mainboard.c
index 5a19d20efc..682120bc65 100644
--- a/src/mainboard/pcengines/apu2/mainboard.c
+++ b/src/mainboard/pcengines/apu2/mainboard.c
@@ -197,22 +197,15 @@ const char *smbios_mainboard_serial_number(void)
struct device *dev;
uintptr_t bar10;
u32 mac_addr = 0;
- u32 bus_no;
int i;
- /*
- * In case we have PCIe module connected to mPCIe2 slot, BDF 1:0.0 may
- * not be a NIC, because mPCIe2 slot is routed to the very first PCIe
- * bridge and the first NIC is connected to the second PCIe bridge.
- * Read secondary bus number from the PCIe bridge where the first NIC is
- * connected.
- */
- dev = pcidev_on_root(2, 2);
- if ((serial[0] != 0) || !dev)
+ /* Already initialized. */
+ if (serial[0] != 0)
return serial;
- bus_no = dev->link_list->secondary;
- dev = dev_find_slot(bus_no, PCI_DEVFN(0, 0));
+ dev = pcidev_on_root(2, 2);
+ if (dev)
+ dev = pcidev_path_behind(dev->link_list, PCI_DEVFN(0, 0));
if (!dev)
return serial;