diff options
Diffstat (limited to 'arch/arm/cpu/armv7/omap-common/spl.c')
-rw-r--r-- | arch/arm/cpu/armv7/omap-common/spl.c | 28 |
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(); |