diff options
author | Luo Ji <ji.luo@nxp.com> | 2018-07-03 16:14:33 +0800 |
---|---|---|
committer | Ji Luo <ji.luo@nxp.com> | 2018-08-20 21:25:48 +0800 |
commit | cfcbadd83d9a0c8718ecef510d730375c75159cc (patch) | |
tree | 2c89199247d5e5d3d4a88771e43013863346dec2 /drivers | |
parent | 620747bfe94d7794d8db8f8a475a98346dedf8ea (diff) |
MA-12121 [Android] Copy dtb from bootimage for Android
Android Things will load dtb from a single partition like
"oem_bootloader" and we are going to sync normal Android
with Android Things. But just keep loading dtb from bootimage
before everything is ready.
Change-Id: I205528b1485d3e8e9961f19812f380a2b11b991b
Signed-off-by: Luo Ji <ji.luo@nxp.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/usb/gadget/f_fastboot.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/usb/gadget/f_fastboot.c b/drivers/usb/gadget/f_fastboot.c index 985d4523ec..e89b7fe7b5 100644 --- a/drivers/usb/gadget/f_fastboot.c +++ b/drivers/usb/gadget/f_fastboot.c @@ -2090,6 +2090,8 @@ int do_boota(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { + ALIGN(hdr->kernel_size, hdr->page_size), hdr->ramdisk_size); #endif #ifdef CONFIG_OF_LIBFDT + /* load the dtb file */ +#ifdef CONFIG_LOAD_FDT_FROM_PART u32 fdt_size = 0; char oemimage[AT_OEM_BL_PART_SIZE]; snprintf(oemimage, sizeof(oemimage), "%s%s", @@ -2136,6 +2138,13 @@ int do_boota(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) { dt_read_done: ; +#else /* CONFIG_LOAD_FDT_FROM_PART */ + if (hdr->second_size && hdr->second_addr) { + memcpy((void *)(ulong)hdr->second_addr, (void *)(ulong)hdr + hdr->page_size + + ALIGN(hdr->kernel_size, hdr->page_size) + + ALIGN(hdr->ramdisk_size, hdr->page_size), hdr->second_size); + } +#endif /* CONFIG_LOAD_FDT_FROM_PART */ #endif /*CONFIG_OF_LIBFDT*/ if (check_image_arm64) { android_image_get_kernel(hdr, 0, NULL, NULL); @@ -2146,8 +2155,13 @@ dt_read_done: printf("kernel @ %08x (%d)\n", hdr->kernel_addr, hdr->kernel_size); printf("ramdisk @ %08x (%d)\n", hdr->ramdisk_addr, hdr->ramdisk_size); #ifdef CONFIG_OF_LIBFDT +#ifdef CONFIG_LOAD_FDT_FROM_PART if (fdt_size) printf("fdt @ %08x (%d)\n", hdr->second_addr, fdt_size); +#else + if (hdr->second_size) + printf("fdt @ %08x (%d)\n", hdr->second_addr, hdr->second_size); +#endif #endif /*CONFIG_OF_LIBFDT*/ char boot_addr_start[12]; |