public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [edk2-platform][PATCH v2 1/1] Platforms/RaspberryPi: Add Asset Tag support
@ 2020-06-08 20:41 Samer El-Haj-Mahmoud
  2020-06-12  8:57 ` [edk2-devel] " Ard Biesheuvel
  0 siblings, 1 reply; 2+ messages in thread
From: Samer El-Haj-Mahmoud @ 2020-06-08 20:41 UTC (permalink / raw)
  To: devel

Add support for configuring the Chassis Asset Tag in the UI as well as
UEFI Shell, and carry the configured value as the Asset Tag string
in SMBIOS Types 2 and 3.

To configure using the UEFI Shell, use 'setvar' command to read/write
the UEFI variable with GUID = gConfigDxeFormSetGuid and Name="AssetTag".
For example:

Shell> setvar AssetTag -guid CD7CC258-31DB-22E6-9F22-63B0B8EED6B5 -bs
-rt -nv =L"ABC123" =0x0000

This resolves this Github issue: https://github.com/pftf/RPi4/issues/54

Signed-off-by: Samer El-Haj-Mahmoud <samer.el-haj-mahmoud@arm.com>
Reviewed-by: Andrei Warkentin <andrey.warkentin@gmail.com>
---
 Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf |  2 ++
 Platform/RaspberryPi/Include/ConfigVars.h                            |  7 ++++++
 Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.vfr              | 14 +++++++++++
 Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c                   | 23 ++++++++++++++---
 Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.c   | 26 ++++++++++++++++++--
 Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni              |  4 +++
 6 files changed, 71 insertions(+), 5 deletions(-)

diff --git a/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf b/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf
index 1ed6338c69cb..59b2fefdf0fd 100644
--- a/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf
+++ b/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf
@@ -43,7 +43,9 @@ [LibraryClasses]
 [Protocols]
   gEfiSmbiosProtocolGuid           # PROTOCOL SOMETIMES_CONSUMED
   gRaspberryPiFirmwareProtocolGuid ## CONSUMES
+
 [Guids]
+  gConfigDxeFormSetGuid
 
 [Depex]
   gEfiSmbiosProtocolGuid AND gRaspberryPiFirmwareProtocolGuid
diff --git a/Platform/RaspberryPi/Include/ConfigVars.h b/Platform/RaspberryPi/Include/ConfigVars.h
index cefddbafcd8f..9e5a69c7a657 100644
--- a/Platform/RaspberryPi/Include/ConfigVars.h
+++ b/Platform/RaspberryPi/Include/ConfigVars.h
@@ -1,6 +1,7 @@
 /** @file
  *
  *  Copyright (c) 2020, Andrei Warkentin <andrey.warkentin@gmail.com>
+ *  Copyright (c) 2020, ARM Limited. All rights reserved.
  *
  *  SPDX-License-Identifier: BSD-2-Clause-Patent
  *
@@ -82,6 +83,12 @@ typedef struct {
   UINT32 Mode;
 } SYSTEM_TABLE_MODE_VARSTORE_DATA;
 
+#define ASSET_TAG_STR_MAX_LEN       32
+#define ASSET_TAG_STR_STORAGE_SIZE  33
+typedef struct {
+  CHAR16 AssetTag[ASSET_TAG_STR_STORAGE_SIZE];
+} ADVANCED_ASSET_TAG_VARSTORE_DATA;
+
 typedef struct {
   /*
    * 0 - uSD slot routed to Broadcom SDHOST on Pi 3 or eMMC2 on Pi 4.
diff --git a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.vfr b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.vfr
index 72cc90ae0bec..b4b2a3a7abde 100644
--- a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.vfr
+++ b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.vfr
@@ -1,6 +1,7 @@
 /** @file
  *
  *  Copyright (c) 2018 Andrei Warkentin <andrey.warkentin@gmail.com>
+ *  Copyright (c) 2020, ARM Limited. All rights reserved.
  *
  *  SPDX-License-Identifier: BSD-2-Clause-Patent
  *
@@ -49,6 +50,11 @@ formset
       name  = SystemTableMode,
       guid  = CONFIGDXE_FORM_SET_GUID;
 
+    efivarstore ADVANCED_ASSET_TAG_VARSTORE_DATA,
+      attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
+      name  = AssetTag,
+      guid  = CONFIGDXE_FORM_SET_GUID;
+
     efivarstore MMC_SD_VARSTORE_DATA,
       attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
       name  = SdIsArasan,
@@ -172,6 +178,14 @@ formset
             option text = STRING_TOKEN(STR_ADVANCED_SYSTAB_BOTH), value = SYSTEM_TABLE_MODE_BOTH, flags = DEFAULT;
             option text = STRING_TOKEN(STR_ADVANCED_SYSTAB_DT), value = SYSTEM_TABLE_MODE_DT, flags = DEFAULT;
         endoneof;
+
+        string varid = AssetTag.AssetTag,
+            prompt  = STRING_TOKEN(STR_ADVANCED_ASSET_TAG_PROMPT),
+            help    = STRING_TOKEN(STR_ADVANCED_ASSET_TAG_HELP),
+            flags   = INTERACTIVE | RESET_REQUIRED,
+            minsize = 0,
+            maxsize = ASSET_TAG_STR_MAX_LEN,
+        endstring;
     endform;
 
     form formid = 0x1003,
diff --git a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c
index 52e37ba68ffd..b73dbdcde99d 100644
--- a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c
+++ b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c
@@ -186,9 +186,10 @@ SetupVariables (
   VOID
   )
 {
-  UINTN Size;
-  UINT8 Var8;
-  UINT32 Var32;
+  UINTN      Size;
+  UINT8      Var8;
+  UINT32     Var32;
+  CHAR16     AssetTagVar[ASSET_TAG_STR_STORAGE_SIZE] = L"";
   EFI_STATUS Status;
 
   /*
@@ -238,6 +239,22 @@ SetupVariables (
     PcdSet32 (PcdSystemTableMode, PcdGet32 (PcdSystemTableMode));
   }
 
+  Size = sizeof(AssetTagVar);
+
+  Status = gRT->GetVariable(L"AssetTag",
+                  &gConfigDxeFormSetGuid,
+                  NULL, &Size, AssetTagVar);
+
+  if (EFI_ERROR (Status)) {
+    Status = gRT->SetVariable (
+                    L"AssetTag",
+                    &gConfigDxeFormSetGuid,
+                    EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
+                    sizeof(AssetTagVar),
+                    AssetTagVar
+                    );
+  }
+
   Size = sizeof (UINT32);
   Status = gRT->GetVariable (L"SdIsArasan",
                   &gConfigDxeFormSetGuid,
diff --git a/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.c b/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.c
index 3351fea2ec32..7b86e76a1248 100644
--- a/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.c
+++ b/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.c
@@ -20,6 +20,7 @@
  *  Copyright (c) 2013, Linaro.org
  *  Copyright (c) 2012, Apple Inc. All rights reserved.<BR>
  *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Copyright (c) 2020, ARM Limited. All rights reserved.
  *
  *  SPDX-License-Identifier: BSD-2-Clause-Patent
  *
@@ -40,7 +41,9 @@
 #include <Library/MemoryAllocationLib.h>
 #include <Library/TimeBaseLib.h>
 #include <Library/UefiBootServicesTableLib.h>
+#include <Library/UefiRuntimeServicesTableLib.h>
 #include <Library/PrintLib.h>
+#include <ConfigVars.h>
 
 #define SMB_IS_DIGIT(c)  (((c) >= '0') && ((c) <= '9'))
 
@@ -164,7 +167,7 @@ SMBIOS_TABLE_TYPE2 mBoardInfoType2 = {
   2,    // ProductName String
   3,    // Version String
   4,    // SerialNumber String
-  0,    // AssetTag String
+  5,    // AssetTag String
   {     // FeatureFlag
     1,    //  Motherboard           :1;
     0,    //  RequiresDaughterCard  :1;
@@ -179,11 +182,15 @@ SMBIOS_TABLE_TYPE2 mBoardInfoType2 = {
   0,                        // NumberOfContainedObjectHandles;
   { 0 }                     // ContainedObjectHandles[1];
 };
+
+CHAR8 mChassisAssetTag[128];
+
 CHAR8 *mBoardInfoType2Strings[] = {
   mSysInfoManufName,
   mSysInfoProductName,
   mSysInfoVersionName,
   mSysInfoSerial,
+  mChassisAssetTag,
   NULL
 };
 
@@ -196,7 +203,7 @@ SMBIOS_TABLE_TYPE3 mEnclosureInfoType3 = {
   MiscChassisEmbeddedPc,    // Type;
   2,                        // Version String
   3,                        // SerialNumber String
-  0,                        // AssetTag String
+  4,                        // AssetTag String
   ChassisStateSafe,         // BootupState;
   ChassisStateSafe,         // PowerSupplyState;
   ChassisStateSafe,         // ThermalState;
@@ -212,6 +219,7 @@ CHAR8 *mEnclosureInfoType3Strings[] = {
   mSysInfoManufName,
   mSysInfoProductName,
   mSysInfoSerial,
+  mChassisAssetTag,
   NULL
 };
 
@@ -760,6 +768,20 @@ BoardInfoUpdateSmbiosType2 (
   VOID
   )
 {
+  UINTN      Size;
+  CHAR16     AssetTagVar[ASSET_TAG_STR_STORAGE_SIZE] = L"";
+  EFI_STATUS Status;
+
+  Size = sizeof(AssetTagVar);
+  Status = gRT->GetVariable(L"AssetTag",
+                  &gConfigDxeFormSetGuid,
+                  NULL, &Size, AssetTagVar);
+  if (EFI_ERROR (Status)) {
+    DEBUG ((DEBUG_ERROR, "Failed to get Asset Tag: %r\n", Status));
+  }
+  UnicodeStrToAsciiStrS(AssetTagVar, mChassisAssetTag, sizeof(mChassisAssetTag));
+  DEBUG ((DEBUG_INFO, "System Asset Tag : %a\n", mChassisAssetTag));
+
   LogSmbiosData ((EFI_SMBIOS_TABLE_HEADER*)&mBoardInfoType2, mBoardInfoType2Strings, NULL);
 }
 
diff --git a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni
index 7195e497f986..2a468760c6a9 100644
--- a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni
+++ b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni
@@ -1,6 +1,7 @@
 /** @file
  *
  *  Copyright (c) 2018, Andrei Warkentin <andrey.warkentin@gmail.com>
+ *  Copyright (c) 2020, ARM Limited. All rights reserved.
  *
  *  SPDX-License-Identifier: BSD-2-Clause-Patent
  *
@@ -47,6 +48,9 @@
 #string STR_ADVANCED_SYSTAB_BOTH     #language en-US "ACPI + Devicetree"
 #string STR_ADVANCED_SYSTAB_DT       #language en-US "Devicetree"
 
+#string STR_ADVANCED_ASSET_TAG_PROMPT #language en-US "Asset Tag"
+#string STR_ADVANCED_ASSET_TAG_HELP   #language en-US "Set the system Asset Tag"
+
 /*
  * MMC/SD configuration.
  */
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [edk2-devel] [edk2-platform][PATCH v2 1/1] Platforms/RaspberryPi: Add Asset Tag support
  2020-06-08 20:41 [edk2-platform][PATCH v2 1/1] Platforms/RaspberryPi: Add Asset Tag support Samer El-Haj-Mahmoud
@ 2020-06-12  8:57 ` Ard Biesheuvel
  0 siblings, 0 replies; 2+ messages in thread
From: Ard Biesheuvel @ 2020-06-12  8:57 UTC (permalink / raw)
  To: devel, samer.el-haj-mahmoud

On 6/8/20 10:41 PM, Samer El-Haj-Mahmoud via groups.io wrote:
> Add support for configuring the Chassis Asset Tag in the UI as well as
> UEFI Shell, and carry the configured value as the Asset Tag string
> in SMBIOS Types 2 and 3.
> 
> To configure using the UEFI Shell, use 'setvar' command to read/write
> the UEFI variable with GUID = gConfigDxeFormSetGuid and Name="AssetTag".
> For example:
> 
> Shell> setvar AssetTag -guid CD7CC258-31DB-22E6-9F22-63B0B8EED6B5 -bs
> -rt -nv =L"ABC123" =0x0000
> 
> This resolves this Github issue: https://github.com/pftf/RPi4/issues/54
> 
> Signed-off-by: Samer El-Haj-Mahmoud <samer.el-haj-mahmoud@arm.com>
> Reviewed-by: Andrei Warkentin <andrey.warkentin@gmail.com>

Pushed as 4c8c8868bbdb..6d4fed696d00

Thanks

> ---
>   Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf |  2 ++
>   Platform/RaspberryPi/Include/ConfigVars.h                            |  7 ++++++
>   Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.vfr              | 14 +++++++++++
>   Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c                   | 23 ++++++++++++++---
>   Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.c   | 26 ++++++++++++++++++--
>   Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni              |  4 +++
>   6 files changed, 71 insertions(+), 5 deletions(-)
> 
> diff --git a/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf b/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf
> index 1ed6338c69cb..59b2fefdf0fd 100644
> --- a/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf
> +++ b/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.inf
> @@ -43,7 +43,9 @@ [LibraryClasses]
>   [Protocols]
>     gEfiSmbiosProtocolGuid           # PROTOCOL SOMETIMES_CONSUMED
>     gRaspberryPiFirmwareProtocolGuid ## CONSUMES
> +
>   [Guids]
> +  gConfigDxeFormSetGuid
>   
>   [Depex]
>     gEfiSmbiosProtocolGuid AND gRaspberryPiFirmwareProtocolGuid
> diff --git a/Platform/RaspberryPi/Include/ConfigVars.h b/Platform/RaspberryPi/Include/ConfigVars.h
> index cefddbafcd8f..9e5a69c7a657 100644
> --- a/Platform/RaspberryPi/Include/ConfigVars.h
> +++ b/Platform/RaspberryPi/Include/ConfigVars.h
> @@ -1,6 +1,7 @@
>   /** @file
>    *
>    *  Copyright (c) 2020, Andrei Warkentin <andrey.warkentin@gmail.com>
> + *  Copyright (c) 2020, ARM Limited. All rights reserved.
>    *
>    *  SPDX-License-Identifier: BSD-2-Clause-Patent
>    *
> @@ -82,6 +83,12 @@ typedef struct {
>     UINT32 Mode;
>   } SYSTEM_TABLE_MODE_VARSTORE_DATA;
>   
> +#define ASSET_TAG_STR_MAX_LEN       32
> +#define ASSET_TAG_STR_STORAGE_SIZE  33
> +typedef struct {
> +  CHAR16 AssetTag[ASSET_TAG_STR_STORAGE_SIZE];
> +} ADVANCED_ASSET_TAG_VARSTORE_DATA;
> +
>   typedef struct {
>     /*
>      * 0 - uSD slot routed to Broadcom SDHOST on Pi 3 or eMMC2 on Pi 4.
> diff --git a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.vfr b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.vfr
> index 72cc90ae0bec..b4b2a3a7abde 100644
> --- a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.vfr
> +++ b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.vfr
> @@ -1,6 +1,7 @@
>   /** @file
>    *
>    *  Copyright (c) 2018 Andrei Warkentin <andrey.warkentin@gmail.com>
> + *  Copyright (c) 2020, ARM Limited. All rights reserved.
>    *
>    *  SPDX-License-Identifier: BSD-2-Clause-Patent
>    *
> @@ -49,6 +50,11 @@ formset
>         name  = SystemTableMode,
>         guid  = CONFIGDXE_FORM_SET_GUID;
>   
> +    efivarstore ADVANCED_ASSET_TAG_VARSTORE_DATA,
> +      attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
> +      name  = AssetTag,
> +      guid  = CONFIGDXE_FORM_SET_GUID;
> +
>       efivarstore MMC_SD_VARSTORE_DATA,
>         attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
>         name  = SdIsArasan,
> @@ -172,6 +178,14 @@ formset
>               option text = STRING_TOKEN(STR_ADVANCED_SYSTAB_BOTH), value = SYSTEM_TABLE_MODE_BOTH, flags = DEFAULT;
>               option text = STRING_TOKEN(STR_ADVANCED_SYSTAB_DT), value = SYSTEM_TABLE_MODE_DT, flags = DEFAULT;
>           endoneof;
> +
> +        string varid = AssetTag.AssetTag,
> +            prompt  = STRING_TOKEN(STR_ADVANCED_ASSET_TAG_PROMPT),
> +            help    = STRING_TOKEN(STR_ADVANCED_ASSET_TAG_HELP),
> +            flags   = INTERACTIVE | RESET_REQUIRED,
> +            minsize = 0,
> +            maxsize = ASSET_TAG_STR_MAX_LEN,
> +        endstring;
>       endform;
>   
>       form formid = 0x1003,
> diff --git a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c
> index 52e37ba68ffd..b73dbdcde99d 100644
> --- a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c
> +++ b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxe.c
> @@ -186,9 +186,10 @@ SetupVariables (
>     VOID
>     )
>   {
> -  UINTN Size;
> -  UINT8 Var8;
> -  UINT32 Var32;
> +  UINTN      Size;
> +  UINT8      Var8;
> +  UINT32     Var32;
> +  CHAR16     AssetTagVar[ASSET_TAG_STR_STORAGE_SIZE] = L"";
>     EFI_STATUS Status;
>   
>     /*
> @@ -238,6 +239,22 @@ SetupVariables (
>       PcdSet32 (PcdSystemTableMode, PcdGet32 (PcdSystemTableMode));
>     }
>   
> +  Size = sizeof(AssetTagVar);
> +
> +  Status = gRT->GetVariable(L"AssetTag",
> +                  &gConfigDxeFormSetGuid,
> +                  NULL, &Size, AssetTagVar);
> +
> +  if (EFI_ERROR (Status)) {
> +    Status = gRT->SetVariable (
> +                    L"AssetTag",
> +                    &gConfigDxeFormSetGuid,
> +                    EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,
> +                    sizeof(AssetTagVar),
> +                    AssetTagVar
> +                    );
> +  }
> +
>     Size = sizeof (UINT32);
>     Status = gRT->GetVariable (L"SdIsArasan",
>                     &gConfigDxeFormSetGuid,
> diff --git a/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.c b/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.c
> index 3351fea2ec32..7b86e76a1248 100644
> --- a/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.c
> +++ b/Platform/RaspberryPi/Drivers/PlatformSmbiosDxe/PlatformSmbiosDxe.c
> @@ -20,6 +20,7 @@
>    *  Copyright (c) 2013, Linaro.org
>    *  Copyright (c) 2012, Apple Inc. All rights reserved.<BR>
>    *  Copyright (c) Microsoft Corporation. All rights reserved.
> + *  Copyright (c) 2020, ARM Limited. All rights reserved.
>    *
>    *  SPDX-License-Identifier: BSD-2-Clause-Patent
>    *
> @@ -40,7 +41,9 @@
>   #include <Library/MemoryAllocationLib.h>
>   #include <Library/TimeBaseLib.h>
>   #include <Library/UefiBootServicesTableLib.h>
> +#include <Library/UefiRuntimeServicesTableLib.h>
>   #include <Library/PrintLib.h>
> +#include <ConfigVars.h>
>   
>   #define SMB_IS_DIGIT(c)  (((c) >= '0') && ((c) <= '9'))
>   
> @@ -164,7 +167,7 @@ SMBIOS_TABLE_TYPE2 mBoardInfoType2 = {
>     2,    // ProductName String
>     3,    // Version String
>     4,    // SerialNumber String
> -  0,    // AssetTag String
> +  5,    // AssetTag String
>     {     // FeatureFlag
>       1,    //  Motherboard           :1;
>       0,    //  RequiresDaughterCard  :1;
> @@ -179,11 +182,15 @@ SMBIOS_TABLE_TYPE2 mBoardInfoType2 = {
>     0,                        // NumberOfContainedObjectHandles;
>     { 0 }                     // ContainedObjectHandles[1];
>   };
> +
> +CHAR8 mChassisAssetTag[128];
> +
>   CHAR8 *mBoardInfoType2Strings[] = {
>     mSysInfoManufName,
>     mSysInfoProductName,
>     mSysInfoVersionName,
>     mSysInfoSerial,
> +  mChassisAssetTag,
>     NULL
>   };
>   
> @@ -196,7 +203,7 @@ SMBIOS_TABLE_TYPE3 mEnclosureInfoType3 = {
>     MiscChassisEmbeddedPc,    // Type;
>     2,                        // Version String
>     3,                        // SerialNumber String
> -  0,                        // AssetTag String
> +  4,                        // AssetTag String
>     ChassisStateSafe,         // BootupState;
>     ChassisStateSafe,         // PowerSupplyState;
>     ChassisStateSafe,         // ThermalState;
> @@ -212,6 +219,7 @@ CHAR8 *mEnclosureInfoType3Strings[] = {
>     mSysInfoManufName,
>     mSysInfoProductName,
>     mSysInfoSerial,
> +  mChassisAssetTag,
>     NULL
>   };
>   
> @@ -760,6 +768,20 @@ BoardInfoUpdateSmbiosType2 (
>     VOID
>     )
>   {
> +  UINTN      Size;
> +  CHAR16     AssetTagVar[ASSET_TAG_STR_STORAGE_SIZE] = L"";
> +  EFI_STATUS Status;
> +
> +  Size = sizeof(AssetTagVar);
> +  Status = gRT->GetVariable(L"AssetTag",
> +                  &gConfigDxeFormSetGuid,
> +                  NULL, &Size, AssetTagVar);
> +  if (EFI_ERROR (Status)) {
> +    DEBUG ((DEBUG_ERROR, "Failed to get Asset Tag: %r\n", Status));
> +  }
> +  UnicodeStrToAsciiStrS(AssetTagVar, mChassisAssetTag, sizeof(mChassisAssetTag));
> +  DEBUG ((DEBUG_INFO, "System Asset Tag : %a\n", mChassisAssetTag));
> +
>     LogSmbiosData ((EFI_SMBIOS_TABLE_HEADER*)&mBoardInfoType2, mBoardInfoType2Strings, NULL);
>   }
>   
> diff --git a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni
> index 7195e497f986..2a468760c6a9 100644
> --- a/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni
> +++ b/Platform/RaspberryPi/Drivers/ConfigDxe/ConfigDxeHii.uni
> @@ -1,6 +1,7 @@
>   /** @file
>    *
>    *  Copyright (c) 2018, Andrei Warkentin <andrey.warkentin@gmail.com>
> + *  Copyright (c) 2020, ARM Limited. All rights reserved.
>    *
>    *  SPDX-License-Identifier: BSD-2-Clause-Patent
>    *
> @@ -47,6 +48,9 @@
>   #string STR_ADVANCED_SYSTAB_BOTH     #language en-US "ACPI + Devicetree"
>   #string STR_ADVANCED_SYSTAB_DT       #language en-US "Devicetree"
>   
> +#string STR_ADVANCED_ASSET_TAG_PROMPT #language en-US "Asset Tag"
> +#string STR_ADVANCED_ASSET_TAG_HELP   #language en-US "Set the system Asset Tag"
> +
>   /*
>    * MMC/SD configuration.
>    */
> 


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-06-12  8:57 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-08 20:41 [edk2-platform][PATCH v2 1/1] Platforms/RaspberryPi: Add Asset Tag support Samer El-Haj-Mahmoud
2020-06-12  8:57 ` [edk2-devel] " Ard Biesheuvel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox