On Wed, 5 Mar 2014 14:45:12 -0800 Tim Harvey <tharvey@xxxxxxxxxxxxx> wrote: > + unsigned char *iap, tmpaddr[ETH_ALEN]; > > if (!dev) > return NULL; > @@ -4805,8 +4808,17 @@ static struct net_device *sky2_init_netdev(struct sky2_hw *hw, unsigned port, > > dev->features |= dev->hw_features; > > - /* read the mac address */ > - memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port * 8, ETH_ALEN); > + /* try to get mac address in the following order: > + * 1) from device tree data > + * 2) from internal registers set by bootloader > + */ > + iap = of_get_mac_address(hw->pdev->dev.of_node); > + if (!iap) { > + memcpy_fromio(&tmpaddr, hw->regs + B2_MAC_1 + port * 8, > + ETH_ALEN); > + iap = tmpaddr; > + } > + ether_addr_copy(dev->dev_addr, iap); Can be done without stack tmpaddr. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html