Add SPL support to be able to detect a USB Mass Storage device connected to a USB host. Once a USB Mass storage device is detected the SPL will load the u-boot.img from a FAT partition to target address. Signed-off-by: Dan Murphy <dmurphy@ti.com>master
parent
773b5940b5
commit
8cffe5bd0d
@ -0,0 +1,58 @@ |
||||
/*
|
||||
* (C) Copyright 2014 |
||||
* Texas Instruments, <www.ti.com> |
||||
* |
||||
* Dan Murphy <dmurphy@ti.com> |
||||
* |
||||
* SPDX-License-Identifier: GPL-2.0+ |
||||
* |
||||
* Derived work from spl_mmc.c |
||||
*/ |
||||
|
||||
#include <common.h> |
||||
#include <spl.h> |
||||
#include <asm/u-boot.h> |
||||
#include <usb.h> |
||||
#include <fat.h> |
||||
|
||||
DECLARE_GLOBAL_DATA_PTR; |
||||
|
||||
#ifdef CONFIG_USB_STORAGE |
||||
static int usb_stor_curr_dev = -1; /* current device */ |
||||
#endif |
||||
|
||||
void spl_usb_load_image(void) |
||||
{ |
||||
int err; |
||||
block_dev_desc_t *stor_dev; |
||||
|
||||
usb_stop(); |
||||
err = usb_init(); |
||||
if (err) { |
||||
#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT |
||||
printf("%s: usb init failed: err - %d\n", __func__, err); |
||||
#endif |
||||
hang(); |
||||
} |
||||
|
||||
#ifdef CONFIG_USB_STORAGE |
||||
/* try to recognize storage devices immediately */ |
||||
usb_stor_curr_dev = usb_stor_scan(1); |
||||
stor_dev = usb_stor_get_dev(usb_stor_curr_dev); |
||||
#endif |
||||
|
||||
debug("boot mode - FAT\n"); |
||||
|
||||
#ifdef CONFIG_SPL_OS_BOOT |
||||
if (spl_start_uboot() || spl_load_image_fat_os(stor_dev, |
||||
CONFIG_SYS_USB_FAT_BOOT_PARTITION)) |
||||
#endif |
||||
err = spl_load_image_fat(stor_dev, |
||||
CONFIG_SYS_USB_FAT_BOOT_PARTITION, |
||||
CONFIG_SPL_FAT_LOAD_PAYLOAD_NAME); |
||||
|
||||
if (err) { |
||||
puts("Error loading USB device\n"); |
||||
hang(); |
||||
} |
||||
} |
Loading…
Reference in new issue