[U-Boot-Users] [PATCH 0/1] Moved initialization of AVR32 Ethernet controllers to board_eth_init()

Hello,
More cleanup of net/eth.c, this time taking care of AVR32 boards. I got rid of the board/eth.c files because board_eth_init() needs to be in a file where there are other strong symbols in order to override the weak board_eth_init() in net/eth.c. I've compiled this code and verified that the strong board_eth_init() symbols are linked in, but don't have hardware to test on. If somebody can, please try out and let me know.
These patches are being staged in the 'testing' branch of the net repo.
regards, Ben

Renamed initialization functions for atngw100 and atstk1000. Removed initializations for these boards from net/eth.c
Signed-off-by: Ben Warren biggerbadderben@gmail.com --- board/atmel/atngw100/Makefile | 2 +- board/atmel/atngw100/atngw100.c | 11 ++++++++++ board/atmel/atngw100/eth.c | 36 ----------------------------------- board/atmel/atstk1000/Makefile | 2 +- board/atmel/atstk1000/atstk1000.c | 11 ++++++++++ board/atmel/atstk1000/eth.c | 38 ------------------------------------- net/eth.c | 8 ------- 7 files changed, 24 insertions(+), 84 deletions(-) delete mode 100644 board/atmel/atngw100/eth.c delete mode 100644 board/atmel/atstk1000/eth.c
diff --git a/board/atmel/atngw100/Makefile b/board/atmel/atngw100/Makefile index 1b5c635..9f3849f 100644 --- a/board/atmel/atngw100/Makefile +++ b/board/atmel/atngw100/Makefile @@ -22,7 +22,7 @@ include $(TOPDIR)/config.mk
LIB := $(obj)lib$(BOARD).a
-COBJS := $(BOARD).o eth.o +COBJS := $(BOARD).o
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) diff --git a/board/atmel/atngw100/atngw100.c b/board/atmel/atngw100/atngw100.c index 375f0e7..caf33f0 100644 --- a/board/atmel/atngw100/atngw100.c +++ b/board/atmel/atngw100/atngw100.c @@ -89,3 +89,14 @@ void board_init_info(void) gd->bd->bi_phy_id[0] = 0x01; gd->bd->bi_phy_id[1] = 0x03; } + +extern int macb_eth_initialize(int id, void *regs, unsigned int phy_addr); + +#ifdef CONFIG_CMD_NET +int board_eth_init(bd_t *bi) +{ + macb_eth_initialize(0, (void *)MACB0_BASE, bi->bi_phy_id[0]); + macb_eth_initialize(1, (void *)MACB1_BASE, bi->bi_phy_id[1]); + return 0; +} +#endif diff --git a/board/atmel/atngw100/eth.c b/board/atmel/atngw100/eth.c deleted file mode 100644 index d1d57bb..0000000 --- a/board/atmel/atngw100/eth.c +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (C) 2006 Atmel Corporation - * - * Ethernet initialization for the AVR32 Network Gateway - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ -#include <common.h> - -#include <asm/arch/memory-map.h> - -extern int macb_eth_initialize(int id, void *regs, unsigned int phy_addr); - -#ifdef CONFIG_CMD_NET -void atngw100_eth_initialize(bd_t *bi) -{ - macb_eth_initialize(0, (void *)MACB0_BASE, bi->bi_phy_id[0]); - macb_eth_initialize(1, (void *)MACB1_BASE, bi->bi_phy_id[1]); -} -#endif diff --git a/board/atmel/atstk1000/Makefile b/board/atmel/atstk1000/Makefile index 8a15713..155d46a 100644 --- a/board/atmel/atstk1000/Makefile +++ b/board/atmel/atstk1000/Makefile @@ -26,7 +26,7 @@ include $(TOPDIR)/config.mk
LIB := $(obj)lib$(BOARD).a
-COBJS := $(BOARD).o flash.o eth.o +COBJS := $(BOARD).o flash.o
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS)) diff --git a/board/atmel/atstk1000/atstk1000.c b/board/atmel/atstk1000/atstk1000.c index 6371e2d..496c6a8 100644 --- a/board/atmel/atstk1000/atstk1000.c +++ b/board/atmel/atstk1000/atstk1000.c @@ -115,3 +115,14 @@ void board_init_info(void) gd->bd->bi_phy_id[0] = 0x10; gd->bd->bi_phy_id[1] = 0x11; } + +extern int macb_eth_initialize(int id, void *regs, unsigned int phy_addr); + +#ifdef CONFIG_CMD_NET +int board_eth_init(bd_t *bi) +{ + macb_eth_initialize(0, (void *)MACB0_BASE, bi->bi_phy_id[0]); + macb_eth_initialize(1, (void *)MACB1_BASE, bi->bi_phy_id[1]); + return 0; +} +#endif diff --git a/board/atmel/atstk1000/eth.c b/board/atmel/atstk1000/eth.c deleted file mode 100644 index b2b1a12..0000000 --- a/board/atmel/atstk1000/eth.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (C) 2005-2006 Atmel Corporation - * - * Ethernet initialization for the ATSTK1000 starterkit - * - * See file CREDITS for list of people who contributed to this - * project. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA - */ -#include <common.h> - -#include <asm/arch/memory-map.h> - -extern int macb_eth_initialize(int id, void *regs, unsigned int phy_addr); - -#if defined(CONFIG_MACB) && defined(CONFIG_CMD_NET) -void atstk1000_eth_initialize(bd_t *bi) -{ - int id = 0; - - macb_eth_initialize(id++, (void *)MACB0_BASE, bi->bi_phy_id[0]); - macb_eth_initialize(id++, (void *)MACB1_BASE, bi->bi_phy_id[1]); -} -#endif diff --git a/net/eth.c b/net/eth.c index bc74f47..132efce 100644 --- a/net/eth.c +++ b/net/eth.c @@ -69,9 +69,7 @@ extern int uli526x_initialize(bd_t *); extern int npe_initialize(bd_t *); extern int uec_initialize(int); extern int bfin_EMAC_initialize(bd_t *); -extern int atstk1000_eth_initialize(bd_t *); extern int greth_initialize(bd_t *); -extern int atngw100_eth_initialize(bd_t *); extern int at91sam9_eth_initialize(bd_t *);
#ifdef CONFIG_API @@ -269,15 +267,9 @@ int eth_initialize(bd_t *bis) #if defined(CONFIG_BF537) bfin_EMAC_initialize(bis); #endif -#if defined(CONFIG_ATSTK1000) - atstk1000_eth_initialize(bis); -#endif #if defined(CONFIG_GRETH) greth_initialize(bis); #endif -#if defined(CONFIG_ATNGW100) - atngw100_eth_initialize(bis); -#endif #if defined(CONFIG_AT91CAP9) || defined(CONFIG_AT91SAM9260) || \ defined(CONFIG_AT91SAM9263) at91sam9_eth_initialize(bis);

Ben Warren biggerbadderben@gmail.com wrote:
Renamed initialization functions for atngw100 and atstk1000. Removed initializations for these boards from net/eth.c
Signed-off-by: Ben Warren biggerbadderben@gmail.com
Applied, thanks. It's in a separate eth-cleanup branch for now, but I think I'm going to create some sort of "next" branch eventually where it can stay along with the hammerhead board.
Or is it better if I push it right away? The net/eth.c changes have a rather large potential for conflicts...
Haavard

On Sat, 5 Jul 2008 00:08:47 -0700 Ben Warren biggerbadderben@gmail.com wrote:
More cleanup of net/eth.c, this time taking care of AVR32 boards. I got rid of the board/eth.c files because board_eth_init() needs to be in a file where there are other strong symbols in order to override the weak board_eth_init() in net/eth.c. I've compiled this code and verified that the strong board_eth_init() symbols are linked in, but don't have hardware to test on. If somebody can, please try out and let me know.
Looks good to me, but I don't have the chance to test it.
These patches are being staged in the 'testing' branch of the net repo.
Maybe someone else could give it a try?
Haavard

On Thu, 2008-07-10 at 13:24 +0200, Haavard Skinnemoen wrote:
On Sat, 5 Jul 2008 00:08:47 -0700 Ben Warren biggerbadderben@gmail.com wrote:
More cleanup of net/eth.c, this time taking care of AVR32 boards. I got rid of the board/eth.c files because board_eth_init() needs to be in a file where there are other strong symbols in order to override the weak board_eth_init() in net/eth.c. I've compiled this code and verified that the strong board_eth_init() symbols are linked in, but don't have hardware to test on. If somebody can, please try out and let me know.
Looks good to me, but I don't have the chance to test it.
I tried looking into it, but I do not see who is going to call board_eth_init() ? Is this supposed to be done in net/eth.c or lib_avr32/board.c ?
These patches are being staged in the 'testing' branch of the net repo.
Maybe someone else could give it a try?
I tried it (just reworked a bit to my board from EarthLCD) and it does not detect the PHY. I am working on master from the AVR32 branch in GIT.
PS! I am not on u-boot-users, and is there a archive which is faster to scroll than the one on sf.net?

On Thu, 2008-07-10 at 14:45 +0200, Hans-Christian Egtvedt wrote:
On Thu, 2008-07-10 at 13:24 +0200, Haavard Skinnemoen wrote:
On Sat, 5 Jul 2008 00:08:47 -0700 Ben Warren biggerbadderben@gmail.com wrote:
More cleanup of net/eth.c, this time taking care of AVR32 boards. I got rid of the board/eth.c files because board_eth_init() needs to be in a file where there are other strong symbols in order to override the weak board_eth_init() in net/eth.c. I've compiled this code and verified that the strong board_eth_init() symbols are linked in, but don't have hardware to test on. If somebody can, please try out and let me know.
Looks good to me, but I don't have the chance to test it.
I tried looking into it, but I do not see who is going to call board_eth_init() ? Is this supposed to be done in net/eth.c or lib_avr32/board.c ?
Cheese, I am blind, just found it almost on top in the eth_initialize() function.
I will pull the master and see if it works.
<snipp>

On Thu, 2008-07-10 at 14:47 +0200, Hans-Christian Egtvedt wrote:
On Thu, 2008-07-10 at 14:45 +0200, Hans-Christian Egtvedt wrote:
On Thu, 2008-07-10 at 13:24 +0200, Haavard Skinnemoen wrote:
<snipp>
Looks good to me, but I don't have the chance to test it.
I tried looking into it, but I do not see who is going to call board_eth_init() ? Is this supposed to be done in net/eth.c or lib_avr32/board.c ?
Cheese, I am blind, just found it almost on top in the eth_initialize() function.
I will pull the master and see if it works.
And it works, proof below (-: (Net: did not work before pulling master)
U-Boot 1.3.3-00248-gae9bc0c-dirty (Jul 10 2008 - 14:50:32)
U-Boot code: 00000000 -> 0000f6b8 data: 000155c0 -> 0004bd18 malloc: Using memory from 0x10f74000 to 0x10fb4000 DMA: Using memory from 0x10f70000 to 0x10f74000 Flash: 8 MB at address 0x00000000 DRAM Configuration: Bank #0: 10000000 16 MB In: serial Out: serial Err: serial Net: macb0 Press SPACE to abort autoboot in 1 seconds macb0: link up, 100Mbps full-duplex (lpa: 0x45e1) BOOTP broadcast 1 DHCP client bound to address 10.191.252.36 Using macb0 device TFTP from server 10.191.252.83; our IP address is 10.191.252.36 Filename 'uimage_br_stk'. Load address: 0x10400000 Loading: T ################################################################# ########### done Bytes transferred = 1111788 (10f6ec hex) ## Booting kernel from Legacy Image at 10400000 ... Image Name: Linux-2.6.25.10.atmel.2 Image Type: AVR32 Linux Kernel Image (gzip compressed) Data Size: 1111724 Bytes = 1.1 MB Load Address: 10000000 Entry Point: 90000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK
Starting kernel at 90000000 (params at 10f74008)...
Linux version 2.6.25.10.atmel.2 (hcegtvedt@ssg-0) (gcc version 4.2.2-atmel.1.0.8) #68 Thu Jul 10 13:16:42 CEST 2008

Hans-Christian Egtvedt wrote:
On Thu, 2008-07-10 at 14:47 +0200, Hans-Christian Egtvedt wrote:
On Thu, 2008-07-10 at 14:45 +0200, Hans-Christian Egtvedt wrote:
On Thu, 2008-07-10 at 13:24 +0200, Haavard Skinnemoen wrote:
<snipp>
Looks good to me, but I don't have the chance to test it.
I tried looking into it, but I do not see who is going to call board_eth_init() ? Is this supposed to be done in net/eth.c or lib_avr32/board.c ?
Cheese, I am blind, just found it almost on top in the eth_initialize() function.
I will pull the master and see if it works.
And it works, proof below (-: (Net: did not work before pulling master)
U-Boot 1.3.3-00248-gae9bc0c-dirty (Jul 10 2008 - 14:50:32)
U-Boot code: 00000000 -> 0000f6b8 data: 000155c0 -> 0004bd18 malloc: Using memory from 0x10f74000 to 0x10fb4000 DMA: Using memory from 0x10f70000 to 0x10f74000 Flash: 8 MB at address 0x00000000 DRAM Configuration: Bank #0: 10000000 16 MB In: serial Out: serial Err: serial Net: macb0 Press SPACE to abort autoboot in 1 seconds macb0: link up, 100Mbps full-duplex (lpa: 0x45e1) BOOTP broadcast 1 DHCP client bound to address 10.191.252.36 Using macb0 device TFTP from server 10.191.252.83; our IP address is 10.191.252.36 Filename 'uimage_br_stk'. Load address: 0x10400000 Loading: T ################################################################# ########### done Bytes transferred = 1111788 (10f6ec hex) ## Booting kernel from Legacy Image at 10400000 ... Image Name: Linux-2.6.25.10.atmel.2 Image Type: AVR32 Linux Kernel Image (gzip compressed) Data Size: 1111724 Bytes = 1.1 MB Load Address: 10000000 Entry Point: 90000000 Verifying Checksum ... OK Uncompressing Kernel Image ... OK
Starting kernel at 90000000 (params at 10f74008)...
Linux version 2.6.25.10.atmel.2 (hcegtvedt@ssg-0) (gcc version 4.2.2-atmel.1.0.8) #68 Thu Jul 10 13:16:42 CEST 2008
Good news!
Thanks, Ben
participants (3)
-
Ben Warren
-
Haavard Skinnemoen
-
Hans-Christian Egtvedt