From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sergei Shtylyov Subject: Re: [PATCH] net: sky2: allow mac to come from dt Date: Wed, 05 Mar 2014 18:15:39 +0400 Message-ID: <5317318B.5020406@cogentembedded.com> References: <1394000535-25559-1-git-send-email-tharvey@gateworks.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1394000535-25559-1-git-send-email-tharvey@gateworks.com> Sender: netdev-owner@vger.kernel.org To: Tim Harvey , Stephen Hemminger Cc: netdev@vger.kernel.org, devicetree@vger.kernel.org, Grant Likely , Rob Herring List-Id: devicetree@vger.kernel.org Hello. On 05-03-2014 10:22, Tim Harvey 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. I highly doubt that "[local-]mac-address" prop would be added to (autodiscovered) PCI device node. > Signed-off-by: Tim Harvey > Cc: netdev@vger.kernel.org > Cc: devicetree@vger.kernel.org > Cc: Grant Likely > Cc: Rob Herring > --- > 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 [...] > @@ -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)) { > + struct device_node *np = hw->pdev->dev.of_node; > + if (np) > + iap = (unsigned char *) of_get_mac_address(np); > + } > + > + /* 2) mac registers set by bootloader > + */ > + if (!iap || !is_valid_ether_addr(iap)) { > + memcpy_fromio(&tmpaddr, hw->regs + B2_MAC_1 + port * 8, > + ETH_ALEN); This line should start right under & on the previous line. > + iap = &tmpaddr[0]; Why not just 'tmpaddr'? > + } > + WBR, Sergei