@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
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
/// Optional pointer to the ACPI table data\r
EFI_ACPI_DESCRIPTION_HEADER * AcpiTableData;\r
\r
+ /// An OEM-supplied string that the OEM uses to identify the particular\r
+ /// data table. This field is particularly useful when defining a definition\r
+ /// block to distinguish definition block functions. The OEM assigns each\r
+ /// dissimilar table a new OEM Table ID.\r
+ /// This field could be constructed using the SIGNATURE_64() macro.\r
+ /// e.g. SIGNATURE_64 ('A','R','M','H','G','T','D','T')\r
+ /// Note: If this field is not populated (has value of Zero), then the\r
+ /// Generators shall populate this information using part of the\r
+ /// CM_STD_OBJ_CONFIGURATION_MANAGER_INFO.OemId field and the\r
+ /// ACPI table signature.\r
+ UINT64 OemTableId;\r
+\r
+ /// An OEM-supplied revision number. Larger numbers are assumed to be\r
+ /// newer revisions.\r
+ /// Note: If this field is not populated (has value of Zero), then the\r
+ /// Generators shall populate this information using the revision of the\r
+ /// Configuration Manager (CM_STD_OBJ_CONFIGURATION_MANAGER_INFO.Revision).\r
+ UINT32 OemRevision;\r
} CM_STD_OBJ_ACPI_TABLE_INFO;\r
\r
/** A structure used to describe the SMBIOS table generators to be invoked.\r
CfgMgrProtocol,\r
This,\r
(EFI_ACPI_DESCRIPTION_HEADER*)&AcpiDbg2,\r
- AcpiTableInfo->AcpiTableRevision,\r
+ AcpiTableInfo,\r
sizeof (DBG2_TABLE)\r
);\r
if (EFI_ERROR (Status)) {\r
CfgMgrProtocol,\r
This,\r
(EFI_ACPI_DESCRIPTION_HEADER*)&AcpiFadt,\r
- AcpiTableInfo->AcpiTableRevision,\r
+ AcpiTableInfo,\r
sizeof (EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE)\r
);\r
if (EFI_ERROR (Status)) {\r
CfgMgrProtocol,\r
This,\r
&Gtdt->Header,\r
- AcpiTableInfo->AcpiTableRevision,\r
+ AcpiTableInfo,\r
TableSize\r
);\r
if (EFI_ERROR (Status)) {\r
CfgMgrProtocol,\r
This,\r
&Iort->Header,\r
- AcpiTableInfo->AcpiTableRevision,\r
+ AcpiTableInfo,\r
TableSize\r
);\r
if (EFI_ERROR (Status)) {\r
CfgMgrProtocol,\r
This,\r
&Madt->Header,\r
- AcpiTableInfo->AcpiTableRevision,\r
+ AcpiTableInfo,\r
TableSize\r
);\r
if (EFI_ERROR (Status)) {\r
CfgMgrProtocol,\r
This,\r
&Mcfg->Header,\r
- AcpiTableInfo->AcpiTableRevision,\r
+ AcpiTableInfo,\r
TableSize\r
);\r
if (EFI_ERROR (Status)) {\r
CfgMgrProtocol,\r
This,\r
(EFI_ACPI_DESCRIPTION_HEADER*)&AcpiSpcr,\r
- AcpiTableInfo->AcpiTableRevision,\r
+ AcpiTableInfo,\r
sizeof (EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE)\r
);\r
if (EFI_ERROR (Status)) {\r
@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
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
// 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
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