Skip to content

Commit 45e3842

Browse files
nhivpmergify[bot]
authored andcommitted
ArmPkg/SmbiosMiscDxe: Get full SMBIOS strings from OemMiscLib
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>
1 parent a6c0418 commit 45e3842

File tree

3 files changed

+33
-0
lines changed

3 files changed

+33
-0
lines changed

ArmPkg/Include/Library/OemMiscLib.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,14 @@ typedef enum {
4040
SerialNumType01,
4141
UuidType01,
4242
SystemManufacturerType01,
43+
VersionType01,
4344
SkuNumberType01,
4445
FamilyType01,
4546
AssertTagType02,
4647
SerialNumberType02,
4748
BoardManufacturerType02,
49+
ProductNameType02,
50+
VersionType02,
4851
SkuNumberType02,
4952
ChassisLocationType02,
5053
AssetTagType03,

ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type01/MiscSystemManufacturerFunction.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,24 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscSystemManufacturer) {
7474
if (StrLen (Product) > 0) {
7575
TokenToUpdate = STRING_TOKEN (STR_MISC_SYSTEM_PRODUCT_NAME);
7676
HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Product, NULL);
77+
} else {
78+
OemUpdateSmbiosInfo (
79+
mSmbiosMiscHiiHandle,
80+
STRING_TOKEN (STR_MISC_SYSTEM_PRODUCT_NAME),
81+
ProductNameType01
82+
);
7783
}
7884

7985
pVersion = (CHAR16 *)PcdGetPtr (PcdSystemVersion);
8086
if (StrLen (pVersion) > 0) {
8187
TokenToUpdate = STRING_TOKEN (STR_MISC_SYSTEM_VERSION);
8288
HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, pVersion, NULL);
89+
} else {
90+
OemUpdateSmbiosInfo (
91+
mSmbiosMiscHiiHandle,
92+
STRING_TOKEN (STR_MISC_SYSTEM_VERSION),
93+
VersionType01
94+
);
8395
}
8496

8597
OemUpdateSmbiosInfo (

ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,18 +77,36 @@ SMBIOS_MISC_TABLE_FUNCTION (MiscBaseBoardManufacturer) {
7777
if (StrLen (BaseBoardManufacturer) > 0) {
7878
TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER);
7979
HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, BaseBoardManufacturer, NULL);
80+
} else {
81+
OemUpdateSmbiosInfo (
82+
mSmbiosMiscHiiHandle,
83+
STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER),
84+
BoardManufacturerType02
85+
);
8086
}
8187

8288
BaseBoardProductName = (CHAR16 *)PcdGetPtr (PcdBaseBoardProductName);
8389
if (StrLen (BaseBoardProductName) > 0) {
8490
TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_PRODUCT_NAME);
8591
HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, BaseBoardProductName, NULL);
92+
} else {
93+
OemUpdateSmbiosInfo (
94+
mSmbiosMiscHiiHandle,
95+
STRING_TOKEN (STR_MISC_BASE_BOARD_PRODUCT_NAME),
96+
ProductNameType02
97+
);
8698
}
8799

88100
Version = (CHAR16 *)PcdGetPtr (PcdBaseBoardVersion);
89101
if (StrLen (Version) > 0) {
90102
TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION);
91103
HiiSetString (mSmbiosMiscHiiHandle, TokenToUpdate, Version, NULL);
104+
} else {
105+
OemUpdateSmbiosInfo (
106+
mSmbiosMiscHiiHandle,
107+
STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION),
108+
VersionType02
109+
);
92110
}
93111

94112
OemUpdateSmbiosInfo (

0 commit comments

Comments
 (0)