
Hi Peng,
On 24 November 2015 at 01:54, Peng Fan Peng.Fan@freescale.com wrote:
If condition of "(load == image_start || load == image_data)" is true, should use "fdt_addr = load;", but not "fdt_blob = (char *)image_data;", or fdt_blob will be overridden by "fdt_blob = map_sysmem(fdt_addr, 0);" at the end of the switch case.
Signed-off-by: Peng Fan Peng.Fan@freescale.com Cc: Simon Glass sjg@chromium.org Cc: Joe Hershberger joe.hershberger@ni.com Cc: Max Krummenacher max.krummenacher@toradex.com Cc: Marek Vasut marex@denx.de Cc: Suriyan Ramasami suriyan.r@gmail.com Cc: Paul Kocialkowski contact@paulk.fr Cc: Tom Rini trini@konsulko.com
common/image-fdt.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/common/image-fdt.c b/common/image-fdt.c index 5180a03..5e4e5bd 100644 --- a/common/image-fdt.c +++ b/common/image-fdt.c @@ -326,7 +326,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
if (load == image_start || load == image_data) {
fdt_blob = (char *)image_data;
fdt_addr = load; break; }
Are you sure that should not be:
fdt_addr = image_data
?
The idea is to pick up the FDT from inside the image, since the load address indicates that it should not be relocated.
BTW one more thing I noticed:
image_data = (ulong)image_get_data(fdt_hdr);
The cast is confusing, and can be removed.
Regards, Simon