1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
|
//*************************************************************************
//*************************************************************************
//** **
//** (C)Copyright 1985-2011, American Megatrends, Inc. **
//** **
//** All Rights Reserved. **
//** **
//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
//** **
//** Phone: (770)-246-8600 **
//** **
//*************************************************************************
//*************************************************************************
//**********************************************************************
// $Header: /Alaska/SOURCE/Modules/TCG2/Common/TpmClearOnRollback/TpmClearOnRollbackWrapperLib.h 1 4/21/14 2:18p Fredericko $
//
// $Revision: 1 $
//
// $Date: 4/21/14 2:18p $
//**********************************************************************
// Revision History
// ----------------
// $Log: /Alaska/SOURCE/Modules/TCG2/Common/TpmClearOnRollback/TpmClearOnRollbackWrapperLib.h $
//
// 1 4/21/14 2:18p Fredericko
//
// 1 10/08/13 12:06p Fredericko
// Initial Check-In for Tpm-Next module
//
// 1 7/10/13 5:57p Fredericko
// [TAG] EIP120969
// [Category] New Feature
// [Description] TCG (TPM20)
//
//
//**********************************************************************
//<AMI_FHDR_START>
//----------------------------------------------------------------------------
//
// Name:
//
// Description:
//
//----------------------------------------------------------------------------
//<AMI_FHDR_END>
#ifndef _TPM_CLEAR_ON_ROLLBACK_WRAPPER_H
#define _TPM_CLEAR_ON_ROLLBACK_WRAPPER_H
#include <AmiDxeLib.h>
#include <Protocol\TcgService.h>
#include <TCGMisc.h>
#include <Protocol\SmmBase2.h>
#include <Protocol\AmiTpmClearOnRollbackProtocol.h>
#include <PPI/FwVersion.h>
#include <Hob.h>
#include <Token.h>
#include <AmiHobs.h>
#define FID_FFS_FILE_NAME_GUID \
{ 0x3fd1d3a2, 0x99f7, 0x420b, 0xbc, 0x69, 0x8b, 0xb1, 0xd4, 0x92, 0xa3, 0x32 }
#define FID_FFS_FILE_SECTION_GUID \
{ 0x2EBE0275, 0x6458, 0x4AF9, 0x91, 0xED, 0xD3, 0xF4, 0xED, 0xB1, 0x00, 0xAA }
#define TPM_BASE_ADDRESS 0xfed40000
#define BASE 0x0
#define INVALID_POSTINIT ((TPM_RESULT) (BASE + 38))
#define DISABLED ((TPM_RESULT) (BASE + 7))
#define DEACTIVATED ((TPM_RESULT) (BASE + 6))
#define TPM_H2NS( x ) \
(((UINT16)(x) << 8) | ((UINT16)(x) >> 8))
#define TPM_H2NL( x ) \
(UINT32)((((UINT32)(x)) >> 24) \
| (((x) >> 8) & 0xff00) \
| ((x) << 24) \
| (((x) & 0xff00) << 8))
#define TPM_N2HS( x ) TPM_H2NS( x )
#define TPM_N2HL( x ) TPM_H2NL( x )
#pragma pack(1)
typedef struct _TPM_1_2_REGISTERS {
UINT8 Access; // 0
UINT8 Reserved1[7]; // 1
UINT32 IntEnable; // 8
UINT8 IntVector; // 0ch
UINT8 Reserved2[3]; // 0dh
UINT32 IntSts; // 10h
UINT32 IntfCapability; // 14h
UINT8 Sts; // 18h
UINT16 BurstCount; // 19h
UINT8 Reserved3[9];
UINT32 DataFifo; // 24h
UINT8 Reserved4[0xed8]; // 28h
UINT16 Vid; // 0f00h
UINT16 Did; // 0f02h
UINT8 Rid; // 0f04h
UINT8 TcgDefined[0x7b]; // 0f05h
UINT32 LegacyAddress1; // 0f80h
UINT32 LegacyAddress1Ex; // 0f84h
UINT32 LegacyAddress2; // 0f88h
UINT32 LegacyAddress2Ex; // 0f8ch
UINT8 VendorDefined[0x70];// 0f90h
} TPM_1_2_REGISTERS;
typedef volatile TPM_1_2_REGISTERS *TPM_1_2_REGISTERS_PTR;
typedef struct _TPM_TRANSMIT_BUFFER {
VOID *Buffer;
UINTN Size;
} TPM_TRANSMIT_BUFFER;
typedef struct _TPM_1_2_CMD_HEADER
{
TPM_TAG Tag;
UINT32 ParamSize;
TPM_COMMAND_CODE Ordinal;
} TPM_1_2_CMD_HEADER;
typedef struct _TPM_1_2_RET_HEADER
{
TPM_TAG Tag;
UINT32 ParamSize;
TPM_RESULT RetCode;
} TPM_1_2_RET_HEADER;
typedef struct _TPM_1_2_CMD_STARTUP
{
TPM_1_2_CMD_HEADER Header;
TPM_STARTUP_TYPE StartupType;
} TPM_1_2_CMD_STARTUP;
typedef struct _PHYSICAL_PRESENCE_CMD{
TPM_1_2_CMD_HEADER Hdr;
UINT16 Data;
} PHYSICAL_PRESENCE_CMD;
typedef struct _DATA_CMD{
TPM_1_2_CMD_HEADER Hdr;
UINT8 Data;
} DATA_CMD;
#pragma pack()
EFI_STATUS
__stdcall IsTpmPresent (
IN TPM_1_2_REGISTERS_PTR TpmReg );
EFI_STATUS
__stdcall TisReleaseLocality (
IN TPM_1_2_REGISTERS_PTR TpmReg );
EFI_STATUS
__stdcall TisRequestLocality (
IN TPM_1_2_REGISTERS_PTR TpmReg );
EFI_STATUS
__stdcall TpmLibPassThrough (
IN TPM_1_2_REGISTERS_PTR TpmReg,
IN UINTN NoInputBuffers,
IN TPM_TRANSMIT_BUFFER *InputBuffers,
IN UINTN NoOutputBuffers,
IN OUT TPM_TRANSMIT_BUFFER *OutputBuffers );
BOOLEAN
__stdcall AutoSupportType ();
EFI_STATUS TpmRecoveryGetFidFromFv(
OUT VOID *Fid
);
EFI_STATUS TpmGetFidFromBuffer(
OUT VOID *Fid,
IN VOID *Buffer
);
UINT8 ClearTpmBeforeFlash();
void
__stdcall
FixedDelay(UINT32 dCount);
#endif
//*************************************************************************
//*************************************************************************
//** **
//** (C)Copyright 1985-2011, American Megatrends, Inc. **
//** **
//** All Rights Reserved. **
//** **
//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
//** **
//** Phone: (770)-246-8600 **
//** **
//*************************************************************************
//*************************************************************************
|