
Ben Warren schrieb:
Hello Reinhard,
On Sat, Jun 5, 2010 at 3:41 AM, Reinhard Meyer (-VC) < reinhard.meyer@emk-elektronik.de> wrote:
Add support for EMK TOP7000 CPU module
Specifics:
- create subdir board/emk/top7000 and files in it
- create include/configs/top7000.h
- update board/emk/common/vpd.c
- add call to misc_init_r() to arch/avr32/lib/board.c
- create arch/avr32/include/asm/unaligned.h to
fix zlib.c compilation problem 6) update Makefile, MAINTAINERS, MAKEALL
Signed-off-by: Reinhard Meyer info@emk-elektronik.de
MAINTAINERS | 6 +- MAKEALL | 3 +- Makefile | 3 + arch/avr32/include/asm/unaligned.h | 1 + arch/avr32/lib/board.c | 5 + board/emk/common/vpd.c | 56 +++++++++- board/emk/top7000/Makefile | 41 +++++++ board/emk/top7000/config.mk | 3 + board/emk/top7000/top7000.c | 169 ++++++++++++++++++++++++++++ board/emk/top7000/u-boot.lds | 72 ++++++++++++ include/configs/top7000.h | 216 ++++++++++++++++++++++++++++++++++++ 11 files changed, 570 insertions(+), 5 deletions(-) create mode 100644 arch/avr32/include/asm/unaligned.h create mode 100644 board/emk/top7000/Makefile create mode 100644 board/emk/top7000/config.mk create mode 100644 board/emk/top7000/top7000.c create mode 100644 board/emk/top7000/u-boot.lds create mode 100644 include/configs/top7000.h
diff --git a/MAINTAINERS b/MAINTAINERS index 7a13d28..a361be1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -311,7 +311,7 @@ Andrea "llandre" Marson andrea.marson@dave-tech.it
PPChameleonEVB PPC405EP
-Reinhard Meyer r.meyer@emk-elektronik.de +Reinhard Meyer reinhard.meyer@emk-elektronik.de
TOP860 MPC860T TOP5200 MPC5200
@@ -919,6 +919,10 @@ Julien May julien.may@miromico.ch
HAMMERHEAD AT32AP7000
+Reinhard Meyer reinhard.meyer@emk-elektronik.de
TOP7000 AT32AP7000
Haavard Skinnemoen haavard.skinnemoen@atmel.com
ATSTK1000 AT32AP7xxx
diff --git a/MAKEALL b/MAKEALL index 2527352..3a80041 100755 --- a/MAKEALL +++ b/MAKEALL @@ -873,7 +873,8 @@ LIST_avr32=" \ atngw100 \ favr-32-ezkit \ hammerhead \
mimc200 \
mimc200 \
top7000 \
"
######################################################################### diff --git a/Makefile b/Makefile index c26e491..e57a4ca 100644 --- a/Makefile +++ b/Makefile @@ -3549,6 +3549,9 @@ hammerhead_config : unconfig mimc200_config : unconfig @$(MKCONFIG) $(@:_config=) avr32 at32ap mimc200 mimc at32ap700x
+top7000_config : unconfig
@$(MKCONFIG) $(@:_config=) avr32 at32ap top7000 emk at32ap700x
#======================================================================== # SH3 (SuperH) #======================================================================== diff --git a/arch/avr32/include/asm/unaligned.h b/arch/avr32/include/asm/unaligned.h new file mode 100644 index 0000000..6cecbbb --- /dev/null +++ b/arch/avr32/include/asm/unaligned.h @@ -0,0 +1 @@ +#include <asm-generic/unaligned.h> diff --git a/arch/avr32/lib/board.c b/arch/avr32/lib/board.c index 917ed6c..6be5ab0 --- a/arch/avr32/lib/board.c +++ b/arch/avr32/lib/board.c @@ -337,6 +337,11 @@ void board_init_r(gd_t *new_gd, ulong dest_addr) jumptable_init(); console_init_r();
+#if defined(CONFIG_MISC_INIT_R)
/* miscellaneous platform dependent initialisations */
misc_init_r();
+#endif
s = getenv("loadaddr"); if (s) load_addr = simple_strtoul(s, NULL, 16);
diff --git a/board/emk/common/vpd.c b/board/emk/common/vpd.c index c2af219..a6c456b --- a/board/emk/common/vpd.c +++ b/board/emk/common/vpd.c @@ -1,6 +1,6 @@ /*
- (C) Copyright 2003
- Reinhard Meyer, EMK Elektronik GmbH, r.meyer@emk-elektronik.de
- (C) Copyright 2003-2010
- EMK Elektronik GmbH & Co. KG, reinhard.meyer@emk-elektronik.de
- See file CREDITS for list of people who contributed to this
- project.
@@ -22,7 +22,8 @@ */
#include <common.h>
+#include <command.h>
/*****************************************************************************
- read "factory" part of EEPROM and set some environment variables
*****************************************************************************/ @@ -70,6 +71,10 @@ void read_factory_r (void) /* search for our specific entry */ if (!strncmp ((char *) buf, "[RLA/lan/Ethernet] ", 19)) { setenv ("ethaddr", (char *)(buf + 19)); +#if defined(CONFIG_TOP7000)
} else if (!strncmp ((char *) buf, "[RLA/lan2/Ethernet] ",
20)) {
setenv ("eth1addr", (char *)(buf + 20));
+#endif } else if (!strncmp ((char *) buf, "[BOARD/SERIAL] ", 15)) { setenv ("serial#", (char *)(buf + 15)); } else if (!strncmp ((char *) buf, "[BOARD/TYPE] ", 13)) { @@ -77,3 +82,48 @@ void read_factory_r (void) } } }
+#if defined(CONFIG_TOP7000) +int do_vpd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +{
uchar buf[512];
uchar *p;
int i;
u_int addr;
if (argc != 3)
return 1;
p = buf+2;
i = simple_strtoul(argv[1], NULL, 10);
if (i<1 || i>32766)
return 1;
addr=(i-1)*2;
p+=sprintf((char*)p,
"[RLA/lan/Ethernet] 00:80:d9:0d:%02x:%02x\n",
addr/256, addr%256);
addr++;
p+=sprintf((char*)p,
"[RLA/lan2/Ethernet] 00:80:d9:0d:%02x:%02x\n",
addr/256, addr%256);
These appear to be public MAC addresses. Are these ones that your company owns and you're guaranteeing to be unique?
<snip>
That is our address range.
+#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;
Please return the number of controllers that were successfully initialized.
<snip>
1) in net/eth.c: /* Try board-specific initialization first. If it fails or isn't * present, try the cpu-specific initialization */ if (board_eth_init(bis) < 0) cpu_eth_init(bis); that means >=0 OK, <0 error code.... 2) most other ports do something like int board_eth_init(bd_t *bi) { return macb_eth_initialize(0, (void *)MACB0_BASE, bi->bi_phy_id[0]); } where macb_eth_initialize() returns 0 on success... 3) no port seems to return a positive number >0 IF in the future it is required that the function returns the number of interfaces EVERY port has to be modified :)
regards, Ben
Best Regards, Reinhard