aboutsummaryrefslogtreecommitdiff
path: root/arch/arm/cpu/armv7/omap-common/spl.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/cpu/armv7/omap-common/spl.c')
-rw-r--r--arch/arm/cpu/armv7/omap-common/spl.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv7/omap-common/spl.c b/arch/arm/cpu/armv7/omap-common/spl.c
index 9c35a0903..b54b36260 100644
--- a/arch/arm/cpu/armv7/omap-common/spl.c
+++ b/arch/arm/cpu/armv7/omap-common/spl.c
@@ -106,6 +106,29 @@ static void jump_to_image_no_args(void)
image_entry((u32 *)boot_params_ptr_addr);
}
+#ifdef CONFIG_SPL_DSU_SUPPORT
+extern int dsudownload(u32 *, u32 *);
+
+static void dsuload(void)
+{
+ u32 loadaddr;
+ u32 size;
+ int err;
+ struct image_header *header;
+
+ err = dsudownload(&loadaddr, &size);
+
+ if (err) {
+ serial_printf("usb download failed");
+ hang();
+ }
+ header = (struct image_header *)loadaddr;
+ parse_image_header(header);
+ memcpy((void *)image_load_addr, (void *)loadaddr, size);
+ image_size = size;
+}
+#endif
+
void jump_to_image_no_args(void) __attribute__ ((noreturn));
void board_init_r(gd_t *id, ulong dummy)
{
@@ -135,6 +158,11 @@ void board_init_r(gd_t *id, ulong dummy)
spl_nand_load_image();
break;
#endif
+#ifdef CONFIG_SPL_DSU_SUPPORT
+ case BOOT_DEVICE_USB:
+ dsuload();
+ break;
+#endif
default:
printf("SPL: Un-supported Boot Device - %d!!!\n", boot_device);
hang();