mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-14 22:44:27 +08:00
tg3: optionally use eth_platform_get_mac_address() to get mac address
This function will try to determine the mac address via the devicetree, or via an architecture-specific method (e.g. a PROM on SPARC). The SPARC-specific code in this driver (#ifdef SPARC) did exactly this, and is therefore removed. Note that you can now specify the tg3 mac address via the devicetree, on any platform, not just SPARC: Devicetree example: (see Documentation/devicetree/bindings/pci/pci.txt) &pcie { host@0 { #address-cells = <3>; #size-cells = <2>; reg = <0 0 0 0 0>; bcm5778: bcm5778@0 { reg = <0 0 0 0 0>; mac-address = [CA 11 AB 1E 10 01]; }; }; }; Signed-off-by: Sven Van Asbroeck <svendev@arcx.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
80cc49507b
commit
cddaf02bcb
@ -66,11 +66,6 @@
|
||||
#include <uapi/linux/net_tstamp.h>
|
||||
#include <linux/ptp_clock_kernel.h>
|
||||
|
||||
#ifdef CONFIG_SPARC
|
||||
#include <asm/idprom.h>
|
||||
#include <asm/prom.h>
|
||||
#endif
|
||||
|
||||
#define BAR_0 0
|
||||
#define BAR_2 2
|
||||
|
||||
@ -16976,32 +16971,6 @@ static int tg3_get_invariants(struct tg3 *tp, const struct pci_device_id *ent)
|
||||
return err;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SPARC
|
||||
static int tg3_get_macaddr_sparc(struct tg3 *tp)
|
||||
{
|
||||
struct net_device *dev = tp->dev;
|
||||
struct pci_dev *pdev = tp->pdev;
|
||||
struct device_node *dp = pci_device_to_OF_node(pdev);
|
||||
const unsigned char *addr;
|
||||
int len;
|
||||
|
||||
addr = of_get_property(dp, "local-mac-address", &len);
|
||||
if (addr && len == ETH_ALEN) {
|
||||
memcpy(dev->dev_addr, addr, ETH_ALEN);
|
||||
return 0;
|
||||
}
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static int tg3_get_default_macaddr_sparc(struct tg3 *tp)
|
||||
{
|
||||
struct net_device *dev = tp->dev;
|
||||
|
||||
memcpy(dev->dev_addr, idprom->id_ethaddr, ETH_ALEN);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int tg3_get_device_address(struct tg3 *tp)
|
||||
{
|
||||
struct net_device *dev = tp->dev;
|
||||
@ -17009,10 +16978,8 @@ static int tg3_get_device_address(struct tg3 *tp)
|
||||
int addr_ok = 0;
|
||||
int err;
|
||||
|
||||
#ifdef CONFIG_SPARC
|
||||
if (!tg3_get_macaddr_sparc(tp))
|
||||
if (!eth_platform_get_mac_address(&tp->pdev->dev, dev->dev_addr))
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
if (tg3_flag(tp, IS_SSB_CORE)) {
|
||||
err = ssb_gige_get_macaddr(tp->pdev, &dev->dev_addr[0]);
|
||||
@ -17074,13 +17041,8 @@ static int tg3_get_device_address(struct tg3 *tp)
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_valid_ether_addr(&dev->dev_addr[0])) {
|
||||
#ifdef CONFIG_SPARC
|
||||
if (!tg3_get_default_macaddr_sparc(tp))
|
||||
return 0;
|
||||
#endif
|
||||
if (!is_valid_ether_addr(&dev->dev_addr[0]))
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user