]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmPkg/SmbiosMiscDxe: Get SMBIOS information from OemMiscLib
authorMinh Nguyen <minhn@amperecomputing.com>
Mon, 19 Sep 2022 02:19:50 +0000 (09:19 +0700)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Fri, 23 Sep 2022 14:39:10 +0000 (14:39 +0000)
In some scenarios, the information of Bios Version, Bios Release
and Embedded Controller Firmware Release are fetched during UEFI
booting. This patch supports updating those fields dynamically
when the PCDs are empty.

Signed-off-by: Nhi Pham <nhi@os.amperecomputing.com>
Reviewed-by: Rebecca Cran <rebecca@quicinc.com>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
Acked-by: Ard Biesheuvel <ardb@kernel.org>
ArmPkg/Include/Library/OemMiscLib.h
ArmPkg/Universal/Smbios/OemMiscLibNull/OemMiscLib.c
ArmPkg/Universal/Smbios/OemMiscLibNull/OemMiscLibNull.inf
ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type00/MiscBiosVendorFunction.c

index 1936619d9b5b30bcef823b23ccc4001d3a8500ea..541274999e5c93cfccb253f511ea355450fd9c75 100644 (file)
@@ -37,6 +37,7 @@ typedef struct {
 } OEM_MISC_PROCESSOR_DATA;\r
 \r
 typedef enum {\r
+  BiosVersionType00,\r
   ProductNameType01,\r
   SerialNumType01,\r
   UuidType01,\r
@@ -247,4 +248,24 @@ OemGetSystemUuid (
   OUT GUID  *SystemUuid\r
   );\r
 \r
+/** Fetches the BIOS release.\r
+\r
+  @return The BIOS release.\r
+**/\r
+UINT16\r
+EFIAPI\r
+OemGetBiosRelease (\r
+  VOID\r
+  );\r
+\r
+/** Fetches the embedded controller firmware release.\r
+\r
+  @return The embedded controller firmware release.\r
+**/\r
+UINT16\r
+EFIAPI\r
+OemGetEmbeddedControllerFirmwareRelease (\r
+  VOID\r
+  );\r
+\r
 #endif // OEM_MISC_LIB_H_\r
index 32f6d55c1a9a532e159cacdb3a18eefc16b791e1..a5d635da9e11e94f0e98f23b6b6ae685bf565f3a 100644 (file)
@@ -16,6 +16,7 @@
 #include <Library/DebugLib.h>\r
 #include <Library/HiiLib.h>\r
 #include <Library/OemMiscLib.h>\r
+#include <Library/PcdLib.h>\r
 \r
 /** Gets the CPU frequency of the specified processor.\r
 \r
@@ -254,3 +255,31 @@ OemGetSystemUuid (
   ASSERT (FALSE);\r
   CopyGuid (SystemUuid, &gZeroGuid);\r
 }\r
+\r
+/** Fetches the BIOS release.\r
+\r
+  @return The BIOS release.\r
+**/\r
+UINT16\r
+EFIAPI\r
+OemGetBiosRelease (\r
+  VOID\r
+  )\r
+{\r
+  ASSERT (FALSE);\r
+  return PcdGet16 (PcdSystemBiosRelease);\r
+}\r
+\r
+/** Fetches the embedded controller firmware release.\r
+\r
+  @return The embedded controller firmware release.\r
+**/\r
+UINT16\r
+EFIAPI\r
+OemGetEmbeddedControllerFirmwareRelease (\r
+  VOID\r
+  )\r
+{\r
+  ASSERT (FALSE);\r
+  return PcdGet16 (PcdEmbeddedControllerFirmwareRelease);\r
+}\r
index 8653f57720d121bd041b3e51c885f000832ca05c..7286ed61142a3090cc418a6dd938cc7ec25c99b1 100644 (file)
 [LibraryClasses]\r
   BaseMemoryLib\r
   DebugLib\r
+  PcdLib\r
 \r
 [Guids]\r
   gZeroGuid\r
+\r
+[Pcd]\r
+  gArmTokenSpaceGuid.PcdEmbeddedControllerFirmwareRelease\r
+  gArmTokenSpaceGuid.PcdSystemBiosRelease\r
index b49c4b754cab623fa04a083998ad48aee0dcc8a1..66ead22a6e2ce69d938fd77fb70355e151db2b9e 100644 (file)
@@ -1,5 +1,6 @@
 /** @file\r
 \r
+  Copyright (c) 2022, 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
@@ -13,6 +14,7 @@
 #include <Library/DebugLib.h>\r
 #include <Library/HiiLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
+#include <Library/OemMiscLib.h>\r
 #include <Library/PrintLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 \r
@@ -191,11 +193,11 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscBiosVendor) {
     TokenToUpdate = STRING_TOKEN (STR_MISC_BIOS_VERSION);\r
     HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version, NULL);\r
   } else {\r
-    Version = (CHAR16 *)PcdGetPtr (PcdFirmwareVersionString);\r
-    if (StrLen (Version) > 0) {\r
-      TokenToUpdate = STRING_TOKEN (STR_MISC_BIOS_VERSION);\r
-      HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version, NULL);\r
-    }\r
+    OemUpdateSmbiosInfo (\r
+      mSmbiosMiscHiiHandle,\r
+      STRING_TOKEN (STR_MISC_BIOS_VERSION),\r
+      BiosVersionType00\r
+      );\r
   }\r
 \r
   Char16String = GetBiosReleaseDate ();\r
@@ -251,13 +253,11 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscBiosVendor) {
     }\r
   }\r
 \r
-  SmbiosRecord->SystemBiosMajorRelease = (UINT8)(PcdGet16 (PcdSystemBiosRelease) >> 8);\r
-  SmbiosRecord->SystemBiosMinorRelease = (UINT8)(PcdGet16 (PcdSystemBiosRelease) & 0xFF);\r
+  SmbiosRecord->SystemBiosMajorRelease = (UINT8)(OemGetBiosRelease () >> 8);\r
+  SmbiosRecord->SystemBiosMinorRelease = (UINT8)(OemGetBiosRelease () & 0xFF);\r
 \r
-  SmbiosRecord->EmbeddedControllerFirmwareMajorRelease = (UINT16)\r
-                                                         (PcdGet16 (PcdEmbeddedControllerFirmwareRelease) >> 8);\r
-  SmbiosRecord->EmbeddedControllerFirmwareMinorRelease = (UINT16)\r
-                                                         (PcdGet16 (PcdEmbeddedControllerFirmwareRelease) & 0xFF);\r
+  SmbiosRecord->EmbeddedControllerFirmwareMajorRelease = (UINT16)(OemGetEmbeddedControllerFirmwareRelease () >> 8);\r
+  SmbiosRecord->EmbeddedControllerFirmwareMinorRelease = (UINT16)(OemGetEmbeddedControllerFirmwareRelease () & 0xFF);\r
 \r
   OptionalStrStart = (CHAR8 *)(SmbiosRecord + 1);\r
   UnicodeStrToAsciiStrS (Vendor, OptionalStrStart, VendorStrLen + 1);\r