summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2012-10-02 09:26:51 +0000
committerTom Warren <twarren@nvidia.com>2012-10-29 09:07:04 -0700
commit938176a48274361c0b86b237ff6c0953a08233b3 (patch)
treed4ca2096ed256ae53ff2bca555d6c6400863031b
parent7f1b767aea949d954e75fa635968a9d315d2e7ff (diff)
downloadu-boot-imx-938176a48274361c0b86b237ff6c0953a08233b3.zip
u-boot-imx-938176a48274361c0b86b237ff6c0953a08233b3.tar.gz
u-boot-imx-938176a48274361c0b86b237ff6c0953a08233b3.tar.bz2
ARM: tegra: use standard variables to define load addresses
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@nvidia.com> Acked-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Warren <twarren@nvidia.com>
-rw-r--r--include/configs/tegra-common-post.h31
1 files changed, 28 insertions, 3 deletions
diff --git a/include/configs/tegra-common-post.h b/include/configs/tegra-common-post.h
index 5d1d3dd..6835155 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
+ * 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" \
+
#define CONFIG_EXTRA_ENV_SETTINGS \
TEGRA_DEVICE_SETTINGS \
- "fdt_load=0x01000000\0" \
+ MEM_LAYOUT_ENV_SETTINGS \
BOOTCMDS_COMMON
/* overrides for SPL build here */