On Wed, 5 Mar 2014 14:45:12 -0800
Tim Harvey <[email protected]> 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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html