1 /** @file
2   TPM2 ACPI table definition.
3 
4 Copyright (c) 2013 - 2019, Intel Corporation. All rights reserved. <BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6 
7 **/
8 
9 #ifndef _TPM2_ACPI_H_
10 #define _TPM2_ACPI_H_
11 
12 #include <IndustryStandard/Acpi.h>
13 
14 #pragma pack (1)
15 
16 #define EFI_TPM2_ACPI_TABLE_REVISION_3  3
17 #define EFI_TPM2_ACPI_TABLE_REVISION_4  4
18 #define EFI_TPM2_ACPI_TABLE_REVISION    EFI_TPM2_ACPI_TABLE_REVISION_4
19 
20 typedef struct {
21   EFI_ACPI_DESCRIPTION_HEADER Header;
22   // Flags field is replaced in version 4 and above
23   //    BIT0~15:  PlatformClass      This field is only valid for version 4 and above
24   //    BIT16~31: Reserved
25   UINT32                      Flags;
26   UINT64                      AddressOfControlArea;
27   UINT32                      StartMethod;
28 //UINT8                       PlatformSpecificParameters[];  // size up to 12
29 //UINT32                      Laml;                          // Optional
30 //UINT64                      Lasa;                          // Optional
31 } EFI_TPM2_ACPI_TABLE;
32 
33 #define EFI_TPM2_ACPI_TABLE_START_METHOD_ACPI                                          2
34 #define EFI_TPM2_ACPI_TABLE_START_METHOD_TIS                                           6
35 #define EFI_TPM2_ACPI_TABLE_START_METHOD_COMMAND_RESPONSE_BUFFER_INTERFACE             7
36 #define EFI_TPM2_ACPI_TABLE_START_METHOD_COMMAND_RESPONSE_BUFFER_INTERFACE_WITH_ACPI   8
37 #define EFI_TPM2_ACPI_TABLE_START_METHOD_COMMAND_RESPONSE_BUFFER_INTERFACE_WITH_SMC    11
38 
39 typedef struct {
40   UINT32   Reserved;
41   UINT32   Error;
42   UINT32   Cancel;
43   UINT32   Start;
44   UINT64   InterruptControl;
45   UINT32   CommandSize;
46   UINT64   Command;
47   UINT32   ResponseSize;
48   UINT64   Response;
49 } EFI_TPM2_ACPI_CONTROL_AREA;
50 
51 #pragma pack ()
52 
53 #endif
54