]> Git Repo - J-u-boot.git/blobdiff - boot/bootmeth_pxe.c
boot: Allow use of FIT in TPL and VPL
[J-u-boot.git] / boot / bootmeth_pxe.c
index ecf8557af83fe7ad5d6b77dabca01beefe2f9869..05c6bece2c18bd327f267ca994e1866b1b15db8d 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0+
 /*
- * Bootmethod for distro boot using PXE (network boot)
+ * Bootmethod for extlinux boot using PXE (network boot)
  *
  * Copyright 2021 Google LLC
  * Written by Simon Glass <[email protected]>
@@ -8,13 +8,12 @@
 
 #define LOG_CATEGORY UCLASS_BOOTSTD
 
-#include <common.h>
 #include <bootdev.h>
 #include <bootflow.h>
 #include <bootmeth.h>
 #include <command.h>
-#include <distro.h>
 #include <dm.h>
+#include <extlinux.h>
 #include <fs.h>
 #include <log.h>
 #include <malloc.h>
 #include <net.h>
 #include <pxe_utils.h>
 
-static int distro_pxe_getfile(struct pxe_context *ctx, const char *file_path,
-                             char *file_addr, ulong *sizep)
+static int extlinux_pxe_getfile(struct pxe_context *ctx, const char *file_path,
+                               char *file_addr, ulong *sizep)
 {
-       struct distro_info *info = ctx->userdata;
+       struct extlinux_info *info = ctx->userdata;
        ulong addr;
        int ret;
 
        addr = simple_strtoul(file_addr, NULL, 16);
+
+       /* Allow up to 1GB */
+       *sizep = 1 << 30;
        ret = bootmeth_read_file(info->dev, info->bflow, file_path, addr,
                                 sizep);
        if (ret)
@@ -39,7 +41,7 @@ static int distro_pxe_getfile(struct pxe_context *ctx, const char *file_path,
        return 0;
 }
 
-static int distro_pxe_check(struct udevice *dev, struct bootflow_iter *iter)
+static int extlinux_pxe_check(struct udevice *dev, struct bootflow_iter *iter)
 {
        int ret;
 
@@ -54,7 +56,8 @@ static int distro_pxe_check(struct udevice *dev, struct bootflow_iter *iter)
        return 0;
 }
 
-static int distro_pxe_read_bootflow(struct udevice *dev, struct bootflow *bflow)
+static int extlinux_pxe_read_bootflow(struct udevice *dev,
+                                     struct bootflow *bflow)
 {
        const char *addr_str;
        char fname[200];
@@ -70,7 +73,7 @@ static int distro_pxe_read_bootflow(struct udevice *dev, struct bootflow *bflow)
        addr = simple_strtoul(addr_str, NULL, 16);
 
        log_debug("calling pxe_get()\n");
-       ret = pxe_get(addr, &bootdir, &size);
+       ret = pxe_get(addr, &bootdir, &size, false);
        log_debug("pxe_get() returned %d\n", ret);
        if (ret)
                return log_msg_ret("pxeb", ret);
@@ -90,7 +93,7 @@ static int distro_pxe_read_bootflow(struct udevice *dev, struct bootflow *bflow)
                }
        }
        snprintf(fname, sizeof(fname), "%s%s",
-                bflow->subdir ? bflow->subdir : "", DISTRO_FNAME);
+                bflow->subdir ? bflow->subdir : "", EXTLINUX_FNAME);
 
        bflow->fname = strdup(fname);
        if (!bflow->fname)
@@ -108,8 +111,9 @@ static int distro_pxe_read_bootflow(struct udevice *dev, struct bootflow *bflow)
        return 0;
 }
 
-static int distro_pxe_read_file(struct udevice *dev, struct bootflow *bflow,
-                               const char *file_path, ulong addr, ulong *sizep)
+static int extlinux_pxe_read_file(struct udevice *dev, struct bootflow *bflow,
+                                 const char *file_path, ulong addr,
+                                 ulong *sizep)
 {
        char *tftp_argv[] = {"tftp", NULL, NULL, NULL};
        struct pxe_context *ctx = dev_get_priv(dev);
@@ -133,11 +137,11 @@ static int distro_pxe_read_file(struct udevice *dev, struct bootflow *bflow,
        return 0;
 }
 
-static int distro_pxe_boot(struct udevice *dev, struct bootflow *bflow)
+static int extlinux_pxe_boot(struct udevice *dev, struct bootflow *bflow)
 {
        struct pxe_context *ctx = dev_get_priv(dev);
        struct cmd_tbl cmdtp = {};      /* dummy */
-       struct distro_info info;
+       struct extlinux_info info;
        ulong addr;
        int ret;
 
@@ -145,8 +149,8 @@ static int distro_pxe_boot(struct udevice *dev, struct bootflow *bflow)
        info.dev = dev;
        info.bflow = bflow;
        info.cmdtp = &cmdtp;
-       ret = pxe_setup_ctx(ctx, &cmdtp, distro_pxe_getfile, &info, false,
-                           bflow->subdir);
+       ret = pxe_setup_ctx(ctx, &cmdtp, extlinux_pxe_getfile, &info, false,
+                           bflow->subdir, false, false);
        if (ret)
                return log_msg_ret("ctx", -EINVAL);
 
@@ -157,7 +161,7 @@ static int distro_pxe_boot(struct udevice *dev, struct bootflow *bflow)
        return 0;
 }
 
-static int distro_bootmeth_pxe_bind(struct udevice *dev)
+static int extlinux_bootmeth_pxe_bind(struct udevice *dev)
 {
        struct bootmeth_uc_plat *plat = dev_get_uclass_plat(dev);
 
@@ -167,23 +171,23 @@ static int distro_bootmeth_pxe_bind(struct udevice *dev)
        return 0;
 }
 
-static struct bootmeth_ops distro_bootmeth_pxe_ops = {
-       .check          = distro_pxe_check,
-       .read_bootflow  = distro_pxe_read_bootflow,
-       .read_file      = distro_pxe_read_file,
-       .boot           = distro_pxe_boot,
+static struct bootmeth_ops extlinux_bootmeth_pxe_ops = {
+       .check          = extlinux_pxe_check,
+       .read_bootflow  = extlinux_pxe_read_bootflow,
+       .read_file      = extlinux_pxe_read_file,
+       .boot           = extlinux_pxe_boot,
 };
 
-static const struct udevice_id distro_bootmeth_pxe_ids[] = {
-       { .compatible = "u-boot,distro-pxe" },
+static const struct udevice_id extlinux_bootmeth_pxe_ids[] = {
+       { .compatible = "u-boot,extlinux-pxe" },
        { }
 };
 
-U_BOOT_DRIVER(bootmeth_pxe) = {
+U_BOOT_DRIVER(bootmeth_zpxe) = {
        .name           = "bootmeth_pxe",
        .id             = UCLASS_BOOTMETH,
-       .of_match       = distro_bootmeth_pxe_ids,
-       .ops            = &distro_bootmeth_pxe_ops,
-       .bind           = distro_bootmeth_pxe_bind,
+       .of_match       = extlinux_bootmeth_pxe_ids,
+       .ops            = &extlinux_bootmeth_pxe_ops,
+       .bind           = extlinux_bootmeth_pxe_bind,
        .priv_auto      = sizeof(struct pxe_context),
 };
This page took 0.030685 seconds and 4 git commands to generate.