summaryrefslogtreecommitdiff
path: root/lib/efi_loader/helloworld.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2024-09-26 23:59:35 +0200
committerTom Rini <trini@konsulko.com>2024-10-09 22:04:56 -0600
commit3899e3f0ba1a71a8d70fd28f7983d34aefbf8ddc (patch)
treec23ad7cad81908c8d53e7206bcd4a6da7f8578ba /lib/efi_loader/helloworld.c
parent369734486687c55382014832405162f5fe6a65d6 (diff)
efi_loader: Show FirmwareVendor and FirmwareRevision in helloworld
Show the firmware vendor and revision to make it clear which firmware is used, e.g. whether U-Boot is providing the boot services. The output will look like Firmware vendor: Das U-Boot Firmware revision: 20241000 Signed-off-by: Simon Glass <sjg@chromium.org> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Diffstat (limited to 'lib/efi_loader/helloworld.c')
-rw-r--r--lib/efi_loader/helloworld.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/efi_loader/helloworld.c b/lib/efi_loader/helloworld.c
index 586177de0c8..d10a5229f74 100644
--- a/lib/efi_loader/helloworld.c
+++ b/lib/efi_loader/helloworld.c
@@ -72,6 +72,33 @@ static void uint2dec(u32 value, u16 **buf)
}
/**
+ * Print an unsigned 32bit value as hexadecimal number to an u16 string
+ *
+ * @value: value to be printed
+ * @buf: pointer to buffer address
+ * on return position of terminating zero word
+ */
+static void uint2hex(u32 value, u16 **buf)
+{
+ u16 *pos = *buf;
+ int i;
+ u16 c;
+
+ for (i = 0; i < 8; ++i) {
+ /* Write current digit */
+ c = value >> 28;
+ value <<= 4;
+ if (c < 10)
+ c += '0';
+ else
+ c += 'a' - 10;
+ *pos++ = c;
+ }
+ *pos = 0;
+ *buf = pos;
+}
+
+/**
* print_uefi_revision() - print UEFI revision number
*/
static void print_uefi_revision(void)
@@ -96,6 +123,16 @@ static void print_uefi_revision(void)
con_out->output_string(con_out, u"Running on UEFI ");
con_out->output_string(con_out, rev);
con_out->output_string(con_out, u"\r\n");
+
+ con_out->output_string(con_out, u"Firmware vendor: ");
+ con_out->output_string(con_out, systable->fw_vendor);
+ con_out->output_string(con_out, u"\r\n");
+
+ buf = rev;
+ uint2hex(systable->fw_revision, &buf);
+ con_out->output_string(con_out, u"Firmware revision: ");
+ con_out->output_string(con_out, rev);
+ con_out->output_string(con_out, u"\r\n");
}
/**