summaryrefslogtreecommitdiffstats
path: root/0003-cmd_pxe.c-add-any-option-for-filesystem-with-sysboot.patch
diff options
context:
space:
mode:
Diffstat (limited to '0003-cmd_pxe.c-add-any-option-for-filesystem-with-sysboot.patch')
-rw-r--r--0003-cmd_pxe.c-add-any-option-for-filesystem-with-sysboot.patch66
1 files changed, 66 insertions, 0 deletions
diff --git a/0003-cmd_pxe.c-add-any-option-for-filesystem-with-sysboot.patch b/0003-cmd_pxe.c-add-any-option-for-filesystem-with-sysboot.patch
new file mode 100644
index 0000000..7c461b8
--- /dev/null
+++ b/0003-cmd_pxe.c-add-any-option-for-filesystem-with-sysboot.patch
@@ -0,0 +1,66 @@
+From 75a1606b62bce11e2dc981357da4d7f7a6402971 Mon Sep 17 00:00:00 2001
+From: Dennis Gilmore <dennis@ausil.us>
+Date: Tue, 4 Feb 2014 05:25:46 -0600
+Subject: [PATCH 03/13] cmd_pxe.c add any option for filesystem with sysboot
+ uses generic load
+
+Signed-off-by: Dennis Gilmore <dennis@ausil.us>
+---
+ common/cmd_pxe.c | 22 +++++++++++++++++++---
+ 1 file changed, 19 insertions(+), 3 deletions(-)
+
+diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c
+index 2bd572d..29e48db 100644
+--- a/common/cmd_pxe.c
++++ b/common/cmd_pxe.c
+@@ -11,6 +11,7 @@
+ #include <linux/ctype.h>
+ #include <errno.h>
+ #include <linux/list.h>
++#include <fs.h>
+
+ #include "menu.h"
+
+@@ -160,6 +161,19 @@ static int do_get_fat(cmd_tbl_t *cmdtp, const char *file_path, char *file_addr)
+ return -ENOENT;
+ }
+
++static int do_get_any(cmd_tbl_t *cmdtp, const char *file_path, char *file_addr)
++{
++#ifdef CONFIG_CMD_FS_GENERIC
++ fs_argv[0] = "load";
++ fs_argv[3] = file_addr;
++ fs_argv[4] = (void *)file_path;
++
++ if (!do_load(cmdtp, 0, 5, fs_argv, FS_TYPE_ANY))
++ return 1;
++#endif
++ return -ENOENT;
++}
++
+ /*
+ * As in pxelinux, paths to files referenced from files we retrieve are
+ * relative to the location of bootfile. get_relfile takes such a path and
+@@ -1606,6 +1620,8 @@ int do_sysboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+ do_getfile = do_get_ext2;
+ else if (strstr(argv[3], "fat"))
+ do_getfile = do_get_fat;
++ else if (strstr(argv[3], "any"))
++ do_getfile = do_get_any;
+ else {
+ printf("Invalid filesystem: %s\n", argv[3]);
+ return 1;
+@@ -1643,7 +1659,7 @@ int do_sysboot(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+ U_BOOT_CMD(
+ sysboot, 7, 1, do_sysboot,
+ "command to get and boot from syslinux files",
+- "[-p] <interface> <dev[:part]> <ext2|fat> [addr] [filename]\n"
+- " - load and parse syslinux menu file 'filename' from ext2 or fat\n"
+- " filesystem on 'dev' on 'interface' to address 'addr'"
++ "[-p] <interface> <dev[:part]> <ext2|fat|any> [addr] [filename]\n"
++ " - load and parse syslinux menu file 'filename' from ext2, fat\n"
++ " or any filesystem on 'dev' on 'interface' to address 'addr'"
+ );
+--
+1.8.5.3
+