Ben Warren schrieb: > Hello Reinhard, > > On Sat, Jun 5, 2010 at 3:41 AM, Reinhard Meyer (-VC) < > reinhard.me...@emk-elektronik.de> wrote: > >> Add support for EMK TOP7000 CPU module >> >> Specifics: >> >> 1) create subdir board/emk/top7000 and files in it >> 2) create include/configs/top7000.h >> 3) update board/emk/common/vpd.c >> 4) add call to misc_init_r() to arch/avr32/lib/board.c >> 5) create arch/avr32/include/asm/unaligned.h to >> fix zlib.c compilation problem >> 6) update Makefile, MAINTAINERS, MAKEALL >> >> Signed-off-by: Reinhard Meyer <i...@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.mar...@dave-tech.it> >> >> PPChameleonEVB PPC405EP >> >> -Reinhard Meyer <r.me...@emk-elektronik.de> >> +Reinhard Meyer <reinhard.me...@emk-elektronik.de> >> >> TOP860 MPC860T >> TOP5200 MPC5200 >> @@ -919,6 +919,10 @@ Julien May <julien....@miromico.ch> >> >> HAMMERHEAD AT32AP7000 >> >> +Reinhard Meyer <reinhard.me...@emk-elektronik.de> >> + >> + TOP7000 AT32AP7000 >> + >> Haavard Skinnemoen <haavard.skinnem...@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.me...@emk-elektronik.de >> + * (C) Copyright 2003-2010 >> + * EMK Elektronik GmbH & Co. KG, reinhard.me...@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
<<attachment: reinhard_meyer.vcf>>
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot