diff options
author | Simon Glass <sjg@chromium.org> | 2022-10-20 18:23:18 -0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2022-10-31 11:04:00 -0400 |
commit | d8b7c34f98a7ff957e6921954eee3b7834576291 (patch) | |
tree | 2ebffc848bf73eafd60afe68dd81d4de04e3d3ae | |
parent | 2a5c67f50a438b266dc72c9401e578ec8b81db16 (diff) | |
download | u-boot-d8b7c34f98a7ff957e6921954eee3b7834576291.tar.gz u-boot-d8b7c34f98a7ff957e6921954eee3b7834576291.tar.bz2 u-boot-d8b7c34f98a7ff957e6921954eee3b7834576291.zip |
vbe: Record which phases loaded using VBE
We expect VPL and SPL to load using VBE. Add a record of this so we can
check it in U-Boot proper.
Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | boot/vbe_simple_fw.c | 10 | ||||
-rw-r--r-- | include/bloblist.h | 1 | ||||
-rw-r--r-- | include/vbe.h | 9 |
3 files changed, 20 insertions, 0 deletions
diff --git a/boot/vbe_simple_fw.c b/boot/vbe_simple_fw.c index fc05e9e2bd..0a49d28670 100644 --- a/boot/vbe_simple_fw.c +++ b/boot/vbe_simple_fw.c @@ -9,6 +9,7 @@ #define LOG_CATEGORY LOGC_BOOT #include <common.h> +#include <bloblist.h> #include <bootdev.h> #include <bootflow.h> #include <bootmeth.h> @@ -154,11 +155,17 @@ static int simple_load_from_image(struct spl_image_info *spl_image, struct udevice *meth, *bdev; struct simple_priv *priv; struct bootflow bflow; + struct vbe_handoff *handoff; int ret; if (spl_phase() != PHASE_VPL && spl_phase() != PHASE_SPL) return -ENOENT; + ret = bloblist_ensure_size(BLOBLISTT_VBE, sizeof(struct vbe_handoff), + 0, (void **)&handoff); + if (ret) + return log_msg_ret("ro", ret); + vbe_find_first_device(&meth); if (!meth) return log_msg_ret("vd", -ENODEV); @@ -190,6 +197,9 @@ static int simple_load_from_image(struct spl_image_info *spl_image, /* this is not used from now on, so free it */ bootflow_free(&bflow); + /* Record that VBE was used in this phase */ + handoff->phases |= 1 << spl_phase(); + return 0; } SPL_LOAD_IMAGE_METHOD("vbe_simple", 5, BOOT_DEVICE_VBE, diff --git a/include/bloblist.h b/include/bloblist.h index 9684bfd5f4..2a2f1700eb 100644 --- a/include/bloblist.h +++ b/include/bloblist.h @@ -112,6 +112,7 @@ enum bloblist_tag_t { */ BLOBLISTT_PROJECT_AREA = 0x8000, BLOBLISTT_U_BOOT_SPL_HANDOFF = 0x8000, /* Hand-off info from SPL */ + BLOBLISTT_VBE = 0x8001, /* VBE per-phase state */ /* * Vendor-specific tags are permitted here. Projects can be open source diff --git a/include/vbe.h b/include/vbe.h index ece2697b5d..5ede8181b9 100644 --- a/include/vbe.h +++ b/include/vbe.h @@ -26,6 +26,15 @@ enum vbe_phase_t { }; /** + * struct vbe_handoff - information about VBE progress + * + * @phases: Indicates which phases used the VBE bootmeth (1 << PHASE_...) + */ +struct vbe_handoff { + u8 phases; +}; + +/** * vbe_phase() - get current VBE phase * * Returns: Current VBE phase |