1/** @file 2 Header file for NV data structure definition. 3 4Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR> 5This program and the accompanying materials 6are licensed and made available under the terms and conditions of the BSD License 7which accompanies this distribution. The full text of the license may be found at 8http://opensource.org/licenses/bsd-license.php 9 10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11WITHOUT 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#define KEY_TPM_DEVICE_INTERFACE 0x2008 44 45#define TPM_DEVICE_NULL 0 46#define TPM_DEVICE_1_2 1 47#define TPM_DEVICE_2_0_DTPM 2 48#define TPM_DEVICE_MIN TPM_DEVICE_1_2 49#define TPM_DEVICE_MAX TPM_DEVICE_2_0_DTPM 50#define TPM_DEVICE_DEFAULT TPM_DEVICE_1_2 51 52#define TPM_DEVICE_INTERFACE_TIS 0 53#define TPM_DEVICE_INTERFACE_PTP_FIFO 1 54#define TPM_DEVICE_INTERFACE_PTP_CRB 2 55#define TPM_DEVICE_INTERFACE_MAX TPM_DEVICE_INTERFACE_PTP_FIFO 56#define TPM_DEVICE_INTERFACE_DEFAULT TPM_DEVICE_INTERFACE_PTP_CRB 57 58#define TCG2_PROTOCOL_VERSION_DEFAULT 0x0001 59#define EFI_TCG2_EVENT_LOG_FORMAT_DEFAULT EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 60 61// 62// Nv Data structure referenced by IFR, TPM device user desired 63// 64typedef struct { 65 UINT8 TpmDevice; 66} TCG2_CONFIGURATION; 67 68typedef struct { 69 BOOLEAN Sha1Supported; 70 BOOLEAN Sha256Supported; 71 BOOLEAN Sha384Supported; 72 BOOLEAN Sha512Supported; 73 BOOLEAN Sm3Supported; 74 UINT8 TpmDeviceInterfaceAttempt; 75 BOOLEAN TpmDeviceInterfacePtpFifoSupported; 76 BOOLEAN TpmDeviceInterfacePtpCrbSupported; 77} TCG2_CONFIGURATION_INFO; 78 79// 80// Variable saved for S3, TPM detected, only valid in S3 path. 81// This variable is ReadOnly. 82// 83typedef struct { 84 UINT8 TpmDeviceDetected; 85} TCG2_DEVICE_DETECTION; 86 87#define TCG2_STORAGE_NAME L"TCG2_CONFIGURATION" 88#define TCG2_STORAGE_INFO_NAME L"TCG2_CONFIGURATION_INFO" 89#define TCG2_DEVICE_DETECTION_NAME L"TCG2_DEVICE_DETECTION" 90 91#define TPM_INSTANCE_ID_LIST { \ 92 {TPM_DEVICE_INTERFACE_NONE, TPM_DEVICE_NULL}, \ 93 {TPM_DEVICE_INTERFACE_TPM12, TPM_DEVICE_1_2}, \ 94 {TPM_DEVICE_INTERFACE_TPM20_DTPM, TPM_DEVICE_2_0_DTPM}, \ 95} 96 97// 98// BUGBUG: In order to pass VfrCompiler, we have to redefine GUID here. 99// 100#ifndef __BASE_H__ 101typedef struct { 102 UINT32 Data1; 103 UINT16 Data2; 104 UINT16 Data3; 105 UINT8 Data4[8]; 106} GUID; 107#endif 108 109typedef struct { 110 GUID TpmInstanceGuid; 111 UINT8 TpmDevice; 112} TPM_INSTANCE_ID; 113 114#endif 115