summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@linaro.org>2019-02-22 16:28:06 +0800
committerTom Rini <trini@konsulko.com>2019-04-22 18:13:22 -0400
commit5e218862b78068e32955e5b17b8dbbc941d71054 (patch)
tree7c69953def15f3bf16cfdffb582a7c1932ba7abc /common
parent3695ea5deb75b86e32a394a4f75c1f633eb07719 (diff)
downloadu-boot-5e218862b78068e32955e5b17b8dbbc941d71054.tar.gz
Support boot Android image without address on bootm command
It works perfectly fine to boot an Android boot.img with bootm command followed by an explicit address argument that holds the image. But if we have boot.img downloaded into default 'loadaddr', and then boot it using bootm command without the address argument, we will run into problem, because U-Boot fails to find ramdisk and fdt (second area) in boot.img. The current Android image support assumes there is always an address argument on bootm command. However just like booting any other images, 'loadaddr' should be used when address argument is missing from bootm command. It patches boot_get_ramdisk() and boot_get_fdt() a bit to support this quite common usage of bootm command for Android image. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Reviewed-by: Tom Rini <trini@konsulko.com>
Diffstat (limited to 'common')
-rw-r--r--common/image-fdt.c2
-rw-r--r--common/image.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/common/image-fdt.c b/common/image-fdt.c
index 01186aeac7..9ed00b7d5b 100644
--- a/common/image-fdt.c
+++ b/common/image-fdt.c
@@ -284,7 +284,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
*of_flat_tree = NULL;
*of_size = 0;
- img_addr = simple_strtoul(argv[0], NULL, 16);
+ img_addr = (argc == 0) ? load_addr : simple_strtoul(argv[0], NULL, 16);
buf = map_sysmem(img_addr, 0);
if (argc > 2)
diff --git a/common/image.c b/common/image.c
index 4d4248f234..75b84d5009 100644
--- a/common/image.c
+++ b/common/image.c
@@ -957,7 +957,7 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images,
*/
buf = map_sysmem(images->os.start, 0);
if (buf && genimg_get_format(buf) == IMAGE_FORMAT_ANDROID)
- select = argv[0];
+ select = (argc == 0) ? env_get("loadaddr") : argv[0];
#endif
if (argc >= 2)