Write MAC address automatically on MACB-based boards
Subsystems (2)
PATCH 1/1 Write MAC address automatically on MACB-based boards
Also, remove all calls to eth_init() in boards that use MACB
---
Please note: this is untested, but compiles cleanly
board/afeb9260/afeb9260.c | 7 ------- board/atmel/at91cap9adk/at91cap9adk.c | 7 ------- board/atmel/at91sam9260ek/at91sam9260ek.c | 7 ------- board/atmel/at91sam9263ek/at91sam9263ek.c | 7 ------- board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c | 7 ------- board/calao/sbc35_a9g20/sbc35_a9g20.c | 7 ------- board/eukrea/cpu9260/cpu9260.c | 7 ------- board/ronetix/pm9263/pm9263.c | 7 ------- drivers/net/macb.c | 23 +++++++++++++++-------- 9 files changed, 15 insertions(+), 64 deletions(-)
board/afeb9260/afeb9260.c +0 -7
@@ -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
board/atmel/at91cap9adk/at91cap9adk.c +0 -7
@@ -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
board/atmel/at91sam9260ek/at91sam9260ek.c +0 -7
@@ -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
board/atmel/at91sam9263ek/at91sam9263ek.c +0 -7
@@ -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
board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c +0 -7
@@ -278,13 +278,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
board/calao/sbc35_a9g20/sbc35_a9g20.c +0 -7
@@ -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
board/eukrea/cpu9260/cpu9260.c +0 -7
@@ -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
board/ronetix/pm9263/pm9263.c +0 -7
@@ -380,13 +380,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
drivers/net/macb.c +15 -8
@@ -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
Signature · 1 line
1.6.0.4
PATCH 1/1 Write MAC address automatically on MACB-based boards
Hi Ben,
Am Dienstag, 1. Juni 2010 21:03:51 schrieb Ben Warren:
Quoted 3 lines
Also, remove all calls to
eth_init()in boards that use MACBSigned-off-by Ben Warren <[email protected]>
After cherry-picking ecee9324d73555e744593f3e0d387bec4c566f55 in my v2010.3 based tree and removing eth_init in reset_phy there is no boot delay due to resetting the phy which is done in *_macb_hw_init.
Also the MAC address is programmed into hardware and doesn't need to be set by ifconfig eth0 hw ether ${MAC}
One side note, but this shouldn't matter at all: I tested this on my own board, not on of the boards with in-tree support in u-boot
Best regards
Alexander
PATCH 1/1 Write MAC address automatically on MACB-based boards
Hi Alexander,
Quoted 16 lines · Alexander Stein
Hi Ben,
Am Dienstag, 1. Juni 2010 21:03:51 schrieb Ben Warren:
Quoted 4 lines
Also, remove all calls to
eth_init()in boards that use MACBSigned-off-by Ben Warren<[email protected]>After cherry-picking
ecee9324d73555e744593f3e0d387bec4c566f55in my v2010.3 based tree and removingeth_initinreset_phythere is no boot delay due to resetting the phy which is done in*_macb_hw_init.
Also the MAC address is programmed into hardware and doesn't need to be set by ifconfig eth0 hw ether ${MAC}
One side note, but this shouldn't matter at all: I tested this on my own board, not on of the boards with in-tree support in u-boot
Quoted 3 lines
Tested-by Alexander Stein<[email protected]>
Beautiful! I'm glad this worked out for you. If I don't receive any negative feedback, this patch will make it into the next release.
Quoted 3 lines
Best regards
Alexander
regards,
Ben
Ben Warren
AppliedPATCH 1/1 Write MAC address automatically on MACB-based boards
In reply to Ben WarrenQuoted 6 lines · Ben Warren
Also, remove all calls to
eth_init()in boards that use MACBSigned-off-by Ben Warren<[email protected]>---
Please note: this is untested, but compiles cleanly
Quoted 11 lines
board/afeb9260/afeb9260.c | 7 ------- board/atmel/at91cap9adk/at91cap9adk.c | 7 ------- board/atmel/at91sam9260ek/at91sam9260ek.c | 7 ------- board/atmel/at91sam9263ek/at91sam9263ek.c | 7 ------- board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c | 7 ------- board/calao/sbc35_a9g20/sbc35_a9g20.c | 7 ------- board/eukrea/cpu9260/cpu9260.c | 7 ------- board/ronetix/pm9263/pm9263.c | 7 ------- drivers/net/macb.c | 23 +++++++++++++++-------- 9 files changed, 15 insertions(+), 64 deletions(-)
Applied to net/next.
regards,
Ben