summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorLuo Ji <ji.luo@nxp.com>2018-07-03 16:14:33 +0800
committerJi Luo <ji.luo@nxp.com>2018-08-20 21:25:48 +0800
commitcfcbadd83d9a0c8718ecef510d730375c75159cc (patch)
tree2c89199247d5e5d3d4a88771e43013863346dec2 /drivers
parent620747bfe94d7794d8db8f8a475a98346dedf8ea (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.c14
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];