summaryrefslogtreecommitdiff
path: root/boot
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-01-17 10:48:01 -0700
committerTom Rini <trini@konsulko.com>2023-01-23 18:11:41 -0500
commit22061d3d2ad10e1c67e36282a8c97f505a62c252 (patch)
treed46f11617a3b8ef265937b9c74c33f451046b6c2 /boot
parent74ebfb60f6890ab46d5233d13941ff9d6eea2312 (diff)
bootstd: Add a new bootmeth method to set the bootflow
Normally the bootmeth driver reads the bootflow from the bootdev, since it knows the correct way to do it. However it is easier for some bootdevs to handle this themselves. For example, reading from SPI flash is quite different from other devices. Add a way for the bootdev to pass a bootflow to the bootmeth, so that this can be supported. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'boot')
-rw-r--r--boot/bootmeth-uclass.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/boot/bootmeth-uclass.c b/boot/bootmeth-uclass.c
index 4c3529d155..2aee1e0f0c 100644
--- a/boot/bootmeth-uclass.c
+++ b/boot/bootmeth-uclass.c
@@ -50,6 +50,17 @@ int bootmeth_read_bootflow(struct udevice *dev, struct bootflow *bflow)
return ops->read_bootflow(dev, bflow);
}
+int bootmeth_set_bootflow(struct udevice *dev, struct bootflow *bflow,
+ char *buf, int size)
+{
+ const struct bootmeth_ops *ops = bootmeth_get_ops(dev);
+
+ if (!ops->set_bootflow)
+ return -ENOSYS;
+
+ return ops->set_bootflow(dev, bflow, buf, size);
+}
+
int bootmeth_boot(struct udevice *dev, struct bootflow *bflow)
{
const struct bootmeth_ops *ops = bootmeth_get_ops(dev);