[edk2-devel] [PATCH v5 14/23] ArmPkg: Add Universal/Smbios/SmbiosMiscDxe/Type02

Rebecca Cran posted 23 patches 5 months, 2 weeks ago

[edk2-devel] [PATCH v5 14/23] ArmPkg: Add Universal/Smbios/SmbiosMiscDxe/Type02

Posted by Rebecca Cran 5 months, 2 weeks ago
This code provides information for the SMBIOS Type 2 table.

Signed-off-by: Rebecca Cran <rebecca@nuviainc.com>
---
 ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerData.c     |  45 +++++
 ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c | 207 ++++++++++++++++++++
 ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturer.uni       |  20 ++
 3 files changed, 272 insertions(+)

diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerData.c b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerData.c
new file mode 100644
index 000000000000..f9122d5d8963
--- /dev/null
+++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerData.c
@@ -0,0 +1,45 @@
+/** @file
+
+  This file provide OEM to define Smbios Type2 Data
+
+  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
+
+  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2015, Hisilicon Limited. All rights reserved.<BR>
+  Copyright (c) 2015, Linaro Limited. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "SmbiosMisc.h"
+
+//
+// Static (possibly build generated) Chassis Manufacturer data.
+//
+MISC_SMBIOS_TABLE_DATA(SMBIOS_TABLE_TYPE2, MiscBaseBoardManufacturer) = {
+  {                                                       // Hdr
+    EFI_SMBIOS_TYPE_BASEBOARD_INFORMATION,                // Type,
+    0,                                                    // Length,
+    0                                                     // Handle
+  },
+  1,                                                      // BaseBoardManufacturer
+  2,                                                      // BaseBoardProductName
+  3,                                                      // BaseBoardVersion
+  4,                                                      // BaseBoardSerialNumber
+  5,                                                      // BaseBoardAssetTag
+  {                                                       // FeatureFlag
+    1,                                                    // Motherboard           :1
+    0,                                                    // RequiresDaughterCard  :1
+    0,                                                    // Removable             :1
+    1,                                                    // Replaceable           :1
+    0,                                                    // HotSwappable          :1
+    0                                                     // Reserved              :3
+  },
+  6,                                                      // BaseBoardChassisLocation
+  0,                                                      // ChassisHandle;
+  BaseBoardTypeMotherBoard,                               // BoardType;
+  0,                                                      // NumberOfContainedObjectHandles;
+  {
+    0
+  }                                                       // ContainedObjectHandles[1];
+};
diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c
new file mode 100644
index 000000000000..6c9bfa803ee5
--- /dev/null
+++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturerFunction.c
@@ -0,0 +1,207 @@
+/** @file
+  This driver parses the mSmbiosMiscDataTable structure and reports
+  any generated data using SMBIOS protocol.
+
+  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
+
+  Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2015, Hisilicon Limited. All rights reserved.<BR>
+  Copyright (c) 2015, Linaro Limited. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include "SmbiosMisc.h"
+
+
+/**
+  This function makes basic board manufacturer to the contents of the
+  Misc Base Board Manufacturer (Type 2).
+
+  @param  RecordData                 Pointer to copy of RecordData from the Data Table.
+
+  @retval EFI_SUCCESS                All parameters were valid.
+  @retval EFI_UNSUPPORTED            Unexpected RecordType value.
+  @retval EFI_INVALID_PARAMETER      Invalid parameter was found.
+
+**/
+MISC_SMBIOS_TABLE_FUNCTION(MiscBaseBoardManufacturer)
+{
+  CHAR8                             *OptionalStrStart;
+  CHAR8                             *StrStart;
+  UINTN                             RecordLength;
+  UINTN                             ManuStrLen;
+  UINTN                             ProductNameStrLen;
+  UINTN                             VerStrLen;
+  UINTN                             SerialNumStrLen;
+  UINTN                             AssetTagStrLen;
+  UINTN                             ChassisLocaStrLen;
+  UINTN                             HandleCount;
+  UINT16                            *HandleArray;
+  CHAR16                            *BaseBoardManufacturer;
+  CHAR16                            *BaseBoardProductName;
+  CHAR16                            *Version;
+  EFI_STRING                        SerialNumber;
+  EFI_STRING                        AssetTag;
+  EFI_STRING                        ChassisLocation;
+  EFI_STRING_ID                     TokenToGet;
+  EFI_SMBIOS_HANDLE                 SmbiosHandle;
+  SMBIOS_TABLE_TYPE2                *SmbiosRecord;
+  SMBIOS_TABLE_TYPE2                *InputData;
+  EFI_STATUS                        Status;
+
+  EFI_STRING_ID                     TokenToUpdate;
+
+  HandleCount = 0;
+  HandleArray = NULL;
+  InputData = NULL;
+
+  //
+  // First check for invalid parameters.
+  //
+  if (RecordData == NULL) {
+    return EFI_INVALID_PARAMETER;
+  }
+
+  InputData = (SMBIOS_TABLE_TYPE2*)RecordData;
+
+  BaseBoardManufacturer = (CHAR16 *) PcdGetPtr (PcdBaseBoardManufacturer);
+  if (StrLen (BaseBoardManufacturer) > 0) {
+    TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER);
+    HiiSetString (mHiiHandle, TokenToUpdate, BaseBoardManufacturer, NULL);
+  }
+
+  BaseBoardProductName = (CHAR16 *) PcdGetPtr (PcdBaseBoardProductName);
+  if (StrLen (BaseBoardProductName) > 0) {
+    TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_PRODUCT_NAME);
+    HiiSetString (mHiiHandle, TokenToUpdate, BaseBoardProductName, NULL);
+  }
+
+  Version = (CHAR16 *) PcdGetPtr (PcdBaseBoardVersion);
+  if (StrLen (Version) > 0) {
+    TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION);
+    HiiSetString (mHiiHandle, TokenToUpdate, Version, NULL);
+  }
+
+  UpdateSmbiosInfo (mHiiHandle,
+    STRING_TOKEN (STR_MISC_BASE_BOARD_ASSET_TAG),
+    AssertTagType02
+    );
+  UpdateSmbiosInfo (mHiiHandle,
+    STRING_TOKEN (STR_MISC_BASE_BOARD_SERIAL_NUMBER),
+    SerialNumberType02
+    );
+  UpdateSmbiosInfo (mHiiHandle,
+    STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER),
+    BoardManufacturerType02
+    );
+
+  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER);
+  BaseBoardManufacturer = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
+  ManuStrLen = StrLen (BaseBoardManufacturer);
+
+  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_PRODUCT_NAME);
+  BaseBoardProductName = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
+  ProductNameStrLen = StrLen (BaseBoardProductName);
+
+  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION);
+  Version = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
+  VerStrLen = StrLen (Version);
+
+  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_SERIAL_NUMBER);
+  SerialNumber = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
+  SerialNumStrLen = StrLen (SerialNumber);
+
+  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_ASSET_TAG);
+  AssetTag = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
+  AssetTagStrLen = StrLen (AssetTag);
+
+  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_CHASSIS_LOCATION);
+  ChassisLocation = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
+  ChassisLocaStrLen = StrLen (ChassisLocation);
+
+  //
+  // Two zeros following the last string.
+  //
+  RecordLength = sizeof (SMBIOS_TABLE_TYPE2) +
+                 ManuStrLen        + 1 +
+                 ProductNameStrLen + 1 +
+                 VerStrLen         + 1 +
+                 SerialNumStrLen   + 1 +
+                 AssetTagStrLen    + 1 +
+                 ChassisLocaStrLen + 1 + 1;
+  SmbiosRecord = AllocateZeroPool (RecordLength);
+  if (SmbiosRecord == NULL) {
+    Status = EFI_OUT_OF_RESOURCES;
+    goto Exit;
+  }
+
+  (VOID)CopyMem (SmbiosRecord, InputData, sizeof (SMBIOS_TABLE_TYPE2));
+  SmbiosRecord->Hdr.Length        = sizeof (SMBIOS_TABLE_TYPE2);
+
+  //
+  //  Update Contained objects Handle
+  //
+  SmbiosRecord->NumberOfContainedObjectHandles = 0;
+  GetLinkTypeHandle (EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE, &HandleArray, &HandleCount);
+  // It's assumed there's at most a single chassis
+  ASSERT (HandleCount < 2);
+  if (HandleCount > 0) {
+    SmbiosRecord->ChassisHandle = HandleArray[0];
+  }
+
+  FreePool (HandleArray);
+
+  OptionalStrStart = (CHAR8 *)(SmbiosRecord + 1);
+  UnicodeStrToAsciiStrS (BaseBoardManufacturer, OptionalStrStart, ManuStrLen + 1);
+
+  StrStart = OptionalStrStart + ManuStrLen + 1;
+  UnicodeStrToAsciiStrS (BaseBoardProductName, StrStart, ProductNameStrLen + 1);
+
+  StrStart += ProductNameStrLen + 1;
+  UnicodeStrToAsciiStrS (Version, StrStart, VerStrLen + 1);
+
+  StrStart += VerStrLen + 1;
+  UnicodeStrToAsciiStrS (SerialNumber, StrStart, SerialNumStrLen + 1);
+
+  StrStart += SerialNumStrLen + 1;
+  UnicodeStrToAsciiStrS (AssetTag, StrStart, AssetTagStrLen + 1);
+
+  StrStart += AssetTagStrLen + 1;
+  UnicodeStrToAsciiStrS (ChassisLocation, StrStart, ChassisLocaStrLen + 1);
+
+  Status = LogSmbiosData ((UINT8 *)SmbiosRecord, &SmbiosHandle);
+  if (EFI_ERROR (Status)) {
+    DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Smbios Type02 Table Log Failed! %r \n",
+            __FUNCTION__, __LINE__, Status));
+  }
+
+  FreePool (SmbiosRecord);
+
+Exit:
+  if (BaseBoardManufacturer != NULL) {
+    FreePool (BaseBoardManufacturer);
+  }
+
+  if (BaseBoardProductName != NULL) {
+    FreePool (BaseBoardProductName);
+  }
+
+  if (Version != NULL) {
+    FreePool (Version);
+  }
+
+  if (SerialNumber != NULL) {
+    FreePool (SerialNumber);
+  }
+
+  if (AssetTag != NULL) {
+    FreePool (AssetTag);
+  }
+
+  if (ChassisLocation != NULL) {
+    FreePool (ChassisLocation);
+  }
+
+  return 0;
+}
diff --git a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturer.uni b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturer.uni
new file mode 100644
index 000000000000..47b6c71230fe
--- /dev/null
+++ b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacturer.uni
@@ -0,0 +1,20 @@
+/** @file
+  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
+
+  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
+  Copyright (c) 2015, Hisilicon Limited. All rights reserved.<BR>
+  Copyright (c) 2015, Linaro Limited. All rights reserved.<BR>
+  SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+/=#
+
+#string STR_MISC_BASE_BOARD_MANUFACTURER     #language en-US  "Not Specified"
+#string STR_MISC_BASE_BOARD_PRODUCT_NAME     #language en-US  "Not Specified"
+#string STR_MISC_BASE_BOARD_PRODUCT_NAME     #language en-US  "Not Specified"
+#string STR_MISC_BASE_BOARD_VERSION          #language en-US  "Not Specified"
+#string STR_MISC_BASE_BOARD_VERSION          #language en-US  "Not Specified"
+#string STR_MISC_BASE_BOARD_SERIAL_NUMBER    #language en-US  "Not Specified"
+#string STR_MISC_BASE_BOARD_ASSET_TAG        #language en-US  "Not Specified"
+#string STR_MISC_BASE_BOARD_CHASSIS_LOCATION #language en-US  "Not Specified"
-- 
2.26.2



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#69652): https://edk2.groups.io/g/devel/message/69652
Mute This Topic: https://groups.io/mt/79438419/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel] [PATCH v5 14/23] ArmPkg: Add Universal/Smbios/SmbiosMiscDxe/Type02

Posted by Samer El-Haj-Mahmoud 5 months, 2 weeks ago

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rebecca
> Cran via groups.io
> Sent: Monday, January 4, 2021 5:58 PM
> To: devel@edk2.groups.io
> Cc: Rebecca Cran <rebecca@nuviainc.com>; Leif Lindholm
> <leif@nuviainc.com>; Ard Biesheuvel <Ard.Biesheuvel@arm.com>; Sami
> Mujawar <Sami.Mujawar@arm.com>; Liming Gao
> <gaoliming@byosoft.com.cn>; Michael D Kinney
> <michael.d.kinney@intel.com>; Zhiguang Liu <zhiguang.liu@intel.com>
> Subject: [edk2-devel] [PATCH v5 14/23] ArmPkg: Add
> Universal/Smbios/SmbiosMiscDxe/Type02
>
> This code provides information for the SMBIOS Type 2 table.
>
> Signed-off-by: Rebecca Cran <rebecca@nuviainc.com>
> ---
>
> ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacture
> rData.c     |  45 +++++
>
> ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacture
> rFunction.c | 207 ++++++++++++++++++++
>
> ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufacture
> r.uni       |  20 ++
>  3 files changed, 272 insertions(+)
>
> diff --git
> a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufactu
> rerData.c
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufactu
> rerData.c
> new file mode 100644
> index 000000000000..f9122d5d8963
> --- /dev/null
> +++
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufact
> +++ urerData.c
> @@ -0,0 +1,45 @@
> +/** @file
> +
> +  This file provide OEM to define Smbios Type2 Data
> +
> +  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> +  Copyright (c) 2006 - 2009, Intel Corporation. All rights
> + reserved.<BR>  Copyright (c) 2015, Hisilicon Limited. All rights
> + reserved.<BR>  Copyright (c) 2015, Linaro Limited. All rights
> + reserved.<BR>
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include "SmbiosMisc.h"
> +
> +//
> +// Static (possibly build generated) Chassis Manufacturer data.
> +//
> +MISC_SMBIOS_TABLE_DATA(SMBIOS_TABLE_TYPE2,
> MiscBaseBoardManufacturer) = {
> +  {                                                       // Hdr
> +    EFI_SMBIOS_TYPE_BASEBOARD_INFORMATION,                // Type,
> +    0,                                                    // Length,
> +    0                                                     // Handle
> +  },
> +  1,                                                      // BaseBoardManufacturer
> +  2,                                                      // BaseBoardProductName
> +  3,                                                      // BaseBoardVersion
> +  4,                                                      // BaseBoardSerialNumber
> +  5,                                                      // BaseBoardAssetTag
> +  {                                                       // FeatureFlag
> +    1,                                                    // Motherboard           :1
> +    0,                                                    // RequiresDaughterCard  :1
> +    0,                                                    // Removable             :1
> +    1,                                                    // Replaceable           :1

Not true for all platforms


> +    0,                                                    // HotSwappable          :1
> +    0                                                     // Reserved              :3
> +  },
> +  6,                                                      // BaseBoardChassisLocation
> +  0,                                                      // ChassisHandle;
> +  BaseBoardTypeMotherBoard,                               // BoardType;
> +  0,                                                      // NumberOfContainedObjectHandles;
> +  {
> +    0
> +  }                                                       // ContainedObjectHandles[1];
> +};
> diff --git
> a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufactu
> rerFunction.c
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufactu
> rerFunction.c
> new file mode 100644
> index 000000000000..6c9bfa803ee5
> --- /dev/null
> +++
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufact
> +++ urerFunction.c
> @@ -0,0 +1,207 @@
> +/** @file
> +  This driver parses the mSmbiosMiscDataTable structure and reports
> +  any generated data using SMBIOS protocol.
> +
> +  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> +  Copyright (c) 2009 - 2011, Intel Corporation. All rights
> + reserved.<BR>  Copyright (c) 2015, Hisilicon Limited. All rights
> + reserved.<BR>  Copyright (c) 2015, Linaro Limited. All rights
> + reserved.<BR>
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include "SmbiosMisc.h"
> +
> +
> +/**
> +  This function makes basic board manufacturer to the contents of the
> +  Misc Base Board Manufacturer (Type 2).
> +
> +  @param  RecordData                 Pointer to copy of RecordData from the Data
> Table.
> +
> +  @retval EFI_SUCCESS                All parameters were valid.
> +  @retval EFI_UNSUPPORTED            Unexpected RecordType value.
> +  @retval EFI_INVALID_PARAMETER      Invalid parameter was found.
> +
> +**/
> +MISC_SMBIOS_TABLE_FUNCTION(MiscBaseBoardManufacturer)
> +{
> +  CHAR8                             *OptionalStrStart;
> +  CHAR8                             *StrStart;
> +  UINTN                             RecordLength;
> +  UINTN                             ManuStrLen;
> +  UINTN                             ProductNameStrLen;
> +  UINTN                             VerStrLen;
> +  UINTN                             SerialNumStrLen;
> +  UINTN                             AssetTagStrLen;
> +  UINTN                             ChassisLocaStrLen;
> +  UINTN                             HandleCount;
> +  UINT16                            *HandleArray;
> +  CHAR16                            *BaseBoardManufacturer;
> +  CHAR16                            *BaseBoardProductName;
> +  CHAR16                            *Version;
> +  EFI_STRING                        SerialNumber;
> +  EFI_STRING                        AssetTag;
> +  EFI_STRING                        ChassisLocation;
> +  EFI_STRING_ID                     TokenToGet;
> +  EFI_SMBIOS_HANDLE                 SmbiosHandle;
> +  SMBIOS_TABLE_TYPE2                *SmbiosRecord;
> +  SMBIOS_TABLE_TYPE2                *InputData;
> +  EFI_STATUS                        Status;
> +
> +  EFI_STRING_ID                     TokenToUpdate;
> +
> +  HandleCount = 0;
> +  HandleArray = NULL;
> +  InputData = NULL;
> +
> +  //
> +  // First check for invalid parameters.
> +  //
> +  if (RecordData == NULL) {
> +    return EFI_INVALID_PARAMETER;
> +  }
> +
> +  InputData = (SMBIOS_TABLE_TYPE2*)RecordData;
> +
> +  BaseBoardManufacturer = (CHAR16 *) PcdGetPtr
> + (PcdBaseBoardManufacturer);  if (StrLen (BaseBoardManufacturer) > 0) {
> +    TokenToUpdate = STRING_TOKEN
> (STR_MISC_BASE_BOARD_MANUFACTURER);
> +    HiiSetString (mHiiHandle, TokenToUpdate, BaseBoardManufacturer,
> + NULL);  }
> +
> +  BaseBoardProductName = (CHAR16 *) PcdGetPtr
> + (PcdBaseBoardProductName);  if (StrLen (BaseBoardProductName) > 0) {
> +    TokenToUpdate = STRING_TOKEN
> (STR_MISC_BASE_BOARD_PRODUCT_NAME);
> +    HiiSetString (mHiiHandle, TokenToUpdate, BaseBoardProductName,
> + NULL);  }
> +
> +  Version = (CHAR16 *) PcdGetPtr (PcdBaseBoardVersion);  if (StrLen
> + (Version) > 0) {
> +    TokenToUpdate = STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION);
> +    HiiSetString (mHiiHandle, TokenToUpdate, Version, NULL);  }
> +
> +  UpdateSmbiosInfo (mHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_ASSET_TAG),
> +    AssertTagType02
> +    );
> +  UpdateSmbiosInfo (mHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_SERIAL_NUMBER),
> +    SerialNumberType02
> +    );
> +  UpdateSmbiosInfo (mHiiHandle,
> +    STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER),
> +    BoardManufacturerType02
> +    );
> +
> +  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_MANUFACTURER);
> +  BaseBoardManufacturer = HiiGetPackageString (&gEfiCallerIdGuid,
> + TokenToGet, NULL);  ManuStrLen = StrLen (BaseBoardManufacturer);
> +
> +  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_PRODUCT_NAME);
> +  BaseBoardProductName = HiiGetPackageString (&gEfiCallerIdGuid,
> + TokenToGet, NULL);  ProductNameStrLen = StrLen (BaseBoardProductName);
> +
> +  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_VERSION);  Version
> =
> + HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);  VerStrLen
> + = StrLen (Version);
> +
> +  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_SERIAL_NUMBER);
> +  SerialNumber = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet,
> + NULL);  SerialNumStrLen = StrLen (SerialNumber);
> +
> +  TokenToGet = STRING_TOKEN (STR_MISC_BASE_BOARD_ASSET_TAG);
> AssetTag
> + = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet, NULL);
> + AssetTagStrLen = StrLen (AssetTag);
> +
> +  TokenToGet = STRING_TOKEN
> (STR_MISC_BASE_BOARD_CHASSIS_LOCATION);
> +  ChassisLocation = HiiGetPackageString (&gEfiCallerIdGuid, TokenToGet,
> + NULL);  ChassisLocaStrLen = StrLen (ChassisLocation);
> +
> +  //
> +  // Two zeros following the last string.
> +  //
> +  RecordLength = sizeof (SMBIOS_TABLE_TYPE2) +
> +                 ManuStrLen        + 1 +
> +                 ProductNameStrLen + 1 +
> +                 VerStrLen         + 1 +
> +                 SerialNumStrLen   + 1 +
> +                 AssetTagStrLen    + 1 +
> +                 ChassisLocaStrLen + 1 + 1;  SmbiosRecord =
> + AllocateZeroPool (RecordLength);  if (SmbiosRecord == NULL) {
> +    Status = EFI_OUT_OF_RESOURCES;
> +    goto Exit;
> +  }
> +
> +  (VOID)CopyMem (SmbiosRecord, InputData, sizeof (SMBIOS_TABLE_TYPE2));
> +  SmbiosRecord->Hdr.Length        = sizeof (SMBIOS_TABLE_TYPE2);
> +
> +  //
> +  //  Update Contained objects Handle
> +  //
> +  SmbiosRecord->NumberOfContainedObjectHandles = 0;  GetLinkTypeHandle
> + (EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE, &HandleArray, &HandleCount);  //
> + It's assumed there's at most a single chassis  ASSERT (HandleCount <
> + 2);  if (HandleCount > 0) {
> +    SmbiosRecord->ChassisHandle = HandleArray[0];  }
> +
> +  FreePool (HandleArray);
> +
> +  OptionalStrStart = (CHAR8 *)(SmbiosRecord + 1);
> + UnicodeStrToAsciiStrS (BaseBoardManufacturer, OptionalStrStart,
> + ManuStrLen + 1);
> +
> +  StrStart = OptionalStrStart + ManuStrLen + 1;  UnicodeStrToAsciiStrS
> + (BaseBoardProductName, StrStart, ProductNameStrLen + 1);
> +
> +  StrStart += ProductNameStrLen + 1;
> +  UnicodeStrToAsciiStrS (Version, StrStart, VerStrLen + 1);
> +
> +  StrStart += VerStrLen + 1;
> +  UnicodeStrToAsciiStrS (SerialNumber, StrStart, SerialNumStrLen + 1);
> +
> +  StrStart += SerialNumStrLen + 1;
> +  UnicodeStrToAsciiStrS (AssetTag, StrStart, AssetTagStrLen + 1);
> +
> +  StrStart += AssetTagStrLen + 1;
> +  UnicodeStrToAsciiStrS (ChassisLocation, StrStart, ChassisLocaStrLen +
> + 1);
> +
> +  Status = LogSmbiosData ((UINT8 *)SmbiosRecord, &SmbiosHandle);  if
> + (EFI_ERROR (Status)) {
> +    DEBUG ((DEBUG_ERROR, "[%a]:[%dL] Smbios Type02 Table Log Failed! %r
> \n",
> +            __FUNCTION__, __LINE__, Status));  }
> +
> +  FreePool (SmbiosRecord);
> +
> +Exit:
> +  if (BaseBoardManufacturer != NULL) {
> +    FreePool (BaseBoardManufacturer);
> +  }
> +
> +  if (BaseBoardProductName != NULL) {
> +    FreePool (BaseBoardProductName);
> +  }
> +
> +  if (Version != NULL) {
> +    FreePool (Version);
> +  }
> +
> +  if (SerialNumber != NULL) {
> +    FreePool (SerialNumber);
> +  }
> +
> +  if (AssetTag != NULL) {
> +    FreePool (AssetTag);
> +  }
> +
> +  if (ChassisLocation != NULL) {
> +    FreePool (ChassisLocation);
> +  }
> +
> +  return 0;
> +}
> diff --git
> a/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufactu
> rer.uni
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufactu
> rer.uni
> new file mode 100644
> index 000000000000..47b6c71230fe
> --- /dev/null
> +++
> b/ArmPkg/Universal/Smbios/SmbiosMiscDxe/Type02/MiscBaseBoardManufact
> +++ urer.uni
> @@ -0,0 +1,20 @@
> +/** @file
> +  Based on files under Nt32Pkg/MiscSubClassPlatformDxe/
> +
> +  Copyright (c) 2006 - 2010, Intel Corporation. All rights
> + reserved.<BR>  Copyright (c) 2015, Hisilicon Limited. All rights
> + reserved.<BR>  Copyright (c) 2015, Linaro Limited. All rights
> + reserved.<BR>
> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +/=#
> +
> +#string STR_MISC_BASE_BOARD_MANUFACTURER     #language en-US  "Not
> Specified"
> +#string STR_MISC_BASE_BOARD_PRODUCT_NAME     #language en-US  "Not
> Specified"
> +#string STR_MISC_BASE_BOARD_PRODUCT_NAME     #language en-US  "Not
> Specified"
> +#string STR_MISC_BASE_BOARD_VERSION          #language en-US  "Not
> Specified"
> +#string STR_MISC_BASE_BOARD_VERSION          #language en-US  "Not
> Specified"
> +#string STR_MISC_BASE_BOARD_SERIAL_NUMBER    #language en-US  "Not
> Specified"
> +#string STR_MISC_BASE_BOARD_ASSET_TAG        #language en-US  "Not
> Specified"
> +#string STR_MISC_BASE_BOARD_CHASSIS_LOCATION #language en-US  "Not
> Specified"
> --

Shouldn't all of these strings be customizable via platform dynamic HII PCDs?



> 2.26.2
>
>
>
> 
>

IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#69752): https://edk2.groups.io/g/devel/message/69752
Mute This Topic: https://groups.io/mt/79438419/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-