ubifs does not go though the generic block layer because mtd devices are special, so the "any" filesystem option to sysboot does not work, this adds support for a "ubifs" filesystem to the sysboot command which makes it possible to boot from ubifs using an extlinux.conf file.
Signed-off-by: Hans de Goede <hdego...@redhat.com> --- common/cmd_pxe.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/common/cmd_pxe.c b/common/cmd_pxe.c index 080b376..b4f2e3e 100644 --- a/common/cmd_pxe.c +++ b/common/cmd_pxe.c @@ -16,6 +16,10 @@ #include <fs.h> #include <asm/io.h> +#ifdef CONFIG_CMD_UBIFS +#include "../fs/ubifs/ubifs.h" +#endif + #include "menu.h" #include "cli.h" @@ -156,6 +160,17 @@ static int do_get_ext2(cmd_tbl_t *cmdtp, const char *file_path, char *file_addr) return -ENOENT; } +static int do_get_ubifs(cmd_tbl_t *cmdtp, const char *file_path, char *file_addr) +{ +#ifdef CONFIG_CMD_UBIFS + u32 addr = simple_strtoul(file_addr, NULL, 16); + + if (!ubifs_load((char *)file_path, addr, 0)) + return 1; +#endif + return -ENOENT; +} + static int do_get_fat(cmd_tbl_t *cmdtp, const char *file_path, char *file_addr) { #ifdef CONFIG_CMD_FAT @@ -1680,6 +1695,8 @@ static 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], "ubifs")) + do_getfile = do_get_ubifs; else if (strstr(argv[3], "any")) do_getfile = do_get_any; else { -- 2.4.3 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot