]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DynamicTablesPkg/Library/Common/TableHelperLib/TableHelper.c
DynamicTablesPkg: Add OEM Info
[mirror_edk2.git] / DynamicTablesPkg / Library / Common / TableHelperLib / TableHelper.c
index 02860ddf233b4a44c30450c8c090b416f1e07d81..203207bac2b202f568072b68e8cb25c5c258045f 100644 (file)
@@ -100,7 +100,7 @@ GetCgfMgrInfo (
   @param [in]     Generator      Pointer to the ACPI table Generator.\r
   @param [in,out] AcpiHeader     Pointer to the ACPI table header to be\r
                                  updated.\r
-  @param [in]     Revision       Revision of the ACPI table.\r
+  @param [in]     AcpiTableInfo  Pointer to the ACPI table info structure.\r
   @param [in]     Length         Length of the ACPI table.\r
 \r
   @retval EFI_SUCCESS           The ACPI table is updated successfully.\r
@@ -116,7 +116,7 @@ AddAcpiHeader (
   IN      CONST EDKII_CONFIGURATION_MANAGER_PROTOCOL  * CONST CfgMgrProtocol,\r
   IN      CONST ACPI_TABLE_GENERATOR                  * CONST Generator,\r
   IN OUT  EFI_ACPI_DESCRIPTION_HEADER                 * CONST AcpiHeader,\r
-  IN      CONST UINT32                                        Revision,\r
+  IN      CONST CM_STD_OBJ_ACPI_TABLE_INFO            * CONST AcpiTableInfo,\r
   IN      CONST UINT32                                        Length\r
   )\r
 {\r
@@ -151,7 +151,7 @@ AddAcpiHeader (
   // UINT32  Length\r
   AcpiHeader->Length = Length;\r
   // UINT8   Revision\r
-  AcpiHeader->Revision = Revision;\r
+  AcpiHeader->Revision = AcpiTableInfo->AcpiTableRevision;\r
   // UINT8   Checksum\r
   AcpiHeader->Checksum = 0;\r
 \r
@@ -159,12 +159,24 @@ AddAcpiHeader (
   CopyMem (AcpiHeader->OemId, CfgMfrInfo->OemId, sizeof (AcpiHeader->OemId));\r
 \r
   // UINT64  OemTableId\r
-  AcpiHeader->OemTableId = Generator->CreatorId;\r
-  AcpiHeader->OemTableId <<= 32;\r
-  AcpiHeader->OemTableId |= Generator->AcpiTableSignature;\r
+  if (AcpiTableInfo->OemTableId != 0) {\r
+    AcpiHeader->OemTableId = AcpiTableInfo->OemTableId;\r
+  } else {\r
+    AcpiHeader->OemTableId = SIGNATURE_32 (\r
+                               CfgMfrInfo->OemId[0],\r
+                               CfgMfrInfo->OemId[1],\r
+                               CfgMfrInfo->OemId[2],\r
+                               CfgMfrInfo->OemId[3]\r
+                               ) |\r
+                             ((UINT64)Generator->AcpiTableSignature << 32);\r
+  }\r
 \r
   // UINT32  OemRevision\r
-  AcpiHeader->OemRevision = CfgMfrInfo->Revision;\r
+  if (AcpiTableInfo->OemRevision != 0) {\r
+    AcpiHeader->OemRevision = AcpiTableInfo->OemRevision;\r
+  } else {\r
+    AcpiHeader->OemRevision = CfgMfrInfo->Revision;\r
+  }\r
 \r
   // UINT32  CreatorId\r
   AcpiHeader->CreatorId = Generator->CreatorId;\r