Hi Linus,

Le 24/10/2011 09:02, Linus Walleij a écrit :
> When booting from Flash, the Integrator remaps its flash memory
> from 0x24000000 to 0x00000000, and starts executing it at
> 0x00000000. This ROM thus hides the RAM underneath and first
> 0x40000 bytes of the memory cannot be tested by get_ram_size().
> So let's test from 0x40000 to the end of detected memory
> instead.
>
> Signed-off-by: Linus Walleij<linus.wall...@linaro.org>
> ---
> ChangeLog v1->v2:
> - Rebased to U-Boot ARM HEAD at Alberts request, see message
>    4ea1c8e7.7090...@aribaud.net
> ---
>   board/armltd/integrator/integrator.c |   19 +++++++++++++++----
>   1 files changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/board/armltd/integrator/integrator.c 
> b/board/armltd/integrator/integrator.c
> index c8d2bc7..83f047c 100644
> --- a/board/armltd/integrator/integrator.c
> +++ b/board/armltd/integrator/integrator.c
> @@ -86,6 +86,15 @@ int misc_init_r (void)
>       return (0);
>   }
>
> +/*
> + * The Integrator remaps the Flash memory to 0x00000000 and executes U-Boot
> + * from there, which means we cannot test the RAM underneath the ROM at this
> + * point. It will be unmapped later on, when we are executing from the
> + * relocated in RAM U-Boot. We simply assume that this RAM is usable if the
> + * RAM on higher addresses works fine.
> + */
> +#define REMAPPED_FLASH_SZ 0x40000
> +
>   int dram_init (void)
>   {
>       gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
> @@ -111,15 +120,17 @@ extern void dram_query(void);
>        *
>        */
>       sdram_shift              = ((cm_reg_sdram&  0x0000001C)/4)%4;
> -     gd->bd->bi_dram[0].size  = 0x01000000<<  sdram_shift;
> -     gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE,
> +     gd->ram_size = get_ram_size((long *) CONFIG_SYS_SDRAM_BASE +
> +                                 REMAPPED_FLASH_SZ,
>                                   0x01000000<<  sdram_shift);
>       }
>   #else
> -     gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
> -     gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE,
> +     gd->ram_size = get_ram_size((long *) CONFIG_SYS_SDRAM_BASE +
> +                                 REMAPPED_FLASH_SZ,
>                                   PHYS_SDRAM_1_SIZE);
>   #endif /* CM_SPD_DETECT */
> +     /* We only have one bank of RAM, set it to whatever was detected */
> +     gd->bd->bi_dram[0].size  = gd->ram_size;
>
>       return 0;
>   }

Applied to u-boot-arm/master, thanks!

Amicalement,
-- 
Albert.
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to