18cffe5bdSDan Murphy /* 28cffe5bdSDan Murphy * (C) Copyright 2014 38cffe5bdSDan Murphy * Texas Instruments, <www.ti.com> 48cffe5bdSDan Murphy * 58cffe5bdSDan Murphy * Dan Murphy <dmurphy@ti.com> 68cffe5bdSDan Murphy * 78cffe5bdSDan Murphy * SPDX-License-Identifier: GPL-2.0+ 88cffe5bdSDan Murphy * 98cffe5bdSDan Murphy * Derived work from spl_mmc.c 108cffe5bdSDan Murphy */ 118cffe5bdSDan Murphy 128cffe5bdSDan Murphy #include <common.h> 138cffe5bdSDan Murphy #include <spl.h> 148cffe5bdSDan Murphy #include <asm/u-boot.h> 158cffe5bdSDan Murphy #include <usb.h> 168cffe5bdSDan Murphy #include <fat.h> 178cffe5bdSDan Murphy 188cffe5bdSDan Murphy DECLARE_GLOBAL_DATA_PTR; 198cffe5bdSDan Murphy 208cffe5bdSDan Murphy #ifdef CONFIG_USB_STORAGE 218cffe5bdSDan Murphy static int usb_stor_curr_dev = -1; /* current device */ 228cffe5bdSDan Murphy #endif 238cffe5bdSDan Murphy 248cffe5bdSDan Murphy void spl_usb_load_image(void) 258cffe5bdSDan Murphy { 268cffe5bdSDan Murphy int err; 278cffe5bdSDan Murphy block_dev_desc_t *stor_dev; 288cffe5bdSDan Murphy 298cffe5bdSDan Murphy usb_stop(); 308cffe5bdSDan Murphy err = usb_init(); 318cffe5bdSDan Murphy if (err) { 328cffe5bdSDan Murphy #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT 338cffe5bdSDan Murphy printf("%s: usb init failed: err - %d\n", __func__, err); 348cffe5bdSDan Murphy #endif 358cffe5bdSDan Murphy hang(); 368cffe5bdSDan Murphy } 378cffe5bdSDan Murphy 388cffe5bdSDan Murphy #ifdef CONFIG_USB_STORAGE 398cffe5bdSDan Murphy /* try to recognize storage devices immediately */ 408cffe5bdSDan Murphy usb_stor_curr_dev = usb_stor_scan(1); 418cffe5bdSDan Murphy stor_dev = usb_stor_get_dev(usb_stor_curr_dev); 428cffe5bdSDan Murphy #endif 438cffe5bdSDan Murphy 448cffe5bdSDan Murphy debug("boot mode - FAT\n"); 458cffe5bdSDan Murphy 468cffe5bdSDan Murphy #ifdef CONFIG_SPL_OS_BOOT 478cffe5bdSDan Murphy if (spl_start_uboot() || spl_load_image_fat_os(stor_dev, 488cffe5bdSDan Murphy CONFIG_SYS_USB_FAT_BOOT_PARTITION)) 498cffe5bdSDan Murphy #endif 508cffe5bdSDan Murphy err = spl_load_image_fat(stor_dev, 518cffe5bdSDan Murphy CONFIG_SYS_USB_FAT_BOOT_PARTITION, 52*205b4f33SGuillaume GARDET CONFIG_SPL_FS_LOAD_PAYLOAD_NAME); 538cffe5bdSDan Murphy 548cffe5bdSDan Murphy if (err) { 558cffe5bdSDan Murphy puts("Error loading USB device\n"); 568cffe5bdSDan Murphy hang(); 578cffe5bdSDan Murphy } 588cffe5bdSDan Murphy } 59