summaryrefslogtreecommitdiff
path: root/Core/EM/TCG2/Common/Protocol
diff options
context:
space:
mode:
Diffstat (limited to 'Core/EM/TCG2/Common/Protocol')
-rw-r--r--Core/EM/TCG2/Common/Protocol/TcgService/TcgService.c66
-rw-r--r--Core/EM/TCG2/Common/Protocol/TcgService/TcgService.h171
-rw-r--r--Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.c75
-rw-r--r--Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.h167
-rw-r--r--Core/EM/TCG2/Common/Protocol/TcgService_Protocol.cif11
-rw-r--r--Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.c60
-rw-r--r--Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.h197
-rw-r--r--Core/EM/TCG2/Common/Protocol/TpmDevice_Protocol.cif9
8 files changed, 756 insertions, 0 deletions
diff --git a/Core/EM/TCG2/Common/Protocol/TcgService/TcgService.c b/Core/EM/TCG2/Common/Protocol/TcgService/TcgService.c
new file mode 100644
index 0000000..afa983b
--- /dev/null
+++ b/Core/EM/TCG2/Common/Protocol/TcgService/TcgService.c
@@ -0,0 +1,66 @@
+/*++
+
+ Copyright (c) 2006, Intel Corporation
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+
+ Abstract:
+
+ TcgService Protocol GUID as defined in TCG_EFI_Protocol_1_20_Final
+
+ See http://trustedcomputinggroup.org for the latest specification
+
+ --*/
+//*************************************************************************
+// $Header: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgService.c 1 4/21/14 2:15p Fredericko $
+//
+// $Revision: 1 $
+//
+// $Date: 4/21/14 2:15p $
+//*************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgService.c $
+//
+// 1 4/21/14 2:15p Fredericko
+//
+// 1 10/08/13 12:00p Fredericko
+// Initial Check-In for Tpm-Next module
+//
+// 1 7/10/13 5:58p Fredericko
+// [TAG] EIP120969
+// [Category] New Feature
+// [Description] TCG (TPM20)
+//
+// 2 5/20/10 8:44a Fredericko
+// Included File Header
+// Included File Revision History
+// EIP 37653
+//
+//*************************************************************************
+//*************************************************************************
+//<AMI_FHDR_START>
+//
+// Name: TcgService.c
+//
+// Description:
+// Defines Tcg Protocol guid
+//
+//<AMI_FHDR_END>
+//*************************************************************************
+
+#include <Tiano.h>
+
+#include EFI_PROTOCOL_DEFINITION( TcgService )
+
+EFI_GUID gEfiTcgProtocolGuid = EFI_TCG_PROTOCOL_GUID;
+
+EFI_GUID_STRING( &gEfiTcgServiceProtocolGuid,
+ "TcgService",
+ "TCG Services Protocol" );
diff --git a/Core/EM/TCG2/Common/Protocol/TcgService/TcgService.h b/Core/EM/TCG2/Common/Protocol/TcgService/TcgService.h
new file mode 100644
index 0000000..f6f3960
--- /dev/null
+++ b/Core/EM/TCG2/Common/Protocol/TcgService/TcgService.h
@@ -0,0 +1,171 @@
+/*++
+
+ Copyright (c) 2006, Intel Corporation
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ Abstract:
+
+ TCG Service Protocol as defined in TCG_EFI_Protocol_1_20_Final
+
+ See http://trustedcomputinggroup.org for the latest specification
+
+ --*/
+//*************************************************************************
+// $Header: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgService.h 1 4/21/14 2:15p Fredericko $
+//
+// $Revision: 1 $
+//
+// $Date: 4/21/14 2:15p $
+//*************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgService.h $
+//
+// 1 4/21/14 2:15p Fredericko
+//
+// 1 10/08/13 12:00p Fredericko
+// Initial Check-In for Tpm-Next module
+//
+// 1 7/10/13 5:58p Fredericko
+// [TAG] EIP120969
+// [Category] New Feature
+// [Description] TCG (TPM20)
+//
+// 6 3/29/11 3:01p Fredericko
+//
+// 5 3/28/11 3:22p Fredericko
+// [TAG] EIP 54642
+// [Category] Improvement
+// [Description] 1. Checkin Files related to TCG function override
+// 2. Include TCM and TPM auto detection
+// [Files] Affects all TCG files
+//
+// 4 5/20/10 8:44a Fredericko
+// Included File Header
+// Included File Revision History
+// EIP 37653
+//
+//*************************************************************************
+//*************************************************************************
+//<AMI_FHDR_START>
+//
+// Name: TcgService.h
+//
+// Description:
+// Header file for TcgService.c [Protocol]
+//
+//<AMI_FHDR_END>
+//*************************************************************************
+#ifndef _TCG_SERVICE_PROTOCOL_H_
+#define _TCG_SERVICE_PROTOCOL_H_
+
+#include "TcgEfiTpm.h"
+
+#define EFI_TCG_PROTOCOL_GUID \
+ {0xf541796d, 0xa62e, 0x4954, 0xa7, 0x75, 0x95, 0x84, 0xf6, 0x1b, 0x9c, 0xdd}
+
+#define TSS_EVENT_DATA_MAX_SIZE 256
+
+EFI_FORWARD_DECLARATION( EFI_TCG_PROTOCOL );
+
+//
+// Set structure alignment to 1-byte
+//
+#pragma pack (push, 1)
+
+typedef struct
+{
+ UINT8 Major;
+ UINT8 Minor;
+ UINT8 RevMajor;
+ UINT8 RevMinor;
+} TCG_VERSION;
+
+typedef struct _TCG_EFI_BOOT_SERVICE_CAPABILITY
+{
+ UINT8 Size; // Size of this structure
+ TCG_VERSION StructureVersion;
+ TCG_VERSION ProtocolSpecVersion;
+ UINT8 HashAlgorithmBitmap; // Hash algorithms
+ // this protocol is capable of : 01=SHA-1
+ BOOLEAN TPMPresentFlag; // 00h = TPM not present
+ BOOLEAN TPMDeactivatedFlag; // 01h = TPM currently deactivated
+} TCG_EFI_BOOT_SERVICE_CAPABILITY;
+
+typedef UINT32 TCG_ALGORITHM_ID;
+//
+// Restore original structure alignment
+//
+#pragma pack (pop)
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TCG_STATUS_CHECK)(
+ IN EFI_TCG_PROTOCOL *This,
+ OUT TCG_EFI_BOOT_SERVICE_CAPABILITY
+ *ProtocolCapability,
+ OUT UINT32 *TCGFeatureFlags,
+ OUT EFI_PHYSICAL_ADDRESS *EventLogLocation,
+ OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TCG_HASH_ALL)(
+ IN EFI_TCG_PROTOCOL *This,
+ IN UINT8 *HashData,
+ IN UINT64 HashDataLen,
+ IN TCG_ALGORITHM_ID AlgorithmId,
+ IN OUT UINT64 *HashedDataLen,
+ IN OUT UINT8 **HashedDataResult
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TCG_LOG_EVENT)(
+ IN EFI_TCG_PROTOCOL *This,
+ IN TCG_PCR_EVENT *TCGLogData,
+ IN OUT UINT32 *EventNumber,
+ IN UINT32 Flags
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TCG_PASS_THROUGH_TO_TPM)(
+ IN EFI_TCG_PROTOCOL *This,
+ IN UINT32 TpmInputParamterBlockSize,
+ IN UINT8 *TpmInputParamterBlock,
+ IN UINT32 TpmOutputParameterBlockSize,
+ IN UINT8 *TpmOutputParameterBlock
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TCG_HASH_LOG_EXTEND_EVENT)(
+ IN EFI_TCG_PROTOCOL *This,
+ IN EFI_PHYSICAL_ADDRESS HashData,
+ IN UINT64 HashDataLen,
+ IN TCG_ALGORITHM_ID AlgorithmId,
+ IN OUT TCG_PCR_EVENT *TCGLogData,
+ IN OUT UINT32 *EventNumber,
+ OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry
+ );
+
+typedef struct _EFI_TCG_PROTOCOL
+{
+ EFI_TCG_STATUS_CHECK StatusCheck;
+ EFI_TCG_HASH_ALL HashAll;
+ EFI_TCG_LOG_EVENT LogEvent;
+ EFI_TCG_PASS_THROUGH_TO_TPM PassThroughToTpm;
+ EFI_TCG_HASH_LOG_EXTEND_EVENT HashLogExtendEvent;
+} EFI_TCG_PROTOCOL;
+
+extern EFI_GUID gEfiTcgProtocolGuid;
+
+#endif
diff --git a/Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.c b/Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.c
new file mode 100644
index 0000000..fcf3611
--- /dev/null
+++ b/Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.c
@@ -0,0 +1,75 @@
+/*++
+
+ Copyright (c) 2006, Intel Corporation
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+
+ Abstract:
+
+ TcgService Protocol GUID as defined in TCG_EFI_Protocol_1_20_Final
+
+ See http://trustedcomputinggroup.org for the latest specification
+
+ --*/
+//*************************************************************************
+// $Header: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgTcmService.c 1 4/21/14 2:15p Fredericko $
+//
+// $Revision: 1 $
+//
+// $Date: 4/21/14 2:15p $
+//*************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgTcmService.c $
+//
+// 1 4/21/14 2:15p Fredericko
+//
+// 1 10/08/13 12:00p Fredericko
+// Initial Check-In for Tpm-Next module
+//
+// 1 7/10/13 5:58p Fredericko
+// [TAG] EIP120969
+// [Category] New Feature
+// [Description] TCG (TPM20)
+//
+// 2 3/29/11 3:03p Fredericko
+//
+// 1 3/28/11 3:20p Fredericko
+// [TAG] EIP 54642
+// [Category] Improvement
+// [Description] 1. Checkin Files related to TCG function override
+// 2. Include TCM and TPM auto detection
+// [Files] Affects all TCG files
+//
+// 2 5/20/10 8:44a Fredericko
+// Included File Header
+// Included File Revision History
+// EIP 37653
+//
+//*************************************************************************
+//*************************************************************************
+//<AMI_FHDR_START>
+//
+// Name: TcgService.c
+//
+// Description:
+// Defines Tcg Protocol guid
+//
+//<AMI_FHDR_END>
+//*************************************************************************
+
+#include <Tiano.h>
+
+#include EFI_PROTOCOL_DEFINITION( TcgTcmService )
+
+EFI_GUID gEfiTcgProtocolGuid = EFI_TCG_PROTOCOL_GUID;
+
+EFI_GUID_STRING( &gEfiTcgServiceProtocolGuid,
+ "TcgTcmService",
+ "TCM Services Protocol" );
diff --git a/Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.h b/Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.h
new file mode 100644
index 0000000..829b40b
--- /dev/null
+++ b/Core/EM/TCG2/Common/Protocol/TcgService/TcgTcmService.h
@@ -0,0 +1,167 @@
+/*++
+
+ Copyright (c) 2006, Intel Corporation
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ Abstract:
+
+ TCG Service Protocol as defined in TCG_EFI_Protocol_1_20_Final
+
+ See http://trustedcomputinggroup.org for the latest specification
+
+ --*/
+//*************************************************************************
+// $Header: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgTcmService.h 1 4/21/14 2:15p Fredericko $
+//
+// $Revision: 1 $
+//
+// $Date: 4/21/14 2:15p $
+//*************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TcgService_Protocol/TcgService/TcgTcmService.h $
+//
+// 1 4/21/14 2:15p Fredericko
+//
+// 1 10/08/13 12:00p Fredericko
+// Initial Check-In for Tpm-Next module
+//
+// 1 7/10/13 5:58p Fredericko
+// [TAG] EIP120969
+// [Category] New Feature
+// [Description] TCG (TPM20)
+//
+// 2 3/29/11 3:02p Fredericko
+//
+// 1 3/28/11 3:20p Fredericko
+// [TAG] EIP 54642
+// [Category] Improvement
+// [Description] 1. Checkin Files related to TCG function override
+// 2. Include TCM and TPM auto detection
+// [Files] Affects all TCG files
+//
+// 4 5/20/10 8:44a Fredericko
+// Included File Header
+// Included File Revision History
+// EIP 37653
+//
+//*************************************************************************
+//*************************************************************************
+//<AMI_FHDR_START>
+//
+// Name: TcgService.h
+//
+// Description:
+// Header file for TcgService.c [Protocol]
+//
+//<AMI_FHDR_END>
+//*************************************************************************
+#ifndef _TCG_TCM_SERVICE_PROTOCOL_H_
+#define _TCG_TCM_SERVICE_PROTOCOL_H_
+
+#include "TcgEfiTpm.h"
+
+#define EFI_TCG_PROTOCOL_GUID \
+ {0xf541796d, 0xa62e, 0x4954, 0xa7, 0x75, 0x95, 0x84, 0xf6, 0x1b, 0x9c, 0xdd}
+
+#define TSS_EVENT_DATA_MAX_SIZE 256
+
+EFI_FORWARD_DECLARATION( EFI_TCM_PROTOCOL );
+// Set structure alignment to 1-byte
+//
+#pragma pack (push, 1)
+
+typedef struct
+{
+ UINT8 Major;
+ UINT8 Minor;
+ UINT8 RevMajor;
+ UINT8 RevMinor;
+} TCM_VERSION;
+
+typedef struct _TCM_EFI_BOOT_SERVICE_CAPABILITY
+{
+ UINT8 Size; // Size of this structure
+ TCM_VERSION StructureVersion;
+ TCM_VERSION ProtocolSpecVersion;
+ UINT8 HashAlgorithmBitmap; // Hash algorithms
+ // this protocol is capable of : 01=SHA-1
+ BOOLEAN TPMPresentFlag; // 00h = TPM not present
+ BOOLEAN TPMDeactivatedFlag; // 01h = TPM currently deactivated
+} TCM_EFI_BOOT_SERVICE_CAPABILITY;
+
+typedef UINT32 TCG_ALGORITHM_ID;
+
+#pragma pack (pop)
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TCM_STATUS_CHECK)(
+ IN EFI_TCM_PROTOCOL *This,
+ OUT TCM_EFI_BOOT_SERVICE_CAPABILITY
+ *ProtocolCapability,
+ OUT UINT32 *TCGFeatureFlags,
+ OUT EFI_PHYSICAL_ADDRESS *EventLogLocation,
+ OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TCM_HASH_ALL)(
+ IN EFI_TCM_PROTOCOL *This,
+ IN UINT8 *HashData,
+ IN UINT64 HashDataLen,
+ IN TCG_ALGORITHM_ID AlgorithmId,
+ IN OUT UINT64 *HashedDataLen,
+ IN OUT UINT8 **HashedDataResult
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TCM_LOG_EVENT)(
+ IN EFI_TCM_PROTOCOL *This,
+ IN TCM_PCR_EVENT *TCGLogData,
+ IN OUT UINT32 *EventNumber,
+ IN UINT32 Flags
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TCM_PASS_THROUGH_TO_TPM)(
+ IN EFI_TCM_PROTOCOL *This,
+ IN UINT32 TpmInputParamterBlockSize,
+ IN UINT8 *TpmInputParamterBlock,
+ IN UINT32 TpmOutputParameterBlockSize,
+ IN UINT8 *TpmOutputParameterBlock
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TCM_HASH_LOG_EXTEND_EVENT)(
+ IN EFI_TCM_PROTOCOL *This,
+ IN EFI_PHYSICAL_ADDRESS HashData,
+ IN UINT64 HashDataLen,
+ IN TCG_ALGORITHM_ID AlgorithmId,
+ IN OUT TCM_PCR_EVENT *TCGLogData,
+ IN OUT UINT32 *EventNumber,
+ OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry
+ );
+
+typedef struct _EFI_TCM_PROTOCOL
+{
+ EFI_TCM_STATUS_CHECK StatusCheck;
+ EFI_TCM_HASH_ALL HashAll;
+ EFI_TCM_LOG_EVENT LogEvent;
+ EFI_TCM_PASS_THROUGH_TO_TPM PassThroughToTpm;
+ EFI_TCM_HASH_LOG_EXTEND_EVENT HashLogExtendEvent;
+} EFI_TCM_PROTOCOL;
+
+extern EFI_GUID gEfiTcgProtocolGuid;
+
+#endif
diff --git a/Core/EM/TCG2/Common/Protocol/TcgService_Protocol.cif b/Core/EM/TCG2/Common/Protocol/TcgService_Protocol.cif
new file mode 100644
index 0000000..a4e469a
--- /dev/null
+++ b/Core/EM/TCG2/Common/Protocol/TcgService_Protocol.cif
@@ -0,0 +1,11 @@
+<component>
+ name = "TcgService_Protocol"
+ category = ModulePart
+ LocalRoot = "Core\EM\TCG2\Common\Protocol\"
+ RefName = "TcgService_Protocol"
+[files]
+"TcgService\TcgService.c"
+"TcgService\TcgService.h"
+"TcgService\TcgTcmService.h"
+"TcgService\TcgTcmService.c"
+<endComponent>
diff --git a/Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.c b/Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.c
new file mode 100644
index 0000000..4251fb2
--- /dev/null
+++ b/Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.c
@@ -0,0 +1,60 @@
+/*++
+
+ Copyright (c) 1999 - 2002 Intel Corporation. All rights reserved
+ This software and associated documentation (if any) is furnished
+ under a license and may only be used or copied in accordance
+ with the terms of the license. Except as permitted by such
+ license, no part of this software or documentation may be
+ reproduced, stored in a retrieval system, or transmitted in any
+ form or by any means without the express written consent of
+ Intel Corporation.
+
+
+ Abstract:
+
+ --*/
+//*************************************************************************
+// $Header: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TpmDevice_Protocol/TpmDevice/TpmDevice.c 1 4/21/14 2:15p Fredericko $
+//
+// $Revision: 1 $
+//
+// $Date: 4/21/14 2:15p $
+//*************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TpmDevice_Protocol/TpmDevice/TpmDevice.c $
+//
+// 1 4/21/14 2:15p Fredericko
+//
+// 1 10/08/13 12:01p Fredericko
+// Initial Check-In for Tpm-Next module
+//
+// 1 7/10/13 5:59p Fredericko
+// [TAG] EIP120969
+// [Category] New Feature
+// [Description] TCG (TPM20)
+//
+// 2 5/20/10 8:46a Fredericko
+// Included File Header
+// Included File Revision History
+// EIP 37653
+//
+//*************************************************************************
+//*************************************************************************
+//<AMI_FHDR_START>
+//
+// Name: TpmDevice.c
+//
+// Description:
+// Defines Tpm Device Protocol GUID
+//
+//<AMI_FHDR_END>
+//*************************************************************************
+#include "Efi.h"
+#include EFI_PROTOCOL_DEFINITION( TpmDevice )
+
+EFI_GUID gEfiTpmDeviceProtocolGuid = EFI_TPM_DEVICE_PROTOCOL_GUID;
+
+EFI_GUID_STRING( &gEfiTpmDeviceProtocolGuid,
+ "TPM DXE Driver Protocol",
+ "TPM DXE Driver Protocol" );
diff --git a/Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.h b/Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.h
new file mode 100644
index 0000000..9b9108f
--- /dev/null
+++ b/Core/EM/TCG2/Common/Protocol/TpmDevice/TpmDevice.h
@@ -0,0 +1,197 @@
+/*++
+
+ Copyright (c) 2005 Intel Corporation. All rights reserved
+ This software and associated documentation (if any) is furnished
+ under a license and may only be used or copied in accordance
+ with the terms of the license. Except as permitted by such
+ license, no part of this software or documentation may be
+ reproduced, stored in a retrieval system, or transmitted in any
+ form or by any means without the express written consent of
+ Intel Corporation.
+
+
+ Abstract:
+
+
+ --*/
+//*************************************************************************
+// $Header: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TpmDevice_Protocol/TpmDevice/TpmDevice.h 1 4/21/14 2:15p Fredericko $
+//
+// $Revision: 1 $
+//
+// $Date: 4/21/14 2:15p $
+//*************************************************************************
+// Revision History
+// ----------------
+// $Log: /Alaska/SOURCE/Modules/TCG2/CommonHeaders/TpmDevice_Protocol/TpmDevice/TpmDevice.h $
+//
+// 1 4/21/14 2:15p Fredericko
+//
+// 1 10/08/13 12:01p Fredericko
+// Initial Check-In for Tpm-Next module
+//
+// 1 7/10/13 5:59p Fredericko
+// [TAG] EIP120969
+// [Category] New Feature
+// [Description] TCG (TPM20)
+//
+// 7 3/29/11 3:10p Fredericko
+//
+// 6 3/28/11 3:27p Fredericko
+// [TAG] EIP 54642
+// [Category] Improvement
+// [Description] 1. Checkin Files related to TCG function override
+// 2. Include TCM and TPM auto detection
+// [Files] Affects all TCG files
+//
+// 5 5/20/10 8:47a Fredericko
+// Included File Header
+// Included File Revision History
+// EIP 37653
+//
+//*************************************************************************
+//*************************************************************************
+//<AMI_FHDR_START>
+//
+// Name: TpmDevice.h
+//
+// Description:
+// Header file for TpmDevice.c[Protocol]
+//
+//<AMI_FHDR_END>
+//*************************************************************************
+#ifndef _EFI_TPM_DEVICE_H_
+#define _EFI_TPM_DEVICE_H_
+
+#include "TcgEfiTpm.h"
+#include "TcgEFI12.h"
+#include "TCGMisc.h"
+#include "TcgCommon.h"
+
+#define EFI_TPM_DEVICE_PROTOCOL_GUID \
+ { 0xde161cfe, 0x1e60, 0x42a1, 0x8c, 0xc3, 0xee, 0x7e, 0xf0, 0x73, 0x52,\
+ 0x12 }
+
+
+EFI_FORWARD_DECLARATION( EFI_TPM_DEVICE_PROTOCOL );
+
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TPM_MP_INIT)(
+ IN EFI_TPM_DEVICE_PROTOCOL *This
+ );
+
+/*++
+
+ Routine Description:
+ This service Open the TPM interface
+
+ Arguments:
+ This - A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL.
+
+ Returns:
+ EFI_SUCCESS - Operation completed successfully
+ EFI_DEVICE_ERROR - The command was unsuccessful
+ EFI_NOT_FOUND - The component was not running
+
+ --*/
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TPM_MP_CLOSE)(
+ IN EFI_TPM_DEVICE_PROTOCOL *This
+ );
+/*++
+
+ Routine Description:
+ This service close the TPM interface and deactivate TPM
+
+ Arguments:
+ This - A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL.
+
+ Returns:
+ EFI_SUCCESS - Operation completed successfully
+ EFI_DEVICE_ERROR - The command was unsuccessful
+ EFI_NOT_FOUND - The component was not running
+
+ --*/
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TPM_MP_GET_STATUS_INFO)(
+ IN EFI_TPM_DEVICE_PROTOCOL *This
+ );
+/*++
+
+ Routine Description:
+ This service get the current status infomation of TPM
+
+ Arguments:
+ This - A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL.
+ ReqStatusType - Requested type of status information, driver or device.
+ Status - Pointer to the returned status.
+
+ Returns:
+ EFI_SUCCESS - Operation completed successfully
+ EFI_DEVICE_ERROR - The command was unsuccessful
+ EFI_INVALID_PARAMETER - One or more of the parameters are incorrect
+ EFI_BUFFER_TOO_SMALL - The receive buffer is too small
+ EFI_NOT_FOUND - The component was not running
+
+ --*/
+
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_TPM_MP_TRANSMIT)(
+ IN EFI_TPM_DEVICE_PROTOCOL *This,
+ IN UINTN NoInBuffers,
+ IN TPM_TRANSMIT_BUFFER *InBuffers,
+ IN UINTN NoOutBuffers,
+ IN OUT TPM_TRANSMIT_BUFFER *OutBuffers
+ );
+/*++
+
+ Routine Description:
+ This service transmit data to the TPM and get response from TPM
+
+ Arguments:
+ This - A pointer to the EFI_TPM_MP_DRIVER_PROTOCOL.
+
+ Returns:
+ EFI_SUCCESS - Operation completed successfully
+ EFI_DEVICE_ERROR - The command was unsuccessful
+ EFI_INVALID_PARAMETER - One or more of the parameters are incorrect
+ EFI_BUFFER_TOO_SMALL - The receive buffer is too small
+ EFI_NOT_FOUND - The component was not running
+
+ --*/
+
+
+void Prepare2Thunkproc (
+ UINT32 TcgOffset,
+ UINT16 TcgSelector );
+
+void TcmDxeCallMPDriver (
+ IN UINTN CFuncID,
+ TPMTransmitEntryStruct *CData,
+ UINT32* OUT CRetVal );
+
+void TpmDxeCallMPDriver (
+ IN UINTN CFuncID,
+ TPMTransmitEntryStruct *CData,
+ UINT32* OUT CRetVal );
+
+
+typedef struct _EFI_TPM_DEVICE_PROTOCOL
+{
+ EFI_TPM_MP_INIT Init;
+ EFI_TPM_MP_CLOSE Close;
+ EFI_TPM_MP_GET_STATUS_INFO GetStatusInfo;
+ EFI_TPM_MP_TRANSMIT Transmit;
+} EFI_TPM_DEVICE_PROTOCOL;
+
+extern EFI_GUID gEfiTpmDeviceProtocolGuid;
+
+#endif
diff --git a/Core/EM/TCG2/Common/Protocol/TpmDevice_Protocol.cif b/Core/EM/TCG2/Common/Protocol/TpmDevice_Protocol.cif
new file mode 100644
index 0000000..f24c11c
--- /dev/null
+++ b/Core/EM/TCG2/Common/Protocol/TpmDevice_Protocol.cif
@@ -0,0 +1,9 @@
+<component>
+ name = "TpmDevice_Protocol"
+ category = ModulePart
+ LocalRoot = "Core\EM\TCG2\Common\Protocol\"
+ RefName = "TpmDevice_Protocol"
+[files]
+"TpmDevice\TpmDevice.c"
+"TpmDevice\TpmDevice.h"
+<endComponent> \ No newline at end of file