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

Prafulla Wadaskar
2010-10-01T06:25:56Z

> -----Original Message-----
> From: u-boot-bounces at lists.denx.de
> [mailto:u-boot-bounces at lists.denx.de] On Behalf Of Albert ARIBAUD
> Sent: Friday, October 01, 2010 11:51 AM
> To: u-boot at lists.denx.de
> Subject: Re: [U-Boot] [PATCH] Kirkwood: dram_init is moved to dram.c
>
> Le 01/10/2010 07:59, Prafulla Wadaskar a ?crit :
> >
> >
> >> -----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?
> >
> > Regards..
> > Prafulla . .
>
> I guess the most correct approach would be to "lump" together
> all banks
> until one is found not to be contiguous. The "lump" would be
> "the RAM".
> Technically, if the banks are not in ascending base address
> order then
> you'd have to sort them out, so the best is to make it a requirement
> that they are in ascending base address order.

Okay, At this moment I will keep as it is since we do not have any such use case.

Regards..
Prafulla . .