If the MACSRCADDR register has been initialized by bootloader,
then use that instead of a random mac.

Signed-off-by: Troy Kisky <[email protected]>

diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c
index 3c345d8..ca347bd 100644
--- a/drivers/net/davinci_emac.c
+++ b/drivers/net/davinci_emac.c
@@ -2704,6 +2704,17 @@ static int __devinit davinci_emac_probe(struct 
platform_device *pdev)
        ndev->irq = res->start;
 
        if (!is_valid_ether_addr(priv->mac_addr)) {
+               u32 val;
+               val = emac_read(EMAC_MACSRCADDRHI);
+               priv->mac_addr[0] = (char)(val);
+               priv->mac_addr[1] = (char)(val>>8);
+               priv->mac_addr[2] = (char)(val>>16);
+               priv->mac_addr[3] = (char)(val>>24);
+               val = emac_read(EMAC_MACSRCADDRLO);
+               priv->mac_addr[4] = (char)(val);
+               priv->mac_addr[5] = (char)(val>>8);
+       }
+       if (!is_valid_ether_addr(priv->mac_addr)) {
                DECLARE_MAC_BUF(buf);
                /* Use random MAC if none passed */
                random_ether_addr(priv->mac_addr);
-- 
1.5.4.3


_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to