On Fri, Mar 7, 2014 at 10:59 PM, Tim Harvey <tharvey@xxxxxxxxxxxxx> wrote: > The driver reads the mac address from the device registers which would > need to have been programmed by the bootloader. This patch adds > the ability to pull the mac from devicetree via the pci device dt node. > > Signed-off-by: Tim Harvey <tharvey@xxxxxxxxxxxxx> > Cc: netdev@xxxxxxxxxxxxxxx > Cc: devicetree@xxxxxxxxxxxxxxx > Cc: Grant Likely <grant.likely@xxxxxxxxxx> > Cc: Rob Herring <robh+dt@xxxxxxxxxx> Acked-by: Rob Herring <robh@xxxxxxxxxx> > > Changes since v2: > - eliminated use of stack tmpaddr per feedback > > Changes since v1: > - simplified based on feedback > - fixed formatting > --- > drivers/net/ethernet/marvell/sky2.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c > index 55a37ae..2434611 100644 > --- a/drivers/net/ethernet/marvell/sky2.c > +++ b/drivers/net/ethernet/marvell/sky2.c > @@ -44,6 +44,8 @@ > #include <linux/prefetch.h> > #include <linux/debugfs.h> > #include <linux/mii.h> > +#include <linux/of_device.h> > +#include <linux/of_net.h> > > #include <asm/irq.h> > > @@ -4748,6 +4750,7 @@ static struct net_device *sky2_init_netdev(struct sky2_hw *hw, unsigned port, > { > struct sky2_port *sky2; > struct net_device *dev = alloc_etherdev(sizeof(*sky2)); > + const void *iap; > > if (!dev) > return NULL; > @@ -4805,8 +4808,16 @@ 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(dev->dev_addr, iap, ETH_ALEN); > + else > + memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port * 8, > + ETH_ALEN); > > return dev; > } > -- > 1.8.3.2 > -- 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