summaryrefslogtreecommitdiff
path: root/Include/AmiHobs.h
blob: 287a3de955c293d2780555e04c5c28896d1b2356 (plain)
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
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
//**********************************************************************
//**********************************************************************
//**                                                                  **
//**        (C)Copyright 1985-2009, American Megatrends, Inc.         **
//**                                                                  **
//**                       All Rights Reserved.                       **
//**                                                                  **
//**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093        **
//**                                                                  **
//**                       Phone: (770)-246-8600                      **
//**                                                                  **
//**********************************************************************
//**********************************************************************

//**********************************************************************
// $Header: /Alaska/BIN/Core/Include/AmiHobs.h 24    11/14/11 3:17p Artems $
//
// $Revision: 24 $
//
// $Date: 11/14/11 3:17p $
//**********************************************************************
// Revision History
// ----------------
// $Log: /Alaska/BIN/Core/Include/AmiHobs.h $
// 
// 24    11/14/11 3:17p Artems
// Defined Extended errors for security recovery capsule check
// 
// 23    5/13/11 3:45p Artems
// Added fields to Recovery Hob structure to report flash update status
// 
// 22    11/16/10 12:43p Artems
// EIP 46175 Updated AMI_SMBIOS_MEMORY_INFO_HOB structure proposed layout
// 
// 21    9/22/10 4:38p Artems
// EIP 33629 - introduce AMI_SMBIOS_MEMORY_INFO_HOB
// 
// 20    1/05/10 10:36a Markw
// Create AMI_RESET_TYPE_HOB.
// 
// 19    5/08/09 12:23a Felixp
// Ifrastructure to simplify ROM layout customization(EIP 18426).
// ROM_LAYOUT_HOB and RECOVERY_IMAGE_HOB are added.
// 
// 18    1/16/09 10:00a Felixp
// SmBus HOB added
// 
// 17    5/05/08 4:26p Felixp
// PEI Performance HOB added
// 
// 15    8/10/07 2:11p Markw
// Added additional feature flags and include to CpuHobs.h.
// 
// 12    4/01/07 2:00p Felixp
// AMI_CAPSULE_HOB added.
// 
// 11    10/04/06 4:16p Markw
// Added TsegLength.
// 
// 10    5/02/06 6:42p Markw
// Use common features between CPUs.
// 
// 8     1/13/06 2:21p Markw
// Added Cpu Disable flag and EIST info to CPU Hob.
// 
// 7     6/16/05 10:44a Felixp
// PEIM_LOAD_HOB added. (used by PEIMs to reguest reallocation to RAM,
// once memory is detected)
// 
// 6     5/04/05 12:46p Markw
// Added cache line size to CPU hob.
// 
// 5     4/28/05 5:59p Markw
// Added Hob to keep track of Reserved IGD memory.
// 
// 4     2/25/05 9:23a Sivagarn
// Included Physical CPU count in CPUINFO HOB
// 
// 3     2/25/05 8:06a Sivagarn
// Included CPU revision field in CPU Info hob
// 
// 3     2/16/05 4:15p Sivagarn
// Changed the data format for physical address
// 
// 2     2/10/05 10:36a Sivagarn
// Updated CPUInfo structure & HOB
// 
// 4     1/18/05 3:21p Felixp
// PrintDebugMessage renamed to Trace
// 
// 3     1/12/05 5:22p Markw
// Changed cpu info hob guid.
// 
// 2     1/12/05 3:00p Markw
// Replaced APIC HOB with CPUINFO HOB.
// 
// 2     10/22/04 10:32a Felixp
// PEIM_HOB added
// 
// 1     10/13/04 2:24p Markw
// 
//**********************************************************************
//<AMI_FHDR_START>
//
// Name:    AmiHob.h
//
// Description:    
//	Definitions of AMI specific Hobs
//
//<AMI_FHDR_END>
//**********************************************************************
#ifndef __AMIHOBS_H__
#define __AMIHOBS_H__

#include <pei.h>
#include <hob.h>
#include <CpuHobs.h>

#pragma pack(push,1)


// {39E8CDA1-6A35-4cdd-A902-D1A795F70380}
#define AMI_RESET_TYPE_HOB_GUID \
    {0x39e8cda1, 0x6a35, 0x4cdd, 0xa9, 0x2, 0xd1, 0xa7, 0x95, 0xf7, 0x3, 0x80}

//Not all reset types are available on all systems.
//Not all reset types may be reported.

#define AMI_HOB_RESET_TYPE_POWER_ON     0
#define AMI_HOB_RESET_TYPE_CPU          1
#define AMI_HOB_RESET_TYPE_WARM         2
#define AMI_HOB_RESET_TYPE_HARD         3
#define AMI_HOB_RESET_TYPE_POWER_GOOD   4

typedef struct {
    EFI_HOB_GUID_TYPE   EfiHobGuidType;
    UINT8               ResetType;
} AMI_RESET_TYPE_HOB;

////////////////////////////////////////////////////////////////////////


//HOB to report Apic Ids
//This is a EFI_HOB_TYPE_GUID_EXTENSION.
#define AMI_CPUINFO_HOB_GUID \
	{0x2e547cb5,0x40f8,0x4f3e,0x8a,0xf4,0x19,0x52,0xaa,0xd5,0x5a,0xc}

typedef struct {
    UINT64 SmrrSupport:1;
    UINT64 Reserved:63;
} ADDITIONAL_FEATURE_FLAGS;

typedef struct {
    UINT32 FeatureEcx;
    UINT32 FeatureEdx;
    UINT32 ExtFeatureEax;
    UINT32 ExtFeatureEbx;
    UINT32 ExtFeatureEcx;
    UINT32 ExtFeatureEdx;
    ADDITIONAL_FEATURE_FLAGS Flags;
} CPU_FEATURES;

typedef struct {
	BOOLEAN     Valid;
	BOOLEAN     Disabled;
	UINT32      CpuSignature;
	UINT64      CpuFeatureInfo;
	UINT32      CpuRevision;		// Specific to the CPU brand
	UINT32      BIST;
	UINT8       ApicId;
	UINT8       ApicEId;
	UINT8       ApicVer;
	BOOLEAN     EistEnable;
	UINT8       BusRatioMax;
	UINT8       BusRatioMin;
	UINT8       VidMax;
	UINT8       VidMin;
	UINT8       BusRatioMinStep;
} CPUINFO;

// SmramCap field values
#define	SMRAM_ASEG_SUPPORTED			0x01			// Bit 0
#define	SMRAM_TSEG_SUPPORTED			0x02			// BIT 1
#define	SMRAM_HSEG_SUPPORTED			0x04			// BIT 2

typedef struct {
	EFI_HOB_GUID_TYPE		EfiHobGuidType;
	UINT8					CpuCount;
	UINT8					BspNo;
	UINT8					NodeCount;				// Physical CPU count
	UINT32					SmramCap;
	EFI_PHYSICAL_ADDRESS	TsegAddress;
	UINT32					TsegSize;
	UINT16					CacheLineSize;			// (Bytes)
    CPU_FEATURES            CpuFeatures;
	CPUINFO					Cpuinfo[1];				//This must be last in structure.
} CPUINFO_HOB;
////////////////////////////////////////////////////////////////////////

//AB1BBFF5-2655-4e78-B442-0D264844B428
#define SMM_HOB_GUID \
    {0xab1bbff5,0x2655,0x4e78,0xb4,0x42,0xd,0x26,0x48,0x44,0xb4,0x28}

typedef struct {
    EFI_HOB_GUID_TYPE   EfiHobGuidType;
    UINT32  Tseg;
    UINT32  TsegLength;
    UINT32  ManagedMemStart;
    UINT32  ManagedMemSize;
    UINT32  IedStart;
    UINT32  IedSize;
    UINT16  NumCpus;
    UINT16  Bsp;
    UINT32  SmmBase[1];
} SMM_HOB;

////////////////////////////////////////////////////////////////////////

// GUIDED NB HOB
// {E7D449D9-1FFC-4eed-8D5D-7A53A4F8FB9A}
#define AMI_NB_INFO_HOB_GUID \
	{0xe7d449d9,0x1ffc,0x4eed,0x8d,0x5d,0x7a,0x53,0xa4,0xf8,0xfb,0x9a}

typedef struct {
	EFI_HOB_GUID_TYPE		EfiHobGuidType;
	UINT32					ReservedIgdFrameBufferSize;
} NB_INFO_HOB;

////////////////////////////////////////////////////////////////////////

//GUIDed HOB to pass the code pointer from PEI to DXE
// {F4491BA4-7672-486f-B4D7-99899D22DA57}
#define AMI_PEIM_HOB_GUID \
	{ 0xf4491ba4, 0x7672, 0x486f, { 0xb4, 0xd7, 0x99, 0x89, 0x9d, 0x22, 0xda, 0x57 } }

typedef struct {
	EFI_HOB_GUID_TYPE Header;
	EFI_IMAGE_ENTRY_POINT DxeEntryPoint;
} PEIM_HOB;

//GUIDed HOB to notify core that PEIM has to be reallocated to RAM once it's available
// {EC9C36FD-1642-4b84-91FA-919C2D066FB4}
#define AMI_PEIM_LOAD_HOB_GUID \
	{ 0xec9c36fd, 0x1642, 0x4b84, { 0x91, 0xfa, 0x91, 0x9c, 0x2d, 0x6, 0x6f, 0xb4 } }

typedef struct {
	EFI_HOB_GUID_TYPE Header;
	VOID *pFfsHeader;
	EFI_PEIM_ENTRY_POINT EntryPoint, InMemEntryPoint;
} PEIM_LOAD_HOB;

//GUIDed Hob for Capsule, that should be populated via System table
// {BF66FDF7-F64C-4b11-8AB7-F843AA2A8BEA}
#define AMI_CAPSULE_HOB_GUID \
    { 0xbf66fdf7, 0xf64c, 0x4b11, { 0x8a, 0xb7, 0xf8, 0x43, 0xaa, 0x2a, 0x8b, 0xea } }

typedef struct {
	EFI_HOB_GUID_TYPE Header;
    EFI_GUID CapsuleGuid;
	EFI_PHYSICAL_ADDRESS CapsuleData;
    UINT64 CapsuleLength;
} AMI_CAPSULE_HOB;

//GUIDed Hob used for PEI performance measurements
#define EFI_PEI_PERFORMANCE_HOB_GUID  \
{0x10f432de, 0xdeec, 0x4631, 0x80, 0xcd, 0x47, 0xf6, 0x5d, 0x8f, 0x80, 0xbb}

#define PEI_PERF_MAX_DESC_STRING 8

typedef struct {
  UINT64          StartTimeCount;
  UINT64          StopTimeCount;
  EFI_GUID        Name;
  UINT16          DescriptionString[PEI_PERF_MAX_DESC_STRING];
} PEI_PERFORMANCE_MEASURE_LOG_ENTRY;

typedef struct {
  UINT32                             NumberOfEntries;
  UINT32                             Reserved;
  PEI_PERFORMANCE_MEASURE_LOG_ENTRY  Log[1];
} EFI_HOB_GUID_DATA_PERFORMANCE_LOG;

//GUIDed Hob to pass SM Bus ArpMap
// {017CB4B7-B80C-4040-B6C8-EA982BBB25B7}
#define AMI_SMBUS_HOB_GUID \
    { 0x17cb4b7, 0xb80c, 0x4040, { 0xb6, 0xc8, 0xea, 0x98, 0x2b, 0xbb, 0x25, 0xb7 } }

typedef struct {
	EFI_HOB_GUID_TYPE Header;
    UINT8 BoardReservedAddressCount;
    UINT32 BoardReservedAddressList;
    UINT8 ArpDeviceCount;
    UINT8 ArpDeviceList[1];
} AMI_SMBUS_HOB;

//ROM Layout GUIDed HOB
// {D7642443-87B7-4832-9607-0E1EA81C1D86}
#define AMI_ROM_LAYOUT_HOB_GUID { 0xd7642443, 0x87b7, 0x4832, { 0x96, 0x7, 0xe, 0x1e, 0xa8, 0x1c, 0x1d, 0x86 } }
typedef struct {
	EFI_HOB_GUID_TYPE Header;
    //ROM_AREA RomLayout[];    
} ROM_LAYOUT_HOB;

//GUIDed HOB used to describe location of the Recovery image
// {DAC3CB98-2295-412e-826D-FDEEA320CF31}
#define AMI_RECOVERY_IMAGE_HOB_GUID \
	{ 0xdac3cb98, 0x2295, 0x412e, { 0x82, 0x6d, 0xfd, 0xee, 0xa3, 0x20, 0xcf, 0x31 } }

//Extended security errors definitions
typedef enum {
    InvalidHeader = 1,
    InvalidSignature,
    IvalidPlatformKey,
    InvalidFwVersion,
    MaxError
} EXTENDED_SECURITY_ERRORS;

typedef struct {
	EFI_HOB_GUID_TYPE    Header;
	EFI_PHYSICAL_ADDRESS Address;
    UINT8                Status;            // Generic EFI_STATUS
    UINT32               FailedStage;       // Extended Security Error
} RECOVERY_IMAGE_HOB;

//GUIDed HOB used to pass SMBIOS memory related data to DXE SMBIOS driver
// {7D6B8734-B754-443f-B588-7743843AD3F1}
#define AMI_SMBIOS_MEMORY_INFO_HOB_GUID \
    { 0x7d6b8734, 0xb754, 0x443f, { 0xb5, 0x88, 0x77, 0x43, 0x84, 0x3a, 0xd3, 0xf1 } }

typedef struct {
	EFI_HOB_GUID_TYPE Header;
//  MEM_SPD_DATA      SpdDataArray[NO_OF_PHYSICAL_MEMORY_ARRAY][MAX_NUMBER_OF_MEM_MODULE];
} AMI_SMBIOS_MEMORY_INFO_HOB;



#pragma pack(pop)
/****** DO NOT WRITE BELOW THIS LINE *******/

#ifdef __cplusplus
}
#endif
#endif
//**********************************************************************
//**********************************************************************
//**                                                                  **
//**        (C)Copyright 1985-2009, American Megatrends, Inc.         **
//**                                                                  **
//**                       All Rights Reserved.                       **
//**                                                                  **
//**      5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093        **
//**                                                                  **
//**                       Phone: (770)-246-8600                      **
//**                                                                  **
//**********************************************************************
//**********************************************************************