mirror of https://github.com/acidanthera/audk.git
ArmPkg/PlatformBootManagerLib: print firmware version to console
If gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString is set to a non-empty string, print it to the console at boot. Note that this is independent of DEBUG/RELEASE or graphical vs serial console, although we do attempt to stay clear of the logo and progress bar in graphical mode, by printing it top center. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
This commit is contained in:
parent
2b129e87c0
commit
6c4194c99e
|
@ -515,6 +515,8 @@ PlatformBootManagerBeforeConsole (
|
||||||
PlatformRegisterOptionsAndKeys ();
|
PlatformRegisterOptionsAndKeys ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define VERSION_STRING_PREFIX L"Tianocore/EDK2 firmware version "
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Do the platform specific action after the console is ready
|
Do the platform specific action after the console is ready
|
||||||
Possible things that can be done in PlatformBootManagerAfterConsole:
|
Possible things that can be done in PlatformBootManagerAfterConsole:
|
||||||
|
@ -534,14 +536,37 @@ PlatformBootManagerAfterConsole (
|
||||||
{
|
{
|
||||||
ESRT_MANAGEMENT_PROTOCOL *EsrtManagement;
|
ESRT_MANAGEMENT_PROTOCOL *EsrtManagement;
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;
|
||||||
|
UINTN FirmwareVerLength;
|
||||||
|
UINTN PosX;
|
||||||
|
UINTN PosY;
|
||||||
|
|
||||||
|
FirmwareVerLength = StrLen (PcdGetPtr (PcdFirmwareVersionString));
|
||||||
|
|
||||||
//
|
//
|
||||||
// Show the splash screen.
|
// Show the splash screen.
|
||||||
//
|
//
|
||||||
Status = BootLogoEnableLogo ();
|
Status = BootLogoEnableLogo ();
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
Print (L"Press ESCAPE for boot options ");
|
if (FirmwareVerLength > 0) {
|
||||||
|
Print (VERSION_STRING_PREFIX L"%s",
|
||||||
|
PcdGetPtr (PcdFirmwareVersionString));
|
||||||
}
|
}
|
||||||
|
Print (L"Press ESCAPE for boot options ");
|
||||||
|
} else if (FirmwareVerLength > 0) {
|
||||||
|
Status = gBS->HandleProtocol (gST->ConsoleOutHandle,
|
||||||
|
&gEfiGraphicsOutputProtocolGuid, (VOID **)&GraphicsOutput);
|
||||||
|
if (!EFI_ERROR (Status)) {
|
||||||
|
PosX = (GraphicsOutput->Mode->Info->HorizontalResolution -
|
||||||
|
(StrLen (VERSION_STRING_PREFIX) + FirmwareVerLength) *
|
||||||
|
EFI_GLYPH_WIDTH) / 2;
|
||||||
|
PosY = 0;
|
||||||
|
|
||||||
|
PrintXY (PosX, PosY, NULL, NULL, VERSION_STRING_PREFIX L"%s",
|
||||||
|
PcdGetPtr (PcdFirmwareVersionString));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Connect the rest of the devices.
|
// Connect the rest of the devices.
|
||||||
//
|
//
|
||||||
|
|
|
@ -59,6 +59,7 @@
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport
|
gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport
|
||||||
|
|
||||||
[FixedPcd]
|
[FixedPcd]
|
||||||
|
gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
|
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits
|
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits
|
||||||
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
|
gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
|
||||||
|
|
Loading…
Reference in New Issue