summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap/xload.c
diff options
context:
space:
mode:
authorVicente <vicencb@gmail.com>2012-10-09 00:55:23 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-11-16 15:32:31 +0100
commit1dc9cbade4ed9b3f76060c5f72fe39f33c161758 (patch)
tree4c4f1be6a40edf9b1fcf5aaacfdd3884555864b4 /arch/arm/mach-omap/xload.c
parent64254636af6fb536b5a3cf4ff04f7de751284abc (diff)
downloadbarebox-1dc9cbade4ed9b3f76060c5f72fe39f33c161758.tar.gz
barebox-1dc9cbade4ed9b3f76060c5f72fe39f33c161758.tar.xz
omap4: add support for loading second stage from usb
Signed-off-by: Vicente <vicencb@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-omap/xload.c')
-rw-r--r--arch/arm/mach-omap/xload.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/arch/arm/mach-omap/xload.c b/arch/arm/mach-omap/xload.c
index 9fa8221ec9..240d3ff71f 100644
--- a/arch/arm/mach-omap/xload.c
+++ b/arch/arm/mach-omap/xload.c
@@ -139,6 +139,24 @@ static void *omap_xload_boot_spi(int offset)
return to;
}
+static void *omap4_xload_boot_usb(void){
+ int ret;
+ void *buf;
+ int len;
+
+ ret = mount("omap4_usbboot", "omap4_usbbootfs", "/");
+ if (ret) {
+ printf("Unable to mount omap4_usbbootfs (%d)\n", ret);
+ return NULL;
+ }
+
+ buf = read_file("/barebox.bin", &len);
+ if (!buf)
+ printf("could not read barebox.bin from omap4_usbbootfs\n");
+
+ return buf;
+}
+
enum omap_boot_src omap_bootsrc(void)
{
#if defined(CONFIG_ARCH_OMAP3)
@@ -161,6 +179,14 @@ int run_shell(void)
printf("booting from MMC1\n");
func = omap_xload_boot_mmc();
break;
+ case OMAP_BOOTSRC_USB1:
+ if (IS_ENABLED(CONFIG_FS_OMAP4_USBBOOT)) {
+ printf("booting from USB1\n");
+ func = omap4_xload_boot_usb();
+ break;
+ } else {
+ printf("booting from usb1 not enabled\n");
+ }
case OMAP_BOOTSRC_UNKNOWN:
printf("unknown boot source. Fall back to nand\n");
case OMAP_BOOTSRC_NAND: