Some boards using this chip do not have the EEPROM. Of these, some may provide an alternate means for retrieving a MAC address. The MinnowBoard stores its MAC address in flash which the firmware exports via EFI.
Add a board_eth_addr() callback pointer and use it, if defined, to read the address instead of relying on the configuration registers. Signed-off-by: Darren Hart <[email protected]> --- drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h | 2 ++ drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h index bd4e0c5..81e7ff6 100644 --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe.h @@ -364,6 +364,7 @@ struct pch_gbe_functions { * @autoneg: Auto negotiation enable * @link_speed: Link speed * @link_duplex: Link duplex + * @board_eth_addr: Board specific method to read the Ethernet address */ struct pch_gbe_mac_info { u8 addr[6]; @@ -375,6 +376,7 @@ struct pch_gbe_mac_info { u8 autoneg; u16 link_speed; u16 link_duplex; + void (*board_eth_addr) (u8 *addr); }; /** diff --git a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c index f487ad7..b8a2bb1 100644 --- a/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +++ b/drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c @@ -2608,6 +2608,7 @@ static int pch_gbe_probe(struct pci_dev *pdev, if (minnow_detect()) { adapter->hw.phy.tx_clk_delay = true; minnow_phy_reset(); + adapter->hw.mac.board_eth_addr = minnow_eth_addr; } adapter->netdev = netdev; @@ -2653,6 +2654,10 @@ static int pch_gbe_probe(struct pci_dev *pdev, pch_gbe_hal_get_bus_info(&adapter->hw); /* Read the MAC address. and store to the private data */ + if (adapter->hw.mac.board_eth_addr) { + adapter->hw.mac.board_eth_addr(adapter->hw.mac.addr); + pch_gbe_mac_mar_set(&adapter->hw, adapter->hw.mac.addr, 0); + } ret = pch_gbe_hal_read_mac_addr(&adapter->hw); if (ret) { dev_err(&pdev->dev, "MAC address Read Error\n"); -- 1.8.1.2 _______________________________________________ linux-yocto mailing list [email protected] https://lists.yoctoproject.org/listinfo/linux-yocto
