pxe: Move do_getfile() into the context
[platform/kernel/u-boot.git] / cmd / sysboot.c
index af6a2f1..082f235 100644 (file)
@@ -8,7 +8,7 @@
 
 static char *fs_argv[5];
 
-static int do_get_ext2(struct cmd_tbl *cmdtp, const char *file_path,
+static int do_get_ext2(struct pxe_context *ctx, const char *file_path,
                       char *file_addr)
 {
 #ifdef CONFIG_CMD_EXT2
@@ -16,13 +16,13 @@ static int do_get_ext2(struct cmd_tbl *cmdtp, const char *file_path,
        fs_argv[3] = file_addr;
        fs_argv[4] = (void *)file_path;
 
-       if (!do_ext2load(cmdtp, 0, 5, fs_argv))
+       if (!do_ext2load(ctx->cmdtp, 0, 5, fs_argv))
                return 1;
 #endif
        return -ENOENT;
 }
 
-static int do_get_fat(struct cmd_tbl *cmdtp, const char *file_path,
+static int do_get_fat(struct pxe_context *ctx, const char *file_path,
                      char *file_addr)
 {
 #ifdef CONFIG_CMD_FAT
@@ -30,13 +30,13 @@ static int do_get_fat(struct cmd_tbl *cmdtp, const char *file_path,
        fs_argv[3] = file_addr;
        fs_argv[4] = (void *)file_path;
 
-       if (!do_fat_fsload(cmdtp, 0, 5, fs_argv))
+       if (!do_fat_fsload(ctx->cmdtp, 0, 5, fs_argv))
                return 1;
 #endif
        return -ENOENT;
 }
 
-static int do_get_any(struct cmd_tbl *cmdtp, const char *file_path,
+static int do_get_any(struct pxe_context *ctx, const char *file_path,
                      char *file_addr)
 {
 #ifdef CONFIG_CMD_FS_GENERIC
@@ -44,7 +44,7 @@ static int do_get_any(struct cmd_tbl *cmdtp, const char *file_path,
        fs_argv[3] = file_addr;
        fs_argv[4] = (void *)file_path;
 
-       if (!do_load(cmdtp, 0, 5, fs_argv, FS_TYPE_ANY))
+       if (!do_load(ctx->cmdtp, 0, 5, fs_argv, FS_TYPE_ANY))
                return 1;
 #endif
        return -ENOENT;
@@ -59,6 +59,7 @@ static int do_sysboot(struct cmd_tbl *cmdtp, int flag, int argc,
                      char *const argv[])
 {
        unsigned long pxefile_addr_r;
+       struct pxe_context ctx;
        struct pxe_menu *cfg;
        char *pxefile_addr_str;
        char *filename;
@@ -90,12 +91,13 @@ static int do_sysboot(struct cmd_tbl *cmdtp, int flag, int argc,
                env_set("bootfile", filename);
        }
 
+       pxe_setup_ctx(&ctx, cmdtp, NULL);
        if (strstr(argv[3], "ext2")) {
-               do_getfile = do_get_ext2;
+               ctx.getfile = do_get_ext2;
        } else if (strstr(argv[3], "fat")) {
-               do_getfile = do_get_fat;
+               ctx.getfile = do_get_fat;
        } else if (strstr(argv[3], "any")) {
-               do_getfile = do_get_any;
+               ctx.getfile = do_get_any;
        } else {
                printf("Invalid filesystem: %s\n", argv[3]);
                return 1;
@@ -108,12 +110,12 @@ static int do_sysboot(struct cmd_tbl *cmdtp, int flag, int argc,
                return 1;
        }
 
-       if (get_pxe_file(cmdtp, filename, pxefile_addr_r) < 0) {
+       if (get_pxe_file(&ctx, filename, pxefile_addr_r) < 0) {
                printf("Error reading config file\n");
                return 1;
        }
 
-       cfg = parse_pxefile(cmdtp, pxefile_addr_r);
+       cfg = parse_pxefile(&ctx, pxefile_addr_r);
 
        if (!cfg) {
                printf("Error parsing config file\n");
@@ -123,7 +125,7 @@ static int do_sysboot(struct cmd_tbl *cmdtp, int flag, int argc,
        if (prompt)
                cfg->prompt = 1;
 
-       handle_pxe_menu(cmdtp, cfg);
+       handle_pxe_menu(&ctx, cfg);
 
        destroy_pxe_menu(cfg);