diff options
Diffstat (limited to 'Include/HOB.h')
-rw-r--r-- | Include/HOB.h | 530 |
1 files changed, 530 insertions, 0 deletions
diff --git a/Include/HOB.h b/Include/HOB.h new file mode 100644 index 0000000..f643f3b --- /dev/null +++ b/Include/HOB.h @@ -0,0 +1,530 @@ +//********************************************************************** +//********************************************************************** +//** ** +//** (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/HOB.h 8 6/16/11 2:54p Felixp $ +// +// $Revision: 8 $ +// +// $Date: 6/16/11 2:54p $ +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/BIN/Core/Include/HOB.h $ +// +// 8 6/16/11 2:54p Felixp +// Surround backward compatibility definitions with #if +// BACKWARD_COMPATIBLE_MODE +// +// 7 6/16/11 9:25a Felixp +// Backward compatible definitions of the capsule HOB are added. +// +// 6 4/13/11 6:38p Artems +// EIP 56529: Replaced old Capsule HOB definitions with new one as per PI +// spec v.1.2 +// +// 5 2/05/11 1:49p Artems +// Added FirmwareVolumeHob2 type +// +// 4 4/26/10 9:55a Felixp +// Clean up +// +// 3 5/22/09 1:35p Felixp +// Clean up +// +// 2 5/19/06 10:18p Felixp +// EFI_HOB_POINTERS renamed to EFI_PEI_HOB_POINTERS +// +// 1 1/28/05 12:44p Felixp +// +// 2 1/18/05 3:21p Felixp +// PrintDebugMessage renamed to Trace +// +// 1 12/23/04 9:41a Felixp +// +// 4 3/19/04 11:04a Markw +// Removed ; at end of define. +// +// 3 1/06/04 5:01p Yakovlevs +// +// 2 12/17/03 11:05a Markw +// Added includes +// +// 1 12/16/03 10:41a Markw +// Move HOB.h to include directory. +// +// 1 12/12/03 3:40p Markw +// Hob definitions +// +// +//********************************************************************** +//<AMI_FHDR_START> +// +// Name: HOB.H +// +// Description: +// EFI Header file. It has standard definitions defined by the +// EFI Specification Version 1.10 12/01/02 +// +//<AMI_FHDR_END> +//********************************************************************** +#ifndef __HOB__H__ +#define __HOB__H__ + +#include "efi.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define NextHob(Hob,Type) ((Type *) ((UINT8 *) Hob + ((EFI_HOB_GENERIC_HEADER *)Hob)->HobLength)) + +//****************************************************** +// HobType values +//****************************************************** +#define EFI_HOB_TYPE_HANDOFF 0x0001 +#define EFI_HOB_TYPE_MEMORY_ALLOCATION 0x0002 +#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR 0x0003 +#define EFI_HOB_TYPE_GUID_EXTENSION 0x0004 +#define EFI_HOB_TYPE_FV 0x0005 +#define EFI_HOB_TYPE_CPU 0x0006 +#define EFI_HOB_TYPE_MEMORY_POOL 0x0007 +#define EFI_HOB_TYPE_FV2 0x0009 +#define EFI_HOB_TYPE_LOAD_PEIM_UNUSED 0x000A +#define EFI_HOB_TYPE_UEFI_CAPSULE 0x000B +#define EFI_HOB_TYPE_UNUSED 0xFFFE +#define EFI_HOB_TYPE_END_OF_HOB_LIST 0xFFFF + + + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_HOB_GENERIC_HEADER +// +// Description: This is a generic header for all HOBs. +// +// Fields: Name Type Description +// ------------------------------------------------------------ +// HobType UINT16 Type of Hob +// HobLength UINT16 Length of HOB +// Reserved UINT32 +// +//********************************************************************** + + +typedef struct _EFI_HOB_GENERIC_HEADER{ + UINT16 HobType; + UINT16 HobLength; + UINT32 Reserved; +} EFI_HOB_GENERIC_HEADER; + + + + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_HOB_HANDOFF_INFO_TABLE +// +// Description: This is a generic header for all HOBs. +// +// Fields: Name Type Description +// ------------------------------------------------------------ +// Header EFI_HOB_GENERIC_HEADER +// Version UINT32 +// BootMode EFI_BOOT_MODE +// EfiMemoryTop EFI_PHYSICAL_ADDRESS +// EfiMemoryBottom EFI_PHYSICAL_ADDRESS +// EfiFreeMemoryTop EFI_PHYSICAL_ADDRESS +// EfiFreeMemoryBottom EFI_PHYSICAL_ADDRESS +// EfiEndOfHobList EFI_PHYSICAL_ADDRESS +// +//********************************************************************** +typedef struct _EFI_HOB_HANDOFF_INFO_TABLE { + EFI_HOB_GENERIC_HEADER Header; + UINT32 Version; + EFI_BOOT_MODE BootMode; + EFI_PHYSICAL_ADDRESS EfiMemoryTop; + EFI_PHYSICAL_ADDRESS EfiMemoryBottom; + EFI_PHYSICAL_ADDRESS EfiFreeMemoryTop; + EFI_PHYSICAL_ADDRESS EfiFreeMemoryBottom; + EFI_PHYSICAL_ADDRESS EfiEndOfHobList; +} EFI_HOB_HANDOFF_INFO_TABLE; + +// Version values +#define EFI_HOB_HANDOFF_TABLE_VERSION 0x0009 + + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_HOB_MEMORY_ALLOCATION_HEADER +// +// Description: Memory Description used by EFI_HOB_MEMORY_ALLOCATION HOB. +// This stores the purpose (as a GUID), the location, +// and type as used by the EFI 1.1 allocate pages. +// +// Fields: Name Type Description +// ------------------------------------------------------------ +// Name EFI_GUID Purpose +// MemoryBaseAddress EFI_PHYSICAL_ADDRESS Start +// MemoryLength UINT64 Length +// MemoryType EFI_MEMORY_TYPE Type used by allocate pages. +// Reserved[4] UINT8 +// +//********************************************************************** +typedef struct _EFI_HOB_MEMORY_ALLOCATION_HEADER { + EFI_GUID Name; + EFI_PHYSICAL_ADDRESS MemoryBaseAddress; + UINT64 MemoryLength; + EFI_MEMORY_TYPE MemoryType; // UINT32 + UINT8 Reserved[4]; // Padding for Itanium + // processor family +} EFI_HOB_MEMORY_ALLOCATION_HEADER; + + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_HOB_MEMORY_ALLOCATION +// +// Description: Describes memory not used by the HOB list. +// +// Fields: Name Type Description +// ------------------------------------------------------------ +// Header EFI_HOB_GENERIC_HEADER +// AllocDescriptor EFI_HOB_MEMORY_ALLOCATION_HEADER - Memory desciption +// Additional fields pertaining to the Name Guid. +// +//********************************************************************** +typedef struct _EFI_HOB_MEMORY_ALLOCATION { + EFI_HOB_GENERIC_HEADER Header; + EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor; + // + // Additional data pertaining to the Name Guid. + // +} EFI_HOB_MEMORY_ALLOCATION; + + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_HOB_MEMORY_ALLOCATION_STACK +// +// Description: Descibes PEI BSP Physical Memory Stack. +// Same structure as EFI_HOB_MEMORY_ALLOCATION, +// except AllocDescriptor has a specific Name of +// EFI_HOB_MEMORY_ALLOC_STACK_GUID. +// +// +// Fields: Name Type Description +// ------------------------------------------------------------ +// Header EFI_HOB_GENERIC_HEADER +// AllocDescriptor EFI_HOB_MEMORY_ALLOCATION_HEADER - Memory desciption +// +//********************************************************************** +typedef struct _EFI_HOB_MEMORY_ALLOCATION_STACK { + EFI_HOB_GENERIC_HEADER Header; + EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor; +} EFI_HOB_MEMORY_ALLOCATION_STACK; + +#define EFI_HOB_MEMORY_ALLOC_STACK_GUID \ + {0x4ed4bf27, 0x4092, 0x42e9, 0x80, 0x7d, 0x52, 0x7b, 0x1d, 0x0,0xc9, 0xbd}; + + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_HOB_MEMORY_ALLOCATION_BSP_STORE +// +// Description: Descibes PEI BSP Physical Memory Store. +// This for the Itanium CPU only. +// Same structure as EFI_HOB_MEMORY_ALLOCATION, +// except AllocDescriptor has a specific Name of +// EFI_HOB_MEMORY_ALLOC_BSP_STORE_GUID. +// +// +// Fields: Name Type Description +// ------------------------------------------------------------ +// Header EFI_HOB_GENERIC_HEADER +// AllocDescriptor EFI_HOB_MEMORY_ALLOCATION_HEADER - Memory desciption +// +//********************************************************************** +typedef struct _EFI_HOB_MEMORY_ALLOCATION_BSP_STORE { + EFI_HOB_GENERIC_HEADER Header; + EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor; +} EFI_HOB_MEMORY_ALLOCATION_BSP_STORE; + +#define EFI_HOB_MEMORY_ALLOC_BSP_STORE_GUID \ + {0x564b33cd, 0xc92a, 0x4593, 0x90, 0xbf, 0x24, 0x73, 0xe4, 0x3c,0x63, 0x22}; + + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_HOB_MEMORY_ALLOCATION +// +// Description: +// +// Fields: Name Type Description +// ------------------------------------------------------------ +// Header EFI_HOB_GENERIC_HEADER +// AllocDescriptor EFI_HOB_MEMORY_ALLOCATION_HEADER - Memory desciption +// ModuleName EFI_GUID +// EntryPoint EFI_PHYSICAL_ADDRESS +// +//********************************************************************** +typedef struct { + EFI_HOB_GENERIC_HEADER Header; + EFI_HOB_MEMORY_ALLOCATION_HEADER MemoryAllocationHeader; + EFI_GUID ModuleName; + EFI_PHYSICAL_ADDRESS EntryPoint; +} EFI_HOB_MEMORY_ALLOCATION_MODULE; + +#define EFI_HOB_MEMORY_ALLOC_MODULE_GUID \ + {0xf8e21975, 0x899, 0x4f58, 0xa4, 0xbe, 0x55, 0x25, 0xa9, 0xc6,0xd7, 0x7a} + +//********************************************************* +// EFI_RESOURCE_TYPE +//********************************************************* +typedef UINT32 EFI_RESOURCE_TYPE; +#define EFI_RESOURCE_SYSTEM_MEMORY 0x00000000 +#define EFI_RESOURCE_MEMORY_MAPPED_IO 0x00000001 +#define EFI_RESOURCE_IO 0x00000002 +#define EFI_RESOURCE_FIRMWARE_DEVICE 0x00000003 +#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT 0x00000004 +#define EFI_RESOURCE_MEMORY_RESERVED 0x00000005 +#define EFI_RESOURCE_IO_RESERVED 0x00000006 +#define EFI_RESOURCE_MAX_MEMORY_TYPE 0x00000007 + +//******************************************************* +// EFI_RESOURCE_ATTRIBUTE_TYPE +//******************************************************* +typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE; +// These types can be ORed together as needed. +// +// The first three enumerations describe settings +// +#define EFI_RESOURCE_ATTRIBUTE_PRESENT 0x00000001 +#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED 0x00000002 +#define EFI_RESOURCE_ATTRIBUTE_TESTED 0x00000004 +// +// The rest of the settings describe capabilities +// +#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC 0x00000008 +#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC 0x00000010 +#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1 0x00000020 +#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2 0x00000040 +#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED 0x00000080 +#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED 0x00000100 +#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED 0x00000200 +#define EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE 0x00000400 +#define EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE 0x00000800 +#define EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE 0x00001000 +#define EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE 0x00002000 +#define EFI_RESOURCE_ATTRIBUTE_16_BIT_IO 0x00004000 +#define EFI_RESOURCE_ATTRIBUTE_32_BIT_IO 0x00008000 +#define EFI_RESOURCE_ATTRIBUTE_64_BIT_IO 0x00010000 +#define EFI_RESOURCE_ATTRIBUTE_UNCACHED_EXPORTED 0x00020000 + + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_HOB_RESOURCE_DESCRIPTOR +// +// Description: Used to describe system memory map including system memory, +// MMIO, IO, and Firmware Device. +// +// Fields: Name Type Description +// ------------------------------------------------------------ +// Header EFI_HOB_GENERIC_HEADER +// Owner EFI_GUID +// ResourceType EFI_RESOURCE_TYPE +// ResourceAttribute EFI_RESOURCE_ATTRIBUTE_TYPE +// PhysicalStart EFI_PHYSICAL_ADDRESS +// ResourceLength UINT64 +// +//********************************************************************** +typedef struct _EFI_HOB_RESOURCE_DESCRIPTOR { + EFI_HOB_GENERIC_HEADER Header; + EFI_GUID Owner; + EFI_RESOURCE_TYPE ResourceType; + EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute; + EFI_PHYSICAL_ADDRESS PhysicalStart; + UINT64 ResourceLength; +} EFI_HOB_RESOURCE_DESCRIPTOR; + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_HOB_GUID_TYPE +// +// Description: Implementation specific data here. +// +// Fields: Name Type Description +// ------------------------------------------------------------ +// Header EFI_HOB_GENERIC_HEADER +// Name EFI_GUID +// Guid specific data here. +// +//********************************************************************** +typedef struct _EFI_HOB_GUID_TYPE { + EFI_HOB_GENERIC_HEADER Header; + EFI_GUID Name; + // + // Guid specific data goes here + // +} EFI_HOB_GUID_TYPE; + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_HOB_FIRMWARE_VOLUME +// +// Description: Describes Base and Length of a Firmware Volume +// +// Fields: Name Type Description +// ------------------------------------------------------------ +// Header EFI_HOB_GENERIC_HEADER +// BaseAddress EFI_PHYSICAL_ADDRESS +// Length UINT64 +// +//********************************************************************** +typedef struct { + EFI_HOB_GENERIC_HEADER Header; + EFI_PHYSICAL_ADDRESS BaseAddress; + UINT64 Length; +} EFI_HOB_FIRMWARE_VOLUME; + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_HOB_FIRMWARE_VOLUME2 +// +// Description: Describes a Firmware Volume. +// +// Fields: Name Type Description +// ------------------------------------------------------------ +// Header EFI_HOB_GENERIC_HEADER +// BaseAddress EFI_PHYSICAL_ADDRESS Base Address of Firmware Volume +// Length UINT64 Length of the Firmware Volume +// FvName EFI_GUID Guid of the Firmware Volume +// FileName EFI_GUID Guid of the FFS which contained the Firmware Volume +//********************************************************************** +typedef struct _EFI_HOB_FIRMWARE_VOLUME2{ + EFI_HOB_GENERIC_HEADER Header; + EFI_PHYSICAL_ADDRESS BaseAddress; + UINT64 Length; + EFI_GUID FvName; + EFI_GUID FileName; +} EFI_HOB_FIRMWARE_VOLUME2; + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_HOB_CPU +// +// Description: Describes the maximum physical addressablity of Memory +// and IO of the processor. +// +// Fields: Name Type Description +// ------------------------------------------------------------ +// Header EFI_HOB_GENERIC_HEADER +// SizeOfMemorySpace UINT8 +// SizeOfIoSpace UINT8 +// Reserved[6] UINT8 +// +//********************************************************************** +typedef struct _EFI_HOB_CPU { + EFI_HOB_GENERIC_HEADER Header; + UINT8 SizeOfMemorySpace; + UINT8 SizeOfIoSpace; + UINT8 Reserved[6]; +} EFI_HOB_CPU; + +//Unkown usuage +typedef struct _EFI_HOB_MEMORY_POOL { + EFI_HOB_GENERIC_HEADER Header; +} EFI_HOB_MEMORY_POOL; + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_HOB_UEFI_CAPSULE +// +// Description: Describes Capsule Volume Base and Length +// +// Fields: Name Type Description +// ------------------------------------------------------------ +// Header EFI_HOB_GENERIC_HEADER +// BaseAddress EFI_PHYSICAL_ADDRESS +// Length UINT64 +// +//********************************************************************** +typedef struct { + EFI_HOB_GENERIC_HEADER Header; + EFI_PHYSICAL_ADDRESS BaseAddress; + UINT64 Length; +} EFI_HOB_UEFI_CAPSULE; + +#if BACKWARD_COMPATIBLE_MODE +#define EFI_HOB_TYPE_CV EFI_HOB_TYPE_UEFI_CAPSULE +typedef EFI_HOB_UEFI_CAPSULE EFI_HOB_CAPSULE_VOLUME; +#endif // BACKWARD_COMPATIBLE_MODE + +//********************************************************************** +//<AMI_SHDR_START> +// +// Name: EFI_PEI_HOB_POINTERS +// +// Description: Union of all the possible HOB Types +// +//********************************************************************** +typedef union { + EFI_HOB_GENERIC_HEADER *Header; + EFI_HOB_HANDOFF_INFO_TABLE *HandoffInformationTable; + EFI_HOB_MEMORY_ALLOCATION *MemoryAllocation; + EFI_HOB_MEMORY_ALLOCATION_BSP_STORE *MemoryAllocationBspStore; + EFI_HOB_MEMORY_ALLOCATION_STACK *MemoryAllocationStack; + EFI_HOB_MEMORY_ALLOCATION_MODULE *MemoryAllocationModule; + EFI_HOB_RESOURCE_DESCRIPTOR *ResourceDescriptor; + EFI_HOB_GUID_TYPE *Guid; + EFI_HOB_FIRMWARE_VOLUME *FirmwareVolume; + EFI_HOB_FIRMWARE_VOLUME2 *FirmwareVolume2; + EFI_HOB_CPU *Cpu; + EFI_HOB_MEMORY_POOL *Pool; + EFI_HOB_UEFI_CAPSULE *CapsuleVolume; + UINT8 *Raw; +} EFI_PEI_HOB_POINTERS; +/****** 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 ** +//** ** +//********************************************************************** +//**********************************************************************
\ No newline at end of file |