aboutsummaryrefslogtreecommitdiff
path: root/boot
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2022-10-20 18:22:51 -0600
committerTom Rini <trini@konsulko.com>2022-10-31 11:02:44 -0400
commitb190deb8955f1043817faf84a69dd63d5a53f959 (patch)
tree50687f22dcd1e3654e0b1d33e2f2038cdb92cc98 /boot
parentcbd71fad6d468018727ab04b2bb912989aec0785 (diff)
downloadu-boot-b190deb8955f1043817faf84a69dd63d5a53f959.zip
u-boot-b190deb8955f1043817faf84a69dd63d5a53f959.tar.gz
u-boot-b190deb8955f1043817faf84a69dd63d5a53f959.tar.bz2
bootstd: Add a way to set up a bootflow
Add a function to init a bootflow, to reduce code duplication. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'boot')
-rw-r--r--boot/bootdev-uclass.c5
-rw-r--r--boot/bootflow.c9
-rw-r--r--boot/bootmeth-uclass.c5
3 files changed, 11 insertions, 8 deletions
diff --git a/boot/bootdev-uclass.c b/boot/bootdev-uclass.c
index 9d98bee..affe0d3 100644
--- a/boot/bootdev-uclass.c
+++ b/boot/bootdev-uclass.c
@@ -440,10 +440,7 @@ int bootdev_get_bootflow(struct udevice *dev, struct bootflow_iter *iter,
if (!ops->get_bootflow)
return -ENOSYS;
- memset(bflow, '\0', sizeof(*bflow));
- bflow->dev = dev;
- bflow->method = iter->method;
- bflow->state = BOOTFLOWST_BASE;
+ bootflow_init(bflow, dev, iter->method);
return ops->get_bootflow(dev, iter, bflow);
}
diff --git a/boot/bootflow.c b/boot/bootflow.c
index 5d94a27..f9ad409 100644
--- a/boot/bootflow.c
+++ b/boot/bootflow.c
@@ -339,6 +339,15 @@ int bootflow_scan_next(struct bootflow_iter *iter, struct bootflow *bflow)
} while (1);
}
+void bootflow_init(struct bootflow *bflow, struct udevice *bootdev,
+ struct udevice *meth)
+{
+ memset(bflow, '\0', sizeof(*bflow));
+ bflow->dev = bootdev;
+ bflow->method = meth;
+ bflow->state = BOOTFLOWST_BASE;
+}
+
void bootflow_free(struct bootflow *bflow)
{
free(bflow->name);
diff --git a/boot/bootmeth-uclass.c b/boot/bootmeth-uclass.c
index 2d7652e..25552dd 100644
--- a/boot/bootmeth-uclass.c
+++ b/boot/bootmeth-uclass.c
@@ -77,10 +77,7 @@ int bootmeth_get_bootflow(struct udevice *dev, struct bootflow *bflow)
if (!ops->read_bootflow)
return -ENOSYS;
- memset(bflow, '\0', sizeof(*bflow));
- bflow->dev = NULL;
- bflow->method = dev;
- bflow->state = BOOTFLOWST_BASE;
+ bootflow_init(bflow, NULL, dev);
return ops->read_bootflow(dev, bflow);
}