]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Write MAC address automatically on MACB-based boards
authorBen Warren <biggerbadderben@gmail.com>
Tue, 1 Jun 2010 18:55:42 +0000 (11:55 -0700)
committerBen Warren <biggerbadderben@gmail.com>
Mon, 12 Jul 2010 07:14:29 +0000 (00:14 -0700)
Also, remove all calls to eth_init() in boards that use MACB

Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
board/afeb9260/afeb9260.c
board/atmel/at91cap9adk/at91cap9adk.c
board/atmel/at91sam9260ek/at91sam9260ek.c
board/atmel/at91sam9263ek/at91sam9263ek.c
board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c
board/calao/sbc35_a9g20/sbc35_a9g20.c
board/eukrea/cpu9260/cpu9260.c
board/ronetix/pm9263/pm9263.c
drivers/net/macb.c

index 4652672aba88564bc02c062587ad1f81d1aad8cf..3c37557d6294efeff1d68353293295a75d77380e 100644 (file)
@@ -167,13 +167,6 @@ int dram_init(void)
 #ifdef CONFIG_RESET_PHY_R
 void reset_phy(void)
 {
-#ifdef CONFIG_MACB
-       /*
-        * Initialize ethernet HW addr prior to starting Linux,
-        * needed for nfsroot
-        */
-       eth_init(gd->bd);
-#endif
 }
 #endif
 
index 258d1eac29252a12035ffff17b096a4693d4d6cf..2ab8bc2c430ff1fc3b1e43dc6433b3add69cea9a 100644 (file)
@@ -339,13 +339,6 @@ int dram_init(void)
 #ifdef CONFIG_RESET_PHY_R
 void reset_phy(void)
 {
-#ifdef CONFIG_MACB
-       /*
-        * Initialize ethernet HW addr prior to starting Linux,
-        * needed for nfsroot
-        */
-       eth_init(gd->bd);
-#endif
 }
 #endif
 
index ed4736027cc3f21a2a7c809b4c07c26628e228d6..64c6d17829f5ac2e92838d8f2b07e952bff17534 100644 (file)
@@ -179,13 +179,6 @@ int dram_init(void)
 #ifdef CONFIG_RESET_PHY_R
 void reset_phy(void)
 {
-#ifdef CONFIG_MACB
-       /*
-        * Initialize ethernet HW addr prior to starting Linux,
-        * needed for nfsroot
-        */
-       eth_init(gd->bd);
-#endif
 }
 #endif
 
index 5cd7aa75f8fd6c6b37da9bd01a639e61cf416ee3..91efc07ffd142c5693aa42a3b5cf09768c485c6e 100644 (file)
@@ -284,13 +284,6 @@ int dram_init(void)
 #ifdef CONFIG_RESET_PHY_R
 void reset_phy(void)
 {
-#ifdef CONFIG_MACB
-       /*
-        * Initialize ethernet HW addr prior to starting Linux,
-        * needed for nfsroot
-        */
-       eth_init(gd->bd);
-#endif
 }
 #endif
 
index 8fa044907024d8a719493696898094e7f2607eed..f92b20f4a8e43e5925f82912f0d9b853e6e97165 100644 (file)
@@ -291,13 +291,6 @@ int dram_init(void)
 #ifdef CONFIG_RESET_PHY_R
 void reset_phy(void)
 {
-#ifdef CONFIG_MACB
-       /*
-        * Initialize ethernet HW addr prior to starting Linux,
-        * needed for nfsroot
-        */
-       eth_init(gd->bd);
-#endif
 }
 #endif
 
index da34b40e50bc0bcb08777a895e43d140c11300cd..9df45c0ea337e62412c90bad2cd11f3bfebb9451 100644 (file)
@@ -177,13 +177,6 @@ int dram_init(void)
 #ifdef CONFIG_RESET_PHY_R
 void reset_phy(void)
 {
-#ifdef CONFIG_MACB
-       /*
-        * Initialize ethernet HW addr prior to starting Linux,
-        * needed for nfsroot
-        */
-       eth_init(gd->bd);
-#endif
 }
 #endif
 
index af8a4a2f89aeab563e7728aabcd1339a32126bf9..61b6c3323dd37a74adfe07bb9891f833be74c7ec 100644 (file)
@@ -200,13 +200,6 @@ int dram_init(void)
 #ifdef CONFIG_RESET_PHY_R
 void reset_phy(void)
 {
-#ifdef CONFIG_MACB
-       /*
-        * Initialize ethernet HW addr prior to starting Linux,
-        * needed for nfsroot
-        */
-       eth_init(gd->bd);
-#endif
 }
 #endif
 
index c7835de3d052ef41f61f1ebe88831b510a25b135..e41c84c7634cc5ae887898e886cb503a4073332a 100644 (file)
@@ -387,13 +387,6 @@ int dram_init(void)
 #ifdef CONFIG_RESET_PHY_R
 void reset_phy(void)
 {
-#ifdef CONFIG_MACB
-       /*
-        * Initialize ethernet HW addr prior to starting Linux,
-        * needed for nfsroot
-        */
-       eth_init(gd->bd);
-#endif
 }
 #endif
 
index dcb8850239c6620de083f5b26bfb7540ab240e89..6a58a374b2e97c08f77f94de8967c45506d111aa 100644 (file)
@@ -439,8 +439,6 @@ static int macb_init(struct eth_device *netdev, bd_t *bd)
 {
        struct macb_device *macb = to_macb(netdev);
        unsigned long paddr;
-       u32 hwaddr_bottom;
-       u16 hwaddr_top;
        int i;
 
        /*
@@ -469,12 +467,6 @@ static int macb_init(struct eth_device *netdev, bd_t *bd)
        macb_writel(macb, RBQP, macb->rx_ring_dma);
        macb_writel(macb, TBQP, macb->tx_ring_dma);
 
-       /* set hardware address */
-       hwaddr_bottom = cpu_to_le32(*((u32 *)netdev->enetaddr));
-       macb_writel(macb, SA1B, hwaddr_bottom);
-       hwaddr_top = cpu_to_le16(*((u16 *)(netdev->enetaddr + 4)));
-       macb_writel(macb, SA1T, hwaddr_top);
-
        /* choose RMII or MII mode. This depends on the board */
 #ifdef CONFIG_RMII
 #if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \
@@ -521,6 +513,20 @@ static void macb_halt(struct eth_device *netdev)
        macb_writel(macb, NCR, MACB_BIT(CLRSTAT));
 }
 
+static int macb_write_hwaddr(struct eth_device *dev)
+{
+       struct macb_device *macb = to_macb(dev);
+       u32 hwaddr_bottom;
+       u16 hwaddr_top;
+
+       /* set hardware address */
+       hwaddr_bottom = cpu_to_le32(*((u32 *)dev->enetaddr));
+       macb_writel(macb, SA1B, hwaddr_bottom);
+       hwaddr_top = cpu_to_le16(*((u16 *)(dev->enetaddr + 4)));
+       macb_writel(macb, SA1T, hwaddr_top);
+       return 0;
+}
+
 int macb_eth_initialize(int id, void *regs, unsigned int phy_addr)
 {
        struct macb_device *macb;
@@ -554,6 +560,7 @@ int macb_eth_initialize(int id, void *regs, unsigned int phy_addr)
        netdev->halt = macb_halt;
        netdev->send = macb_send;
        netdev->recv = macb_recv;
+       netdev->write_hwaddr = macb_write_hwaddr;
 
        /*
         * Do some basic initialization so that we at least can talk