1 /** @file 2 Header file for NV data structure definition. 3 4 Copyright (c) 2015, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 **/ 14 15 #ifndef __TCG2_CONFIG_NV_DATA_H__ 16 #define __TCG2_CONFIG_NV_DATA_H__ 17 18 #include <Guid/HiiPlatformSetupFormset.h> 19 #include <Guid/Tcg2ConfigHii.h> 20 #include <IndustryStandard/TcgPhysicalPresence.h> 21 22 // 23 // BUGBUG: In order to pass VfrCompiler, we have to redefine below MACRO, which already in <Protocol/Tcg2Protocol.h>. 24 // 25 #ifndef __TCG2_H__ 26 #define EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 0x00000001 27 #define EFI_TCG2_EVENT_LOG_FORMAT_TCG_2 0x00000002 28 #endif 29 #define EFI_TCG2_EVENT_LOG_FORMAT_ALL (EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 | EFI_TCG2_EVENT_LOG_FORMAT_TCG_2) 30 31 #define TCG2_CONFIGURATION_VARSTORE_ID 0x0001 32 #define TCG2_CONFIGURATION_INFO_VARSTORE_ID 0x0002 33 #define TCG2_CONFIGURATION_FORM_ID 0x0001 34 35 #define KEY_TPM_DEVICE 0x2000 36 #define KEY_TPM2_OPERATION 0x2001 37 #define KEY_TPM2_OPERATION_PARAMETER 0x2002 38 #define KEY_TPM2_PCR_BANKS_REQUEST_0 0x2003 39 #define KEY_TPM2_PCR_BANKS_REQUEST_1 0x2004 40 #define KEY_TPM2_PCR_BANKS_REQUEST_2 0x2005 41 #define KEY_TPM2_PCR_BANKS_REQUEST_3 0x2006 42 #define KEY_TPM2_PCR_BANKS_REQUEST_4 0x2007 43 44 #define TPM_DEVICE_NULL 0 45 #define TPM_DEVICE_1_2 1 46 #define TPM_DEVICE_2_0_DTPM 2 47 #define TPM_DEVICE_MIN TPM_DEVICE_1_2 48 #define TPM_DEVICE_MAX TPM_DEVICE_2_0_DTPM 49 #define TPM_DEVICE_DEFAULT TPM_DEVICE_1_2 50 51 #define TCG2_PROTOCOL_VERSION_DEFAULT 0x0001 52 #define EFI_TCG2_EVENT_LOG_FORMAT_DEFAULT EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 53 54 // 55 // Nv Data structure referenced by IFR, TPM device user desired 56 // 57 typedef struct { 58 UINT8 TpmDevice; 59 } TCG2_CONFIGURATION; 60 61 typedef struct { 62 UINT8 Sha1Supported; 63 UINT8 Sha256Supported; 64 UINT8 Sha384Supported; 65 UINT8 Sha512Supported; 66 UINT8 Sm3Supported; 67 } TCG2_CONFIGURATION_INFO; 68 69 // 70 // Variable saved for S3, TPM detected, only valid in S3 path. 71 // This variable is ReadOnly. 72 // 73 typedef struct { 74 UINT8 TpmDeviceDetected; 75 } TCG2_DEVICE_DETECTION; 76 77 #define TCG2_STORAGE_NAME L"TCG2_CONFIGURATION" 78 #define TCG2_STORAGE_INFO_NAME L"TCG2_CONFIGURATION_INFO" 79 #define TCG2_DEVICE_DETECTION_NAME L"TCG2_DEVICE_DETECTION" 80 81 #define TPM_INSTANCE_ID_LIST { \ 82 {TPM_DEVICE_INTERFACE_NONE, TPM_DEVICE_NULL}, \ 83 {TPM_DEVICE_INTERFACE_TPM12, TPM_DEVICE_1_2}, \ 84 {TPM_DEVICE_INTERFACE_TPM20_DTPM, TPM_DEVICE_2_0_DTPM}, \ 85 } 86 87 // 88 // BUGBUG: In order to pass VfrCompiler, we have to redefine GUID here. 89 // 90 #ifndef __BASE_H__ 91 typedef struct { 92 UINT32 Data1; 93 UINT16 Data2; 94 UINT16 Data3; 95 UINT8 Data4[8]; 96 } GUID; 97 #endif 98 99 typedef struct { 100 GUID TpmInstanceGuid; 101 UINT8 TpmDevice; 102 } TPM_INSTANCE_ID; 103 104 #endif 105