@@ -184,14 +184,7 @@ static void ftgmac100_initial_mac(struct ftgmac100 *priv)
unsigned int l;
void *addr;
- addr = device_get_mac_address(priv->dev, mac, ETH_ALEN);
- if (addr) {
- ether_addr_copy(priv->netdev->dev_addr, mac);
- dev_info(priv->dev, "Read MAC address %pM from device tree\n",
- mac);
- return;
- }
-
+ /* Try to read MAC from chip first */
m = ioread32(priv->base + FTGMAC100_OFFSET_MAC_MADR);
l = ioread32(priv->base + FTGMAC100_OFFSET_MAC_LADR);
@@ -205,7 +198,18 @@ static void ftgmac100_initial_mac(struct ftgmac100 *priv)
if (is_valid_ether_addr(mac)) {
ether_addr_copy(priv->netdev->dev_addr, mac);
dev_info(priv->dev, "Read MAC address %pM from chip\n", mac);
- } else {
+ return;
+ }
+
+ /* Get MAC from device tree if it cannot be read from the chip */
+ addr = device_get_mac_address(priv->dev, mac, ETH_ALEN);
+ if (addr) {
+ ether_addr_copy(priv->netdev->dev_addr, mac);
+ dev_info(priv->dev, "Read MAC address %pM from device tree\n",
+ mac);
+ return;
+ }
+ else {
eth_hw_addr_random(priv->netdev);
dev_info(priv->dev, "Generated random MAC address %pM\n",
priv->netdev->dev_addr);
Change the order of reading MAC address, try to read it from MAC chip first, if it's not availabe, then try to read it from device tree. Fixes: 35c54922dc97 ("ARM: dts: tacoma: Add reserved memory for ramoops") Signed-off-by: Hongwei Zhang <hongweiz@ami.com> --- drivers/net/ethernet/faraday/ftgmac100.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-)