diff options
author | Joseph Chen <chenjh@rock-chips.com> | 2019-03-26 20:01:49 +0800 |
---|---|---|
committer | Jianhong Chen <chenjh@rock-chips.com> | 2019-04-09 10:54:14 +0800 |
commit | 6115fdb3c07a7c9989f25099bc9b0f18c2b255df (patch) | |
tree | 6d9a43690d0a43ee40ffd18dca2370f28beaa708 | |
parent | 8d681e4412b383ac32a7768921524eec37f99994 (diff) |
common: android: improve os image information
android_image_parse_kernel_comp() doesn't return valid os
compressed type after android_image_set_kload(), so we add
the env "os_comp" to record compressed type.
Change-Id: Ie175649d348c0578ce78e139bdbbf4b6f9ea1101
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
-rw-r--r-- | common/android_bootloader.c | 32 | ||||
-rw-r--r-- | common/image-android.c | 1 |
2 files changed, 21 insertions, 12 deletions
diff --git a/common/android_bootloader.c b/common/android_bootloader.c index 68535abbc8..e6da05a098 100644 --- a/common/android_bootloader.c +++ b/common/android_bootloader.c @@ -308,14 +308,14 @@ static int android_bootloader_get_fdt(const char *part_name, int android_bootloader_boot_kernel(unsigned long kernel_address) { - ulong comp; - char kernel_addr_str[12]; - char *fdt_addr = env_get("fdt_addr"); char *kernel_addr_r = env_get("kernel_addr_r"); char *kernel_addr_c = env_get("kernel_addr_c"); - + char *fdt_addr = env_get("fdt_addr"); + char kernel_addr_str[12]; + char comp_str[32] = {0}; + ulong comp_type; const char *comp_name[] = { - [IH_COMP_NONE] = "", + [IH_COMP_NONE] = "IMAGE", [IH_COMP_GZIP] = "GZIP", [IH_COMP_BZIP2] = "BZIP2", [IH_COMP_LZMA] = "LZMA", @@ -326,15 +326,23 @@ int android_bootloader_boot_kernel(unsigned long kernel_address) char *bootm_args[] = { "bootm", kernel_addr_str, kernel_addr_str, fdt_addr, NULL }; - comp = android_image_get_comp((struct andr_img_hdr *)kernel_address); + comp_type = env_get_ulong("os_comp", 10, 0); sprintf(kernel_addr_str, "0x%lx", kernel_address); - if (comp != IH_COMP_NONE) - printf("Booting %s kernel at %s(Uncompress to %s) with fdt at %s...\n\n\n", - comp_name[comp], kernel_addr_c, kernel_addr_r, fdt_addr); - else - printf("Booting kernel at %s with fdt at %s...\n\n\n", - kernel_addr_r, fdt_addr); + if (comp_type != IH_COMP_NONE) { + if (comp_type == IH_COMP_ZIMAGE && + kernel_addr_r && !kernel_addr_c) { + kernel_addr_c = kernel_addr_r; + kernel_addr_r = __stringify(CONFIG_SYS_SDRAM_BASE); + } + snprintf(comp_str, 32, "%s%s%s", + "(Uncompress to ", kernel_addr_r, ")"); + } + + printf("Booting %s kernel at %s%s with fdt at %s...\n\n\n", + comp_name[comp_type], + comp_type != IH_COMP_NONE ? kernel_addr_c : kernel_addr_r, + comp_str, fdt_addr); if (gd->console_evt == CONSOLE_EVT_CTRL_M) { bidram_dump(); diff --git a/common/image-android.c b/common/image-android.c index cf436da62c..048de0f7ea 100644 --- a/common/image-android.c +++ b/common/image-android.c @@ -419,6 +419,7 @@ long android_image_load(struct blk_desc *dev_desc, if (comp != IH_COMP_NONE) { ulong kernel_addr_c; + env_set_ulong("os_comp", comp); kernel_addr_c = env_get_ulong("kernel_addr_c", 16, 0); if (kernel_addr_c) { load_address = kernel_addr_c - hdr->page_size; |