[U-Boot] [PATCH v1 3/3] arm, at91: add siemens corvus board

Heiko Schocher hs at denx.de
Tue Oct 29 13:41:46 CET 2013


Hello Andreas,

Am 29.10.2013 11:01, schrieb Andreas Bießmann:
> Hi Heiko,
>
> some additional comments on top of Bo's.
>
> On 10/28/2013 06:45 AM, Bo Shen wrote:
>> Hi Heiko Schocher,
>>    Please add commit message.
>>
>> On 10/22/2013 13:51, Heiko Schocher wrote:
>>> Signed-off-by: Boris Schmidt<boris.schmidt at siemens.com>
>>> Reviewed-by: Heiko Schocher<hs at denx.de>
>>> Cc: Andreas Bießmann<andreas.devel at googlemail.com>
>>> ---
>>>    board/siemens/corvus/Makefile |  39 +++++
>>>    board/siemens/corvus/board.c  | 345
>>> ++++++++++++++++++++++++++++++++++++++++++
>>>    boards.cfg                    |   1 +
>>>    include/configs/corvus.h      | 185 ++++++++++++++++++++++
>>>    4 files changed, 570 insertions(+)
>>>    create mode 100644 board/siemens/corvus/Makefile
>>>    create mode 100644 board/siemens/corvus/board.c
>>>    create mode 100644 include/configs/corvus.h
>>>
>>> diff --git a/board/siemens/corvus/board.c b/board/siemens/corvus/board.c
>>> new file mode 100644
>>> index 0000000..1940da7
>>> --- /dev/null
>>> +++ b/board/siemens/corvus/board.c
[...]
>>> +int board_init(void)
>>> +{
>>> +    /* Enable Ctrlc */
>>> +    console_init_f();
>>
>> Remove it.
>>
>>> +    /* arch number of corvus-Board */
>>> +    gd->bd->bi_arch_number = MACH_TYPE_CORVUS;
>>
>> move to board related configuration file.
>>
>>> +    /* adress of boot parameters */
>>
>> s/adress/address
>>
>>> +    gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100; +
>>> +
>>> +    board_early_init_f();
>
> Why call board_early_init_f() here? Isn't it called bby generic board
> code in the init_sequence_f[] when CONFIG_BOARD_EARLY_INIT_F is defined?

removed.

>>> +#ifdef CONFIG_CMD_NAND
>>> +    corvus_nand_hw_init();
>>> +#endif
>>> +#ifdef CONFIG_HAS_DATAFLASH
>
> Isn't SPI required for dataflash? Consider rearrange the ifdiffery here.

rearranged.

[...]
>>> +int board_eth_init(bd_t *bis)
>>> +{
>>> +    int rc = 0;
>>> +#ifdef CONFIG_MACB
>>> +    rc = macb_eth_initialize(0, (void *)ATMEL_BASE_EMAC, 0x00);
>>> +#endif
>>> +    return rc;
>>> +}
>>> +
>>> +/* SPI chip select control */
>>> +#ifdef CONFIG_ATMEL_SPI
>
> I think this is not required, should be catched by garbage collector.

removed this ifdef

[...]
>>> diff --git a/include/configs/corvus.h b/include/configs/corvus.h
>>> new file mode 100644
>>> index 0000000..09513f9
>>> --- /dev/null
>>> +++ b/include/configs/corvus.h
>>> @@ -0,0 +1,185 @@
>>> +/*
>>> + * Common board functions for siemens AT91SAM9G45 based boards
>>> + * (C) Copyright 2013 Siemens AG
>>> + *
>>> + * Based on:
>>> + * U-Boot file: include/configs/at91sam9m10g45ek.h
>>> + * (C) Copyright 2007-2008
>>> + * Stelian Pop<stelian at popies.net>
>>> + * Lead Tech Design<www.leadtechdesign.com>
>>> + *
>>> + * SPDX-License-Identifier:    GPL-2.0+
>>> + */
>>> +
>>> +
>>> +
>
> remove some of the new lines here.

Done.

>>> +#ifndef __CONFIG_H
>>> +#define __CONFIG_H
>>> +
>>> +#include<asm/hardware.h>
>>> +
>>> +#define MACH_TYPE_CORVUS               2066
>>> +
>>> +/*
>>> + * Warning: changing CONFIG_SYS_TEXT_BASE requires
>>> + * adapting the initial boot program.
>>> + * Since the linker has to swallow that define, we must use a pure
>>> + * hex number here!
>>> + */
>>> +
>>> +#define CONFIG_SYS_TEXT_BASE  0x73f00000
>
> Is'nt the RAM placed @0x20000000 for this devices? Ah got it, The
> sam9m10 has DDR1 @CS0 and DDR0 @CS6

Yep.

>>> +
>>> +#define CONFIG_AT91_LEGACY
>>> +#define CONFIG_ATMEL_LEGACY        /* required until (g)pio is fixed */
>
> The ATMEL_LEGACY is required for dataflash, please consider using the
> generic mtd sf stuff instead.

Ok, think about that ...

[...]
>>> +/* LED */
>>> +#define CONFIG_AT91_LED
>>> +#define    CONFIG_RED_LED        AT91_PIN_PD31    /* this is the
>>> user1 led */
>>> +#define    CONFIG_GREEN_LED    AT91_PIN_PD0    /* this is the user2
>>> led */
>
> Would you mind to use the generic gpio led stuff instead?

You mean ./drivers/misc/gpio_led.c ?

I check this.

[...]
>>> +/* Ethernet */
>>> +#define CONFIG_MACB
>>> +#define CONFIG_RMII
>>> +#define CONFIG_NET_RETRY_COUNT        20
>>> +#define CONFIG_RESET_PHY_R
>>> +
>>> +/* USB */
>>> +#define CONFIG_USB_EHCI
>>> +#define CONFIG_USB_EHCI_ATMEL
>>> +#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS    2
>>> +#define CONFIG_DOS_PARTITION
>>> +#define CONFIG_USB_STORAGE
>>> +
>>> +#define CONFIG_SYS_LOAD_ADDR        0x22000000    /* load address */
>>
>> Does this work on your board?
>
> ;) good catch ...

Fixed.

>>> +
>>> +#define CONFIG_SYS_MEMTEST_START    CONFIG_SYS_SDRAM_BASE
>>> +#define CONFIG_SYS_MEMTEST_END        0x23e00000
>>
>> Ditto.
>>
>>> +/* bootstrap + u-boot + env in nandflash */
>>> +#define CONFIG_ENV_IS_IN_NAND
>>> +#define CONFIG_ENV_OFFSET        0x100000
>>> +#define CONFIG_ENV_OFFSET_REDUND    0x180000
>>> +#define CONFIG_ENV_SIZE            0x20000
>>> +
>>> +#define CONFIG_BOOTCOMMAND                        \
>>> +    "nand read 0x70000000 0x200000 0x300000;"            \
>
> nand read ${laodaddr} kernel ?
>
> When using mtdparts in u-boot ... just my 2¢

You mean:
nand read ${loadaddr} kernel
;-)

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list