/** @file\r
TPM2 ACPI table definition.\r
\r
-Copyright (c) 2013, Intel Corporation. All rights reserved. <BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2013 - 2019, Intel Corporation. All rights reserved. <BR>\r
+Copyright (c) 2021, Ampere Computing LLC. All rights reserved. <BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
\r
#pragma pack (1)\r
\r
-#define EFI_TPM2_ACPI_TABLE_REVISION 3\r
+#define EFI_TPM2_ACPI_TABLE_REVISION_3 3\r
+#define EFI_TPM2_ACPI_TABLE_REVISION_4 4\r
+#define EFI_TPM2_ACPI_TABLE_REVISION EFI_TPM2_ACPI_TABLE_REVISION_4\r
\r
typedef struct {\r
- EFI_ACPI_DESCRIPTION_HEADER Header;\r
- UINT32 Flags;\r
- UINT64 AddressOfControlArea;\r
- UINT32 StartMethod;\r
-//UINT8 PlatformSpecificParameters[];\r
+ EFI_ACPI_DESCRIPTION_HEADER Header;\r
+ // Flags field is replaced in version 4 and above\r
+ // BIT0~15: PlatformClass This field is only valid for version 4 and above\r
+ // BIT16~31: Reserved\r
+ UINT32 Flags;\r
+ UINT64 AddressOfControlArea;\r
+ UINT32 StartMethod;\r
+ // UINT8 PlatformSpecificParameters[]; // size up to 12\r
+ // UINT32 Laml; // Optional\r
+ // UINT64 Lasa; // Optional\r
} EFI_TPM2_ACPI_TABLE;\r
\r
-#define EFI_TPM2_ACPI_TABLE_START_METHOD_ACPI 2\r
-#define EFI_TPM2_ACPI_TABLE_START_METHOD_TIS 6\r
-#define EFI_TPM2_ACPI_TABLE_START_METHOD_COMMAND_RESPONSE_BUFFER_INTERFACE 7\r
-#define EFI_TPM2_ACPI_TABLE_START_METHOD_COMMAND_RESPONSE_BUFFER_INTERFACE_WITH_ACPI 8\r
+#define EFI_TPM2_ACPI_TABLE_START_METHOD_ACPI 2\r
+#define EFI_TPM2_ACPI_TABLE_START_METHOD_TIS 6\r
+#define EFI_TPM2_ACPI_TABLE_START_METHOD_COMMAND_RESPONSE_BUFFER_INTERFACE 7\r
+#define EFI_TPM2_ACPI_TABLE_START_METHOD_COMMAND_RESPONSE_BUFFER_INTERFACE_WITH_ACPI 8\r
+#define EFI_TPM2_ACPI_TABLE_START_METHOD_COMMAND_RESPONSE_BUFFER_INTERFACE_WITH_SMC 11\r
\r
typedef struct {\r
- UINT32 Reserved;\r
- UINT32 Error;\r
- UINT32 Cancel;\r
- UINT32 Start;\r
- UINT64 InterruptControl;\r
- UINT32 CommandSize;\r
- UINT64 Command;\r
- UINT32 ResponseSize;\r
- UINT64 Response;\r
+ UINT32 Reserved;\r
+ UINT32 Error;\r
+ UINT32 Cancel;\r
+ UINT32 Start;\r
+ UINT64 InterruptControl;\r
+ UINT32 CommandSize;\r
+ UINT64 Command;\r
+ UINT32 ResponseSize;\r
+ UINT64 Response;\r
} EFI_TPM2_ACPI_CONTROL_AREA;\r
\r
+//\r
+// Start Method Specific Parameters for ARM SMC Start Method (11)\r
+// Refer to Table 9: Start Method Specific Parameters for ARM SMC\r
+//\r
+typedef struct {\r
+ UINT32 Interrupt;\r
+ UINT8 Flags;\r
+ UINT8 OperationFlags;\r
+ UINT8 Reserved[2];\r
+ UINT32 SmcFunctionId;\r
+} EFI_TPM2_ACPI_START_METHOD_SPECIFIC_PARAMETERS_ARM_SMC;\r
+\r
#pragma pack ()\r
\r
#endif\r