[U-Boot] [PATCH 3/7 v2] integrator: do not test first part of the memory

Albert ARIBAUD albert.u.boot at aribaud.net
Tue Nov 8 22:08:09 CET 2011


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.walleij at linaro.org>
> ---
> ChangeLog v1->v2:
> - Rebased to U-Boot ARM HEAD at Alberts request, see message
>    4EA1C8E7.7090105 at 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.


More information about the U-Boot mailing list