From mboxrd@z Thu Jan 1 00:00:00 1970 From: Florian Fainelli Subject: Re: [PATCH] net: ethernet: bgmac: Allow MAC address to be specified in DTB Date: Thu, 16 Mar 2017 09:39:47 -0700 Message-ID: References: <1489679338-39705-1-git-send-email-steven.lin1@broadcom.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com To: Steve Lin , davem@davemloft.net, rafal@milecki.pl, jon.mason@broadcom.com, tklauser@distanz.ch Return-path: In-Reply-To: <1489679338-39705-1-git-send-email-steven.lin1@broadcom.com> Sender: linux-kernel-owner@vger.kernel.org List-Id: netdev.vger.kernel.org On 03/16/2017 08:48 AM, Steve Lin wrote: > Allows the BCMA version of the bgmac driver to obtain MAC address > from the device tree. If no MAC address is specified there, then > the previous behavior (obtaining MAC address from SPROM) is > used. > > Signed-off-by: Steve Lin Reviewed-by: Florian Fainelli PS: you might want to specify which tree this applies to by using [PATCH net-next] or [PATCH net] in the subject, see the netdev-FAQ.txt for details: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/networking/netdev-FAQ.txt > --- > drivers/net/ethernet/broadcom/bgmac-bcma.c | 39 ++++++++++++++++++------------ > 1 file changed, 23 insertions(+), 16 deletions(-) > > diff --git a/drivers/net/ethernet/broadcom/bgmac-bcma.c b/drivers/net/ethernet/broadcom/bgmac-bcma.c > index cf15b7e..6322594 100644 > --- a/drivers/net/ethernet/broadcom/bgmac-bcma.c > +++ b/drivers/net/ethernet/broadcom/bgmac-bcma.c > @@ -11,6 +11,7 @@ > #include > #include > #include > +#include > #include "bgmac.h" > > static inline bool bgmac_is_bcm4707_family(struct bcma_device *core) > @@ -114,7 +115,7 @@ static int bgmac_probe(struct bcma_device *core) > struct ssb_sprom *sprom = &core->bus->sprom; > struct mii_bus *mii_bus; > struct bgmac *bgmac; > - u8 *mac; > + const u8 *mac = NULL; > int err; > > bgmac = bgmac_alloc(&core->dev); > @@ -127,21 +128,27 @@ static int bgmac_probe(struct bcma_device *core) > > bcma_set_drvdata(core, bgmac); > > - switch (core->core_unit) { > - case 0: > - mac = sprom->et0mac; > - break; > - case 1: > - mac = sprom->et1mac; > - break; > - case 2: > - mac = sprom->et2mac; > - break; > - default: > - dev_err(bgmac->dev, "Unsupported core_unit %d\n", > - core->core_unit); > - err = -ENOTSUPP; > - goto err; > + if (bgmac->dev->of_node) > + mac = of_get_mac_address(bgmac->dev->of_node); > + > + /* If no MAC address assigned via device tree, check SPROM */ > + if (!mac) { > + switch (core->core_unit) { > + case 0: > + mac = sprom->et0mac; > + break; > + case 1: > + mac = sprom->et1mac; > + break; > + case 2: > + mac = sprom->et2mac; > + break; > + default: > + dev_err(bgmac->dev, "Unsupported core_unit %d\n", > + core->core_unit); > + err = -ENOTSUPP; > + goto err; > + } > } > > ether_addr_copy(bgmac->net_dev->dev_addr, mac); > -- Florian