From fa34f6b25b3c92f27b245c52378a0d2af24aaa19 Mon Sep 17 00:00:00 2001 From: Shawn Guo Date: Mon, 9 Jan 2012 21:54:08 +0000 Subject: common/image.c: align usage of fdt_high with initrd_high The commit message of a28afca (Add uboot "fdt_high" enviroment variable) states that fdt_high behaves similarly to the existing initrd_high. But fdt_high actually has an outstanding difference from initrd_high. The former specifies the start address, while the later specifies the end address. As fdt_high and initrd_high will likely be used together, it'd be nice to have them behave same. The patch changes the behavior of fdt_high to have it aligned with initrd_high. The document of fdt_high in README is updated with an example to demonstrate the usage of this environment variable. Signed-off-by: Shawn Guo Acked-by: Simon Glass --- common/image.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'common/image.c') diff --git a/common/image.c b/common/image.c index 202c8a1ca8..fbdc40a4b2 100644 --- a/common/image.c +++ b/common/image.c @@ -1289,16 +1289,14 @@ int boot_relocate_fdt(struct lmb *lmb, char **of_flat_tree, ulong *of_size) if (((ulong) desired_addr) == ~0UL) { /* All ones means use fdt in place */ - desired_addr = fdt_blob; + of_start = fdt_blob; + lmb_reserve(lmb, (ulong)of_start, of_len); disable_relocation = 1; - } - if (desired_addr) { + } else if (desired_addr) { of_start = (void *)(ulong) lmb_alloc_base(lmb, of_len, 0x1000, - ((ulong) - desired_addr) - + of_len); - if (desired_addr && of_start != desired_addr) { + (ulong)desired_addr); + if (of_start == 0) { puts("Failed using fdt_high value for Device Tree"); goto error; } -- cgit v1.2.3