net: macb: Try to retrieve MAC addess from nvmem provider
authorMike Looijmans <mike.looijmans@topic.nl>
Thu, 29 Mar 2018 05:29:49 +0000 (07:29 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 30 Mar 2018 14:40:18 +0000 (10:40 -0400)
Call of_get_nvmem_mac_address() to fetch the MAC address from an nvmem
cell, if one is provided in the device tree. This allows the address to
be stored in an I2C EEPROM device for example.

Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cadence/macb_main.c

index d09bd43680b35df8c1d380d35610952dcccc45f0..b4c9268100bbc7ffd1b294dcfa2adc1902768ec5 100644 (file)
@@ -3952,10 +3952,16 @@ static int macb_probe(struct platform_device *pdev)
                dev->max_mtu = ETH_DATA_LEN;
 
        mac = of_get_mac_address(np);
-       if (mac)
+       if (mac) {
                ether_addr_copy(bp->dev->dev_addr, mac);
-       else
-               macb_get_hwaddr(bp);
+       } else {
+               err = of_get_nvmem_mac_address(np, bp->dev->dev_addr);
+               if (err) {
+                       if (err == -EPROBE_DEFER)
+                               goto err_out_free_netdev;
+                       macb_get_hwaddr(bp);
+               }
+       }
 
        err = of_get_phy_mode(np);
        if (err < 0) {