]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ArmPkg/SmbiosMiscDxe: Get full SMBIOS strings from OemMiscLib
authorNhi Pham <nhi@os.amperecomputing.com>
Thu, 16 Dec 2021 03:54:54 +0000 (10:54 +0700)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Thu, 16 Dec 2021 18:08:22 +0000 (18:08 +0000)
Typically, the information of the SMBIOS type 1/2/3 is fetched from an
FRU device during UEFI booting intead of fixed PCDs. Therefore, this
patch is to add more HII string fields in the OemMiscLib and support
updating these SMBIOS types with the strings provided by the OemMiscLib
if the PCDs are empty.

Signed-off-by: Nhi Pham <nhi@os.amperecomputing.com>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
ArmPkg/Include/Library/OemMiscLib.h
ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufacturerFunction.c
ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c

index 569cd51352766fd85ad46d3c0f2f530f8d72ef9b..f25c8f3342a9c75f99178840cb036504e8e50a98 100644 (file)
@@ -40,11 +40,14 @@ typedef enum {
   SerialNumType01,\r
   UuidType01,\r
   SystemManufacturerType01,\r
+  VersionType01,\r
   SkuNumberType01,\r
   FamilyType01,\r
   AssertTagType02,\r
   SerialNumberType02,\r
   BoardManufacturerType02,\r
+  ProductNameType02,\r
+  VersionType02,\r
   SkuNumberType02,\r
   ChassisLocationType02,\r
   AssetTagType03,\r
index 6d08a75580e78f7e93d2e08a2b155ea1247c8fb4..5cf72644d0b2f32708559bbcc7a39d2b1779a20d 100644 (file)
@@ -74,12 +74,24 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscSystemManufacturer) {
   if (StrLen (Product) > 0) {\r
     TokenToUpdate = STRING_TOKEN (STR_MISC_SYSTEM_PRODUCT_NAME);\r
     HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Product, NULL);\r
+  } else {\r
+    OemUpdateSmbiosInfo (\r
+      mSmbiosMiscHiiHandle,\r
+      STRING_TOKEN (STR_MISC_SYSTEM_PRODUCT_NAME),\r
+      ProductNameType01\r
+      );\r
   }\r
 \r
   pVersion = (CHAR16 *)PcdGetPtr (PcdSystemVersion);\r
   if (StrLen (pVersion) > 0) {\r
     TokenToUpdate = STRING_TOKEN (STR_MISC_SYSTEM_VERSION);\r
     HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, pVersion, NULL);\r
+  } else {\r
+    OemUpdateSmbiosInfo (\r
+      mSmbiosMiscHiiHandle,\r
+      STRING_TOKEN (STR_MISC_SYSTEM_VERSION),\r
+      VersionType01\r
+      );\r
   }\r
 \r
   OemUpdateSmbiosInfo (\r
index 99ba99e913b67b174b92ff9865423097c46cf898..870610b17243f788a8e186435c20bca3b9b2a679 100644 (file)
@@ -77,18 +77,36 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscBaseBoardManufacturer) {
   if (StrLen (BaseBoardManufacturer) > 0) {\r
     TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER);\r
     HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, BaseBoardManufacturer, NULL);\r
+  } else {\r
+    OemUpdateSmbiosInfo (\r
+      mSmbiosMiscHiiHandle,\r
+      STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER),\r
+      BoardManufacturerType02\r
+      );\r
   }\r
 \r
   BaseBoardProductName = (CHAR16 *)PcdGetPtr (PcdBaseBoardProductName);\r
   if (StrLen (BaseBoardProductName) > 0) {\r
     TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_PRODUCT_NAME);\r
     HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, BaseBoardProductName, NULL);\r
+  } else {\r
+    OemUpdateSmbiosInfo (\r
+      mSmbiosMiscHiiHandle,\r
+      STRING_TOKEN (STR_MISC_BASE_BOARD_PRODUCT_NAME),\r
+      ProductNameType02\r
+      );\r
   }\r
 \r
   Version = (CHAR16 *)PcdGetPtr (PcdBaseBoardVersion);\r
   if (StrLen (Version) > 0) {\r
     TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION);\r
     HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version, NULL);\r
+  } else {\r
+    OemUpdateSmbiosInfo (\r
+      mSmbiosMiscHiiHandle,\r
+      STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION),\r
+      VersionType02\r
+      );\r
   }\r
 \r
   OemUpdateSmbiosInfo (\r