/** @file\r
\r
- Copyright (c) 2022, Ampere Computing LLC. All rights reserved.<BR>\r
+ Copyright (c) 2022 - 2023, Ampere Computing LLC. All rights reserved.<BR>\r
Copyright (c) 2021, NUVIA Inc. All rights reserved.<BR>\r
Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>\r
Copyright (c) 2015, Hisilicon Limited. All rights reserved.<BR>\r
return ReleaseDate;\r
}\r
\r
-/**\r
- Fetches the firmware ('BIOS') version from the\r
- FirmwareVersionInfo HOB.\r
+/** Fetches the Firmware version string for SMBIOS type 0\r
+\r
+ This function first acquires the firmware version string from OemMiscLib;\r
+ if it is invalid, PcdFirmwareVersionString is used as a fallback,\r
+ and then sets it in SMBIOS type 0.\r
\r
- @return The version as a UTF-16 string\r
**/\r
-CHAR16 *\r
-GetBiosVersion (\r
+VOID\r
+SetBiosVersion (\r
VOID\r
)\r
{\r
- CHAR16 *ReleaseString;\r
-\r
- ReleaseString = (CHAR16 *)FixedPcdGetPtr (PcdFirmwareVersionString);\r
-\r
- return ReleaseString;\r
+ CHAR16 *DefaultVersionString;\r
+ CHAR16 *Version;\r
+ EFI_STRING_ID TokenToUpdate;\r
+\r
+ DefaultVersionString = HiiGetString (\r
+ mSmbiosMiscHiiHandle,\r
+ STRING_TOKEN (STR_MISC_BIOS_VERSION),\r
+ NULL\r
+ );\r
+\r
+ OemUpdateSmbiosInfo (\r
+ mSmbiosMiscHiiHandle,\r
+ STRING_TOKEN (STR_MISC_BIOS_VERSION),\r
+ BiosVersionType00\r
+ );\r
+\r
+ Version = HiiGetString (\r
+ mSmbiosMiscHiiHandle,\r
+ STRING_TOKEN (STR_MISC_BIOS_VERSION),\r
+ NULL\r
+ );\r
+\r
+ if (((StrCmp (Version, DefaultVersionString) == 0) || (StrLen (Version) == 0))) {\r
+ Version = (CHAR16 *)FixedPcdGetPtr (PcdFirmwareVersionString);\r
+ if (StrLen (Version) > 0) {\r
+ TokenToUpdate = STRING_TOKEN (STR_MISC_BIOS_VERSION);\r
+ HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version, NULL);\r
+ }\r
+ }\r
}\r
\r
/**\r
HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Vendor, NULL);\r
}\r
\r
- Version = GetBiosVersion ();\r
-\r
- if (StrLen (Version) > 0) {\r
- TokenToUpdate = STRING_TOKEN (STR_MISC_BIOS_VERSION);\r
- HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version, NULL);\r
- } else {\r
- OemUpdateSmbiosInfo (\r
- mSmbiosMiscHiiHandle,\r
- STRING_TOKEN (STR_MISC_BIOS_VERSION),\r
- BiosVersionType00\r
- );\r
- }\r
+ SetBiosVersion ();\r
\r
Char16String = GetBiosReleaseDate ();\r
if (StrLen (Char16String) > 0) {\r