[U-Boot] [PATCH 2/4] macb: add set_hw_enetaddr support
Jean-Christophe PLAGNIOL-VILLARD
plagnioj at jcrosoft.com
Mon May 11 08:39:27 CEST 2009
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
Cc: Ben Warren <biggerbadderben at gmail.com>
Cc: Haavard Skinnemoen <haavard.skinnemoen at atmel.com>
---
drivers/net/macb.c | 23 +++++++++++++++++------
1 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/drivers/net/macb.c b/drivers/net/macb.c
index 6de0a04..a339730 100644
--- a/drivers/net/macb.c
+++ b/drivers/net/macb.c
@@ -404,12 +404,25 @@ static int macb_phy_init(struct macb_device *macb)
}
}
-static int macb_init(struct eth_device *netdev, bd_t *bd)
+static int macb_set_hw_enetaddr(struct eth_device *netdev, bd_t *bd)
{
struct macb_device *macb = to_macb(netdev);
- unsigned long paddr;
u32 hwaddr_bottom;
u16 hwaddr_top;
+
+ /* 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);
+
+ return 0;
+}
+
+static int macb_init(struct eth_device *netdev, bd_t *bd)
+{
+ struct macb_device *macb = to_macb(netdev);
+ unsigned long paddr;
int i;
/*
@@ -439,10 +452,7 @@ static int macb_init(struct eth_device *netdev, bd_t *bd)
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);
+ macb_set_hw_enetaddr(netdev, bd);
/* choose RMII or MII mode. This depends on the board */
#ifdef CONFIG_RMII
@@ -521,6 +531,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->set_hw_enetaddr = macb_set_hw_enetaddr;
/*
* Do some basic initialization so that we at least can talk
--
1.6.1.3
More information about the U-Boot
mailing list