]> git.proxmox.com Git - mirror_edk2.git/blame - SecurityPkg/Tcg/Tcg2Config/Tcg2ConfigNvData.h
SecurityPkg: Cache TPM interface type info
[mirror_edk2.git] / SecurityPkg / Tcg / Tcg2Config / Tcg2ConfigNvData.h
CommitLineData
1abfa4ce
JY
1/** @file\r
2 Header file for NV data structure definition.\r
3\r
dd6d0a52 4Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>\r
1abfa4ce
JY
5This program and the accompanying materials \r
6are licensed and made available under the terms and conditions of the BSD License \r
7which accompanies this distribution. The full text of the license may be found at \r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef __TCG2_CONFIG_NV_DATA_H__\r
16#define __TCG2_CONFIG_NV_DATA_H__\r
17\r
18#include <Guid/HiiPlatformSetupFormset.h>\r
19#include <Guid/Tcg2ConfigHii.h>\r
20#include <IndustryStandard/TcgPhysicalPresence.h>\r
21\r
22//\r
23// BUGBUG: In order to pass VfrCompiler, we have to redefine below MACRO, which already in <Protocol/Tcg2Protocol.h>.\r
24//\r
25#ifndef __TCG2_H__\r
26#define EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 0x00000001\r
27#define EFI_TCG2_EVENT_LOG_FORMAT_TCG_2 0x00000002\r
28#endif\r
29#define EFI_TCG2_EVENT_LOG_FORMAT_ALL (EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 | EFI_TCG2_EVENT_LOG_FORMAT_TCG_2)\r
30\r
31#define TCG2_CONFIGURATION_VARSTORE_ID 0x0001\r
fca42289 32#define TCG2_CONFIGURATION_INFO_VARSTORE_ID 0x0002\r
dd6d0a52 33#define TCG2_VERSION_VARSTORE_ID 0x0003\r
1abfa4ce
JY
34#define TCG2_CONFIGURATION_FORM_ID 0x0001\r
35\r
36#define KEY_TPM_DEVICE 0x2000\r
37#define KEY_TPM2_OPERATION 0x2001\r
38#define KEY_TPM2_OPERATION_PARAMETER 0x2002\r
39#define KEY_TPM2_PCR_BANKS_REQUEST_0 0x2003\r
40#define KEY_TPM2_PCR_BANKS_REQUEST_1 0x2004\r
41#define KEY_TPM2_PCR_BANKS_REQUEST_2 0x2005\r
42#define KEY_TPM2_PCR_BANKS_REQUEST_3 0x2006\r
43#define KEY_TPM2_PCR_BANKS_REQUEST_4 0x2007\r
518b6f65 44#define KEY_TPM_DEVICE_INTERFACE 0x2008\r
dd6d0a52 45#define KEY_TCG2_PPI_VERSION 0x2009\r
fca42289 46#define KEY_TPM2_ACPI_REVISION 0x200A\r
1abfa4ce
JY
47\r
48#define TPM_DEVICE_NULL 0\r
49#define TPM_DEVICE_1_2 1\r
50#define TPM_DEVICE_2_0_DTPM 2\r
51#define TPM_DEVICE_MIN TPM_DEVICE_1_2\r
52#define TPM_DEVICE_MAX TPM_DEVICE_2_0_DTPM\r
53#define TPM_DEVICE_DEFAULT TPM_DEVICE_1_2\r
54\r
fca42289
ZC
55#define TPM2_ACPI_REVISION_3 3\r
56#define TPM2_ACPI_REVISION_4 4\r
57\r
518b6f65
JY
58#define TPM_DEVICE_INTERFACE_TIS 0\r
59#define TPM_DEVICE_INTERFACE_PTP_FIFO 1\r
60#define TPM_DEVICE_INTERFACE_PTP_CRB 2\r
61#define TPM_DEVICE_INTERFACE_MAX TPM_DEVICE_INTERFACE_PTP_FIFO\r
62#define TPM_DEVICE_INTERFACE_DEFAULT TPM_DEVICE_INTERFACE_PTP_CRB\r
63\r
1abfa4ce
JY
64#define TCG2_PROTOCOL_VERSION_DEFAULT 0x0001\r
65#define EFI_TCG2_EVENT_LOG_FORMAT_DEFAULT EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2\r
66\r
dd6d0a52
SZ
67#define TCG2_PPI_VERSION_1_2 0x322E31 // "1.2"\r
68#define TCG2_PPI_VERSION_1_3 0x332E31 // "1.3" \r
69\r
1abfa4ce
JY
70//\r
71// Nv Data structure referenced by IFR, TPM device user desired\r
72//\r
73typedef struct {\r
74 UINT8 TpmDevice;\r
75} TCG2_CONFIGURATION;\r
76\r
dd6d0a52
SZ
77typedef struct {\r
78 UINT64 PpiVersion;\r
fca42289 79 UINT8 Tpm2AcpiTableRev;\r
dd6d0a52
SZ
80} TCG2_VERSION;\r
81\r
c41eeb44 82typedef struct {\r
518b6f65
JY
83 BOOLEAN Sha1Supported;\r
84 BOOLEAN Sha256Supported;\r
85 BOOLEAN Sha384Supported;\r
86 BOOLEAN Sha512Supported;\r
87 BOOLEAN Sm3Supported;\r
88 UINT8 TpmDeviceInterfaceAttempt;\r
89 BOOLEAN TpmDeviceInterfacePtpFifoSupported;\r
90 BOOLEAN TpmDeviceInterfacePtpCrbSupported;\r
c41eeb44
JY
91} TCG2_CONFIGURATION_INFO;\r
92\r
1abfa4ce
JY
93//\r
94// Variable saved for S3, TPM detected, only valid in S3 path.\r
95// This variable is ReadOnly.\r
96//\r
97typedef struct {\r
98 UINT8 TpmDeviceDetected;\r
99} TCG2_DEVICE_DETECTION;\r
100\r
c41eeb44
JY
101#define TCG2_STORAGE_NAME L"TCG2_CONFIGURATION"\r
102#define TCG2_STORAGE_INFO_NAME L"TCG2_CONFIGURATION_INFO"\r
1abfa4ce 103#define TCG2_DEVICE_DETECTION_NAME L"TCG2_DEVICE_DETECTION"\r
dd6d0a52 104#define TCG2_VERSION_NAME L"TCG2_VERSION"\r
1abfa4ce
JY
105\r
106#define TPM_INSTANCE_ID_LIST { \\r
107 {TPM_DEVICE_INTERFACE_NONE, TPM_DEVICE_NULL}, \\r
108 {TPM_DEVICE_INTERFACE_TPM12, TPM_DEVICE_1_2}, \\r
109 {TPM_DEVICE_INTERFACE_TPM20_DTPM, TPM_DEVICE_2_0_DTPM}, \\r
110}\r
111\r
112//\r
113// BUGBUG: In order to pass VfrCompiler, we have to redefine GUID here.\r
114//\r
115#ifndef __BASE_H__\r
116typedef struct {\r
117 UINT32 Data1;\r
118 UINT16 Data2;\r
119 UINT16 Data3;\r
120 UINT8 Data4[8];\r
121} GUID;\r
122#endif\r
123\r
124typedef struct {\r
125 GUID TpmInstanceGuid;\r
126 UINT8 TpmDevice;\r
127} TPM_INSTANCE_ID;\r
128\r
129#endif\r