summaryrefslogtreecommitdiff
path: root/target/linux/mvebu/patches-3.10/0020-net-mvneta-read-MAC-address-from-hardware-when-avail.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mvebu/patches-3.10/0020-net-mvneta-read-MAC-address-from-hardware-when-avail.patch')
-rw-r--r--target/linux/mvebu/patches-3.10/0020-net-mvneta-read-MAC-address-from-hardware-when-avail.patch112
1 files changed, 0 insertions, 112 deletions
diff --git a/target/linux/mvebu/patches-3.10/0020-net-mvneta-read-MAC-address-from-hardware-when-avail.patch b/target/linux/mvebu/patches-3.10/0020-net-mvneta-read-MAC-address-from-hardware-when-avail.patch
deleted file mode 100644
index 9866f0c..0000000
--- a/target/linux/mvebu/patches-3.10/0020-net-mvneta-read-MAC-address-from-hardware-when-avail.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From 25d3318a445c4f4360f86bf6d1d1a320d9646bb5 Mon Sep 17 00:00:00 2001
-From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Date: Tue, 4 Jun 2013 04:52:23 +0000
-Subject: [PATCH 020/203] net: mvneta: read MAC address from hardware when
- available
-
-This patch improves the logic used by the mvneta driver to find a MAC
-address for a particular interface. Until now, it was only looking at
-the Device Tree, and if no address was found, was falling back to
-generating a random MAC address.
-
-This patch adds the intermediate solution of reading the MAC address
-from the hardware registers, in case it has been set by the
-bootloader. So the order is now:
-
- 1) MAC address from the Device Tree
- 2) MAC address from the hardware registers
- 3) Random MAC address
-
-This requires moving the MAC address initialization a little bit later
-in the ->probe() code, because it now requires the hardware registers
-to be remapped.
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
-Cc: Joe Perches <joe@perches.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/ethernet/marvell/mvneta.c | 44 ++++++++++++++++++++++++++++-------
- 1 file changed, 35 insertions(+), 9 deletions(-)
-
---- a/drivers/net/ethernet/marvell/mvneta.c
-+++ b/drivers/net/ethernet/marvell/mvneta.c
-@@ -2260,6 +2260,21 @@ static int mvneta_change_mtu(struct net_
- return 0;
- }
-
-+/* Get mac address */
-+static void mvneta_get_mac_addr(struct mvneta_port *pp, unsigned char *addr)
-+{
-+ u32 mac_addr_l, mac_addr_h;
-+
-+ mac_addr_l = mvreg_read(pp, MVNETA_MAC_ADDR_LOW);
-+ mac_addr_h = mvreg_read(pp, MVNETA_MAC_ADDR_HIGH);
-+ addr[0] = (mac_addr_h >> 24) & 0xFF;
-+ addr[1] = (mac_addr_h >> 16) & 0xFF;
-+ addr[2] = (mac_addr_h >> 8) & 0xFF;
-+ addr[3] = mac_addr_h & 0xFF;
-+ addr[4] = (mac_addr_l >> 8) & 0xFF;
-+ addr[5] = mac_addr_l & 0xFF;
-+}
-+
- /* Handle setting mac address */
- static int mvneta_set_mac_addr(struct net_device *dev, void *addr)
- {
-@@ -2678,7 +2693,9 @@ static int mvneta_probe(struct platform_
- u32 phy_addr;
- struct mvneta_port *pp;
- struct net_device *dev;
-- const char *mac_addr;
-+ const char *dt_mac_addr;
-+ char hw_mac_addr[ETH_ALEN];
-+ const char *mac_from;
- int phy_mode;
- int err;
-
-@@ -2714,13 +2731,6 @@ static int mvneta_probe(struct platform_
- goto err_free_irq;
- }
-
-- mac_addr = of_get_mac_address(dn);
--
-- if (!mac_addr || !is_valid_ether_addr(mac_addr))
-- eth_hw_addr_random(dev);
-- else
-- memcpy(dev->dev_addr, mac_addr, ETH_ALEN);
--
- dev->tx_queue_len = MVNETA_MAX_TXD;
- dev->watchdog_timeo = 5 * HZ;
- dev->netdev_ops = &mvneta_netdev_ops;
-@@ -2751,6 +2761,21 @@ static int mvneta_probe(struct platform_
-
- clk_prepare_enable(pp->clk);
-
-+ dt_mac_addr = of_get_mac_address(dn);
-+ if (dt_mac_addr && is_valid_ether_addr(dt_mac_addr)) {
-+ mac_from = "device tree";
-+ memcpy(dev->dev_addr, dt_mac_addr, ETH_ALEN);
-+ } else {
-+ mvneta_get_mac_addr(pp, hw_mac_addr);
-+ if (is_valid_ether_addr(hw_mac_addr)) {
-+ mac_from = "hardware";
-+ memcpy(dev->dev_addr, hw_mac_addr, ETH_ALEN);
-+ } else {
-+ mac_from = "random";
-+ eth_hw_addr_random(dev);
-+ }
-+ }
-+
- pp->tx_done_timer.data = (unsigned long)dev;
-
- pp->tx_ring_size = MVNETA_MAX_TXD;
-@@ -2783,7 +2808,8 @@ static int mvneta_probe(struct platform_
- goto err_deinit;
- }
-
-- netdev_info(dev, "mac: %pM\n", dev->dev_addr);
-+ netdev_info(dev, "Using %s mac address %pM\n", mac_from,
-+ dev->dev_addr);
-
- platform_set_drvdata(pdev, pp->dev);
-