cmd_pxe.c add any option for filesystem with sysboot uses generic load
authorDennis Gilmore <dennis@ausil.us>
Tue, 4 Feb 2014 11:25:46 +0000 (05:25 -0600)
committerTom Rini <trini@ti.com>
Tue, 4 Feb 2014 22:29:36 +0000 (17:29 -0500)
Signed-off-by: Dennis Gilmore <dennis@ausil.us>
common/cmd_pxe.c

index 2bd572d64691db5446d17d7af683405c9ceada9e..29e48db20416cab3ec6fd881a98f68b6ff061a59 100644 (file)
@@ -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'"
 );