summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhang sanshan <sanshan.zhang@nxp.com>2018-02-05 19:10:26 +0800
committerzhang sanshan <sanshan.zhang@nxp.com>2018-02-06 11:01:51 +0800
commit7a956c33ffb5a04676143230f1af5156048c22a5 (patch)
tree1711c19bfa2829f1bae16f3adc9aa08ca7c71664
parent226fd5500cb4930262a14f59ba44924c62fb9665 (diff)
downloaduboot-imx-7a956c33ffb5a04676143230f1af5156048c22a5.tar.gz
MA-11339 [Android] skip ramdisk when booti for normal boot
Do not copy ramdisk to address ramdisk_addr on normal boot. Skip passing ramdisk address to booti. Change-Id: I4ef001734db6aaacbb4bde41f7f794775849ff8e Signed-off-by: zhang sanshan <sanshan.zhang@nxp.com>
-rwxr-xr-xdrivers/usb/gadget/f_fastboot.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c
index fa3d9cb47d..6c46f44736 100755
--- a/drivers/usb/gadget/f_fastboot.c
+++ b/drivers/usb/gadget/f_fastboot.c
@@ -1647,8 +1647,14 @@ int do_boota(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) {
hdrload = (struct andr_img_hdr *)(ulong)(hdr->kernel_addr - hdr->page_size);
check_image_arm64 = image_arm64((void *)(ulong)hdrload->kernel_addr);
+#ifdef CONFIG_SYSTEM_RAMDISK_SUPPORT
+ if (is_recovery_mode)
+ memcpy((void *)(ulong)hdrload->ramdisk_addr, (void *)(ulong)hdrload->kernel_addr
+ + ALIGN(hdrload->kernel_size,hdrload->page_size), hdrload->ramdisk_size);
+#else
memcpy((void *)(ulong)hdrload->ramdisk_addr, (void *)(ulong)hdrload->kernel_addr
+ ALIGN(hdrload->kernel_size,hdrload->page_size), hdrload->ramdisk_size);
+#endif
#ifdef CONFIG_OF_LIBFDT
/* load the dtb file */
@@ -1685,6 +1691,12 @@ int do_boota(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) {
sprintf(ramdisk_addr, "0x%x:0x%x", hdrload->ramdisk_addr, hdrload->ramdisk_size);
sprintf(fdt_addr, "0x%x", hdrload->second_addr);
+/* no need to pass ramdisk addr for normal boot mode when enable CONFIG_SYSTEM_RAMDISK_SUPPORT*/
+#ifdef CONFIG_SYSTEM_RAMDISK_SUPPORT
+ if (!is_recovery_mode)
+ boot_args[2] = NULL;
+#endif
+
if (avb_out_data != NULL)
avb_slot_verify_data_free(avb_out_data);