diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type00/MiscBiosVendorFunction.c b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type00/MiscBiosVendorFunction.c index 66ead22a6e..c9f25b7502 100644 --- a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type00/MiscBiosVendorFunction.c +++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type00/MiscBiosVendorFunction.c @@ -1,6 +1,6 @@ /** @file - Copyright (c) 2022, Ampere Computing LLC. All rights reserved.
+ Copyright (c) 2022 - 2023, Ampere Computing LLC. All rights reserved.
Copyright (c) 2021, NUVIA Inc. All rights reserved.
Copyright (c) 2009, Intel Corporation. All rights reserved.
Copyright (c) 2015, Hisilicon Limited. All rights reserved.
@@ -124,22 +124,47 @@ GetBiosReleaseDate ( return ReleaseDate; } -/** - Fetches the firmware ('BIOS') version from the - FirmwareVersionInfo HOB. +/** Fetches the Firmware version string for SMBIOS type 0 + + This function first acquires the firmware version string from OemMiscLib; + if it is invalid, PcdFirmwareVersionString is used as a fallback, + and then sets it in SMBIOS type 0. - @return The version as a UTF-16 string **/ -CHAR16 * -GetBiosVersion ( +VOID +SetBiosVersion ( VOID ) { - CHAR16 *ReleaseString; + CHAR16 *DefaultVersionString; + CHAR16 *Version; + EFI_STRING_ID TokenToUpdate; - ReleaseString = (CHAR16 *)FixedPcdGetPtr (PcdFirmwareVersionString); + DefaultVersionString = HiiGetString ( + mSmbiosMiscHiiHandle, + STRING_TOKEN (STR_MISC_BIOS_VERSION), + NULL + ); - return ReleaseString; + OemUpdateSmbiosInfo ( + mSmbiosMiscHiiHandle, + STRING_TOKEN (STR_MISC_BIOS_VERSION), + BiosVersionType00 + ); + + Version = HiiGetString ( + mSmbiosMiscHiiHandle, + STRING_TOKEN (STR_MISC_BIOS_VERSION), + NULL + ); + + if (((StrCmp (Version, DefaultVersionString) == 0) || (StrLen (Version) == 0))) { + Version = (CHAR16 *)FixedPcdGetPtr (PcdFirmwareVersionString); + if (StrLen (Version) > 0) { + TokenToUpdate = STRING_TOKEN (STR_MISC_BIOS_VERSION); + HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version, NULL); + } + } } /** @@ -187,18 +212,7 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscBiosVendor) { HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Vendor, NULL); } - Version = GetBiosVersion (); - - if (StrLen (Version) > 0) { - TokenToUpdate = STRING_TOKEN (STR_MISC_BIOS_VERSION); - HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version, NULL); - } else { - OemUpdateSmbiosInfo ( - mSmbiosMiscHiiHandle, - STRING_TOKEN (STR_MISC_BIOS_VERSION), - BiosVersionType00 - ); - } + SetBiosVersion (); Char16String = GetBiosReleaseDate (); if (StrLen (Char16String) > 0) {