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>
This commit is contained in:
Simon Glass 2024-09-26 23:59:35 +02:00 committed by Tom Rini
parent 3697344866
commit 3899e3f0ba

View file

@ -71,6 +71,33 @@ static void uint2dec(u32 value, u16 **buf)
*buf = pos; *buf = pos;
} }
/**
* 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 * print_uefi_revision() - print UEFI revision number
*/ */
@ -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, u"Running on UEFI ");
con_out->output_string(con_out, rev); con_out->output_string(con_out, rev);
con_out->output_string(con_out, u"\r\n"); 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");
} }
/** /**