[U-Boot] [PATCH] ARM: tegra: use standard variables to define load addresses

Simon Glass sjg at chromium.org
Fri Sep 21 00:53:56 CEST 2012


Hi Stephen,

On Thu, Sep 20, 2012 at 3:20 PM, Stephen Warren <swarren at wwwdotorg.org> wrote:
> From: Stephen Warren <swarren at nvidia.com>
>
> Currently, Tegra's default environment uses non-standard variables to define
> where boot scripts should load the kernel, FDT, and initrd. This change both
> changes the variable names to match those described in U-Boot's README, and
> shuffles their values around a little so that the values make a little more
> sense; see comments in the patch for rationale behind the values chosen.
>
> Note that this patch does remove the old non-standard variable "fdt_load" from
> the default environment, so this patch requires people to change their boot
> scripts.
>
> Signed-off-by: Stephen Warren <swarren at nvidia.com>

Acked-by: Simon Glass <sjg at chromium.org>

> ---
>  include/configs/tegra-common-post.h |   31 ++++++++++++++++++++++++++++---
>  1 files changed, 28 insertions(+), 3 deletions(-)
>
> diff --git a/include/configs/tegra-common-post.h b/include/configs/tegra-common-post.h
> index 1e7aea9..048ecbb 100644
> --- a/include/configs/tegra-common-post.h
> +++ b/include/configs/tegra-common-post.h
> @@ -95,8 +95,6 @@
>  #endif
>
>  #define BOOTCMDS_COMMON \
> -       "scriptaddr=0x400000\0" \
> -       \
>         "rootpart=1\0" \
>         \
>         "script_boot="                                                    \
> @@ -140,9 +138,36 @@
>
>  #endif
>
> +/*
> + * Memory layout for where various images get loaded by boot scripts:
> + *
> + * scriptaddr can be pretty much anywhere that doesn't conflict with something
> + *   else. Put it above BOOTMAPSZ to eliminate conflicts.
> + *
> + * kernel_addr_r must be within the first 128M of RAM in order for the
> + *   kernel's CONFIG_AUTO_ZRELADDR option to work. Since the kernel will
> + *   decompress itself to 0x8000 after the start of RAM, kernel_addr_r

Does this work for T30? I suppose that's for another day anyway.

> + *   should not overlap that area, or the kernel will have to copy itself
> + *   somewhere else before decompression. Similarly, the address of any other
> + *   data passed to the kernel shouldn't overlap the start of RAM. Pushing
> + *   this up to 16M allows for a sizable kernel to be decompressed below the
> + *   compressed load address.
> + *
> + * fdt_addr_r simply shouldn't overlap anything else. Choosing 32M allows for
> + *   the compressed kernel to be up to 16M too.
> + *
> + * ramdisk_addr_r simply shouldn't overlap anything else. Choosing 33M allows
> + *   for the FDT/DTB to be up to 1M, which is hopefully plenty.
> + */
> +#define MEM_LAYOUT_ENV_SETTINGS \
> +       "scriptaddr=0x10000000\0" \
> +       "kernel_addr_r=0x01000000\0" \
> +       "fdt_addr_r=0x02000000\0" \
> +       "ramdisk_addr_r=0x02100000\0" \

I'm not sure you need the 0x since they should be hex anyway. But it
does no harm and I'm not sure if there is a convention for it.

> +
>  #define CONFIG_EXTRA_ENV_SETTINGS \
>         TEGRA_DEVICE_SETTINGS \
> -       "fdt_load=0x01000000\0" \
> +       MEM_LAYOUT_ENV_SETTINGS \
>         BOOTCMDS_COMMON
>
>  /* overrides for SPL build here */
> --
> 1.7.0.4
>

Regards,
Simon


More information about the U-Boot mailing list