[U-Boot] [PATCH] add support for EMK TOP7000 CPU module
Reinhard Meyer (-VC)
reinhard.meyer at emk-elektronik.de
Sun Jun 6 13:26:16 CEST 2010
Hello,
is this patch going to be accepted, or is someone insisting that only
my port shall return the number of controllers initialized?
Reinhard Meyer schrieb:
> Ben Warren schrieb:
>> Hello Reinhard,
>>
>> On Sat, Jun 5, 2010 at 3:41 AM, Reinhard Meyer (-VC) <
>> reinhard.meyer at 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 <info at 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 at dave-tech.it>
>>>
>>> PPChameleonEVB PPC405EP
>>>
>>> -Reinhard Meyer <r.meyer at emk-elektronik.de>
>>> +Reinhard Meyer <reinhard.meyer at emk-elektronik.de>
>>>
>>> TOP860 MPC860T
>>> TOP5200 MPC5200
>>> @@ -919,6 +919,10 @@ Julien May <julien.may at miromico.ch>
>>>
>>> HAMMERHEAD AT32AP7000
>>>
>>> +Reinhard Meyer <reinhard.meyer at emk-elektronik.de>
>>> +
>>> + TOP7000 AT32AP7000
>>> +
>>> Haavard Skinnemoen <haavard.skinnemoen at 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 at emk-elektronik.de
>>> + * (C) Copyright 2003-2010
>>> + * EMK Elektronik GmbH & Co. KG, reinhard.meyer at 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
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
More information about the U-Boot
mailing list