|
@@ -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) {
|