Commit cddaf02b authored by thesven73@gmail.com's avatar thesven73@gmail.com Committed by David S. Miller

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: default avatarSven Van Asbroeck <svendev@arcx.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 80cc4950
...@@ -66,11 +66,6 @@ ...@@ -66,11 +66,6 @@
#include <uapi/linux/net_tstamp.h> #include <uapi/linux/net_tstamp.h>
#include <linux/ptp_clock_kernel.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_0 0
#define BAR_2 2 #define BAR_2 2
...@@ -16976,32 +16971,6 @@ static int tg3_get_invariants(struct tg3 *tp, const struct pci_device_id *ent) ...@@ -16976,32 +16971,6 @@ static int tg3_get_invariants(struct tg3 *tp, const struct pci_device_id *ent)
return err; 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) static int tg3_get_device_address(struct tg3 *tp)
{ {
struct net_device *dev = tp->dev; struct net_device *dev = tp->dev;
...@@ -17009,10 +16978,8 @@ static int tg3_get_device_address(struct tg3 *tp) ...@@ -17009,10 +16978,8 @@ static int tg3_get_device_address(struct tg3 *tp)
int addr_ok = 0; int addr_ok = 0;
int err; int err;
#ifdef CONFIG_SPARC if (!eth_platform_get_mac_address(&tp->pdev->dev, dev->dev_addr))
if (!tg3_get_macaddr_sparc(tp))
return 0; return 0;
#endif
if (tg3_flag(tp, IS_SSB_CORE)) { if (tg3_flag(tp, IS_SSB_CORE)) {
err = ssb_gige_get_macaddr(tp->pdev, &dev->dev_addr[0]); err = ssb_gige_get_macaddr(tp->pdev, &dev->dev_addr[0]);
...@@ -17074,13 +17041,8 @@ static int tg3_get_device_address(struct tg3 *tp) ...@@ -17074,13 +17041,8 @@ static int tg3_get_device_address(struct tg3 *tp)
} }
} }
if (!is_valid_ether_addr(&dev->dev_addr[0])) { if (!is_valid_ether_addr(&dev->dev_addr[0]))
#ifdef CONFIG_SPARC
if (!tg3_get_default_macaddr_sparc(tp))
return 0;
#endif
return -EINVAL; return -EINVAL;
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment