[U-Boot] [PATCH] Kirkwood: dram_init is moved to dram.c

Heiko Schocher
2010-10-01T06:17:11Z

Hello Prafulla,

Prafulla Wadaskar wrote:
>
>
>> -----Original Message-----
>> From: Heiko Schocher [mailto:hs at denx.de]
>> Sent: Thursday, September 30, 2010 9:10 PM
>> To: Prafulla Wadaskar
>> Cc: u-boot at lists.denx.de; Ashish Karkare; Prabhanjan Sarnaik
>> Subject: Re: [U-Boot] [PATCH] Kirkwood: dram_init is moved to dram.c
>>
>> Hello Prafulla,
>>
>> Prafulla Wadaskar wrote:
>>> For all Kirkwood boards so far dram_init function is duplicated
>>> dram_init function is moved to dram.c and relevant code from all
>>> board specific files removed
>>>
>>> If any board needs specific dram init handling than standard one,
>>> then, a macro CONFIG_SYS_BOARD_DRAM_INIT should be defined in
>>> board config header file and the dram_init function can be put
>>> in board specific source file
>>> For ex. keymile boards
>>>
>>> Signed-off-by: Prafulla Wadaskar <prafulla@marvell.com>
>>> ---
>>> arch/arm/cpu/arm926ejs/kirkwood/dram.c | 22
>> ++++++++++++++++++++++
>>> board/Marvell/guruplug/guruplug.c | 11 -----------
>>> board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c | 11 -----------
>>> board/Marvell/openrd_base/openrd_base.c | 11 -----------
>>> board/Marvell/rd6281a/rd6281a.c | 11 -----------
>>> board/Marvell/sheevaplug/sheevaplug.c | 11 -----------
>>> include/configs/keymile-common.h | 1 +
>>> 7 files changed, 23 insertions(+), 55 deletions(-)
>>>
>>> diff --git a/arch/arm/cpu/arm926ejs/kirkwood/dram.c
>> b/arch/arm/cpu/arm926ejs/kirkwood/dram.c
>>> index 8f2a18a..d929d7a 100644
>>> --- a/arch/arm/cpu/arm926ejs/kirkwood/dram.c
>>> +++ b/arch/arm/cpu/arm926ejs/kirkwood/dram.c
>>> @@ -23,8 +23,11 @@
>>> */
>>>
>>> #include <config.h>
>>> +#include <common.h>
>>> #include <asm/arch/kirkwood.h>
>>>
>>> +DECLARE_GLOBAL_DATA_PTR;
>>> +
>>> #define KW_REG_CPUCS_WIN_BAR(x)
>> (KW_REGISTER(0x1500) + (x * 0x08))
>>> #define KW_REG_CPUCS_WIN_SZ(x)
>> (KW_REGISTER(0x1504) + (x * 0x08))
>>> /*
>>> @@ -56,3 +59,22 @@ u32 kw_sdram_bs(enum memory_bank bank)
>>> result += 0x01000000;
>>> return result;
>>> }
>>> +
>>> +#ifndef CONFIG_SYS_BOARD_DRAM_INIT
>>> +int dram_init(void)
>>> +{
>>> + int i;
>>> +#if !defined(CONFIG_SYS_ARM_WITHOUT_RELOC)
>>> + gd->ram_size = 0;
>>> +#endif
>>> + for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++) {
>>> + gd->bd->bi_dram[i].start = kw_sdram_bar(i);
>>> + gd->bd->bi_dram[i].size = kw_sdram_bs(i);
>>> +#if !defined(CONFIG_SYS_ARM_WITHOUT_RELOC)
>>> + gd->ram_size += gd->bd->bi_dram[i].size;
>> This is only OK, if the memory banks are consecutive without
>> gaps ... is this true for all boards?
>
> Yes, those are consecutive without gaps on all boards so far.
> But one can configure with gaps too, for ex. If any new board uses two chips with smaller size then it is possibility of gap insertion.
>
> In that case how it should be?

Good question ... for this case we must adapt in arch/arm/lib/board.c

addr = CONFIG_SYS_SDRAM_BASE + gd->ram_size;

But no idea, where to put u-boot ... at the end of the first
bank? at the end of the last bank?

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