On Wed, Mar 5, 2014 at 12:22 AM, 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> > --- > drivers/net/ethernet/marvell/sky2.c | 24 +++++++++++++++++++++++- > 1 file changed, 23 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c > index 55a37ae..bff493a 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)); > + unsigned char *iap, tmpaddr[ETH_ALEN]; > > if (!dev) > return NULL; > @@ -4805,8 +4808,27 @@ static struct net_device *sky2_init_netdev(struct sky2_hw *hw, unsigned port, > > dev->features |= dev->hw_features; > > + /* try to get mac address in the following order: > + * 1) from device tree data > + * 2) from internal registers set by bootloader > + */ > + iap = NULL; > + if (IS_ENABLED(CONFIG_OF)) { This shouldn't be needed. > + struct device_node *np = hw->pdev->dev.of_node; > + if (np) > + iap = (unsigned char *) of_get_mac_address(np); > + } This should all just be 1 line. of_get_mac_address should just return NULL if !CONFIG_OF or np == NULL. > + > + /* 2) mac registers set by bootloader > + */ > + if (!iap || !is_valid_ether_addr(iap)) { Perhaps is_valid_ether_addr check should also be moved into of_get_mac_address. Rob -- 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