u32 phyid;
        struct asix_common_private *priv;
 
-       usbnet_get_endpoints(dev,intf);
+       usbnet_get_endpoints(dev, intf);
 
-       /* Get the MAC address */
-       if (dev->driver_info->data & FLAG_EEPROM_MAC) {
-               for (i = 0; i < (ETH_ALEN >> 1); i++) {
-                       ret = asix_read_cmd(dev, AX_CMD_READ_EEPROM, 0x04 + i,
-                                           0, 2, buf + i * 2, 0);
-                       if (ret < 0)
-                               break;
-               }
+       /* Maybe the boot loader passed the MAC address via device tree */
+       if (!eth_platform_get_mac_address(&dev->udev->dev, buf)) {
+               netif_dbg(dev, ifup, dev->net,
+                         "MAC address read from device tree");
        } else {
-               ret = asix_read_cmd(dev, AX_CMD_READ_NODE_ID,
-                               0, 0, ETH_ALEN, buf, 0);
-       }
+               /* Try getting the MAC address from EEPROM */
+               if (dev->driver_info->data & FLAG_EEPROM_MAC) {
+                       for (i = 0; i < (ETH_ALEN >> 1); i++) {
+                               ret = asix_read_cmd(dev, AX_CMD_READ_EEPROM,
+                                                   0x04 + i, 0, 2, buf + i * 2,
+                                                   0);
+                               if (ret < 0)
+                                       break;
+                       }
+               } else {
+                       ret = asix_read_cmd(dev, AX_CMD_READ_NODE_ID,
+                                           0, 0, ETH_ALEN, buf, 0);
+               }
 
-       if (ret < 0) {
-               netdev_dbg(dev->net, "Failed to read MAC address: %d\n", ret);
-               return ret;
+               if (ret < 0) {
+                       netdev_dbg(dev->net, "Failed to read MAC address: %d\n",
+                                  ret);
+                       return ret;
+               }
        }
 
        asix_set_netdev_dev_addr(dev, buf);