diff options
Diffstat (limited to 'EDK/Foundation/Framework')
201 files changed, 20509 insertions, 0 deletions
diff --git a/EDK/Foundation/Framework/Guid/AcpiTableStorage/AcpiTableStorage.c b/EDK/Foundation/Framework/Guid/AcpiTableStorage/AcpiTableStorage.c new file mode 100644 index 0000000..13c46cd --- /dev/null +++ b/EDK/Foundation/Framework/Guid/AcpiTableStorage/AcpiTableStorage.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + AcpiTableStorage.c + +Abstract: + + The filename of the Acpi table storage file. + +--*/ + +#include "Tiano.h" +#include EFI_GUID_DEFINITION (AcpiTableStorage) + +EFI_GUID gEfiAcpiTableStorageGuid = EFI_ACPI_TABLE_STORAGE_GUID; + +EFI_GUID_STRING (&gEfiAcpiTableStorageGuid, "ACPI Table Storage File Name", + "Tiano ACPI 2.0 Table Storage file name GUID"); diff --git a/EDK/Foundation/Framework/Guid/AcpiTableStorage/AcpiTableStorage.h b/EDK/Foundation/Framework/Guid/AcpiTableStorage/AcpiTableStorage.h new file mode 100644 index 0000000..9c8c065 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/AcpiTableStorage/AcpiTableStorage.h @@ -0,0 +1,32 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + AcpiTableStorage.h + +Abstract: + + GUID for the ACPI Table Storage filename. + + This GUID is defined in the Tiano ACPI Table Storage EPS. + +--*/ + +#ifndef _ACPI_TABLE_STORAGE_H_ +#define _ACPI_TABLE_STORAGE_H_ + +#define EFI_ACPI_TABLE_STORAGE_GUID \ + { 0x7e374e25, 0x8e01, 0x4fee, 0x87, 0xf2, 0x39, 0xc, 0x23, 0xc6, 0x6, 0xcd } + +extern EFI_GUID gEfiAcpiTableStorageGuid; + +#endif diff --git a/EDK/Foundation/Framework/Guid/Apriori/Apriori.c b/EDK/Foundation/Framework/Guid/Apriori/Apriori.c new file mode 100644 index 0000000..bba2107 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/Apriori/Apriori.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + Apriori.c + +Abstract: + + GUID used as an FV filename for A Priori file. The A Priori file contains a + list of FV filenames that the DXE dispatcher will schedule reguardless of + the dependency grammer. + +--*/ + +#include "Tiano.h" +#include EFI_GUID_DEFINITION (Apriori) + +EFI_GUID gAprioriGuid = EFI_APRIORI_GUID; + +EFI_GUID_STRING(&gAprioriGuid, "Apriori File Name", "Apriori File containing FV GUIDs"); diff --git a/EDK/Foundation/Framework/Guid/Apriori/Apriori.h b/EDK/Foundation/Framework/Guid/Apriori/Apriori.h new file mode 100644 index 0000000..45f0794 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/Apriori/Apriori.h @@ -0,0 +1,34 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + Apriori.h + +Abstract: + + GUID used as an FV filename for A Priori file. The A Priori file contains a + list of FV filenames that the DXE dispatcher will schedule reguardless of + the dependency grammer. + +--*/ + +#ifndef _APRIORI_GUID_H_ +#define _APRIORI_GUID_H_ + +#define EFI_APRIORI_GUID \ + { \ + 0xfc510ee7, 0xffdc, 0x11d4, 0xbd, 0x41, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +extern EFI_GUID gAprioriGuid; + +#endif diff --git a/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubRecords.c b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubRecords.c new file mode 100644 index 0000000..33cb53e --- /dev/null +++ b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubRecords.c @@ -0,0 +1,51 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + DataHubRecords.c + +Abstract: + + This file defines GUIDs and associated data structures for records + posted to the Data Hub. + The producers of these records use these definitions to construct + records. + The consumers of these records use these definitions to retrieve, + filter and parse records. + + For more information please look at DataHub.doc + +--*/ + + + +#include "Tiano.h" +#include EFI_GUID_DEFINITION (DataHubRecords) + +EFI_GUID gProcessorProducerGuid = EFI_PROCESSOR_PRODUCER_GUID; + +EFI_GUID gProcessorSubClassName = EFI_PROCESSOR_SUBCLASS_GUID; + +EFI_GUID gCacheSubClassName = EFI_CACHE_SUBCLASS_GUID; + +EFI_GUID gMiscProducerGuid = EFI_MISC_PRODUCER_GUID; +EFI_GUID gMiscSubClassName = EFI_MISC_SUBCLASS_GUID; +EFI_GUID gEfiMiscSubClassGuid = EFI_MISC_SUBCLASS_GUID; + + +EFI_GUID gMemoryProducerGuid = EFI_MEMORY_PRODUCER_GUID; + +EFI_GUID gEfiMemorySubClassGuid = EFI_MEMORY_SUBCLASS_GUID; + + + +/* eof - DataHubRecords.c */ diff --git a/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubRecords.h b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubRecords.h new file mode 100644 index 0000000..fe386be --- /dev/null +++ b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubRecords.h @@ -0,0 +1,112 @@ +/*++ + +Copyright (c) 2004 - 2007, 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. + +Module Name: + + DataHubRecords.h + +Abstract: + + This file defines GUIDs and associated data structures for records + posted to the Data Hub. + The producers of these records use these definitions to construct + records. + The consumers of these records use these definitions to retrieve, + filter and parse records. + + For more information please look at DataHub.doc + +--*/ + +#ifndef _DATAHUB_RECORDS_H_ +#define _DATAHUB_RECORDS_H_ + +#if (EFI_SPECIFICATION_VERSION >= 0x0002000A) +#include "TianoHii.h" +#else +#include "EfiInternalFormRepresentation.h" +#endif +#include "DataHubSubClass.h" +#include "DataHubSubClassProcessor.h" +#include "DataHubSubClassCache.h" +#include "DataHubSubClassMemory.h" +#include "DataHubSubClassMisc.h" + +/*++ +BEGIN: Processor records definitions +--*/ + +extern EFI_GUID gProcessorProducerGuid; + +#define EFI_PROCESSOR_PRODUCER_GUID \ + { 0x1bf06aea, 0x5bec, 0x4a8d, 0x95, 0x76, 0x74, 0x9b, 0x09, 0x56, 0x2d, 0x30 } + + +extern EFI_GUID gProcessorSubClassName; + + +extern EFI_GUID gCacheSubClassName; + + +extern EFI_GUID gMiscSubClassName; + +/*++ +END: Processor records definitions +--*/ + + + +/*++ +BEGIN: Memory records definitions +--*/ + +extern EFI_GUID gMemoryProducerGuid; + +#define EFI_MEMORY_PRODUCER_GUID \ + { 0x1d7add6e, 0xb2da, 0x4b0b, 0xb2, 0x9f, 0x49, 0xcb, 0x42, 0xf4, 0x63, 0x56 } + +// +// ... need memory sub classes here... +// +extern EFI_GUID gEfiMemorySubClassGuid; + + + +/*++ +END: Memory records definitions +--*/ + + +/*++ +BEGIN: Misc records definitions +--*/ + +extern EFI_GUID gMiscProducerGuid; + +#define EFI_MISC_PRODUCER_GUID \ +{ 0x62512c92, 0x63c4, 0x4d80, 0x82, 0xb1, 0xc1, 0xa4, 0xdc, 0x44, 0x80, 0xe5 } + + + +// +// ... need misc sub classes here... +// +extern EFI_GUID gEfiMiscSubClassGuid; + + + + +/*++ +END: Misc records definitions +--*/ + + +#endif diff --git a/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClass.h b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClass.h new file mode 100644 index 0000000..753dc17 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClass.h @@ -0,0 +1,73 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + DataHubSubClass.h + +Abstract: + + Definitions for data hub data records that contains a sub class header + +Revision History + +--*/ + +#ifndef _DATA_HUB_SUBCLASS_H_ +#define _DATA_HUB_SUBCLASS_H_ + +// +// Sub Class Header type1 +// + +#define EFI_SUBCLASS_INSTANCE_RESERVED 0 +#define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF //16 bit + +typedef struct { + UINT32 Version; + UINT32 HeaderSize; + UINT16 Instance; + UINT16 SubInstance; + UINT32 RecordType; +} EFI_SUBCLASS_TYPE1_HEADER; + +// +// EXP data +// + +typedef struct { + INT16 Value; + INT16 Exponent; +} EFI_EXP_BASE10_DATA; + +typedef struct { + UINT16 Value; + UINT16 Exponent; +} EFI_EXP_BASE2_DATA; + +// +// Inter link data that references another data record +// + +typedef struct { + EFI_GUID ProducerName; + UINT16 Instance; + UINT16 SubInstance; +} EFI_INTER_LINK_DATA; + + +// +// String Token Definition +// +#define EFI_STRING_TOKEN UINT16 + + +#endif diff --git a/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClassCache.h b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClassCache.h new file mode 100644 index 0000000..b46a434 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClassCache.h @@ -0,0 +1,161 @@ +/*++ + +Copyright (c) 2004 - 2011, 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. + +Module Name: + + DataHubSubClassCache.h + +Abstract: + + Definitions for Cache sub class data records + +Revision History + +--*/ + +#ifndef _DATAHUB_SUBCLASS_CACHE_H_ +#define _DATAHUB_SUBCLASS_CACHE_H_ + +#define EFI_CACHE_SUBCLASS_VERSION 0x00010000 + +#define EFI_CACHE_SUBCLASS_GUID \ +{ 0x7f0013a7, 0xdc79, 0x4b22, 0x80, 0x99, 0x11, 0xf7, 0x5f, 0xdc, 0x82, 0x9d } + +typedef EFI_EXP_BASE2_DATA EFI_CACHE_SIZE_DATA; + +typedef EFI_EXP_BASE2_DATA EFI_MAXIMUM_CACHE_SIZE_DATA; + +typedef EFI_EXP_BASE10_DATA EFI_CACHE_SPEED_DATA; + +typedef STRING_REF EFI_CACHE_SOCKET_DATA; + +typedef struct { + UINT32 Other :1; + UINT32 Unknown :1; + UINT32 NonBurst :1; + UINT32 Burst :1; + UINT32 PipelineBurst :1; + // + // Inconsistent between CacheSubclass 0.9 and SMBIOS specifications here: + // In CacheSubclass specification 0.9, the sequence of Asynchronous and Synchronous fileds + // are opposite to SMBIOS specification. + // + UINT32 Asynchronous :1; + UINT32 Synchronous :1; + UINT32 Reserved :25; +} EFI_CACHE_SRAM_TYPE_DATA; + +typedef enum { + EfiCacheErrorOther = 1, + EfiCacheErrorUnknown = 2, + EfiCacheErrorNone = 3, + EfiCacheErrorParity = 4, + EfiCacheErrorSingleBit = 5, + EfiCacheErrorMultiBit = 6 +} EFI_CACHE_ERROR_TYPE_DATA; + +typedef enum { + EfiCacheTypeOther = 1, + EfiCacheTypeUnknown = 2, + EfiCacheTypeInstruction = 3, + EfiCacheTypeData = 4, + EfiCacheTypeUnified = 5 +} EFI_CACHE_TYPE_DATA; + +typedef enum { + EfiCacheAssociativityOther = 0x01, + EfiCacheAssociativityUnknown = 0x02, + EfiCacheAssociativityDirectMapped = 0x03, + EfiCacheAssociativity2Way = 0x04, + EfiCacheAssociativity4Way = 0x05, + EfiCacheAssociativityFully = 0x06, + EfiCacheAssociativity8Way = 0x07, + EfiCacheAssociativity16Way = 0x08, + EfiCacheAssociativity12Way = 0x09, + EfiCacheAssociativity24Way = 0x0A, + EfiCacheAssociativity32Way = 0x0B, + EfiCacheAssociativity48Way = 0x0C, + EfiCacheAssociativity64Way = 0x0D +} EFI_CACHE_ASSOCIATIVITY_DATA; + +typedef struct { + UINT32 Level :3; + UINT32 Socketed :1; + UINT32 Reserved2 :1; + UINT32 Location :2; + UINT32 Enable :1; + UINT32 OperationalMode :2; + UINT32 Reserved1 :22; +} EFI_CACHE_CONFIGURATION_DATA; + +#define EFI_CACHE_L1 1 +#define EFI_CACHE_L2 2 +#define EFI_CACHE_L3 3 +#define EFI_CACHE_L4 4 +#define EFI_CACHE_LMAX EFI_CACHE_L4 + +#define EFI_CACHE_SOCKETED 1 +#define EFI_CACHE_NOT_SOCKETED 0 + +typedef enum { + EfiCacheInternal = 0, + EfiCacheExternal = 1, + EfiCacheReserved = 2, + EfiCacheUnknown = 3 +} EFI_CACHE_LOCATION; + +#define EFI_CACHE_ENABLED 1 +#define EFI_CACHE_DISABLED 0 + +typedef enum { + EfiCacheWriteThrough = 0, + EfiCacheWriteBack = 1, + EfiCacheDynamicMode = 2, + EfiCacheUnknownMode = 3 +} EFI_CACHE_OPERATIONAL_MODE; + + + +typedef enum { + CacheSizeRecordType = 1, + MaximumSizeCacheRecordType = 2, + CacheSpeedRecordType = 3, + CacheSocketRecordType = 4, + CacheSramTypeRecordType = 5, + CacheInstalledSramTypeRecordType = 6, + CacheErrorTypeRecordType = 7, + CacheTypeRecordType = 8, + CacheAssociativityRecordType = 9, + CacheConfigRecordType = 10 +} EFI_CACHE_VARIABLE_RECORD_TYPE; + + +typedef union { + EFI_CACHE_SIZE_DATA CacheSize; + EFI_MAXIMUM_CACHE_SIZE_DATA MaximumCacheSize; + EFI_CACHE_SPEED_DATA CacheSpeed; + EFI_CACHE_SOCKET_DATA CacheSocket; + EFI_CACHE_SRAM_TYPE_DATA CacheSramType; + EFI_CACHE_SRAM_TYPE_DATA CacheInstalledSramType; + EFI_CACHE_ERROR_TYPE_DATA CacheErrorType; + EFI_CACHE_TYPE_DATA CacheType; + EFI_CACHE_ASSOCIATIVITY_DATA CacheAssociativity; + EFI_CACHE_CONFIGURATION_DATA CacheConfig; + EFI_CACHE_ASSOCIATION_DATA CacheAssociation; +} EFI_CACHE_VARIABLE_RECORD; + +typedef struct { + EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader; + EFI_CACHE_VARIABLE_RECORD VariableRecord; +} EFI_CACHE_DATA_RECORD; + + +#endif diff --git a/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClassMemory.h b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClassMemory.h new file mode 100644 index 0000000..4d3eef7 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClassMemory.h @@ -0,0 +1,431 @@ +/*++ + +Copyright (c) 2004 - 2009, 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. + +Module Name: + + DataHubSubClassMemory.h + +Abstract: + + Definitions for memory sub class data records + +Revision History + +--*/ + +#ifndef _DATAHUB_SUBCLASS_MEMORY_H_ +#define _DATAHUB_SUBCLASS_MEMORY_H_ + +#include EFI_GUID_DEFINITION (DataHubRecords) + + +#define EFI_MEMORY_SUBCLASS_GUID \ + {0x4E8F4EBB, 0x64B9, 0x4e05, 0x9B, 0x18, 0x4C, 0xFE, 0x49, 0x23, 0x50, 0x97} + +#define EFI_MEMORY_SUBCLASS_VERSION 0x0100 + + +#define EFI_MEMORY_SIZE_RECORD_NUMBER 0x00000001 + +typedef enum _EFI_MEMORY_REGION_TYPE { + EfiMemoryRegionMemory = 0x01, + EfiMemoryRegionReserved = 0x02, + EfiMemoryRegionAcpi = 0x03, + EfiMemoryRegionNvs = 0x04 +} EFI_MEMORY_REGION_TYPE; + +typedef struct { + UINT32 ProcessorNumber; + UINT16 StartBusNumber; + UINT16 EndBusNumber; + EFI_MEMORY_REGION_TYPE MemoryRegionType; + EFI_EXP_BASE2_DATA MemorySize; + EFI_PHYSICAL_ADDRESS MemoryStartAddress; +} EFI_MEMORY_SIZE_DATA; + + +#define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER 0x00000002 + +typedef enum _EFI_MEMORY_ARRAY_LOCATION { + EfiMemoryArrayLocationOther = 0x01, + EfiMemoryArrayLocationUnknown = 0x02, + EfiMemoryArrayLocationSystemBoard = 0x03, + EfiMemoryArrayLocationIsaAddonCard = 0x04, + EfiMemoryArrayLocationEisaAddonCard = 0x05, + EfiMemoryArrayLocationPciAddonCard = 0x06, + EfiMemoryArrayLocationMcaAddonCard = 0x07, + EfiMemoryArrayLocationPcmciaAddonCard = 0x08, + EfiMemoryArrayLocationProprietaryAddonCard = 0x09, + EfiMemoryArrayLocationNuBus = 0x0A, + EfiMemoryArrayLocationPc98C20AddonCard = 0xA0, + EfiMemoryArrayLocationPc98C24AddonCard = 0xA1, + EfiMemoryArrayLocationPc98EAddonCard = 0xA2, + EfiMemoryArrayLocationPc98LocalBusAddonCard = 0xA3 +} EFI_MEMORY_ARRAY_LOCATION; + +typedef enum _EFI_MEMORY_ARRAY_USE { + EfiMemoryArrayUseOther = 0x01, + EfiMemoryArrayUseUnknown = 0x02, + EfiMemoryArrayUseSystemMemory = 0x03, + EfiMemoryArrayUseVideoMemory = 0x04, + EfiMemoryArrayUseFlashMemory = 0x05, + EfiMemoryArrayUseNonVolatileRam = 0x06, + EfiMemoryArrayUseCacheMemory = 0x07, +} EFI_MEMORY_ARRAY_USE; + +typedef enum _EFI_MEMORY_ERROR_CORRECTION { + EfiMemoryErrorCorrectionOther = 0x01, + EfiMemoryErrorCorrectionUnknown = 0x02, + EfiMemoryErrorCorrectionNone = 0x03, + EfiMemoryErrorCorrectionParity = 0x04, + EfiMemoryErrorCorrectionSingleBitEcc = 0x05, + EfiMemoryErrorCorrectionMultiBitEcc = 0x06, + EfiMemoryErrorCorrectionCrc = 0x07, +} EFI_MEMORY_ERROR_CORRECTION; + +typedef struct { + EFI_MEMORY_ARRAY_LOCATION MemoryArrayLocation; + EFI_MEMORY_ARRAY_USE MemoryArrayUse; + EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection; + UINT32 MaximumMemoryCapacity; + UINT16 NumberMemoryDevices; +} EFI_MEMORY_ARRAY_LOCATION_DATA; + + +#define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER 0x00000003 + +typedef enum _EFI_MEMORY_FORM_FACTOR { + EfiMemoryFormFactorOther = 0x01, + EfiMemoryFormFactorUnknown = 0x02, + EfiMemoryFormFactorSimm = 0x03, + EfiMemoryFormFactorSip = 0x04, + EfiMemoryFormFactorChip = 0x05, + EfiMemoryFormFactorDip = 0x06, + EfiMemoryFormFactorZip = 0x07, + EfiMemoryFormFactorProprietaryCard = 0x08, + EfiMemoryFormFactorDimm = 0x09, + EfiMemoryFormFactorTsop = 0x0A, + EfiMemoryFormFactorRowOfChips = 0x0B, + EfiMemoryFormFactorRimm = 0x0C, + EfiMemoryFormFactorSodimm = 0x0D, + EfiMemoryFormFactorSrimm = 0x0E, + EfiMemoryFormFactorFbDimm = 0x0F +} EFI_MEMORY_FORM_FACTOR; + +typedef enum _EFI_MEMORY_ARRAY_TYPE { + EfiMemoryTypeOther = 0x01, + EfiMemoryTypeUnknown = 0x02, + EfiMemoryTypeDram = 0x03, + EfiMemoryTypeEdram = 0x04, + EfiMemoryTypeVram = 0x05, + EfiMemoryTypeSram = 0x06, + EfiMemoryTypeRam = 0x07, + EfiMemoryTypeRom = 0x08, + EfiMemoryTypeFlash = 0x09, + EfiMemoryTypeEeprom = 0x0A, + EfiMemoryTypeFeprom = 0x0B, + EfiMemoryTypeEprom = 0x0C, + EfiMemoryTypeCdram = 0x0D, + EfiMemoryType3Dram = 0x0E, + EfiMemoryTypeSdram = 0x0F, + EfiMemoryTypeSgram = 0x10, + EfiMemoryTypeRdram = 0x11, + EfiMemoryTypeDdr = 0x12, + EfiMemoryTypeDdr2 = 0x13, + EfiMemoryTypeDdr2FbDimm = 0x14, + EfiMemoryTypeDdr3 = 0x18, + EfiMemoryTypeFbd2 = 0x19 +} EFI_MEMORY_ARRAY_TYPE; + +typedef struct { + UINT32 Reserved :1; + UINT32 Other :1; + UINT32 Unknown :1; + UINT32 FastPaged :1; + UINT32 StaticColumn :1; + UINT32 PseudoStatic :1; + UINT32 Rambus :1; + UINT32 Synchronous :1; + UINT32 Cmos :1; + UINT32 Edo :1; + UINT32 WindowDram :1; + UINT32 CacheDram :1; + UINT32 Nonvolatile :1; + UINT32 Reserved1 :19; +} EFI_MEMORY_TYPE_DETAIL; + +typedef enum { + EfiMemoryStateEnabled =0, + EfiMemoryStateUnknown, + EfiMemoryStateUnsupported, + EfiMemoryStateError, + EfiMemoryStateAbsent, + EfiMemoryStateDisabled, + EfiMemoryStatePartial +} EFI_MEMORY_STATE; + +typedef struct { + EFI_STRING_TOKEN MemoryDeviceLocator; + EFI_STRING_TOKEN MemoryBankLocator; + EFI_STRING_TOKEN MemoryManufacturer; + EFI_STRING_TOKEN MemorySerialNumber; + EFI_STRING_TOKEN MemoryAssetTag; + EFI_STRING_TOKEN MemoryPartNumber; + EFI_INTER_LINK_DATA MemoryArrayLink; + EFI_INTER_LINK_DATA MemorySubArrayLink; + UINT16 MemoryTotalWidth; + UINT16 MemoryDataWidth; + UINT64 MemoryDeviceSize; + EFI_MEMORY_FORM_FACTOR MemoryFormFactor; + UINT8 MemoryDeviceSet; + EFI_MEMORY_ARRAY_TYPE MemoryType; + EFI_MEMORY_TYPE_DETAIL MemoryTypeDetail; + UINT16 MemorySpeed; + EFI_MEMORY_STATE MemoryState; + UINT8 MemoryAttributes; + UINT8 MemoryBankConnections; + UINT8 MemoryErrorStatus; +} EFI_MEMORY_ARRAY_LINK; + + +#define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER 0x00000004 + +typedef struct { + EFI_PHYSICAL_ADDRESS MemoryArrayStartAddress; + EFI_PHYSICAL_ADDRESS MemoryArrayEndAddress; + EFI_INTER_LINK_DATA PhysicalMemoryArrayLink; + UINT16 MemoryArrayPartitionWidth; +} EFI_MEMORY_ARRAY_START_ADDRESS; + + +#define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER 0x00000005 + +typedef struct { + EFI_PHYSICAL_ADDRESS MemoryDeviceStartAddress; + EFI_PHYSICAL_ADDRESS MemoryDeviceEndAddress; + EFI_INTER_LINK_DATA PhysicalMemoryDeviceLink; + EFI_INTER_LINK_DATA PhysicalMemoryArrayLink; + UINT8 MemoryDevicePartitionRowPosition; + UINT8 MemoryDeviceInterleavePosition; + UINT8 MemoryDeviceInterleaveDataDepth; +} EFI_MEMORY_DEVICE_START_ADDRESS; + + +// +// Memory. Channel Device Type - SMBIOS Type 37 +// + +#define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER 0x00000006 + +typedef enum _EFI_MEMORY_CHANNEL_TYPE { + EfiMemoryChannelTypeOther = 1, + EfiMemoryChannelTypeUnknown = 2, + EfiMemoryChannelTypeRambus = 3, + EfiMemoryChannelTypeSyncLink = 4 +} EFI_MEMORY_CHANNEL_TYPE; + +typedef struct { + EFI_MEMORY_CHANNEL_TYPE MemoryChannelType; + UINT8 MemoryChannelMaximumLoad; + UINT8 MemoryChannelDeviceCount; +} EFI_MEMORY_CHANNEL_TYPE_DATA; + +#define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER 0x00000007 + +typedef struct { + UINT8 DeviceId; + EFI_INTER_LINK_DATA DeviceLink; + UINT8 MemoryChannelDeviceLoad; +} EFI_MEMORY_CHANNEL_DEVICE_DATA; + +// +// Memory. Controller Information - SMBIOS Type 5 +// +#define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER 0x00000008 + +typedef enum { + EfiErrorDetectingMethodOther = 1, + EfiErrorDetectingMethodUnknown = 2, + EfiErrorDetectingMethodNone = 3, + EfiErrorDetectingMethodParity = 4, + EfiErrorDetectingMethod32Ecc = 5, + EfiErrorDetectingMethod64Ecc = 6, + EfiErrorDetectingMethod128Ecc = 7, + EfiErrorDetectingMethodCrc = 8 +} EFI_MEMORY_ERROR_DETECT_METHOD_TYPE; + +typedef struct { + UINT8 Other :1; + UINT8 Unknown :1; + UINT8 None :1; + UINT8 SingleBitErrorCorrect :1; + UINT8 DoubleBitErrorCorrect :1; + UINT8 ErrorScrubbing :1; + UINT8 Reserved :2; +} EFI_MEMORY_ERROR_CORRECT_CAPABILITY; + +typedef enum { + EfiMemoryInterleaveOther = 1, + EfiMemoryInterleaveUnknown = 2, + EfiMemoryInterleaveOneWay = 3, + EfiMemoryInterleaveTwoWay = 4, + EfiMemoryInterleaveFourWay = 5, + EfiMemoryInterleaveEightWay = 6, + EfiMemoryInterleaveSixteenWay = 7 +} EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE; + +typedef struct { + UINT16 Other :1; + UINT16 Unknown :1; + UINT16 SeventyNs :1; + UINT16 SixtyNs :1; + UINT16 FiftyNs :1; + UINT16 Reserved :11; +} EFI_MEMORY_SPEED_TYPE; + +typedef struct { + UINT16 Other :1; + UINT16 Unknown :1; + UINT16 Standard :1; + UINT16 FastPageMode :1; + UINT16 EDO :1; + UINT16 Parity :1; + UINT16 ECC :1; + UINT16 SIMM :1; + UINT16 DIMM :1; + UINT16 BurstEdo :1; + UINT16 SDRAM :1; + UINT16 Reserved :5; +} EFI_MEMORY_SUPPORTED_TYPE; + +typedef struct { + UINT8 Five :1; + UINT8 Three :1; + UINT8 Two :1; + UINT8 Reserved :5; +} EFI_MEMORY_MODULE_VOLTAGE_TYPE; + +// +// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete +// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead +// +typedef struct { + EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod; + EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability; + EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave; + EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave; + UINT8 MaxMemoryModuleSize; + EFI_MEMORY_SPEED_TYPE MemorySpeedType; + EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType; + EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage; + UINT8 NumberofMemorySlot; + EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability; + UINT16 *MemoryModuleConfigHandles; +} EFI_MEMORY_CONTROLLER_INFORMATION; + +typedef struct { + EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod; + EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability; + EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave; + EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave; + UINT8 MaxMemoryModuleSize; + EFI_MEMORY_SPEED_TYPE MemorySpeedType; + EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType; + EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage; + UINT8 NumberofMemorySlot; + EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability; + EFI_INTER_LINK_DATA MemoryModuleConfig[1]; +} EFI_MEMORY_CONTROLLER_INFORMATION_DATA; + +// +// Memory. Error Information - SMBIOS Type 18 +// +#define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009 + +typedef enum { + EfiMemoryErrorOther = 1, + EfiMemoryErrorUnknown = 2, + EfiMemoryErrorOk = 3, + EfiMemoryErrorBadRead = 4, + EfiMemoryErrorParity = 5, + EfiMemoryErrorSigleBit = 6, + EfiMemoryErrorDoubleBit = 7, + EfiMemoryErrorMultiBit = 8, + EfiMemoryErrorNibble = 9, + EfiMemoryErrorChecksum = 10, + EfiMemoryErrorCrc = 11, + EfiMemoryErrorCorrectSingleBit = 12, + EfiMemoryErrorCorrected = 13, + EfiMemoryErrorUnCorrectable = 14 +} EFI_MEMORY_ERROR_TYPE; + +typedef enum { + EfiMemoryGranularityOther = 1, + EfiMemoryGranularityOtherUnknown = 2, + EfiMemoryGranularityDeviceLevel = 3, + EfiMemoryGranularityMemPartitionLevel = 4 +} EFI_MEMORY_ERROR_GRANULARITY_TYPE; + +typedef enum { + EfiMemoryErrorOperationOther = 1, + EfiMemoryErrorOperationUnknown = 2, + EfiMemoryErrorOperationRead = 3, + EfiMemoryErrorOperationWrite = 4, + EfiMemoryErrorOperationPartialWrite = 5 +} EFI_MEMORY_ERROR_OPERATION_TYPE; + +typedef struct { + EFI_MEMORY_ERROR_TYPE MemoryErrorType; + EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity; + EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation; + UINT32 VendorSyndrome; + UINT32 MemoryArrayErrorAddress; + UINT32 DeviceErrorAddress; + UINT32 DeviceErrorResolution; +} EFI_MEMORY_32BIT_ERROR_INFORMATION; + +// +// Memory. Error Information - SMBIOS Type 33 +// +#define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER 0x0000000A + +typedef struct { + EFI_MEMORY_ERROR_TYPE MemoryErrorType; + EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity; + EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation; + UINT32 VendorSyndrome; + UINT64 MemoryArrayErrorAddress; + UINT64 DeviceErrorAddress; + UINT32 DeviceErrorResolution; +} EFI_MEMORY_64BIT_ERROR_INFORMATION; + + +typedef union _EFI_MEMORY_SUBCLASS_RECORDS { + EFI_MEMORY_SIZE_DATA SizeData; + EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData; + EFI_MEMORY_ARRAY_LINK ArrayLink; + EFI_MEMORY_ARRAY_START_ADDRESS ArrayStartAddress; + EFI_MEMORY_DEVICE_START_ADDRESS DeviceStartAddress; + EFI_MEMORY_CHANNEL_TYPE_DATA ChannelTypeData; + EFI_MEMORY_CHANNEL_DEVICE_DATA ChannelDeviceData; + EFI_MEMORY_CONTROLLER_INFORMATION MemoryControllerInfo; + EFI_MEMORY_32BIT_ERROR_INFORMATION Memory32bitErrorInfo; + EFI_MEMORY_64BIT_ERROR_INFORMATION Memory64bitErrorInfo; +} EFI_MEMORY_SUBCLASS_RECORDS; + +typedef struct { + EFI_SUBCLASS_TYPE1_HEADER Header; + EFI_MEMORY_SUBCLASS_RECORDS Record; +} EFI_MEMORY_SUBCLASS_DRIVER_DATA; + + + +#endif diff --git a/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClassMisc.h b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClassMisc.h new file mode 100644 index 0000000..368c91c --- /dev/null +++ b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClassMisc.h @@ -0,0 +1,1260 @@ +/*++ + +Copyright (c) 2004 - 2009, 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. + +Module Name: + + DataHubSubClassMisc.h + +Abstract: + + Definitions for Misc sub class data records + +Revision History + +--*/ + +#ifndef _DATAHUB_SUBCLASS_MISC_H_ +#define _DATAHUB_SUBCLASS_MISC_H_ + +#include EFI_GUID_DEFINITION(DataHubRecords) + +#define EFI_MISC_SUBCLASS_GUID \ +{ 0x772484B2, 0x7482, 0x4b91, 0x9F, 0x9A, 0xAD, 0x43, 0xF8, 0x1C, 0x58, 0x81 } + +#define EFI_MISC_SUBCLASS_VERSION 0x0100 + +#pragma pack(1) +// +////////////////////////////////////////////////////////////////////////////// +// +// Last PCI Bus Number +// +#define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER 0x00000001 + +typedef struct { + UINT8 LastPciBus; +} EFI_MISC_LAST_PCI_BUS; + +typedef struct { + UINT8 FunctionNum :3; + UINT8 DeviceNum :5; +} EFI_MISC_DEV_FUNC_NUM; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. BIOS Vendor - SMBIOS Type 0 +// +#define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER 0x00000002 + +typedef struct { + UINT32 Reserved1 :2; + UINT32 Unknown :1; + UINT32 BiosCharacteristicsNotSupported :1; + UINT32 IsaIsSupported :1; + UINT32 McaIsSupported :1; + UINT32 EisaIsSupported :1; + UINT32 PciIsSupported :1; + UINT32 PcmciaIsSupported :1; + UINT32 PlugAndPlayIsSupported :1; + UINT32 ApmIsSupported :1; + UINT32 BiosIsUpgradable :1; + UINT32 BiosShadowingAllowed :1; + UINT32 VlVesaIsSupported :1; + UINT32 EscdSupportIsAvailable :1; + UINT32 BootFromCdIsSupported :1; + UINT32 SelectableBootIsSupported :1; + UINT32 RomBiosIsSocketed :1; + UINT32 BootFromPcmciaIsSupported :1; + UINT32 EDDSpecificationIsSupported :1; + UINT32 JapaneseNecFloppyIsSupported :1; + UINT32 JapaneseToshibaFloppyIsSupported :1; + UINT32 Floppy525_360IsSupported :1; + UINT32 Floppy525_12IsSupported :1; + UINT32 Floppy35_720IsSupported :1; + UINT32 Floppy35_288IsSupported :1; + UINT32 PrintScreenIsSupported :1; + UINT32 Keyboard8042IsSupported :1; + UINT32 SerialIsSupported :1; + UINT32 PrinterIsSupported :1; + UINT32 CgaMonoIsSupported :1; + UINT32 NecPc98 :1; + UINT32 AcpiIsSupported :1; + UINT32 UsbLegacyIsSupported :1; + UINT32 AgpIsSupported :1; + UINT32 I20BootIsSupported :1; + UINT32 Ls120BootIsSupported :1; + UINT32 AtapiZipDriveBootIsSupported :1; + UINT32 Boot1394IsSupported :1; + UINT32 SmartBatteryIsSupported :1; + UINT32 BiosBootSpecIsSupported :1; + UINT32 FunctionKeyNetworkBootIsSupported :1; + UINT32 TargetContentDistributionEnabled :1; + UINT32 Reserved :21; +} EFI_MISC_BIOS_CHARACTERISTICS; + +typedef struct { + UINT32 BiosReserved :16; + UINT32 SystemReserved :16; + UINT32 Reserved :32; +} EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION; + +typedef UINT8 EFI_MISC_BIOS_MAJOR_RELEASE; +typedef UINT8 EFI_MISC_BIOS_MINOR_RELEASE; +typedef UINT8 EFI_MISC_FIRM_MAJOR_RELEASE; +typedef UINT8 EFI_MISC_FIRM_MINOR_RELEASE; + +typedef struct { + STRING_REF BiosVendor; + STRING_REF BiosVersion; + STRING_REF BiosReleaseDate; + EFI_PHYSICAL_ADDRESS BiosStartingAddress; + EFI_EXP_BASE2_DATA BiosPhysicalDeviceSize; + EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1; + EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION BiosCharacteristics2; + UINT8 BiosMajorRelease; + UINT8 BiosMinorRelease; + UINT8 BiosEmbeddedFirmwareMajorRelease; + UINT8 BiosEmbeddedFirmwareMinorRelease; +} EFI_MISC_BIOS_VENDOR; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. System Manufacturer - SMBIOS Type 1 +// +#define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER 0x00000003 + +typedef enum { + EfiSystemWakeupTypeReserved = 0, + EfiSystemWakeupTypeOther = 1, + EfiSystemWakeupTypeUnknown = 2, + EfiSystemWakeupTypeApmTimer = 3, + EfiSystemWakeupTypeModemRing = 4, + EfiSystemWakeupTypeLanRemote = 5, + EfiSystemWakeupTypePowerSwitch = 6, + EfiSystemWakeupTypePciPme = 7, + EfiSystemWakeupTypeAcPowerRestored = 8, +} EFI_MISC_SYSTEM_WAKEUP_TYPE; + +typedef struct { + STRING_REF SystemManufacturer; + STRING_REF SystemProductName; + STRING_REF SystemVersion; + STRING_REF SystemSerialNumber; + EFI_GUID SystemUuid; + EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType; + STRING_REF SystemSKUNumber; + STRING_REF SystemFamily; +} EFI_MISC_SYSTEM_MANUFACTURER; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Base Board Manufacturer - SMBIOS Type 2 +// +#define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER 0x00000004 + +typedef struct { + UINT32 Motherboard :1; + UINT32 RequiresDaughterCard :1; + UINT32 Removable :1; + UINT32 Replaceable :1; + UINT32 HotSwappable :1; + UINT32 Reserved :27; +} EFI_BASE_BOARD_FEATURE_FLAGS; + +typedef enum { + EfiBaseBoardTypeUnknown = 1, + EfiBaseBoardTypeOther = 2, + EfiBaseBoardTypeServerBlade = 3, + EfiBaseBoardTypeConnectivitySwitch = 4, + EfiBaseBoardTypeSystemManagementModule = 5, + EfiBaseBoardTypeProcessorModule = 6, + EfiBaseBoardTypeIOModule = 7, + EfiBaseBoardTypeMemoryModule = 8, + EfiBaseBoardTypeDaughterBoard = 9, + EfiBaseBoardTypeMotherBoard = 0xA, + EfiBaseBoardTypeProcessorMemoryModule = 0xB, + EfiBaseBoardTypeProcessorIOModule = 0xC, + EfiBaseBoardTypeInterconnectBoard = 0xD, +} EFI_BASE_BOARD_TYPE; + +typedef struct { + STRING_REF BaseBoardManufacturer; + STRING_REF BaseBoardProductName; + STRING_REF BaseBoardVersion; + STRING_REF BaseBoardSerialNumber; + STRING_REF BaseBoardAssetTag; + STRING_REF BaseBoardChassisLocation; + EFI_BASE_BOARD_FEATURE_FLAGS BaseBoardFeatureFlags; + EFI_BASE_BOARD_TYPE BaseBoardType; + EFI_INTER_LINK_DATA BaseBoardChassisLink; + UINT32 BaseBoardNumberLinks; + EFI_INTER_LINK_DATA LinkN; +} EFI_MISC_BASE_BOARD_MANUFACTURER; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. System/Chassis Enclosure - SMBIOS Type 3 +// +#define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER 0x00000005 + +typedef enum { + EfiMiscChassisTypeOther = 0x1, + EfiMiscChassisTypeUnknown = 0x2, + EfiMiscChassisTypeDeskTop = 0x3, + EfiMiscChassisTypeLowProfileDesktop = 0x4, + EfiMiscChassisTypePizzaBox = 0x5, + EfiMiscChassisTypeMiniTower = 0x6, + EfiMiscChassisTypeTower = 0x7, + EfiMiscChassisTypePortable = 0x8, + EfiMiscChassisTypeLapTop = 0x9, + EfiMiscChassisTypeNotebook = 0xA, + EfiMiscChassisTypeHandHeld = 0xB, + EfiMiscChassisTypeDockingStation = 0xC, + EfiMiscChassisTypeAllInOne = 0xD, + EfiMiscChassisTypeSubNotebook = 0xE, + EfiMiscChassisTypeSpaceSaving = 0xF, + EfiMiscChassisTypeLunchBox = 0x10, + EfiMiscChassisTypeMainServerChassis = 0x11, + EfiMiscChassisTypeExpansionChassis = 0x12, + EfiMiscChassisTypeSubChassis = 0x13, + EfiMiscChassisTypeBusExpansionChassis = 0x14, + EfiMiscChassisTypePeripheralChassis = 0x15, + EfiMiscChassisTypeRaidChassis = 0x16, + EfiMiscChassisTypeRackMountChassis = 0x17, + EfiMiscChassisTypeSealedCasePc = 0x18, + EfiMiscChassisMultiSystemChassis = 0x19, + EfiMiscChassisCompactPCI = 0x1A, + EfiMiscChassisAdvancedTCA = 0x1B, + EfiMiscChassisBlade = 0x1C, + EfiMiscChassisBladeEnclosure = 0x1D +} EFI_MISC_CHASSIS_TYPE; + +typedef struct { + UINT32 ChassisType :16; + UINT32 ChassisLockPresent:1; + UINT32 Reserved :15; +} EFI_MISC_CHASSIS_STATUS; + +typedef enum { + EfiChassisStateOther = 1, + EfiChassisStateUnknown = 2, + EfiChassisStateSafe = 3, + EfiChassisStateWarning = 4, + EfiChassisStateCritical = 5, + EfiChassisStateNonRecoverable = 6, +} EFI_MISC_CHASSIS_STATE; + +typedef enum { + EfiChassisSecurityStatusOther = 1, + EfiChassisSecurityStatusUnknown = 2, + EfiChassisSecurityStatusNone = 3, + EfiChassisSecurityStatusExternalInterfaceLockedOut = 4, + EfiChassisSecurityStatusExternalInterfaceLockedEnabled = 5, +} EFI_MISC_CHASSIS_SECURITY_STATE; + +typedef struct { + UINT32 RecordType :1; + UINT32 Type :7; + UINT32 Reserved :24; +} EFI_MISC_ELEMENT_TYPE; + +typedef struct { + EFI_MISC_ELEMENT_TYPE ChassisElementType; + EFI_INTER_LINK_DATA ChassisElementStructure; + EFI_BASE_BOARD_TYPE ChassisBaseBoard; + UINT32 ChassisElementMinimum; + UINT32 ChassisElementMaximum; +} EFI_MISC_ELEMENTS; + +typedef struct { + STRING_REF ChassisManufacturer; + STRING_REF ChassisVersion; + STRING_REF ChassisSerialNumber; + STRING_REF ChassisAssetTag; + EFI_MISC_CHASSIS_STATUS ChassisType; + EFI_MISC_CHASSIS_STATE ChassisBootupState; + EFI_MISC_CHASSIS_STATE ChassisPowerSupplyState; + EFI_MISC_CHASSIS_STATE ChassisThermalState; + EFI_MISC_CHASSIS_SECURITY_STATE ChassisSecurityState; + UINT32 ChassisOemDefined; + UINT32 ChassisHeight; + UINT32 ChassisNumberPowerCords; + UINT32 ChassisElementCount; + UINT32 ChassisElementRecordLength;// + EFI_MISC_ELEMENTS ChassisElements; +} EFI_MISC_CHASSIS_MANUFACTURER; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Port Connector Information - SMBIOS Type 8 +// +#define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER 0x00000006 + +typedef enum { + EfiPortConnectorTypeNone = 0x0, + EfiPortConnectorTypeCentronics = 0x1, + EfiPortConnectorTypeMiniCentronics = 0x2, + EfiPortConnectorTypeProprietary = 0x3, + EfiPortConnectorTypeDB25Male = 0x4, + EfiPortConnectorTypeDB25Female = 0x5, + EfiPortConnectorTypeDB15Male = 0x6, + EfiPortConnectorTypeDB15Female = 0x7, + EfiPortConnectorTypeDB9Male = 0x8, + EfiPortConnectorTypeDB9Female = 0x9, + EfiPortConnectorTypeRJ11 = 0xA, + EfiPortConnectorTypeRJ45 = 0xB, + EfiPortConnectorType50PinMiniScsi = 0xC, + EfiPortConnectorTypeMiniDin = 0xD, + EfiPortConnectorTypeMicriDin = 0xE, + EfiPortConnectorTypePS2 = 0xF, + EfiPortConnectorTypeInfrared = 0x10, + EfiPortConnectorTypeHpHil = 0x11, + EfiPortConnectorTypeUsb = 0x12, + EfiPortConnectorTypeSsaScsi = 0x13, + EfiPortConnectorTypeCircularDin8Male = 0x14, + EfiPortConnectorTypeCircularDin8Female = 0x15, + EfiPortConnectorTypeOnboardIde = 0x16, + EfiPortConnectorTypeOnboardFloppy = 0x17, + EfiPortConnectorType9PinDualInline = 0x18, + EfiPortConnectorType25PinDualInline = 0x19, + EfiPortConnectorType50PinDualInline = 0x1A, + EfiPortConnectorType68PinDualInline = 0x1B, + EfiPortConnectorTypeOnboardSoundInput = 0x1C, + EfiPortConnectorTypeMiniCentronicsType14 = 0x1D, + EfiPortConnectorTypeMiniCentronicsType26 = 0x1E, + EfiPortConnectorTypeHeadPhoneMiniJack = 0x1F, + EfiPortConnectorTypeBNC = 0x20, + EfiPortConnectorType1394 = 0x21, + EfiPortConnectorTypeSasSata = 0x22, + EfiPortConnectorTypePC98 = 0xA0, + EfiPortConnectorTypePC98Hireso = 0xA1, + EfiPortConnectorTypePCH98 = 0xA2, + EfiPortConnectorTypePC98Note = 0xA3, + EfiPortConnectorTypePC98Full = 0xA4, + EfiPortConnectorTypeOther = 0xFF, +} EFI_MISC_PORT_CONNECTOR_TYPE; + +typedef enum { + EfiPortTypeNone = 0x0, + EfiPortTypeParallelXtAtCompatible = 0x1, + EfiPortTypeParallelPortPs2 = 0x2, + EfiPortTypeParallelPortEcp = 0x3, + EfiPortTypeParallelPortEpp = 0x4, + EfiPortTypeParallelPortEcpEpp = 0x5, + EfiPortTypeSerialXtAtCompatible = 0x6, + EfiPortTypeSerial16450Compatible = 0x7, + EfiPortTypeSerial16550Compatible = 0x8, + EfiPortTypeSerial16550ACompatible = 0x9, + EfiPortTypeScsi = 0xA, + EfiPortTypeMidi = 0xB, + EfiPortTypeJoyStick = 0xC, + EfiPortTypeKeyboard = 0xD, + EfiPortTypeMouse = 0xE, + EfiPortTypeSsaScsi = 0xF, + EfiPortTypeUsb = 0x10, + EfiPortTypeFireWire = 0x11, + EfiPortTypePcmciaTypeI = 0x12, + EfiPortTypePcmciaTypeII = 0x13, + EfiPortTypePcmciaTypeIII = 0x14, + EfiPortTypeCardBus = 0x15, + EfiPortTypeAccessBusPort = 0x16, + EfiPortTypeScsiII = 0x17, + EfiPortTypeScsiWide = 0x18, + EfiPortTypePC98 = 0x19, + EfiPortTypePC98Hireso = 0x1A, + EfiPortTypePCH98 = 0x1B, + EfiPortTypeVideoPort = 0x1C, + EfiPortTypeAudioPort = 0x1D, + EfiPortTypeModemPort = 0x1E, + EfiPortTypeNetworkPort = 0x1F, + EfiPortTypeSata = 0x20, + EfiPortTypeSas = 0x21, + EfiPortType8251Compatible = 0xA0, + EfiPortType8251FifoCompatible = 0xA1, + EfiPortTypeOther = 0xFF, +} EFI_MISC_PORT_TYPE; + + +typedef struct { + EFI_STRING_TOKEN PortInternalConnectorDesignator; + EFI_STRING_TOKEN PortExternalConnectorDesignator; + EFI_MISC_PORT_CONNECTOR_TYPE PortInternalConnectorType; + EFI_MISC_PORT_CONNECTOR_TYPE PortExternalConnectorType; + EFI_MISC_PORT_TYPE PortType; + EFI_MISC_PORT_DEVICE_PATH PortPath; +} EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. System Slots - SMBIOS Type 9 +// +#define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER 0x00000007 + +typedef enum { + EfiSlotTypeOther = 0x1, + EfiSlotTypeUnknown = 0x2, + EfiSlotTypeIsa = 0x3, + EfiSlotTypeMca = 0x4, + EfiSlotTypeEisa = 0x5, + EfiSlotTypePci = 0x6, + EfiSlotTypePcmcia = 0x7, + EfiSlotTypeVlVesa = 0x8, + EfiSlotTypeProprietary = 0x9, + EfiSlotTypeProcessorCardSlot = 0xA, + EfiSlotTypeProprietaryMemoryCardSlot = 0xB, + EfiSlotTypeIORiserCardSlot = 0xC, + EfiSlotTypeNuBus = 0xD, + EfiSlotTypePci66MhzCapable = 0xE, + EfiSlotTypeAgp = 0xF, + EfiSlotTypeApg2X = 0x10, + EfiSlotTypeAgp4X = 0x11, + EfiSlotTypePciX = 0x12, + EfiSlotTypeAgp8X = 0x13, + EfiSlotTypePC98C20 = 0xA0, + EfiSlotTypePC98C24 = 0xA1, + EfiSlotTypePC98E = 0xA2, + EfiSlotTypePC98LocalBus = 0xA3, + EfiSlotTypePC98Card = 0xA4, + EfiSlotTypePciExpress = 0xA5, + EfiSlotTypePciExpressX1 = 0xA6, + EfiSlotTypePciExpressX2 = 0xA7, + EfiSlotTypePciExpressX4 = 0xA8, + EfiSlotTypePciExpressX8 = 0xA9, + EfiSlotTypePciExpressX16 = 0xAA, + EfiSlotTypePciExpressGen2 = 0xAB, + EfiSlotTypePciExpressGen2X1 = 0xAC, + EfiSlotTypePciExpressGen2X2 = 0xAD, + EfiSlotTypePciExpressGen2X4 = 0xAE, + EfiSlotTypePciExpressGen2X8 = 0xAF, + EfiSlotTypePciExpressGen2X16 = 0xB0 +} EFI_MISC_SLOT_TYPE; + +typedef enum { + EfiSlotDataBusWidthOther = 1, + EfiSlotDataBusWidthUnknown = 2, + EfiSlotDataBusWidth8Bit = 3, + EfiSlotDataBusWidth16Bit = 4, + EfiSlotDataBusWidth32Bit = 5, + EfiSlotDataBusWidth64Bit = 6, + EfiSlotDataBusWidth128Bit = 7, + EfiSlotDataBusWidth1xOrx1 = 8, + EfiSlotDataBusWidth2xOrx2 = 9, + EfiSlotDataBusWidth4xOrx4 = 0xA, + EfiSlotDataBusWidth8xOrx8 = 0xB, + EfiSlotDataBusWidth12xOrx12 = 0xC, + EfiSlotDataBusWidth16xOrx16 = 0xD, + EfiSlotDataBusWidth32xOrx32 = 0xE, +} EFI_MISC_SLOT_DATA_BUS_WIDTH; + +typedef enum { + EfiSlotUsageOther = 1, + EfiSlotUsageUnknown = 2, + EfiSlotUsageAvailable = 3, + EfiSlotUsageInUse = 4, +} EFI_MISC_SLOT_USAGE; + +typedef enum { + EfiSlotLengthOther = 1, + EfiSlotLengthUnknown = 2, + EfiSlotLengthShort = 3, + EfiSlotLengthLong = 4 +} EFI_MISC_SLOT_LENGTH; + +typedef struct { + UINT32 CharacteristicsUnknown :1; + UINT32 Provides50Volts :1; + UINT32 Provides33Volts :1; + UINT32 SharedSlot :1; + UINT32 PcCard16Supported :1; + UINT32 CardBusSupported :1; + UINT32 ZoomVideoSupported :1; + UINT32 ModemRingResumeSupported:1; + UINT32 PmeSignalSupported :1; + UINT32 HotPlugDevicesSupported :1; + UINT32 SmbusSignalSupported :1; + UINT32 Reserved :21; +} EFI_MISC_SLOT_CHARACTERISTICS; + +typedef struct { + STRING_REF SlotDesignation; + EFI_MISC_SLOT_TYPE SlotType; + EFI_MISC_SLOT_DATA_BUS_WIDTH SlotDataBusWidth; + EFI_MISC_SLOT_USAGE SlotUsage; + EFI_MISC_SLOT_LENGTH SlotLength; + UINT16 SlotId; + EFI_MISC_SLOT_CHARACTERISTICS SlotCharacteristics; + EFI_DEVICE_PATH_PROTOCOL SlotDevicePath; + UINT16 SegmentGroupNum; + UINT8 BusNum; + EFI_MISC_DEV_FUNC_NUM DevFuncNum; +} EFI_MISC_SYSTEM_SLOT_DESIGNATION; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Onboard Device - SMBIOS Type 10 +// +#define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER 0x00000008 + +typedef enum { + EfiOnBoardDeviceTypeOther = 1, + EfiOnBoardDeviceTypeUnknown = 2, + EfiOnBoardDeviceTypeVideo = 3, + EfiOnBoardDeviceTypeScsiController = 4, + EfiOnBoardDeviceTypeEthernet = 5, + EfiOnBoardDeviceTypeTokenRing = 6, + EfiOnBoardDeviceTypeSound = 7, + EfiOnBoardDeviceTypePataController = 8, + EfiOnBoardDeviceTypeSataController = 9, + EfiOnBoardDeviceTypeSasController = 10 +} EFI_MISC_ONBOARD_DEVICE_TYPE; + +typedef struct { + UINT32 DeviceType :16; + UINT32 DeviceEnabled :1; + UINT32 Reserved :15; +} EFI_MISC_ONBOARD_DEVICE_STATUS; + +typedef struct { + STRING_REF OnBoardDeviceDescription; + EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus; + EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath; +} EFI_MISC_ONBOARD_DEVICE; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. BIOS Language Information - SMBIOS Type 11 +// +#define EFI_MISC_OEM_STRING_RECORD_NUMBER 0x00000009 + +typedef struct { + STRING_REF OemStringRef[1]; +} EFI_MISC_OEM_STRING; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. System Options - SMBIOS Type 12 +// +typedef struct { + STRING_REF SystemOptionStringRef[1]; +} EFI_MISC_SYSTEM_OPTION_STRING; + +#define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER 0x0000000A + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Number of Installable Languages - SMBIOS Type 13 +// +#define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER 0x0000000B + +typedef struct { + UINT32 AbbreviatedLanguageFormat :1; + UINT32 Reserved :31; +} EFI_MISC_LANGUAGE_FLAGS; + +typedef struct { + UINT16 NumberOfInstallableLanguages; + EFI_MISC_LANGUAGE_FLAGS LanguageFlags; + UINT16 CurrentLanguageNumber; +} EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. System Language String +// +#define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER 0x0000000C + +typedef struct { + UINT16 LanguageId; + STRING_REF SystemLanguageString; +} EFI_MISC_SYSTEM_LANGUAGE_STRING; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Group Associations - SMBIOS Type 14 +// +#define EFI_MISC_GROUP_NAME_RECORD_NUMBER 0x0000000D + +typedef struct { + STRING_REF GroupName; + UINT16 NumberGroupItems; + UINT16 GroupId; +} EFI_MISC_GROUP_NAME_DATA; + +#define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER 0x0000000E + +typedef struct { + EFI_GUID SubClass; + EFI_INTER_LINK_DATA GroupLink; + UINT16 GroupId; + UINT16 GroupElementId; + UINT8 ItemType; +} EFI_MISC_GROUP_ITEM_SET_DATA; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Pointing Device Type - SMBIOS Type 21 +// +#define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER 0x0000000F + +typedef enum { + EfiPointingDeviceTypeOther = 1, + EfiPointingDeviceTypeUnknown = 2, + EfiPointingDeviceTypeMouse = 3, + EfiPointingDeviceTypeTrackBall = 4, + EfiPointingDeviceTypeTrackPoint = 5, + EfiPointingDeviceTypeGlidePoint = 6, + EfiPointingDeviceTouchPad = 7, + EfiPointingDeviceTouchScreen = 8, + EfiPointingDeviceOpticalSensor = 9, +} EFI_MISC_POINTING_DEVICE_TYPE; + +typedef enum { + EfiPointingDeviceInterfaceOther = 1, + EfiPointingDeviceInterfaceUnknown = 2, + EfiPointingDeviceInterfaceSerial = 3, + EfiPointingDeviceInterfacePs2 = 4, + EfiPointingDeviceInterfaceInfrared = 5, + EfiPointingDeviceInterfaceHpHil = 6, + EfiPointingDeviceInterfaceBusMouse = 7, + EfiPointingDeviceInterfaceADB = 8, + EfiPointingDeviceInterfaceBusMouseDB9 = 0xA0, + EfiPointingDeviceInterfaceBusMouseMicroDin = 0xA1, + EfiPointingDeviceInterfaceUsb = 0xA2, +} EFI_MISC_POINTING_DEVICE_INTERFACE; + +typedef struct { + EFI_MISC_POINTING_DEVICE_TYPE PointingDeviceType; + EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface; + UINT16 NumberPointingDeviceButtons; + EFI_DEVICE_PATH_PROTOCOL PointingDevicePath; +} EFI_MISC_ONBOARD_DEVICE_TYPE_DATA; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Portable Battery - SMBIOS Type 22 +// +#define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010 + +typedef enum { + EfiPortableBatteryDeviceChemistryOther = 1, + EfiPortableBatteryDeviceChemistryUnknown = 2, + EfiPortableBatteryDeviceChemistryLeadAcid = 3, + EfiPortableBatteryDeviceChemistryNickelCadmium = 4, + EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5, + EfiPortableBatteryDeviceChemistryLithiumIon = 6, + EfiPortableBatteryDeviceChemistryZincAir = 7, + EfiPortableBatteryDeviceChemistryLithiumPolymer = 8, +} EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY; + +typedef struct { + STRING_REF Location; + STRING_REF Manufacturer; + STRING_REF ManufactureDate; + STRING_REF SerialNumber; + STRING_REF DeviceName; + EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY DeviceChemistry; + UINT16 DesignCapacity; + UINT16 DesignVoltage; + STRING_REF SBDSVersionNumber; + UINT8 MaximumError; + UINT16 SBDSSerialNumber; + UINT16 SBDSManufactureDate; + STRING_REF SBDSDeviceChemistry; + UINT8 DesignCapacityMultiplier; + UINT32 OEMSpecific; + UINT8 BatteryNumber; // Temporary + BOOLEAN Valid; // Is entry valid - Temporary +} EFI_MISC_PORTABLE_BATTERY; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Reset Capabilities - SMBIOS Type 23 +// +#define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER 0x00000011 + +typedef struct { + UINT32 Status :1; + UINT32 BootOption :2; + UINT32 BootOptionOnLimit :2; + UINT32 WatchdogTimerPresent:1; + UINT32 Reserved :26; +} EFI_MISC_RESET_CAPABILITIES_TYPE; + +typedef struct { + EFI_MISC_RESET_CAPABILITIES_TYPE ResetCapabilities; + UINT16 ResetCount; + UINT16 ResetLimit; + UINT16 ResetTimerInterval; + UINT16 ResetTimeout; +} EFI_MISC_RESET_CAPABILITIES; + +typedef struct { + EFI_MISC_RESET_CAPABILITIES ResetCapabilities; + UINT16 ResetCount; + UINT16 ResetLimit; + UINT16 ResetTimerInterval; + UINT16 ResetTimeout; +} EFI_MISC_RESET_CAPABILITIES_DATA; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Hardware Security - SMBIOS Type 24 +// +#define EFI_MISC_HARDWARE_SECURITY_RECORD_NUMBER 0x00000012 + +// +// Backward Compatibility +// +#define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER EFI_MISC_HARDWARE_SECURITY_RECORD_NUMBER + +typedef enum { + EfiHardwareSecurityStatusDisabled = 0, + EfiHardwareSecurityStatusEnabled = 1, + EfiHardwareSecurityStatusNotImplemented = 2, + EfiHardwareSecurityStatusUnknown = 3 +} EFI_MISC_HARDWARE_SECURITY_STATUS; + +typedef struct { + EFI_MISC_HARDWARE_SECURITY_STATUS FrontPanelResetStatus :2; + EFI_MISC_HARDWARE_SECURITY_STATUS AdministratorPasswordStatus :2; + EFI_MISC_HARDWARE_SECURITY_STATUS KeyboardPasswordStatus :2; + EFI_MISC_HARDWARE_SECURITY_STATUS PowerOnPasswordStatus :2; + EFI_MISC_HARDWARE_SECURITY_STATUS Reserved :24; +} EFI_MISC_HARDWARE_SECURITY_SETTINGS; + +typedef struct { + EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings; +} EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. System Power Controls - SMBIOS Type 25 +// +#define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER 0x00000013 + +typedef struct { + UINT8 ScheduledPoweronMonth; + UINT8 ScheduledPoweronDayOfMonth; + UINT8 ScheduledPoweronHour; + UINT8 ScheduledPoweronMinute; + UINT8 ScheduledPoweronSecond; +} EFI_MISC_SCHEDULED_POWER_ON_MONTH; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Voltage Probe - SMBIOS Type 26 +// +#define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000014 + +typedef struct { + UINT32 VoltageProbeSite :5; + UINT32 VoltageProbeStatus :3; + UINT32 Reserved :24; +} EFI_MISC_VOLTAGE_PROBE_LOCATION; + +typedef struct { + STRING_REF VoltageProbeDescription; + EFI_MISC_VOLTAGE_PROBE_LOCATION VoltageProbeLocation; + UINT16 VoltageProbeMaximumValue; + UINT16 VoltageProbeMinimumValue; + UINT16 VoltageProbeResolution; + UINT16 VoltageProbeTolerance; + UINT16 VoltageProbeAccuracy; + UINT16 VoltageProbeNominalValue; + UINT16 MDLowerNoncriticalThreshold; + UINT16 MDUpperNoncriticalThreshold; + UINT16 MDLowerCriticalThreshold; + UINT16 MDUpperCriticalThreshold; + UINT16 MDLowerNonrecoverableThreshold; + UINT16 MDUpperNonrecoverableThreshold; + UINT32 VoltageProbeOemDefined; +} EFI_MISC_VOLTAGE_PROBE_DESCRIPTION; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Cooling Device - SMBIOS Type 27 +// +#define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER 0x00000015 + +typedef struct { + UINT32 CoolingDevice :5; + UINT32 CoolingDeviceStatus :3; + UINT32 Reserved :24; +} EFI_MISC_COOLING_DEVICE_TYPE; + +typedef struct { + EFI_MISC_COOLING_DEVICE_TYPE CoolingDeviceType; + EFI_INTER_LINK_DATA CoolingDeviceTemperatureLink; + UINT8 CoolingDeviceUnitGroup; + UINT16 CoolingDeviceNominalSpeed; + UINT32 CoolingDeviceOemDefined; +} EFI_MISC_COOLING_DEVICE_TEMP_LINK; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Temperature Probe - SMBIOS Type 28 +// +#define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000016 + +typedef struct { + UINT32 TemperatureProbeSite :5; + UINT32 TemperatureProbeStatus :3; + UINT32 Reserved :24; +} EFI_MISC_TEMPERATURE_PROBE_LOCATION; + +typedef struct { + STRING_REF TemperatureProbeDescription; + EFI_MISC_TEMPERATURE_PROBE_LOCATION TemperatureProbeLocation; + UINT16 TemperatureProbeMaximumValue; + UINT16 TemperatureProbeMinimumValue; + UINT16 TemperatureProbeResolution; + UINT16 TemperatureProbeTolerance; + UINT16 TemperatureProbeAccuracy; + UINT16 TemperatureProbeNominalValue; + UINT16 MDLowerNoncriticalThreshold; + UINT16 MDUpperNoncriticalThreshold; + UINT16 MDLowerCriticalThreshold; + UINT16 MDUpperCriticalThreshold; + UINT16 MDLowerNonrecoverableThreshold; + UINT16 MDUpperNonrecoverableThreshold; + UINT32 TemperatureProbeOemDefined; +} EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Electrical Current Probe - SMBIOS Type 29 +// +#define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000017 + +typedef struct { + UINT32 ElectricalCurrentProbeSite :5; + UINT32 ElectricalCurrentProbeStatus :3; + UINT32 Reserved :24; +} EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION; + +typedef struct { + STRING_REF ElectricalCurrentProbeDescription; + EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION ElectricalCurrentProbeLocation; + UINT16 ElectricalCurrentProbeMaximumValue; + UINT16 ElectricalCurrentProbeMinimumValue; + UINT16 ElectricalCurrentProbeResolution; + UINT16 ElectricalCurrentProbeTolerance; + UINT16 ElectricalCurrentProbeAccuracy; + UINT16 ElectricalCurrentProbeNominalValue; + UINT16 MDLowerNoncriticalThreshold; + UINT16 MDUpperNoncriticalThreshold; + UINT16 MDLowerCriticalThreshold; + UINT16 MDUpperCriticalThreshold; + UINT16 MDLowerNonrecoverableThreshold; + UINT16 MDUpperNonrecoverableThreshold; + UINT32 ElectricalCurrentProbeOemDefined; +} EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Out-of-Band Remote Access - SMBIOS Type 30 +// +#define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER 0x00000018 + +typedef struct { + UINT32 InboundConnectionEnabled :1; + UINT32 OutboundConnectionEnabled :1; + UINT32 Reserved :30; +} EFI_MISC_REMOTE_ACCESS_CONNECTIONS; + +typedef struct { + STRING_REF RemoteAccessManufacturerNameDescription; + EFI_MISC_REMOTE_ACCESS_CONNECTIONS RemoteAccessConnections; +} EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION; +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. BIS Entry Point - SMBIOS Type 31 +// +#define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER 0x00000019 + +typedef struct { + EFI_PHYSICAL_ADDRESS BisEntryPoint; +} EFI_MISC_BIS_ENTRY_POINT; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Boot Information - SMBIOS Type 32 +// +#define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER 0x0000001A + +typedef enum { + EfiBootInformationStatusNoError = 0, + EfiBootInformationStatusNoBootableMedia = 1, + EfiBootInformationStatusNormalOSFailedLoading = 2, + EfiBootInformationStatusFirmwareDetectedFailure = 3, + EfiBootInformationStatusOSDetectedFailure = 4, + EfiBootInformationStatusUserRequestedBoot = 5, + EfiBootInformationStatusSystemSecurityViolation = 6, + EfiBootInformationStatusPreviousRequestedImage = 7, + EfiBootInformationStatusWatchdogTimerExpired = 8, + EfiBootInformationStatusStartReserved = 9, + EfiBootInformationStatusStartOemSpecific = 128, + EfiBootInformationStatusStartProductSpecific = 192, +} EFI_MISC_BOOT_INFORMATION_STATUS_TYPE; + +typedef struct { + EFI_MISC_BOOT_INFORMATION_STATUS_TYPE BootInformationStatus; + UINT8 BootInformationData[9]; +} EFI_MISC_BOOT_INFORMATION_STATUS; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Management Device - SMBIOS Type 34 +// +#define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER 0x0000001B + +typedef enum { + EfiManagementDeviceTypeOther = 1, + EfiManagementDeviceTypeUnknown = 2, + EfiManagementDeviceTypeLm75 = 3, + EfiManagementDeviceTypeLm78 = 4, + EfiManagementDeviceTypeLm79 = 5, + EfiManagementDeviceTypeLm80 = 6, + EfiManagementDeviceTypeLm81 = 7, + EfiManagementDeviceTypeAdm9240 = 8, + EfiManagementDeviceTypeDs1780 = 9, + EfiManagementDeviceTypeMaxim1617 = 0xA, + EfiManagementDeviceTypeGl518Sm = 0xB, + EfiManagementDeviceTypeW83781D = 0xC, + EfiManagementDeviceTypeHt82H791 = 0xD +} EFI_MISC_MANAGEMENT_DEVICE_TYPE; + +typedef enum { + EfiManagementDeviceAddressTypeOther = 1, + EfiManagementDeviceAddressTypeUnknown = 2, + EfiManagementDeviceAddressTypeIOPort = 3, + EfiManagementDeviceAddressTypeMemory = 4, + EfiManagementDeviceAddressTypeSmbus = 5 +} EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE; + +typedef struct { + STRING_REF ManagementDeviceDescription; + EFI_MISC_MANAGEMENT_DEVICE_TYPE ManagementDeviceType; + UINTN ManagementDeviceAddress; + EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE ManagementDeviceAddressType; +} EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION; + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. Management Device Component - SMBIOS Type 35 +// +#define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER 0x0000001C + +typedef struct { + STRING_REF ManagementDeviceComponentDescription; + EFI_INTER_LINK_DATA ManagementDeviceLink; + EFI_INTER_LINK_DATA ManagementDeviceComponentLink; + EFI_INTER_LINK_DATA ManagementDeviceThresholdLink; + UINT8 ComponentType; +} EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION; + +// +////////////////////////////////////////////////////////////////////////////// +// +// IPMI Data Record - SMBIOS Type 38 +// +typedef enum { + EfiIpmiOther = 0, + EfiIpmiKcs = 1, + EfiIpmiSmic = 2, + EfiIpmiBt = 3, +} EFI_MISC_IPMI_INTERFACE_TYPE; + +typedef struct { + UINT16 IpmiSpecLeastSignificantDigit:4; + UINT16 IpmiSpecMostSignificantDigit:4; + UINT16 Reserved:8; +} EFI_MISC_IPMI_SPECIFICATION_REVISION; + +typedef struct { + EFI_MISC_IPMI_INTERFACE_TYPE IpmiInterfaceType; + EFI_MISC_IPMI_SPECIFICATION_REVISION IpmiSpecificationRevision; + UINT16 IpmiI2CSlaveAddress; + UINT16 IpmiNvDeviceAddress; + UINT64 IpmiBaseAddress; + EFI_DEVICE_PATH_PROTOCOL IpmiDevicePath; +} EFI_MISC_IPMI_INTERFACE_TYPE_DATA; + +#define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER 0x0000001D + +// +////////////////////////////////////////////////////////////////////////////// +// +//System Power supply Record - SMBIOS Type 39 +// +typedef struct { + UINT16 PowerSupplyHotReplaceable :1; + UINT16 PowerSupplyPresent :1; + UINT16 PowerSupplyUnplugged :1; + UINT16 InputVoltageRangeSwitch :4; + UINT16 PowerSupplyStatus :3; + UINT16 PowerSupplyType :4; + UINT16 Reserved :2; +} POWER_SUPPLY_CHARACTERISTICS; + +typedef struct { + UINT16 PowerUnitGroup; + STRING_REF PowerSupplyLocation; + STRING_REF PowerSupplyDeviceName; + STRING_REF PowerSupplyManufacturer; + STRING_REF PowerSupplySerialNumber; + STRING_REF PowerSupplyAssetTagNumber; + STRING_REF PowerSupplyModelPartNumber; + STRING_REF PowerSupplyRevisionLevel; + UINT16 PowerSupplyMaxPowerCapacity; + POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics; + EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink; + EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink; + EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink; +} EFI_MISC_SYSTEM_POWER_SUPPLY; + +#define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E + +// +////////////////////////////////////////////////////////////////////////////// +// +//Additional Information Record - SMBIOS Type 40 +// +typedef struct { + UINT8 EntryLength; + UINT8 ReferencedSmbiosType; + EFI_INTER_LINK_DATA ReferencedLink; + UINT8 ReferencedOffset; + STRING_REF EntryString; + EFI_PHYSICAL_ADDRESS ValueAddress; +} EFI_MISC_ADDITIONAL_INFORMATION_ENTRY; + +typedef struct { + UINT8 NumberOfAdditionalInformationEntries; + EFI_PHYSICAL_ADDRESS AdditionalInfoEntriesAddr; +} EFI_MISC_ADDITIONAL_INFORMATION; + +#define EFI_MISC_ADDITIONAL_INFORMATION_RECORD_NUMBER 0x00000022 + +// +////////////////////////////////////////////////////////////////////////////// +// +//Onboard Devices Extended Infomation Record - SMBIOS Type 41 +// +typedef struct { + UINT8 TypeOfDevice:7; + UINT8 DeviceStatus:1; +} EFI_MISC_DEVICE_TYPE; + +typedef struct { + STRING_REF ReferenceDesignation; + EFI_MISC_DEVICE_TYPE DeviceType; + UINT8 DeviceTypeInstance; + UINT16 SegmentGroupNum; + UINT8 BusNum; + EFI_MISC_DEV_FUNC_NUM DevFuncNum; +} EFI_MISC_ONBOARD_DEVICES_EXTENDED_INFORMATION; + +#define EFI_MISC_ONBOARD_DEVICES_EXTENDED_INFORMATION_RECORD_NUMBER 0x00000023 + +// +////////////////////////////////////////////////////////////////////////////// +// +// Generic Data Record - All SMBIOS Type +// Put smbios raw data into one datahub record directly. Smbios driver would +// copy smbios raw data into smbios table but not take any translation. +// +typedef struct { + UINT8 Type; + UINT8 Length; + UINT16 Handle; +} SMBIOS_STRUCTURE_HDR; + +typedef struct { + SMBIOS_STRUCTURE_HDR Header; + UINT8 RawData[1]; +} EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION; + +#define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER 0x0000001F + +// +////////////////////////////////////////////////////////////////////////////// +// +// Misc. System Event Log - SMBIOS Type 15 +// +#define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020 + +typedef enum { + EfiEventLogTypeReserved1 = 0, + EfiEventLogTypeSingleBitEccMemoryError = 1, + EfiEventLogTypeMultiBitEccMemoryError = 2, + EfiEventLogTypeParityMemoryError = 3, + EfiEventLogTypeBusTimeOut = 4, + EfiEventLogTypeIoChannelCheck = 5, + EfiEventLogTypeSoftwareNmi = 6, + EfiEventLogTypePostMemoryResize = 7, + EfiEventLogTypePostError = 8, + EfiEventLogTypePciParityError = 9, + EfiEventLogTypePciSystemError = 0xA, + EfiEventLogTypeCpuFailure = 0xB, + EfiEventLogTypeEisaFailSafeTimerTimeOut = 0xC, + EfiEventLogTypeCorrectableMemoryLogDisabled = 0xD, + EfiEventLogTypeLoggingDisabled = 0xE, + EfiEventLogTypeReserved2 = 0xF, + EfiEventLogTypeSystemLimitExceeded = 0x10, + EfiEventLogTypeAsynchronousHardwareTimerExpired = 0x11, + EfiEventLogTypeSystemConfigurationInformation = 0x12, + EfiEventLogTypeHardDiskInformation = 0x13, + EfiEventLogTypeSystemReconfigured = 0x14, + EfiEventLogTypeUncorrectableCpuComplexError = 0x15, + EfiEventLogTypeLogAreaResetCleared = 0x16, + EfiEventLogTypeSystemBoot = 0x17, + EfiEventLogTypeEndOfLog = 0xFF +} EFI_MISC_LOG_TYPE; + +typedef enum { + EfiEventLogDataFormatTypeNone = 0, + EfiEventLogDataFormatTypeHandle = 1, + EfiEventLogDataFormatTypeMultipleEvent = 2, + EfiEventLogDataFormatTypeMultipleEventHandle = 3, + EfiEventLogDataFormatTypePostResultsBitmap = 4, + EfiEventLogDataFormatTypeSystemManagement = 5, + EfiEventLogDataFormatTypeMultipleEventSystemManagement = 6 +} EFI_MISC_VARIABLE_DATA_FORMAT_TYPE; + +typedef struct { + UINT8 LogType; + UINT8 DataFormatType; +} EFI_MISC_EVENT_LOG_TYPE; + +typedef struct { + UINT16 LogAreaLength; + UINT16 LogHeaderStartOffset; + UINT16 LogDataStartOffset; + UINT8 AccessMethod; + UINT8 LogStatus; + UINT32 LogChangeToken; + UINT32 AccessMethodAddress; + UINT8 LogHeaderFormat; + UINT8 NumberOfSupportedLogType; + UINT8 LengthOfLogDescriptor; + EFI_PHYSICAL_ADDRESS EventLogTypeDescriptors; // Pointer to EFI_MISC_EVENT_LOG_TYPE +} EFI_MISC_SYSTEM_EVENT_LOG; + +// +// Access Method. +// 0x00~0x04: as following definition +// 0x05~0x7f: Available for future assignment. +// 0x80~0xff: BIOS Vendor/OEM-specific. +// +#define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT 0x00 +#define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT 0X01 +#define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT 0X02 +#define ACCESS_MEMORY_MAPPED 0x03 +#define ACCESS_GPNV 0x04 + +// +////////////////////////////////////////////////////////////////////////////// +// +//Management Device Threshold Data Record - SMBIOS Type 36 +// +#define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER 0x00000021 + +typedef struct { + UINT16 LowerThresNonCritical; + UINT16 UpperThresNonCritical; + UINT16 LowerThresCritical; + UINT16 UpperThresCritical; + UINT16 LowerThresNonRecover; + UINT16 UpperThresNonRecover; +} EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD; + +// +////////////////////////////////////////////////////////////////////////////// +// +// +// +typedef union { + EFI_MISC_LAST_PCI_BUS LastPciBus; + EFI_MISC_BIOS_VENDOR MiscBiosVendor; + EFI_MISC_SYSTEM_MANUFACTURER MiscSystemManufacturer; + EFI_MISC_BASE_BOARD_MANUFACTURER MiscBaseBoardManufacturer; + EFI_MISC_CHASSIS_MANUFACTURER MiscChassisManufacturer; + EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR MiscPortInternalConnectorDesignator; + EFI_MISC_SYSTEM_SLOT_DESIGNATION MiscSystemSlotDesignation; + EFI_MISC_ONBOARD_DEVICE MiscOnboardDevice; + EFI_MISC_OEM_STRING MiscOemString; + EFI_MISC_SYSTEM_OPTION_STRING MiscOptionString; + EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES NumberOfInstallableLanguages; + EFI_MISC_SYSTEM_LANGUAGE_STRING MiscSystemLanguageString; + EFI_MISC_GROUP_NAME_DATA MiscGroupNameData; + EFI_MISC_GROUP_ITEM_SET_DATA MiscGroupItemSetData; + EFI_MISC_SYSTEM_EVENT_LOG MiscSystemEventLog; + EFI_MISC_ONBOARD_DEVICE_TYPE_DATA MiscOnboardDeviceTypeData; + EFI_MISC_PORTABLE_BATTERY MiscPortableBattery; + EFI_MISC_RESET_CAPABILITIES_DATA MiscResetCapablilitiesData; + EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData; + EFI_MISC_SCHEDULED_POWER_ON_MONTH MiscScheduledPowerOnMonth; + EFI_MISC_VOLTAGE_PROBE_DESCRIPTION MiscVoltageProbeDescription; + EFI_MISC_COOLING_DEVICE_TEMP_LINK MiscCoolingDeviceTempLink; + EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION MiscTemperatureProbeDescription; + EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION MiscElectricalCurrentProbeDescription; + EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION MiscRemoteAccessManufacturerDescription; + EFI_MISC_BIS_ENTRY_POINT MiscBisEntryPoint; + EFI_MISC_BOOT_INFORMATION_STATUS MiscBootInformationStatus; + EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION MiscManagementDeviceDescription; + EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION MiscManagementDeviceComponentDescription; + EFI_MISC_IPMI_INTERFACE_TYPE_DATA MiscIpmiInterfaceTypeData; + EFI_MISC_SYSTEM_POWER_SUPPLY MiscPowerSupplyInfo; + EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION MiscSmbiosStructEncapsulation; + EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD MiscManagementDeviceThreshold; + EFI_MISC_ADDITIONAL_INFORMATION MiscAdditionalInformation; + EFI_MISC_ONBOARD_DEVICES_EXTENDED_INFORMATION MiscOnBoardDevicesExtendedInformation; +} EFI_MISC_SUBCLASS_RECORDS; + +// +// +// +typedef struct { + EFI_SUBCLASS_TYPE1_HEADER Header; + EFI_MISC_SUBCLASS_RECORDS Record; +} EFI_MISC_SUBCLASS_DRIVER_DATA; + +#pragma pack() + +#endif /* _DATAHUB_SUBCLASS_MISC_H_ */ +/* eof - DataHubSubClassMisc.h */ diff --git a/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClassProcessor.h b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClassProcessor.h new file mode 100644 index 0000000..578cb87 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/DataHubRecords/DataHubSubClassProcessor.h @@ -0,0 +1,492 @@ +/*++ + +Copyright (c) 2004 - 2009, 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. + +Module Name: + + DataHubSubClassProcessor.h + +Abstract: + + Definitions for processor sub class data records + +Revision History + +--*/ + +#ifndef _DATAHUB_SUBCLASS_PROCESSOR_H_ +#define _DATAHUB_SUBCLASS_PROCESSOR_H_ + +#define EFI_PROCESSOR_SUBCLASS_VERSION 0x00010000 + +#define EFI_PROCESSOR_SUBCLASS_GUID \ + { 0x26fdeb7e, 0xb8af, 0x4ccf, 0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7 } + + +typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA; + +typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA; + +typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_CORE_FREQUENCY_DATA; + +typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA; + +typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA; + +typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_FSB_FREQUENCY_DATA; + +typedef STRING_REF EFI_PROCESSOR_VERSION_DATA; + +typedef STRING_REF EFI_PROCESSOR_MANUFACTURER_DATA; + +typedef STRING_REF EFI_PROCESSOR_SERIAL_NUMBER_DATA; + +typedef STRING_REF EFI_PROCESSOR_ASSET_TAG_DATA; + +typedef STRING_REF EFI_PROCESSOR_PART_NUMBER_DATA; + +typedef struct { + UINT32 ProcessorSteppingId:4; + UINT32 ProcessorModel: 4; + UINT32 ProcessorFamily: 4; + UINT32 ProcessorType: 2; + UINT32 ProcessorReserved1: 2; + UINT32 ProcessorXModel: 4; + UINT32 ProcessorXFamily: 8; + UINT32 ProcessorReserved2: 4; +} EFI_PROCESSOR_SIGNATURE; + +typedef struct { + UINT32 ProcessorBrandIndex :8; + UINT32 ProcessorClflush :8; + UINT32 ProcessorReserved :8; + UINT32 ProcessorDfltApicId :8; +} EFI_PROCESSOR_MISC_INFO; + +typedef struct { + UINT32 ProcessorFpu: 1; + UINT32 ProcessorVme: 1; + UINT32 ProcessorDe: 1; + UINT32 ProcessorPse: 1; + UINT32 ProcessorTsc: 1; + UINT32 ProcessorMsr: 1; + UINT32 ProcessorPae: 1; + UINT32 ProcessorMce: 1; + UINT32 ProcessorCx8: 1; + UINT32 ProcessorApic: 1; + UINT32 ProcessorReserved1: 1; + UINT32 ProcessorSep: 1; + UINT32 ProcessorMtrr: 1; + UINT32 ProcessorPge: 1; + UINT32 ProcessorMca: 1; + UINT32 ProcessorCmov: 1; + UINT32 ProcessorPat: 1; + UINT32 ProcessorPse36: 1; + UINT32 ProcessorPsn: 1; + UINT32 ProcessorClfsh: 1; + UINT32 ProcessorReserved2: 1; + UINT32 ProcessorDs: 1; + UINT32 ProcessorAcpi: 1; + UINT32 ProcessorMmx: 1; + UINT32 ProcessorFxsr: 1; + UINT32 ProcessorSse: 1; + UINT32 ProcessorSse2: 1; + UINT32 ProcessorSs: 1; + UINT32 ProcessorReserved3: 1; + UINT32 ProcessorTm: 1; + UINT32 ProcessorReserved4: 2; +} EFI_PROCESSOR_FEATURE_FLAGS; + +typedef struct { + EFI_PROCESSOR_SIGNATURE Signature; + EFI_PROCESSOR_MISC_INFO MiscInfo; + UINT32 Reserved; + EFI_PROCESSOR_FEATURE_FLAGS FeatureFlags; +} EFI_PROCESSOR_ID_DATA; + +typedef enum { + EfiProcessorOther = 1, + EfiProcessorUnknown = 2, + EfiCentralProcessor = 3, + EfiMathProcessor = 4, + EfiDspProcessor = 5, + EfiVideoProcessor = 6 +} EFI_PROCESSOR_TYPE_DATA; + +typedef enum { + EfiProcessorFamilyOther = 1, + EfiProcessorFamilyUnknown = 2, + EfiProcessorFamily8086 = 3, + EfiProcessorFamily80286 = 4, + EfiProcessorFamilyIntel386 = 5, + EfiProcessorFamilyIntel486 = 6, + EfiProcessorFamily8087 = 7, + EfiProcessorFamily80287 = 8, + EfiProcessorFamily80387 = 9, + EfiProcessorFamily80487 = 0x0A, + EfiProcessorFamilyPentium = 0x0B, + EfiProcessorFamilyPentiumPro = 0x0C, + EfiProcessorFamilyPentiumII = 0x0D, + EfiProcessorFamilyPentiumMMX = 0x0E, + EfiProcessorFamilyCeleron = 0x0F, + EfiProcessorFamilyPentiumIIXeon = 0x10, + EfiProcessorFamilyPentiumIII = 0x11, + EfiProcessorFamilyM1 = 0x12, + EfiProcessorFamilyM2 = 0x13, + EfiProcessorFamilyM1Reserved2 = 0x14, + EfiProcessorFamilyM1Reserved3 = 0x15, + EfiProcessorFamilyM1Reserved4 = 0x16, + EfiProcessorFamilyM1Reserved5 = 0x17, + EfiProcessorFamilyAmdDuron = 0x18, + EfiProcessorFamilyK5 = 0x19, + EfiProcessorFamilyK6 = 0x1A, + EfiProcessorFamilyK6_2 = 0x1B, + EfiProcessorFamilyK6_3 = 0x1C, + EfiProcessorFamilyAmdAthlon = 0x1D, + EfiProcessorFamilyK6_2Plus = 0x1E, + EfiProcessorFamilyK5Reserved6 = 0x1F, + EfiProcessorFamilyPowerPC = 0x20, + EfiProcessorFamilyPowerPC601 = 0x21, + EfiProcessorFamilyPowerPC603 = 0x22, + EfiProcessorFamilyPowerPC603Plus = 0x23, + EfiProcessorFamilyPowerPC604 = 0x24, + EfiProcessorFamilyPowerPC620 = 0x25, + EfiProcessorFamilyPowerPC704 = 0x26, + EfiProcessorFamilyPowerPC750 = 0x27, + EfiProcessorFamilyIntelCoreDuo = 0x28, + EfiProcessorFamilyIntelCoreDuoMobile = 0x29, + EfiProcessorFamilyIntelCoreSoloMobile = 0x2A, + EfiProcessorFamilyIntelAtom = 0x2B, + EfiProcessorFamilyAlpha2 = 0x30, + EfiProcessorFamilyAlpha21064 = 0x31, + EfiProcessorFamilyAlpha21066 = 0x32, + EfiProcessorFamilyAlpha21164 = 0x33, + EfiProcessorFamilyAlpha21164PC = 0x34, + EfiProcessorFamilyAlpha21164a = 0x35, + EfiProcessorFamilyAlpha21264 = 0x36, + EfiProcessorFamilyAlpha21364 = 0x37, + EfiProcessorFamilyMips = 0x40, + EfiProcessorFamilyMIPSR4000 = 0x41, + EfiProcessorFamilyMIPSR4200 = 0x42, + EfiProcessorFamilyMIPSR4400 = 0x43, + EfiProcessorFamilyMIPSR4600 = 0x44, + EfiProcessorFamilyMIPSR10000 = 0x45, + EfiProcessorFamilySparc = 0x50, + EfiProcessorFamilySuperSparc = 0x51, + EfiProcessorFamilymicroSparcII = 0x52, + EfiProcessorFamilymicroSparcIIep = 0x53, + EfiProcessorFamilyUltraSparc = 0x54, + EfiProcessorFamilyUltraSparcII = 0x55, + EfiProcessorFamilyUltraSparcIIi = 0x56, + EfiProcessorFamilyUltraSparcIII = 0x57, + EfiProcessorFamilyUltraSparcIIIi = 0x58, + EfiProcessorFamily68040 = 0x60, + EfiProcessorFamily68xxx = 0x61, + EfiProcessorFamily68000 = 0x62, + EfiProcessorFamily68010 = 0x63, + EfiProcessorFamily68020 = 0x64, + EfiProcessorFamily68030 = 0x65, + EfiProcessorFamilyHobbit = 0x70, + EfiProcessorFamilyCrusoeTM5000 = 0x78, + EfiProcessorFamilyCrusoeTM3000 = 0x79, + EfiProcessorFamilyEfficeonTM8000 = 0x7A, + EfiProcessorFamilyWeitek = 0x80, + EfiProcessorFamilyItanium = 0x82, + EfiProcessorFamilyAmdAthlon64 = 0x83, + EfiProcessorFamilyAmdOpteron = 0x84, + EfiProcessorFamilyAmdSempron = 0x85, + EfiProcessorFamilyAmdTurion64Mobile = 0x86, + EfiProcessorFamilyDualCoreAmdOpteron = 0x87, + EfiProcessorFamilyAmdAthlon64X2DualCore = 0x88, + EfiProcessorFamilyAmdTurion64X2Mobile = 0x89, + EfiProcessorFamilyQuadCoreAmdOpteron = 0x8A, + EfiProcessorFamilyThirdGenerationAmdOpteron = 0x8B, + EfiProcessorFamilyAmdPhenomFxQuadCore = 0x8C, + EfiProcessorFamilyAmdPhenomX4QuadCore = 0x8D, + EfiProcessorFamilyAmdPhenomX2DualCore = 0x8E, + EfiProcessorFamilyAmdAthlonX2DualCore = 0x8F, + EfiProcessorFamilyPARISC = 0x90, + EfiProcessorFamilyPaRisc8500 = 0x91, + EfiProcessorFamilyPaRisc8000 = 0x92, + EfiProcessorFamilyPaRisc7300LC = 0x93, + EfiProcessorFamilyPaRisc7200 = 0x94, + EfiProcessorFamilyPaRisc7100LC = 0x95, + EfiProcessorFamilyPaRisc7100 = 0x96, + EfiProcessorFamilyV30 = 0xA0, + EfiProcessorFamilyQuadCoreIntelXeon3200Series = 0xA1, + EfiProcessorFamilyDualCoreIntelXeon3000Series = 0xA2, + EfiProcessorFamilyQuadCoreIntelXeon5300Series = 0xA3, + EfiProcessorFamilyDualCoreIntelXeon5100Series = 0xA4, + EfiProcessorFamilyDualCoreIntelXeon5000Series = 0xA5, + EfiProcessorFamilyDualCoreIntelXeonLV = 0xA6, + EfiProcessorFamilyDualCoreIntelXeonULV = 0xA7, + EfiProcessorFamilyDualCoreIntelXeon7100Series = 0xA8, + EfiProcessorFamilyQuadCoreIntelXeon5400Series = 0xA9, + EfiProcessorFamilyQuadCoreIntelXeon = 0xAA, + EfiProcessorFamilyDualCoreIntelXeon5200Series = 0xAB, + EfiProcessorFamilyDualCoreIntelXeon7200Series = 0xAC, + EfiProcessorFamilyQuadCoreIntelXeon7300Series = 0xAD, + EfiProcessorFamilyQuadCoreIntelXeon7400Series = 0xAE, + EfiProcessorFamilyMultiCoreIntelXeon7400Series = 0xAF, + EfiProcessorFamilyPentiumIIIXeon = 0xB0, + EfiProcessorFamilyPentiumIIISpeedStep = 0xB1, + EfiProcessorFamilyPentium4 = 0xB2, + EfiProcessorFamilyIntelXeon = 0xB3, + EfiProcessorFamilyAS400 = 0xB4, + EfiProcessorFamilyIntelXeonMP = 0xB5, + EfiProcessorFamilyAMDAthlonXP = 0xB6, + EfiProcessorFamilyAMDAthlonMP = 0xB7, + EfiProcessorFamilyIntelItanium2 = 0xB8, + EfiProcessorFamilyIntelPentiumM = 0xB9, + EfiProcessorFamilyIntelCeleronD = 0xBA, + EfiProcessorFamilyIntelPentiumD = 0xBB, + EfiProcessorFamilyIntelPentiumEx = 0xBC, + EfiProcessorFamilyIntelCoreSolo = 0xBD, // SMBIOS spec 2.6 correct this value + EfiProcessorFamilyReserved = 0xBE, + EfiProcessorFamilyIntelCore2 = 0xBF, + EfiProcessorFamilyIntelCore2Solo = 0xC0, + EfiProcessorFamilyIntelCore2Extreme = 0xC1, + EfiProcessorFamilyIntelCore2Quad = 0xC2, + EfiProcessorFamilyIntelCore2ExtremeMobile = 0xC3, + EfiProcessorFamilyIntelCore2DuoMobile = 0xC4, + EfiProcessorFamilyIntelCore2SoloMobile = 0xC5, + EfiProcessorFamilyIntelCoreI7 = 0xC6, + EfiProcessorFamilyDualCoreIntelCeleron = 0xC7, + EfiProcessorFamilyIBM390 = 0xC8, + EfiProcessorFamilyG4 = 0xC9, + EfiProcessorFamilyG5 = 0xCA, + EfiProcessorFamilyG6 = 0xCB, + EfiProcessorFamilyzArchitectur = 0xCC, + EfiProcessorFamilyViaC7M = 0xD2, + EfiProcessorFamilyViaC7D = 0xD3, + EfiProcessorFamilyViaC7 = 0xD4, + EfiProcessorFamilyViaEden = 0xD5, + EfiProcessorFamilyMultiCoreIntelXeon = 0xD6, + EfiProcessorFamilyDualCoreIntelXeon3Series = 0xD7, + EfiProcessorFamilyQuadCoreIntelXeon3Series = 0xD8, + EfiProcessorFamilyDualCoreIntelXeon5Series = 0xDA, + EfiProcessorFamilyQuadCoreIntelXeon5Series = 0xDB, + EfiProcessorFamilyDualCoreIntelXeon7Series = 0xDD, + EfiProcessorFamilyQuadCoreIntelXeon7Series = 0xDE, + EfiProcessorFamilyMultiCoreIntelXeon7Series = 0xDF, + EfiProcessorFamilyEmbeddedAmdOpteronQuadCore = 0xE6, + EfiProcessorFamilyAmdPhenomTripleCore = 0xE7, + EfiProcessorFamilyAmdTurionUltraDualCoreMobile = 0xE8, + EfiProcessorFamilyAmdTurionDualCoreMobile = 0xE9, + EfiProcessorFamilyAmdAthlonDualCore = 0xEA, + EfiProcessorFamilyAmdSempronSI = 0xEB, + EfiProcessorFamilyi860 = 0xFA, + EfiProcessorFamilyi960 = 0xFB, + EfiProcessorFamilyIndicatorFamily2 = 0xFE +} EFI_PROCESSOR_FAMILY_DATA; + +typedef enum { + EfiProcessorFamilySh3 = 0x104, + EfiProcessorFamilySh4 = 0x105, + EfiProcessorFamilyArm = 0x118, + EfiProcessorFamilyStrongArm = 0x119, + EfiProcessorFamily6x86 = 0x12C, + EfiProcessorFamilyMediaGx = 0x12D, + EfiProcessorFamilyMii = 0x12E, + EfiProcessorFamilyWinChip = 0x140, + EfiProcessorFamilyDsp = 0x15E, + EfiProcessorFamilyVideo = 0x1F4 +} EFI_PROCESSOR_FAMILY2_DATA; + +typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_VOLTAGE_DATA; + +typedef EFI_PHYSICAL_ADDRESS EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA; + +typedef UINT32 EFI_PROCESSOR_APIC_ID_DATA; + +typedef UINT32 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA; + +typedef enum { + EfiProcessorIa32Microcode = 1, + EfiProcessorIpfPalAMicrocode = 2, + EfiProcessorIpfPalBMicrocode = 3 +} EFI_PROCESSOR_MICROCODE_TYPE; + +typedef struct { + EFI_PROCESSOR_MICROCODE_TYPE ProcessorMicrocodeType; + UINT32 ProcessorMicrocodeRevisionNumber; +} EFI_PROCESSOR_MICROCODE_REVISION_DATA; + +typedef struct { + UINT32 CpuStatus :3; + UINT32 Reserved1 :3; + UINT32 SocketPopulated :1; + UINT32 Reserved2 :1; + UINT32 ApicEnable :1; + UINT32 BootApplicationProcessor :1; + UINT32 Reserved3 :22; +} EFI_PROCESSOR_STATUS_DATA; + +typedef enum { + EfiCpuStatusUnknown = 0, + EfiCpuStatusEnabled = 1, + EfiCpuStatusDisabledByUser = 2, + EfiCpuStatusDisabledbyBios = 3, + EfiCpuStatusIdle = 4, + EfiCpuStatusOther = 7 +} EFI_CPU_STATUS; + +typedef enum { + EfiProcessorSocketOther = 1, + EfiProcessorSocketUnknown = 2, + EfiProcessorSocketDaughterBoard = 3, + EfiProcessorSocketZIF = 4, + EfiProcessorSocketReplacePiggyBack = 5, + EfiProcessorSocketNone = 6, + EfiProcessorSocketLIF = 7, + EfiProcessorSocketSlot1 = 8, + EfiProcessorSocketSlot2 = 9, + EfiProcessorSocket370Pin = 0xA, + EfiProcessorSocketSlotA = 0xB, + EfiProcessorSocketSlotM = 0xC, + EfiProcessorSocket423 = 0xD, + EfiProcessorSocketA462 = 0xE, + EfiProcessorSocket478 = 0xF, + EfiProcessorSocket754 = 0x10, + EfiProcessorSocket940 = 0x11, + EfiProcessorSocket939 = 0x12, + EfiProcessorSocketmPGA604 = 0x13, + EfiProcessorSocketLGA771 = 0x14, + EfiProcessorSocketLGA775 = 0x15, + EfiProcessorSocketS1 = 0x16, + EfiProcessorSocketAm2 = 0x17, + EfiProcessorSocketF = 0x18, + EfiProcessorSocketLGA1366 = 0x19 +} EFI_PROCESSOR_SOCKET_TYPE_DATA; + +typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA; + +typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA; + +typedef enum { + EfiProcessorHealthy = 1, + EfiProcessorPerfRestricted = 2, + EfiProcessorFuncRestricted = 3 +} EFI_PROCESSOR_HEALTH_STATUS; + +typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA; + +typedef UINT8 EFI_PROCESSOR_CORE_COUNT_DATA; +typedef UINT8 EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA; +typedef UINT8 EFI_PROCESSOR_THREAD_COUNT_DATA; + +typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA; + +typedef struct { + UINT16 Reserved :1; + UINT16 Unknown :1; + UINT16 Capable64Bit :1; + UINT16 Reserved2 :13; +} EFI_PROCESSOR_CHARACTERISTICS_DATA; + +typedef struct { + EFI_PROCESSOR_SOCKET_NAME_DATA ProcessorSocketName; + EFI_PROCESSOR_TYPE_DATA ProcessorType; + EFI_PROCESSOR_FAMILY_DATA ProcessorFamily; + EFI_PROCESSOR_MANUFACTURER_DATA ProcessorManufacturer; + EFI_PROCESSOR_ID_DATA ProcessorId; + EFI_PROCESSOR_VERSION_DATA ProcessorVersion; + EFI_PROCESSOR_VOLTAGE_DATA ProcessorVoltage; + EFI_PROCESSOR_FSB_FREQUENCY_DATA ProcessorFsbFrequency; + EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA ProcessorMaxCoreFrequency; + EFI_PROCESSOR_CORE_FREQUENCY_DATA ProcessorCoreFrequency; + EFI_PROCESSOR_STATUS_DATA ProcessorStatus; + EFI_PROCESSOR_SOCKET_TYPE_DATA ProcessorSocketType; + EFI_CACHE_ASSOCIATION_DATA ProcessorL1LinkData; + EFI_CACHE_ASSOCIATION_DATA ProcessorL2LinkData; + EFI_CACHE_ASSOCIATION_DATA ProcessorL3LinkData; + EFI_PROCESSOR_SERIAL_NUMBER_DATA ProcessorSerialNumber; + EFI_PROCESSOR_ASSET_TAG_DATA ProcessorAssetTag; + EFI_PROCESSOR_PART_NUMBER_DATA ProcessorPartNumber; + EFI_PROCESSOR_CORE_COUNT_DATA ProcessorCoreCount; + EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA ProcessorEnabledCoreCount; + EFI_PROCESSOR_THREAD_COUNT_DATA ProcessorThreadCount; + EFI_PROCESSOR_CHARACTERISTICS_DATA ProcessorCharacteristics; + EFI_PROCESSOR_FAMILY2_DATA ProcessorFamily2; +} EFI_PROCESSOR_SOCKET_DATA; + +typedef enum { + ProcessorCoreFrequencyRecordType = 1, + ProcessorFsbFrequencyRecordType = 2, + ProcessorVersionRecordType = 3, + ProcessorManufacturerRecordType = 4, + ProcessorSerialNumberRecordType = 5, + ProcessorIdRecordType = 6, + ProcessorTypeRecordType = 7, + ProcessorFamilyRecordType = 8, + ProcessorVoltageRecordType = 9, + ProcessorApicBaseAddressRecordType = 10, + ProcessorApicIdRecordType = 11, + ProcessorApicVersionNumberRecordType = 12, + CpuUcodeRevisionDataRecordType = 13, + ProcessorStatusRecordType = 14, + ProcessorSocketTypeRecordType = 15, + ProcessorSocketNameRecordType = 16, + CacheAssociationRecordType = 17, + ProcessorMaxCoreFrequencyRecordType = 18, + ProcessorAssetTagRecordType = 19, + ProcessorMaxFsbFrequencyRecordType = 20, + ProcessorPackageNumberRecordType = 21, + ProcessorCoreFrequencyListRecordType = 22, + ProcessorFsbFrequencyListRecordType = 23, + ProcessorHealthStatusRecordType = 24, + ProcessorCoreCountRecordType = 25, + ProcessorEnabledCoreCountRecordType = 26, + ProcessorThreadCountRecordType = 27, + ProcessorCharacteristicsRecordType = 28, + ProcessorFamily2RecordType = 29, + ProcessorPartNumberRecordType = 30, + ProcessorSocketRecordType = 31 +} EFI_CPU_VARIABLE_RECORD_TYPE; + +typedef union { + EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList; + EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA ProcessorFsbFrequencyList; + EFI_PROCESSOR_SERIAL_NUMBER_DATA ProcessorSerialNumber; + EFI_PROCESSOR_CORE_FREQUENCY_DATA ProcessorCoreFrequency; + EFI_PROCESSOR_FSB_FREQUENCY_DATA ProcessorFsbFrequency; + EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA ProcessorMaxCoreFrequency; + EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA ProcessorMaxFsbFrequency; + EFI_PROCESSOR_VERSION_DATA ProcessorVersion; + EFI_PROCESSOR_MANUFACTURER_DATA ProcessorManufacturer; + EFI_PROCESSOR_ID_DATA ProcessorId; + EFI_PROCESSOR_TYPE_DATA ProcessorType; + EFI_PROCESSOR_FAMILY_DATA ProcessorFamily; + EFI_PROCESSOR_VOLTAGE_DATA ProcessorVoltage; + EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA ProcessorApicBase; + EFI_PROCESSOR_APIC_ID_DATA ProcessorApicId; + EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA ProcessorApicVersionNumber; + EFI_PROCESSOR_MICROCODE_REVISION_DATA CpuUcodeRevisionData; + EFI_PROCESSOR_STATUS_DATA ProcessorStatus; + EFI_PROCESSOR_SOCKET_TYPE_DATA ProcessorSocketType; + EFI_PROCESSOR_SOCKET_NAME_DATA ProcessorSocketName; + EFI_PROCESSOR_ASSET_TAG_DATA ProcessorAssetTag; + EFI_PROCESSOR_PART_NUMBER_DATA ProcessorPartNumber; + EFI_PROCESSOR_HEALTH_STATUS ProcessorHealthStatus; + EFI_PROCESSOR_PACKAGE_NUMBER_DATA ProcessorPackageNumber; + EFI_PROCESSOR_CORE_COUNT_DATA ProcessorCoreCount; + EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA ProcessorEnabledCoreCount; + EFI_PROCESSOR_THREAD_COUNT_DATA ProcessorThreadCount; + EFI_PROCESSOR_CHARACTERISTICS_DATA ProcessorCharacteristics; + EFI_PROCESSOR_FAMILY2_DATA ProcessorFamily2; + EFI_PROCESSOR_SOCKET_DATA ProcessorSocket; +} EFI_CPU_VARIABLE_RECORD; + +typedef struct { + EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader; + EFI_CPU_VARIABLE_RECORD VariableRecord; +} EFI_CPU_DATA_RECORD; + +#endif diff --git a/EDK/Foundation/Framework/Guid/DxeServices/DxeServices.c b/EDK/Foundation/Framework/Guid/DxeServices/DxeServices.c new file mode 100644 index 0000000..8515e04 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/DxeServices/DxeServices.c @@ -0,0 +1,27 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + DxeServices.c + +Abstract: + + GUID used for the DXE Services Table + +--*/ + +#include "Tiano.h" +#include EFI_GUID_DEFINITION (DxeServices) + +EFI_GUID gEfiDxeServicesTableGuid = EFI_DXE_SERVICES_TABLE_GUID; + +EFI_GUID_STRING(&gEfiDxeServicesTableGuid, "DXE Services Table", "DXE Services Table GUID in EFI System Table"); diff --git a/EDK/Foundation/Framework/Guid/DxeServices/DxeServices.h b/EDK/Foundation/Framework/Guid/DxeServices/DxeServices.h new file mode 100644 index 0000000..6869a29 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/DxeServices/DxeServices.h @@ -0,0 +1,32 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + DxeServices.h + +Abstract: + + GUID used for the DXE Services Table + +--*/ + +#ifndef _DXE_SERVICES_H_ +#define _DXE_SERVICES_H_ + +#define EFI_DXE_SERVICES_TABLE_GUID \ + { \ + 0x5ad34ba, 0x6f02, 0x4214, 0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9 \ + } + +extern EFI_GUID gEfiDxeServicesTableGuid; + +#endif diff --git a/EDK/Foundation/Framework/Guid/EdkFrameworkGuidLib.cif b/EDK/Foundation/Framework/Guid/EdkFrameworkGuidLib.cif new file mode 100644 index 0000000..51ff345 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/EdkFrameworkGuidLib.cif @@ -0,0 +1,39 @@ +<component> + name = "EdkFrameworkGuidLib" + category = ModulePart + LocalRoot = "Edk\Foundation\Framework\Guid\" + RefName = "EdkFrameworkGuidLib" +[files] +"EdkFrameworkGuidLib.sdl" +"EdkFrameworkGuidLib.mak" +"AcpiTableStorage\AcpiTableStorage.h" +"AcpiTableStorage\AcpiTableStorage.c" +"Apriori\Apriori.h" +"Apriori\Apriori.c" +"DataHubRecords\DataHubRecords.h" +"DataHubRecords\DataHubRecords.c" +"DataHubRecords\DataHubSubClass.h" +"DataHubRecords\DataHubSubClassCache.h" +"DataHubRecords\DataHubSubClassMemory.h" +"DataHubRecords\DataHubSubClassMisc.h" +"DataHubRecords\DataHubSubClassProcessor.h" +"DxeServices\DxeServices.h" +"DxeServices\DxeServices.c" +"FirmwareFileSystem\FirmwareFileSystem.h" +"FirmwareFileSystem\FirmwareFileSystem.c" +"Hob\Hob.h" +"Hob\Hob.c" +"MemoryAllocationHob\MemoryAllocationHob.h" +"MemoryAllocationHob\MemoryAllocationHob.c" +"SmramMemoryReserve\SmramMemoryReserve.h" +"SmramMemoryReserve\SmramMemoryReserve.c" +"StatusCodeDataTypeId\StatusCodeDataTypeId.h" +"StatusCodeDataTypeId\StatusCodeDataTypeId.c" +"FrameworkDevicePath\FrameworkDevicePath.h" +"FrameworkDevicePath\FrameworkDevicePath.c" +"FirmwareFileSystem2\FirmwareFileSystem2.h" +"FirmwareFileSystem2\FirmwareFileSystem2.c" +"PeiApriori\PeiApriori.h" +"PeiApriori\PeiApriori.c" +"EdkFrameworkGuidLib.inf" +<endComponent> diff --git a/EDK/Foundation/Framework/Guid/EdkFrameworkGuidLib.inf b/EDK/Foundation/Framework/Guid/EdkFrameworkGuidLib.inf new file mode 100644 index 0000000..fc6fde6 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/EdkFrameworkGuidLib.inf @@ -0,0 +1,64 @@ +#/*++ +# +# Copyright (c) 2004 - 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. +# +# Module Name: +# +# EdkFrameworkGuidLib.inf +# +# Abstract: +# +# Component description file. +# +#--*/ + +[defines] +BASE_NAME= EdkFrameworkGuidLib +COMPONENT_TYPE= LIBRARY + +[includes.common] + $(EDK_SOURCE)\Foundation\Framework + $(EDK_SOURCE)\Foundation\Efi + $(EDK_SOURCE)\Foundation\Include + $(EDK_SOURCE)\Foundation\Efi\Include + $(EDK_SOURCE)\Foundation\Framework\Include + $(EDK_SOURCE)\Foundation\Include\IndustryStandard + $(EDK_SOURCE)\Foundation\Core\Dxe + $(EDK_SOURCE)\Foundation\Include\Pei + $(EDK_SOURCE)\Foundation\Library\Pei\Include + +[includes.Nt32] + $(EDK_SOURCE)\Foundation\Include\WinNt + +[nmake.common] +C_STD_INCLUDE= +[sources.common] + AcpiTableStorage\AcpiTableStorage.h + AcpiTableStorage\AcpiTableStorage.c + Apriori\Apriori.h + Apriori\Apriori.c + DataHubRecords\DataHubRecords.h + DataHubRecords\DataHubRecords.c + DxeServices\DxeServices.h + DxeServices\DxeServices.c + FirmwareFileSystem\FirmwareFileSystem.h + FirmwareFileSystem\FirmwareFileSystem.c + Hob\Hob.h + Hob\Hob.c + MemoryAllocationHob\MemoryAllocationHob.c + MemoryAllocationHob\MemoryAllocationHob.h + SmramMemoryReserve\SmramMemoryReserve.h + SmramMemoryReserve\SmramMemoryReserve.c + StatusCodeDataTypeId\StatusCodeDataTypeId.h + StatusCodeDataTypeId\StatusCodeDataTypeId.c + FrameworkDevicePath\FrameworkDevicePath.h + FrameworkDevicePath\FrameworkDevicePath.c + FirmwareFileSystem2\FirmwareFileSystem2.h + FirmwareFileSystem2\FirmwareFileSystem2.c diff --git a/EDK/Foundation/Framework/Guid/EdkFrameworkGuidLib.mak b/EDK/Foundation/Framework/Guid/EdkFrameworkGuidLib.mak new file mode 100644 index 0000000..ce0dbdb --- /dev/null +++ b/EDK/Foundation/Framework/Guid/EdkFrameworkGuidLib.mak @@ -0,0 +1,73 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2009, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** + +#********************************************************************** +# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelEDK/EdkFrameworkGuidLib/EdkFrameworkGuidLib.mak 1 1/20/12 4:02a Jeffch $ +# +# $Revision: 1 $ +# +# $Date: 1/20/12 4:02a $ +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelEDK/EdkFrameworkGuidLib/EdkFrameworkGuidLib.mak $ +# +# 1 1/20/12 4:02a Jeffch +# Create Intel EDK 1117 Patch 7. +# +# 1 9/27/11 6:25a Wesleychen +# Intel EDK initially releases. +# +# 2 9/02/09 3:17a Iminglin +# EIP24919 +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: EdkFrameworkGuidLib.mak +# +# Description: +# +#<AMI_FHDR_END> +#********************************************************************** + +$(EDKFRAMEWORKGUIDLIB) : EdkFrameworkGuidLib + +EdkFrameworkGuidLib : $(BUILD_DIR)\EdkFrameworkGuidLib.mak EdkFrameworkGuidLibBin + +$(BUILD_DIR)\EdkFrameworkGuidLib.mak : $(EdkFrameworkGuidLib_DIR)\$(@B).cif $(EdkFrameworkGuidLib_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(EdkFrameworkGuidLib_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +EdkFrameworkGuidLibBin : + $(MAKE) /$(MAKEFLAGS) $(EDK_DEFAULTS)\ + /f $(BUILD_DIR)\EdkFrameworkGuidLib.mak all\ + TYPE=LIBRARY +!IF "$(x64_BUILD)"=="1" + $(MAKE) /$(MAKEFLAGS) $(EDK_DEFAULTS) BUILD_DIR=$(BUILD_DIR)\IA32\ + /f $(BUILD_DIR)\EdkFrameworkGuidLib.mak all\ + TYPE=PEI_LIBRARY +!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 diff --git a/EDK/Foundation/Framework/Guid/EdkFrameworkGuidLib.sdl b/EDK/Foundation/Framework/Guid/EdkFrameworkGuidLib.sdl new file mode 100644 index 0000000..b5a4fc3 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/EdkFrameworkGuidLib.sdl @@ -0,0 +1,26 @@ +TOKEN + Name = "EdkFrameworkGuidLib_SUPPORT" + Value = "1" + Help = "Main switch to enable EdkFrameworkGuidLib support in Project" + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + Master = Yes +End + +TOKEN + Name = "EDKFRAMEWORKGUIDLIB" + Value = "$$(LIB_BUILD_DIR)\EdkFrameworkGuidLib.lib" + TokenType = Expression + TargetMAK = Yes +End + +PATH + Name = "EdkFrameworkGuidLib_DIR" +End + +MODULE + Help = "Includes EdkFrameworkGuidLib.mak to Project" + File = "EdkFrameworkGuidLib.mak" +End + diff --git a/EDK/Foundation/Framework/Guid/FirmwareFileSystem/FirmwareFileSystem.c b/EDK/Foundation/Framework/Guid/FirmwareFileSystem/FirmwareFileSystem.c new file mode 100644 index 0000000..147d8a0 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/FirmwareFileSystem/FirmwareFileSystem.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + FirmwareFileSystem.c + +Abstract: + + Tiano Guid used to define the Firmware File System. See the EFI Firmware + File System Specification for more details. + +--*/ + +#include "Tiano.h" +#include EFI_GUID_DEFINITION (FirmwareFileSystem) + +EFI_GUID gEfiFirmwareFileSystemGuid = EFI_FIRMWARE_FILE_SYSTEM_GUID; +EFI_GUID gEfiFirmwareVolumeTopFileGuid = EFI_FFS_VOLUME_TOP_FILE_GUID; + +EFI_GUID_STRING(&gEfiFirmwareFileSystemGuid, "Firmware File System GUID", "EFI Firmware File System GUID"); +EFI_GUID_STRING(&gEfiFirmwareVolumeTopFileGuid, "Firmware Volume Top File GUID", "EFI FFS Volume Top File GUID"); diff --git a/EDK/Foundation/Framework/Guid/FirmwareFileSystem/FirmwareFileSystem.h b/EDK/Foundation/Framework/Guid/FirmwareFileSystem/FirmwareFileSystem.h new file mode 100644 index 0000000..ba2b34a --- /dev/null +++ b/EDK/Foundation/Framework/Guid/FirmwareFileSystem/FirmwareFileSystem.h @@ -0,0 +1,34 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + FirmwareFileSystem.h + +Abstract: + + Tiano Guid used to define the Firmware File System. See the EFI Firmware + File System Specification for more details. + +--*/ + +#ifndef _FIRMWARE_FILE_SYSTEM_GUID_H +#define _FIRMWARE_FILE_SYSTEM_GUID_H + +// +// GUID definitions are in EfiFirmwareFileSystem.h +// +#include "EfiFirmwareFileSystem.h" + +extern EFI_GUID gEfiFirmwareFileSystemGuid; +extern EFI_GUID gEfiFirmwareVolumeTopFileGuid; + +#endif diff --git a/EDK/Foundation/Framework/Guid/FirmwareFileSystem2/FirmwareFileSystem2.c b/EDK/Foundation/Framework/Guid/FirmwareFileSystem2/FirmwareFileSystem2.c new file mode 100644 index 0000000..39a17c9 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/FirmwareFileSystem2/FirmwareFileSystem2.c @@ -0,0 +1,27 @@ +/*++ + +Copyright (c) 2006, Intel Corporation. All rights reserved.<BR> +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. + +Module Name: + + FirmwareFileSystem2.c + +Abstract: + + PI 1.0 spec definition. + +--*/ + +#include "Tiano.h" +#include EFI_GUID_DEFINITION(FirmwareFileSystem2) + +EFI_GUID gEfiFirmwareFileSystem2Guid = EFI_FIRMWARE_FILE_SYSTEM2_GUID; +EFI_GUID_STRING(&gEfiFirmwareFileSystem2Guid, "FirmwareFileSystem2", "Efi FirmwareFileSystem2") + diff --git a/EDK/Foundation/Framework/Guid/FirmwareFileSystem2/FirmwareFileSystem2.h b/EDK/Foundation/Framework/Guid/FirmwareFileSystem2/FirmwareFileSystem2.h new file mode 100644 index 0000000..ccc566f --- /dev/null +++ b/EDK/Foundation/Framework/Guid/FirmwareFileSystem2/FirmwareFileSystem2.h @@ -0,0 +1,33 @@ +/*++ + +Copyright (c) 2006, Intel Corporation. All rights reserved.<BR> +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. + +Module Name: + + FirmwareFileSystem2.h + +Abstract: + + PI 1.0 spec definition. + +--*/ + +#ifndef __FIRMWARE_FILE_SYSTEM2_GUID_H__ +#define __FIRMWARE_FILE_SYSTEM2_GUID_H__ + +// +// GUIDs defined by the FFS specification. +// +#define EFI_FIRMWARE_FILE_SYSTEM2_GUID \ + { 0x8c8ce578, 0x8a3d, 0x4f1c, { 0x99, 0x35, 0x89, 0x61, 0x85, 0xc3, 0x2d, 0xd3 } } + +extern EFI_GUID gEfiFirmwareFileSystem2Guid; + +#endif diff --git a/EDK/Foundation/Framework/Guid/FrameworkDevicePath/FrameworkDevicePath.c b/EDK/Foundation/Framework/Guid/FrameworkDevicePath/FrameworkDevicePath.c new file mode 100644 index 0000000..750e7a2 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/FrameworkDevicePath/FrameworkDevicePath.c @@ -0,0 +1,27 @@ +/*++ + +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. + +Module Name: + + FrameworkDevicePath.c + +Abstract: + + GUID used for + +--*/ + +#include "Tiano.h" +#include EFI_GUID_DEFINITION (FrameworkDevicePath) + +EFI_GUID gEfiFrameworkDevicePathGuid = EFI_FRAMEWORK_DEVICE_PATH_GUID; + +EFI_GUID_STRING(&gEfiFrameworkDevicePathGuid, "Framework Devic Path", "Framework Device Path GUID"); diff --git a/EDK/Foundation/Framework/Guid/FrameworkDevicePath/FrameworkDevicePath.h b/EDK/Foundation/Framework/Guid/FrameworkDevicePath/FrameworkDevicePath.h new file mode 100644 index 0000000..ecd25eb --- /dev/null +++ b/EDK/Foundation/Framework/Guid/FrameworkDevicePath/FrameworkDevicePath.h @@ -0,0 +1,29 @@ +/*++ + This GUID is used to define a vendor specific device path being owned by the + Framework specificaitons. + + 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. + + Module Name: FrameworkDevicePath.h + + @par Revision Reference: + Spec Version 0.9 + +--*/ + +#ifndef __FRAMEWORK_DEVICE_PATH_GUID_H__ +#define __FRAMEWORK_DEVICE_PATH_GUID_H__ + +#define EFI_FRAMEWORK_DEVICE_PATH_GUID \ + { 0xb7084e63, 0x46b7, 0x4d1a, { 0x86, 0x77, 0xe3, 0x0b, 0x53, 0xdb, 0xf0, 0x50 } } + +extern EFI_GUID gEfiFrameworkDevicePathGuid; + +#endif diff --git a/EDK/Foundation/Framework/Guid/Hob/Hob.c b/EDK/Foundation/Framework/Guid/Hob/Hob.c new file mode 100644 index 0000000..10dd0bd --- /dev/null +++ b/EDK/Foundation/Framework/Guid/Hob/Hob.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + Hob.c + +Abstract: + + GUIDs used for HOB List in the EFI 1.0 system table + + These GUIDs point the HOB List passed in from PEI to DXE. + +--*/ + +#include "Tiano.h" +#include EFI_GUID_DEFINITION (Hob) + +EFI_GUID gEfiHobListGuid = EFI_HOB_LIST_GUID; + +EFI_GUID_STRING(&gEfiHobListGuid, "HOB List", "HOB List GUID in EFI System Table"); diff --git a/EDK/Foundation/Framework/Guid/Hob/Hob.h b/EDK/Foundation/Framework/Guid/Hob/Hob.h new file mode 100644 index 0000000..a7771fe --- /dev/null +++ b/EDK/Foundation/Framework/Guid/Hob/Hob.h @@ -0,0 +1,34 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + Hob.h + +Abstract: + + GUIDs used for HOB List entries in the in the EFI 1.0 system table + + These GUIDs point the HOB List passed from PEI to DXE. + +--*/ + +#ifndef _HOB_GUID_H_ +#define _HOB_GUID_H_ + +#define EFI_HOB_LIST_GUID \ + { \ + 0x7739f24c, 0x93d7, 0x11d4, 0x9a, 0x3a, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d \ + } + +extern EFI_GUID gEfiHobListGuid; + +#endif diff --git a/EDK/Foundation/Framework/Guid/MemoryAllocationHob/MemoryAllocationHob.c b/EDK/Foundation/Framework/Guid/MemoryAllocationHob/MemoryAllocationHob.c new file mode 100644 index 0000000..84ef72e --- /dev/null +++ b/EDK/Foundation/Framework/Guid/MemoryAllocationHob/MemoryAllocationHob.c @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + MemoryAllocationHob.c + +Abstract: + + GUIDs for HOBs used in memory allcation + +--*/ + +#include "Tiano.h" +#include EFI_GUID_DEFINITION(MemoryAllocationHob) + +EFI_GUID gEfiHobMemeryAllocBspStoreGuid = EFI_HOB_MEMORY_ALLOC_BSP_STORE_GUID; +EFI_GUID gEfiHobMemeryAllocStackGuid = EFI_HOB_MEMORY_ALLOC_STACK_GUID; +EFI_GUID gEfiHobMemeryAllocModuleGuid = EFI_HOB_MEMORY_ALLOC_MODULE_GUID; + +EFI_GUID_STRING(&gEfiHobMemeryAllocBspStoreGuid, "BSP Store HOB", "HOB for BSP Store Memory Allocation"); +EFI_GUID_STRING(&gEfiHobMemeryAllocStackGuid, "Stack HOB", "HOB for Stack Memory Allocation"); +EFI_GUID_STRING(&gEfiHobMemeryAllocModuleGuid, "Memry Allocation Module HOB", "HOB for Memory Allocation Module"); diff --git a/EDK/Foundation/Framework/Guid/MemoryAllocationHob/MemoryAllocationHob.h b/EDK/Foundation/Framework/Guid/MemoryAllocationHob/MemoryAllocationHob.h new file mode 100644 index 0000000..827e772 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/MemoryAllocationHob/MemoryAllocationHob.h @@ -0,0 +1,38 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + MemoryAllocationHob.h + +Abstract: + + GUIDs for HOBs used in memory allcation + +--*/ + +#ifndef _HOB__MEMORY_ALLOCATION_GUID_H_ +#define _HOB__MEMORY_ALLOCATION_GUID_H_ + +#define EFI_HOB_MEMORY_ALLOC_BSP_STORE_GUID \ + {0x564b33cd, 0xc92a, 0x4593, 0x90, 0xbf, 0x24, 0x73, 0xe4, 0x3c, 0x63, 0x22}; + +#define EFI_HOB_MEMORY_ALLOC_STACK_GUID \ + {0x4ed4bf27, 0x4092, 0x42e9, 0x80, 0x7d, 0x52, 0x7b, 0x1d, 0x0, 0xc9, 0xbd} + +#define EFI_HOB_MEMORY_ALLOC_MODULE_GUID \ + {0xf8e21975, 0x899, 0x4f58, 0xa4, 0xbe, 0x55, 0x25, 0xa9, 0xc6, 0xd7, 0x7a} + +extern EFI_GUID gEfiHobMemeryAllocBspStoreGuid; +extern EFI_GUID gEfiHobMemeryAllocStackGuid; +extern EFI_GUID gEfiHobMemeryAllocModuleGuid; + +#endif diff --git a/EDK/Foundation/Framework/Guid/PeiApriori/PeiApriori.c b/EDK/Foundation/Framework/Guid/PeiApriori/PeiApriori.c new file mode 100644 index 0000000..bab1606 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/PeiApriori/PeiApriori.c @@ -0,0 +1,26 @@ +/*++ + +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. + +Module Name: + + PeiApriori.c + +Abstract: + + PI 1.0 spec definition. + +--*/ + +#include "Tiano.h" +#include EFI_GUID_DEFINITION(PeiApriori) + +EFI_GUID gEfiPeiAprioriGuid = EFI_PEI_APRIORI_FILE_NAME_GUID; +EFI_GUID_STRING(&gEfiPeiAprioriGuid, "PeiApriori", "Efi PeiApriori") diff --git a/EDK/Foundation/Framework/Guid/PeiApriori/PeiApriori.h b/EDK/Foundation/Framework/Guid/PeiApriori/PeiApriori.h new file mode 100644 index 0000000..12a611b --- /dev/null +++ b/EDK/Foundation/Framework/Guid/PeiApriori/PeiApriori.h @@ -0,0 +1,36 @@ +/*++ + +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. + +Module Name: + + PeiApriori.h + +Abstract: + + PI 1.0 spec definition. + +--*/ + +#ifndef __PEI_APRIORI_GUID_H__ +#define __PEI_APRIORI_GUID_H__ + +#include "Tiano.h" + +// +// GUIDs defined by the FFS specification. +// +#define EFI_PEI_APRIORI_FILE_NAME_GUID \ + { 0x1b45cc0a, 0x156a, 0x428a, 0xaf, 0x62, 0x49, 0x86, 0x4d, 0xa0, 0xe6, 0xe6} + + +extern EFI_GUID gEfiPeiAprioriGuid; + +#endif diff --git a/EDK/Foundation/Framework/Guid/SmramMemoryReserve/SmramMemoryReserve.c b/EDK/Foundation/Framework/Guid/SmramMemoryReserve/SmramMemoryReserve.c new file mode 100644 index 0000000..221b1a8 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/SmramMemoryReserve/SmramMemoryReserve.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmramMemoryReserve.c + +Abstract: + + GUID for use in reserving SMRAM regions. + +--*/ + +#include "Tiano.h" +#include EFI_GUID_DEFINITION(SmramMemoryReserve) + +EFI_GUID gEfiSmmPeiSmramMemoryReserve = EFI_SMM_PEI_SMRAM_MEMORY_RESERVE; + +EFI_GUID_STRING(&gEfiSmmPeiSmramMemoryReserve, "SMRAM Memory Reserve", "SMRAM Memory Reserve"); diff --git a/EDK/Foundation/Framework/Guid/SmramMemoryReserve/SmramMemoryReserve.h b/EDK/Foundation/Framework/Guid/SmramMemoryReserve/SmramMemoryReserve.h new file mode 100644 index 0000000..ff3351b --- /dev/null +++ b/EDK/Foundation/Framework/Guid/SmramMemoryReserve/SmramMemoryReserve.h @@ -0,0 +1,70 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmramMemoryReserve.h + +Abstract: + + GUID for use in reserving SMRAM regions. + +--*/ + +#ifndef _EFI_SMM_PEI_SMRAM_MEMORY_RESERVE_H_ +#define _EFI_SMM_PEI_SMRAM_MEMORY_RESERVE_H_ + +#define EFI_SMM_PEI_SMRAM_MEMORY_RESERVE \ + { \ + 0x6dadf1d1, 0xd4cc, 0x4910, 0xbb, 0x6e, 0x82, 0xb1, 0xfd, 0x80, 0xff, 0x3d \ + } + +// +// ******************************************************* +// EFI_SMRAM_DESCRIPTOR +// ******************************************************* +// +typedef struct { + EFI_PHYSICAL_ADDRESS PhysicalStart; // Phsyical location in DRAM + EFI_PHYSICAL_ADDRESS CpuStart; // Address CPU uses to access the SMI handler + // May or may not match PhysicalStart + // + UINT64 PhysicalSize; + UINT64 RegionState; +} EFI_SMRAM_DESCRIPTOR; + +// +// ******************************************************* +// EFI_SMRAM_STATE +// ******************************************************* +// +#define EFI_SMRAM_OPEN 0x00000001 +#define EFI_SMRAM_CLOSED 0x00000002 +#define EFI_SMRAM_LOCKED 0x00000004 +#define EFI_CACHEABLE 0x00000008 +#define EFI_ALLOCATED 0x00000010 +#define EFI_NEEDS_TESTING 0x00000020 +#define EFI_NEEDS_ECC_INITIALIZATION 0x00000040 + +// +// ******************************************************* +// EFI_SMRAM_HOB_DESCRIPTOR_BLOCK +// ******************************************************* +// +typedef struct { + UINT32 NumberOfSmmReservedRegions; + EFI_SMRAM_DESCRIPTOR Descriptor[1]; +} EFI_SMRAM_HOB_DESCRIPTOR_BLOCK; + +extern EFI_GUID gEfiSmmPeiSmramMemoryReserve; + +#endif diff --git a/EDK/Foundation/Framework/Guid/StatusCodeDataTypeId/StatusCodeDataTypeId.c b/EDK/Foundation/Framework/Guid/StatusCodeDataTypeId/StatusCodeDataTypeId.c new file mode 100644 index 0000000..a5f102a --- /dev/null +++ b/EDK/Foundation/Framework/Guid/StatusCodeDataTypeId/StatusCodeDataTypeId.c @@ -0,0 +1,47 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + StatusCodeDataTypeId.c + +Abstract: + + GUID used to identify id for the caller who is initiating the Status Code. + +--*/ + +#include "Tiano.h" +#include EFI_GUID_DEFINITION (StatusCodeDataTypeId) + +// +// Taken out from StatusCode.C created by PRC +// +EFI_GUID gEfiStatusCodeDataTypeStringGuid = EFI_STATUS_CODE_DATA_TYPE_STRING_GUID; +EFI_GUID gEfiStatusCodeDataTypeDebugGuid = EFI_STATUS_CODE_DATA_TYPE_DEBUG_GUID; +EFI_GUID gEfiStatusCodeDataTypeAssertGuid = EFI_STATUS_CODE_DATA_TYPE_ASSERT_GUID; +EFI_GUID gEfiStatusCodeDataTypeExceptionHandlerGuid = EFI_STATUS_CODE_DATA_TYPE_EXCEPTION_HANDLER_GUID; +EFI_GUID gEfiStatusCodeDataTypeErrorGuid = EFI_STATUS_CODE_DATA_TYPE_ERROR_GUID; +EFI_GUID gEfiStatusCodeDataTypeProgressCodeGuid = EFI_STATUS_CODE_DATA_TYPE_PROGRESS_CODE_GUID; + +EFI_GUID gEfiStatusCodeSpecificDataGuid = EFI_STATUS_CODE_SPECIFIC_DATA_GUID; + +EFI_GUID_STRING(&gEfiStatusCodeDataTypeStringGuid, "Status Code", "Data Hub record Data type String"); +EFI_GUID_STRING(&gEfiStatusCodeSpecificDataGuid, "Status Code", "Data Hub record Data type specific "); +EFI_GUID_STRING(&gEfiStatusCodeDataTypeDebugGuid, "Status Code", "Data Hub record data type Debug"); +EFI_GUID_STRING(&gEfiStatusCodeDataTypeAssertGuid, "Status Code", "Data Hub record data type Assert"); +EFI_GUID_STRING(&gEfiStatusCodeDataTypeErrorGuid, "Status Code", "Data Hub record data type Error"); +EFI_GUID_STRING(&gEfiStatusCodeDataTypeProgressCodeGuid, "Status Code", "Data Hub record data type Progress Code"); +EFI_GUID_STRING + (&gEfiStatusCodeDataTypeExceptionHandlerGuid, "Status Code", "Data Hub record Data type Exception handler"); + +EFI_GUID_STRING + (&gEfiStatusCodeSpecificDataGuid, "Status Code Specific Data", "Specific Data for Tiano ReportStatusCode API"); diff --git a/EDK/Foundation/Framework/Guid/StatusCodeDataTypeId/StatusCodeDataTypeId.h b/EDK/Foundation/Framework/Guid/StatusCodeDataTypeId/StatusCodeDataTypeId.h new file mode 100644 index 0000000..f0afce7 --- /dev/null +++ b/EDK/Foundation/Framework/Guid/StatusCodeDataTypeId/StatusCodeDataTypeId.h @@ -0,0 +1,389 @@ +/*++ + +Copyright (c) 2004 - 2007, 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. + +Module Name: + + StatusCodeDataTypeId.h + +Abstract: + + GUID used to identify id for the caller who is initiating the Status Code. + +--*/ + +#ifndef _STATUS_CODE_DATA_TYPE_ID_H__ +#define _STATUS_CODE_DATA_TYPE_ID_H__ + + +#include "EfiStatusCode.h" +#include EFI_PROTOCOL_DEFINITION (DebugSupport) +#if (EFI_SPECIFICATION_VERSION >= 0x0002000A) +#include EFI_PROTOCOL_DEFINITION (HiiDatabase) +#else +#include EFI_PROTOCOL_DEFINITION (Hii) +#endif +// +// The size of string +// +#define EFI_STATUS_CODE_DATA_MAX_STRING_SIZE 150 + +// +// This is the max data size including all the headers which can be passed +// as Status Code data. This data should be multiple of 8 byte +// to avoid any kind of boundary issue. Also, sum of this data size (inclusive +// of size of EFI_STATUS_CODE_DATA should not exceed the max record size of +// data hub +// +#define EFI_STATUS_CODE_DATA_MAX_SIZE 400 + +// +// String Data Type defintion. This is part of Status Code Specification +// +#define EFI_STATUS_CODE_DATA_TYPE_STRING_GUID \ + { \ + 0x92D11080, 0x496F, 0x4D95, 0xBE, 0x7E, 0x03, 0x74, 0x88, 0x38, 0x2B, 0x0A \ + } + +extern EFI_GUID gEfiStatusCodeDataTypeStringGuid; + +// +// This GUID indicates that the format of the accompanying data depends +// upon the Status Code Value, but follows this Specification +// +#define EFI_STATUS_CODE_SPECIFIC_DATA_GUID \ + { \ + 0x335984bd, 0xe805, 0x409a, 0xb8, 0xf8, 0xd2, 0x7e, 0xce, 0x5f, 0xf7, 0xa6 \ + } + +extern EFI_GUID gEfiStatusCodeSpecificDataGuid; + +#pragma pack(1) + +typedef enum { + EfiStringAscii, + EfiStringUnicode, + EfiStringToken +} EFI_STRING_TYPE; + +// +// HII string token +// +typedef struct { +EFI_HII_HANDLE Handle; +STRING_REF Token; +} EFI_STATUS_CODE_STRING_TOKEN; + +typedef union { +CHAR8 *Ascii; +CHAR16 *Unicode; +EFI_STATUS_CODE_STRING_TOKEN Hii; +} EFI_STATUS_CODE_STRING; + +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + EFI_STRING_TYPE StringType; + EFI_STATUS_CODE_STRING String; +} EFI_STATUS_CODE_STRING_DATA; + +#pragma pack() +// +// Debug Assert Data. This is part of Status Code Specification +// +#define EFI_STATUS_CODE_DATA_TYPE_ASSERT_GUID \ + { \ + 0xDA571595, 0x4D99, 0x487C, 0x82, 0x7C, 0x26, 0x22, 0x67, 0x7D, 0x33, 0x07 \ + } + +extern EFI_GUID gEfiStatusCodeDataTypeAssertGuid; + +// +// Exception Data type (CPU REGS) +// +#define EFI_STATUS_CODE_DATA_TYPE_EXCEPTION_HANDLER_GUID \ + { \ + 0x3BC2BD12, 0xAD2E, 0x11D5, 0x87, 0xDD, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xB9 \ + } + +extern EFI_GUID gEfiStatusCodeDataTypeExceptionHandlerGuid; + +// +// Debug DataType defintions. User Defined Data Types. +// +#define EFI_STATUS_CODE_DATA_TYPE_DEBUG_GUID \ + { \ + 0x9A4E9246, 0xD553, 0x11D5, 0x87, 0xE2, 0x00, 0x06, 0x29, 0x45, 0xC3, 0xb9 \ + } + +#pragma pack(1) + +typedef struct { + UINT32 ErrorLevel; + // + // 12 * sizeof (UINT64) Var Arg stack + // + // ascii DEBUG () Format string + // +} EFI_DEBUG_INFO; + +#pragma pack() + +extern EFI_GUID gEfiStatusCodeDataTypeDebugGuid; + +// +// Progress Code. User Defined Data Type Guid. +// +#define EFI_STATUS_CODE_DATA_TYPE_ERROR_GUID \ + { \ + 0xAB359CE3, 0x99B3, 0xAE18, 0xC8, 0x9D, 0x95, 0xD3, 0xB0, 0x72, 0xE1, 0x9B \ + } + +extern EFI_GUID gEfiStatusCodeDataTypeErrorGuid; + +// +// declaration for EFI_EXP_DATA. This may change +// +typedef UINTN EFI_EXP_DATA; + +// +// Voltage Extended Error Data +// +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + EFI_EXP_DATA Voltage; + EFI_EXP_DATA Threshold; +} EFI_COMPUTING_UNIT_VOLTAGE_ERROR_DATA; + +// +// Microcode Update Extended Error Data +// +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + UINT32 Version; +} EFI_COMPUTING_UNIT_MICROCODE_UPDATE_ERROR_DATA; + +// +// Asynchronous Timer Extended Error Data +// +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + EFI_EXP_DATA TimerLimit; +} EFI_COMPUTING_UNIT_TIMER_EXPIRED_ERROR_DATA; + +// +// Host Processor Mismatch Extended Error Data +// +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + UINT32 Instance; + UINT16 Attributes; +} EFI_HOST_PROCESSOR_MISMATCH_ERROR_DATA; + +// +// EFI_COMPUTING_UNIT_MISMATCH_ATTRIBUTES +// All other attributes are reserved for future use and +// must be initialized to 0. +// +#define EFI_COMPUTING_UNIT_MISMATCH_SPEED 0x0001 +#define EFI_COMPUTING_UNIT_MISMATCH_FSB_SPEED 0x0002 +#define EFI_COMPUTING_UNIT_MISMATCH_FAMILY 0x0004 +#define EFI_COMPUTING_UNIT_MISMATCH_MODEL 0x0008 +#define EFI_COMPUTING_UNIT_MISMATCH_STEPPING 0x0010 +#define EFI_COMPUTING_UNIT_MISMATCH_CACHE_SIZE 0x0020 +#define EFI_COMPUTING_UNIT_MISMATCH_OEM1 0x1000 +#define EFI_COMPUTING_UNIT_MISMATCH_OEM2 0x2000 +#define EFI_COMPUTING_UNIT_MISMATCH_OEM3 0x4000 +#define EFI_COMPUTING_UNIT_MISMATCH_OEM4 0x8000 + +// +// Thermal Extended Error Data +// +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + EFI_EXP_DATA Temperature; + EFI_EXP_DATA Threshold; +} EFI_COMPUTING_UNIT_THERMAL_ERROR_DATA; + +// +// Processor Disabled Extended Error Data +// +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + UINT32 Cause; + BOOLEAN SoftwareDisabled; +} EFI_COMPUTING_UNIT_CPU_DISABLED_ERROR_DATA; + +typedef enum { + EfiInitCacheDataOnly, + EfiInitCacheInstrOnly, + EfiInitCacheBoth, + EfiInitCacheUnspecified +} EFI_INIT_CACHE_TYPE; + +// +// Embedded cache init extended data +// +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + UINT32 Level; + EFI_INIT_CACHE_TYPE Type; +} EFI_CACHE_INIT_DATA; + +// +// Memory Extended Error Data +// +// +// Memory Error Granularity Definition +// +typedef UINT8 EFI_MEMORY_ERROR_GRANULARITY; + +// +// Memory Error Operation Definition +// +typedef UINT8 EFI_MEMORY_ERROR_OPERATION; + +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + EFI_MEMORY_ERROR_GRANULARITY Granularity; + EFI_MEMORY_ERROR_OPERATION Operation; + UINTN Syndrome; + EFI_PHYSICAL_ADDRESS Address; + UINTN Resolution; +} EFI_MEMORY_EXTENDED_ERROR_DATA; + +// +// Memory Error Granularities +// +#define EFI_MEMORY_ERROR_OTHER 0x01 +#define EFI_MEMORY_ERROR_UNKNOWN 0x02 +#define EFI_MEMORY_ERROR_DEVICE 0x03 +#define EFI_MEMORY_ERROR_PARTITION 0x04 + +// +// Memory Error Operations +// +#define EFI_MEMORY_OPERATION_OTHER 0x01 +#define EFI_MEMORY_OPERATION_UNKNOWN 0x02 +#define EFI_MEMORY_OPERATION_READ 0x03 +#define EFI_MEMORY_OPERATION_WRITE 0x04 +#define EFI_MEMORY_OPERATION_PARTIAL_WRITE 0x05 + +// +// Define shorthands to describe Group Operations +// Many memory init operations are essentially group +// operations. +// A shorthand to describe that the operation is performed +// on multiple devices within the array +// +#define EFI_MULTIPLE_MEMORY_DEVICE_OPERATION 0xfffe +// +// A shorthand to describe that the operation is performed // on all devices within the array +// +#define EFI_ALL_MEMORY_DEVICE_OPERATION 0xffff +// +// A shorthand to describe that the operation is performed // on multiple arrays +// +#define EFI_MULTIPLE_MEMORY_ARRAY_OPERATION 0xfffe +// +// A shorthand to describe that the operation is performed // on all the arrays +// +#define EFI_ALL_MEMORY_ARRAY_OPERATION 0xffff + +// +// DIMM number +// +#pragma pack(1) +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + UINT16 Array; + UINT16 Device; +} EFI_STATUS_CODE_DIMM_NUMBER; +#pragma pack() +// +// Memory Module Mismatch Extended Error Data +// +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + EFI_STATUS_CODE_DIMM_NUMBER Instance; +} EFI_MEMORY_MODULE_MISMATCH_ERROR_DATA; + +// +// Memory Range Extended Data +// +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + EFI_PHYSICAL_ADDRESS Start; + EFI_PHYSICAL_ADDRESS Length; +} EFI_MEMORY_RANGE_EXTENDED_DATA; + +// +// Device handle Extended Data. Used for many +// errors and progress codes to point to the device. +// +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + EFI_HANDLE Handle; +} EFI_DEVICE_HANDLE_EXTENDED_DATA; + +// +// Resource Allocation Failure Extended Error Data +// +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + EFI_DEVICE_PATH_PROTOCOL *DevicePath; + UINT32 Bar; + VOID *ReqRes; + VOID *AllocRes; +} EFI_RESOURCE_ALLOC_FAILURE_ERROR_DATA; + +// +// Extended Error Data for Assert +// +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + UINT32 LineNumber; + UINT32 FileNameSize; + EFI_STATUS_CODE_STRING_DATA *FileName; +} EFI_DEBUG_ASSERT_DATA; + +// +// System Context Data EBC/IA32/IPF +// +typedef union { + EFI_SYSTEM_CONTEXT_EBC SystemContextEbc; + EFI_SYSTEM_CONTEXT_IA32 SystemContextIa32; + EFI_SYSTEM_CONTEXT_IPF SystemContextIpf; +} EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT; + +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + EFI_STATUS_CODE_EXCEP_SYSTEM_CONTEXT Context; +} EFI_STATUS_CODE_EXCEP_EXTENDED_DATA; + +// +// Legacy Oprom extended data +// +typedef struct { + EFI_STATUS_CODE_DATA DataHeader; + EFI_HANDLE DeviceHandle; + EFI_PHYSICAL_ADDRESS RomImageBase; +} EFI_LEGACY_OPROM_EXTENDED_DATA; + +// +// Progress Code. User Defined Data Type Guid. +// +#define EFI_STATUS_CODE_DATA_TYPE_PROGRESS_CODE_GUID \ + { \ + 0xA356AB39, 0x35C4, 0x35DA, 0xB3, 0x7A, 0xF8, 0xEA, 0x9E, 0x8B, 0x36, 0xA3 \ + } + +extern EFI_GUID gEfiStatusCodeDataTypeProgressCodeGuid; + +#endif diff --git a/EDK/Foundation/Framework/Include/BootMode.h b/EDK/Foundation/Framework/Include/BootMode.h new file mode 100644 index 0000000..8261641 --- /dev/null +++ b/EDK/Foundation/Framework/Include/BootMode.h @@ -0,0 +1,38 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + BootMode.h + +Abstract: + + This includes for the Boot mode information. + +--*/ + +#ifndef _EFI_BOOT_MODE_H +#define _EFI_BOOT_MODE_H + +#define BOOT_WITH_FULL_CONFIGURATION 0x00 +#define BOOT_WITH_MINIMAL_CONFIGURATION 0x01 +#define BOOT_ASSUMING_NO_CONFIGURATION_CHANGES 0x02 +#define BOOT_WITH_FULL_CONFIGURATION_PLUS_DIAGNOSTICS 0x03 +#define BOOT_WITH_DEFAULT_SETTINGS 0x04 +#define BOOT_ON_S4_RESUME 0x05 +#define BOOT_ON_S5_RESUME 0x06 +#define BOOT_ON_S2_RESUME 0x10 +#define BOOT_ON_S3_RESUME 0x11 +#define BOOT_ON_FLASH_UPDATE 0x12 +#define BOOT_IN_RECOVERY_MODE 0x20 +#define BOOT_IN_RECOVERY_MODE_MASK 0x40 +#define BOOT_SPECIAL_MASK 0x80 +#endif diff --git a/EDK/Foundation/Framework/Include/EfiBootScript.h b/EDK/Foundation/Framework/Include/EfiBootScript.h new file mode 100644 index 0000000..891bc96 --- /dev/null +++ b/EDK/Foundation/Framework/Include/EfiBootScript.h @@ -0,0 +1,234 @@ +/*++ + +Copyright (c) 2004 - 2007, 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. + +Module Name: + + EfiBootScript.h + +Abstract: + + + +--*/ + +#ifndef _EFI_SCRIPT_H_ +#define _EFI_SCRIPT_H_ + +#include "EfiSmbus.h" + +#define EFI_ACPI_S3_RESUME_SCRIPT_TABLE 0x00 + +// +// Boot Script Opcode Definitions +// +typedef const UINT16 EFI_BOOT_SCRIPT_OPCODE; + +#define EFI_BOOT_SCRIPT_IO_WRITE_OPCODE 0x00 +#define EFI_BOOT_SCRIPT_IO_READ_WRITE_OPCODE 0x01 +#define EFI_BOOT_SCRIPT_MEM_WRITE_OPCODE 0x02 +#define EFI_BOOT_SCRIPT_MEM_READ_WRITE_OPCODE 0x03 +#define EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE_OPCODE 0x04 +#define EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE_OPCODE 0x05 +#define EFI_BOOT_SCRIPT_SMBUS_EXECUTE_OPCODE 0x06 +#define EFI_BOOT_SCRIPT_STALL_OPCODE 0x07 +#define EFI_BOOT_SCRIPT_DISPATCH_OPCODE 0x08 + +// +// Extensions to boot script definitions +// + +// AMI_OVERRIDE >>> Support PI1.2 +#if defined(PI_SPECIFICATION_VERSION) && (PI_SPECIFICATION_VERSION>=0x0001000A) +#define EFI_BOOT_SCRIPT_MEM_POLL_OPCODE 0x0E +#else +#define EFI_BOOT_SCRIPT_MEM_POLL_OPCODE 0x81 // AMI MEM_POLL_OPCODE_OEM +#endif +// AMI_OVERRIDE <<< + +#define EFI_BOOT_SCRIPT_INFORMATION_OPCODE 0x0A +#define EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE_OPCODE 0x0B +#define EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE_OPCODE 0x0C + +#define EFI_BOOT_SCRIPT_TABLE_OPCODE 0xAA +#define EFI_BOOT_SCRIPT_TERMINATE_OPCODE 0xFF + +#pragma pack(1) + +// +// EFI Boot Script Width +// +typedef enum { + EfiBootScriptWidthUint8, + EfiBootScriptWidthUint16, + EfiBootScriptWidthUint32, + EfiBootScriptWidthUint64, + EfiBootScriptWidthFifoUint8, + EfiBootScriptWidthFifoUint16, + EfiBootScriptWidthFifoUint32, + EfiBootScriptWidthFifoUint64, + EfiBootScriptWidthFillUint8, + EfiBootScriptWidthFillUint16, + EfiBootScriptWidthFillUint32, + EfiBootScriptWidthFillUint64, + EfiBootScriptWidthMaximum +} EFI_BOOT_SCRIPT_WIDTH; + +typedef struct { + UINT16 OpCode; + UINT8 Length; +} EFI_BOOT_SCRIPT_GENERIC_HEADER; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT16 Version; + UINT32 TableLength; + UINT16 Reserved[2]; +} EFI_BOOT_SCRIPT_TABLE_HEADER; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT32 Width; +} EFI_BOOT_SCRIPT_COMMON_HEADER; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT32 Width; + UINT32 Count; + UINT64 Address; +} EFI_BOOT_SCRIPT_IO_WRITE; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT32 Width; + UINT64 Address; +} EFI_BOOT_SCRIPT_IO_READ_WRITE; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT32 Width; + UINT32 Count; + UINT64 Address; +} EFI_BOOT_SCRIPT_MEM_WRITE; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT32 Width; + UINT64 Address; +} EFI_BOOT_SCRIPT_MEM_READ_WRITE; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT32 Width; + UINT32 Count; + UINT64 Address; +} EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT32 Width; + UINT32 Count; + UINT64 Address; + UINT16 Segment; +} EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT32 Width; + UINT64 Address; +} EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT32 Width; + UINT64 Address; + UINT16 Segment; +} EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE; + + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT64 SlaveAddress; + UINT64 Command; + UINT32 Operation; + BOOLEAN PecCheck; + UINT32 DataSize; +} EFI_BOOT_SCRIPT_SMBUS_EXECUTE; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT64 Duration; +} EFI_BOOT_SCRIPT_STALL; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + EFI_PHYSICAL_ADDRESS EntryPoint; +} EFI_BOOT_SCRIPT_DISPATCH; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT32 Width; + UINT64 Address; + UINT64 BitMask; + UINT64 BitValue; + UINT64 Duration; + UINT64 LoopTimes; +} EFI_BOOT_SCRIPT_MEM_POLL; + +typedef struct { + UINT16 OpCode; + UINT8 Length; + UINT32 InformationLength; + EFI_PHYSICAL_ADDRESS Information; +} EFI_BOOT_SCRIPT_INFORMATION; + +typedef struct { + UINT16 OpCode; + UINT8 Length; +} EFI_BOOT_SCRIPT_TERMINATE; + +typedef union { + EFI_BOOT_SCRIPT_GENERIC_HEADER *Header; + EFI_BOOT_SCRIPT_TABLE_HEADER *TableInfo; + EFI_BOOT_SCRIPT_IO_WRITE *IoWrite; + EFI_BOOT_SCRIPT_IO_READ_WRITE *IoReadWrite; + EFI_BOOT_SCRIPT_MEM_WRITE *MemWrite; + EFI_BOOT_SCRIPT_MEM_READ_WRITE *MemReadWrite; + EFI_BOOT_SCRIPT_PCI_CONFIG_WRITE *PciWrite; + EFI_BOOT_SCRIPT_PCI_CONFIG_READ_WRITE *PciReadWrite; + EFI_BOOT_SCRIPT_PCI_CONFIG2_WRITE *PciWrite2; + EFI_BOOT_SCRIPT_PCI_CONFIG2_READ_WRITE *PciReadWrite2; + EFI_BOOT_SCRIPT_SMBUS_EXECUTE *SmbusExecute; + EFI_BOOT_SCRIPT_STALL *Stall; + EFI_BOOT_SCRIPT_DISPATCH *Dispatch; + EFI_BOOT_SCRIPT_MEM_POLL *MemPoll; + EFI_BOOT_SCRIPT_INFORMATION *Information; + EFI_BOOT_SCRIPT_TERMINATE *Terminate; + EFI_BOOT_SCRIPT_COMMON_HEADER *CommonHeader; + UINT8 *Raw; +} BOOT_SCRIPT_POINTERS; + +#pragma pack() + +#endif diff --git a/EDK/Foundation/Framework/Include/EfiCapsule.h b/EDK/Foundation/Framework/Include/EfiCapsule.h new file mode 100644 index 0000000..6cbadec --- /dev/null +++ b/EDK/Foundation/Framework/Include/EfiCapsule.h @@ -0,0 +1,142 @@ +/*++ + +Copyright (c) 2004 - 2007, 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. + +Module Name: + + EfiCapsule.h + +Abstract: + + Defines for the EFI Capsule functionality + +--*/ + +#ifndef _EFI_CAPSULE_H_ +#define _EFI_CAPSULE_H_ + + +#define CAPSULE_BLOCK_DESCRIPTOR_SIGNATURE EFI_SIGNATURE_32 ('C', 'B', 'D', 'S') + +typedef struct { + EFI_GUID OemGuid; + UINT32 HeaderSize; + // + // UINT8 OemHdrData[]; + // +} EFI_CAPSULE_OEM_HEADER; + +#if (EFI_SPECIFICATION_VERSION >= 0x00020000) + +#define MAX_SUPPORT_CAPSULE_NUM 50 +#define CAPSULE_FLAGS_PERSIST_ACROSS_RESET 0x00010000 +#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000 + +typedef struct { + UINT64 Length; + union { + EFI_PHYSICAL_ADDRESS DataBlock; + EFI_PHYSICAL_ADDRESS ContinuationPointer; + } Union; +} EFI_CAPSULE_BLOCK_DESCRIPTOR; + +typedef struct { + EFI_GUID CapsuleGuid; + UINT32 HeaderSize; + UINT32 Flags; + UINT32 CapsuleImageSize; +} EFI_CAPSULE_HEADER; + +typedef struct { + UINT32 CapsuleArrayNumber; + VOID* CapsulePtr[1]; +} EFI_CAPSULE_TABLE; + +// +// This struct is deprecated because VendorTable entries physical address will not be fixed up when +// transitioning from preboot to runtime phase. So we don't need CapsuleInfoTable to record capsule +// GUIDs any more for runtime convert. +// +typedef struct { + UINT32 CapsuleGuidNumber; + EFI_GUID CapsuleGuidPtr[1]; +} EFI_CAPSULE_INFO_TABLE; + +// +// This GUID is used for collecting all capsules' Guids who install in ConfigTable. +// This GUID is deprecated as well. +// +#define EFI_CAPSULE_INFO_GUID \ + { \ + 0x8B34EAC7, 0x2690, 0x460B, 0x8B, 0xA5, 0xD5, 0xCF, 0x32, 0x83, 0x17, 0x35 \ + } + +#else + +typedef struct { + EFI_GUID CapsuleGuid; + UINT32 HeaderSize; + UINT32 Flags; + UINT32 CapsuleImageSize; + UINT32 SequenceNumber; + EFI_GUID InstanceId; + UINT32 OffsetToSplitInformation; + UINT32 OffsetToCapsuleBody; + UINT32 OffsetToOemDefinedHeader; + UINT32 OffsetToAuthorInformation; + UINT32 OffsetToRevisionInformation; + UINT32 OffsetToShortDescription; + UINT32 OffsetToLongDescription; + UINT32 OffsetToApplicableDevices; +} EFI_CAPSULE_HEADER; + +// +// An array of these describe the blocks that make up a capsule for +// a capsule update. +// +typedef struct { + UINT64 Length; // length of the data block + EFI_PHYSICAL_ADDRESS Data; // physical address of the data block + UINT32 Signature; // CBDS + UINT32 CheckSum; // to sum this structure to 0 +} EFI_CAPSULE_BLOCK_DESCRIPTOR; + +#endif + +// +// Bits in the flags field of the capsule header +// +#define EFI_CAPSULE_HEADER_FLAG_SETUP 0x00000001 // supports setup changes +// +// This is the GUID of the capsule header of the image on disk. +// +#define EFI_CAPSULE_GUID \ + { \ + 0x3B6686BD, 0x0D76, 0x4030, 0xB7, 0x0E, 0xB5, 0x51, 0x9E, 0x2F, 0xC5, 0xA0 \ + } + +// +// This is the GUID of the file created by the capsule application that contains +// the path to the device(s) to update. +// +#define EFI_PATH_FILE_NAME_GUID \ + { \ + 0x7644C181, 0xFA6E, 0x46DA, 0x80, 0xCB, 0x04, 0xB9, 0x90, 0x40, 0x62, 0xE8 \ + } +// +// This is the GUID of the configuration results file created by the capsule +// application. +// +#define EFI_CONFIG_FILE_NAME_GUID \ + { \ + 0x98B8D59B, 0xE8BA, 0x48EE, 0x98, 0xDD, 0xC2, 0x95, 0x39, 0x2F, 0x1E, 0xDB \ + } + +#endif // #ifndef _EFI_CAPSULE_H_ diff --git a/EDK/Foundation/Framework/Include/EfiDependency.h b/EDK/Foundation/Framework/Include/EfiDependency.h new file mode 100644 index 0000000..14e5405 --- /dev/null +++ b/EDK/Foundation/Framework/Include/EfiDependency.h @@ -0,0 +1,52 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + EfiDependency.h + +Abstract: + + This module contains data specific to dependency expressions + and local function prototypes. + +--*/ + +#ifndef _DEPENDENCY_H_ +#define _DEPENDENCY_H_ + +// +// +// EFI_DEP_BEFORE - If present, it must be the first and only opcode +// EFI_DEP_AFTER - If present, it must be the first and only opcode +// EFI_DEP_SOR - If present, it must be the first opcode +// EFI_DEP_REPLACE_TRUE - Used to dynamically patch the dependecy expression +// to save time. A EFI_DEP_PUSH is evauated one an +// replaced with EFI_DEP_REPLACE_TRUE +// +#define EFI_DEP_BEFORE 0x00 +#define EFI_DEP_AFTER 0x01 +#define EFI_DEP_PUSH 0x02 +#define EFI_DEP_AND 0x03 +#define EFI_DEP_OR 0x04 +#define EFI_DEP_NOT 0x05 +#define EFI_DEP_TRUE 0x06 +#define EFI_DEP_FALSE 0x07 +#define EFI_DEP_END 0x08 +#define EFI_DEP_SOR 0x09 +#define EFI_DEP_REPLACE_TRUE 0xff + +// +// Define the initial size of the dependency expression evaluation stack +// +#define DEPEX_STACK_SIZE_INCREMENT 0x1000 + +#endif diff --git a/EDK/Foundation/Framework/Include/EfiFirmwareFileSystem.h b/EDK/Foundation/Framework/Include/EfiFirmwareFileSystem.h new file mode 100644 index 0000000..0cd16f8 --- /dev/null +++ b/EDK/Foundation/Framework/Include/EfiFirmwareFileSystem.h @@ -0,0 +1,131 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + EfiFirmwareFileSystem.h + +Abstract: + + This file defines the data structures that comprise the FFS file system. + +--*/ + +#ifndef _EFI_FFS_FILE_SYSTEM_H_ +#define _EFI_FFS_FILE_SYSTEM_H_ + +#include "EfiImageFormat.h" + +// +// GUIDs defined by the FFS specification. +// +#define EFI_FIRMWARE_FILE_SYSTEM_GUID \ + { \ + 0x7A9354D9, 0x0468, 0x444a, 0x81, 0xCE, 0x0B, 0xF6, 0x17, 0xD8, 0x90, 0xDF \ + } + +#define EFI_FFS_VOLUME_TOP_FILE_GUID \ + { \ + 0x1BA0062E, 0xC779, 0x4582, 0x85, 0x66, 0x33, 0x6A, 0xE8, 0xF7, 0x8F, 0x9 \ + } + +// +// FFS specific file types +// +#define EFI_FV_FILETYPE_FFS_PAD 0xF0 + +// +// FFS File Attributes +// +#define FFS_ATTRIB_TAIL_PRESENT 0x01 +#define FFS_ATTRIB_RECOVERY 0x02 +#define FFS_ATTRIB_DATA_ALIGNMENT 0x38 +#define FFS_ATTRIB_CHECKSUM 0x40 +//;;## ...AMI_OVERRIDE... Support PI1.x +#if (PI_SPECIFICATION_VERSION < 0x00010000) +#define FFS_ATTRIB_HEADER_EXTENSION 0x04 +#else +// +// PI 1.0 definition. +// +#define FFS_ATTRIB_FIXED 0x04 +#endif + + +// +// FFS_FIXED_CHECKSUM is the default checksum value used when the +// FFS_ATTRIB_CHECKSUM attribute bit is clear +//;;## ...AMI_OVERRIDE... Support PI1.x +#if (PI_SPECIFICATION_VERSION < 0x00010000) +#define FFS_FIXED_CHECKSUM 0x5A +#else +#define FFS_FIXED_CHECKSUM 0xAA +#endif + +// +// File state definitions +// +#define EFI_FILE_HEADER_CONSTRUCTION 0x01 +#define EFI_FILE_HEADER_VALID 0x02 +#define EFI_FILE_DATA_VALID 0x04 +#define EFI_FILE_MARKED_FOR_UPDATE 0x08 +#define EFI_FILE_DELETED 0x10 +#define EFI_FILE_HEADER_INVALID 0x20 + +#define EFI_FILE_ALL_STATE_BITS (EFI_FILE_HEADER_CONSTRUCTION | \ + EFI_FILE_HEADER_VALID | \ + EFI_FILE_DATA_VALID | \ + EFI_FILE_MARKED_FOR_UPDATE | \ + EFI_FILE_DELETED | \ + EFI_FILE_HEADER_INVALID \ + ) + +#define EFI_TEST_FFS_ATTRIBUTES_BIT(FvbAttributes, TestAttributes, Bit) \ + ( \ + (BOOLEAN) ( \ + (FvbAttributes & EFI_FVB_ERASE_POLARITY) ? (((~TestAttributes) & Bit) == Bit) : ((TestAttributes & Bit) == Bit) \ + ) \ + ) + +// +// FFS file integrity check structure +// +typedef UINT16 EFI_FFS_FILE_TAIL; + +typedef union { + struct { + UINT8 Header; + UINT8 File; + } Checksum; +//;;## ...AMI_OVERRIDE... Support PI1.x +#if (PI_SPECIFICATION_VERSION < 0x00010000) + UINT16 TailReference; +#else + UINT16 Checksum16; +#endif +} EFI_FFS_INTEGRITY_CHECK; + +// +// FFS file header definition +// +typedef UINT8 EFI_FFS_FILE_ATTRIBUTES; +typedef UINT8 EFI_FFS_FILE_STATE; + +typedef struct { + EFI_GUID Name; + EFI_FFS_INTEGRITY_CHECK IntegrityCheck; + EFI_FV_FILETYPE Type; + EFI_FFS_FILE_ATTRIBUTES Attributes; + UINT8 Size[3]; + EFI_FFS_FILE_STATE State; +} EFI_FFS_FILE_HEADER; + +#endif diff --git a/EDK/Foundation/Framework/Include/EfiFirmwareVolume.h b/EDK/Foundation/Framework/Include/EfiFirmwareVolume.h new file mode 100644 index 0000000..a5efb2b --- /dev/null +++ b/EDK/Foundation/Framework/Include/EfiFirmwareVolume.h @@ -0,0 +1,47 @@ +/*++ + +Copyright (c) 2007 , 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. + +Module Name: + + EfiFirmwareVolume.h + +Abstract: + +--*/ + +#ifndef _EFI_FIRMWARE_VOLUME_H_ +#define _EFI_FIRMWARE_VOLUME_H_ + + //;;## ...AMI_ADD FILE... Support PI1.x + +#define FV_DEVICE_SIGNATURE EFI_SIGNATURE_32 ('_', 'F', 'V', '_') +#define EFI_FV_FILE_ATTRIB_ALIGNMENT 0x0000001F +#define EFI_FV_UNRELIABLE_WRITE 0x00000000 +#define EFI_FV_RELIABLE_WRITE 0x00000001 + + +// +// EFI_FV_ATTRIBUTES bit definitions +// +typedef UINT64 EFI_FV_ATTRIBUTES; +typedef UINT32 EFI_FV_FILE_ATTRIBUTES; +typedef UINT32 EFI_FV_WRITE_POLICY; + + +typedef struct { + EFI_GUID *NameGuid; + EFI_FV_FILETYPE Type; + EFI_FV_FILE_ATTRIBUTES FileAttributes; + VOID *Buffer; + UINT32 BufferSize; +} EFI_FV_WRITE_FILE_DATA; + +#endif diff --git a/EDK/Foundation/Framework/Include/EfiFirmwareVolumeHeader.h b/EDK/Foundation/Framework/Include/EfiFirmwareVolumeHeader.h new file mode 100644 index 0000000..50dc8b4 --- /dev/null +++ b/EDK/Foundation/Framework/Include/EfiFirmwareVolumeHeader.h @@ -0,0 +1,215 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + EfiFirmwareVolumeHeader.h + +Abstract: + + Defines data structure that is the volume header found at the beginning of + all firmware volumes that are either memory mapped, or have an + associated FirmwareVolumeBlock protocol. + +--*/ + +#ifndef _EFI_FIRMWARE_VOLUME_HEADER_H_ +#define _EFI_FIRMWARE_VOLUME_HEADER_H_ + +// +// Firmware Volume Block Attributes definition +// +typedef UINT32 EFI_FVB_ATTRIBUTES; + +// +// Firmware Volume Block Attributes bit definitions +// +#define EFI_FVB_READ_DISABLED_CAP 0x00000001 +#define EFI_FVB_READ_ENABLED_CAP 0x00000002 +#define EFI_FVB_READ_STATUS 0x00000004 + +#define EFI_FVB_WRITE_DISABLED_CAP 0x00000008 +#define EFI_FVB_WRITE_ENABLED_CAP 0x00000010 +#define EFI_FVB_WRITE_STATUS 0x00000020 + +#define EFI_FVB_LOCK_CAP 0x00000040 +#define EFI_FVB_LOCK_STATUS 0x00000080 + +#define EFI_FVB_STICKY_WRITE 0x00000200 +#define EFI_FVB_MEMORY_MAPPED 0x00000400 +#define EFI_FVB_ERASE_POLARITY 0x00000800 + +//;;## ...AMI_OVERRIDE... Support PI1.x + +#if (PI_SPECIFICATION_VERSION < 0x00010000) + +#define EFI_FVB_ALIGNMENT_CAP 0x00008000 +#define EFI_FVB_ALIGNMENT_2 0x00010000 +#define EFI_FVB_ALIGNMENT_4 0x00020000 +#define EFI_FVB_ALIGNMENT_8 0x00040000 +#define EFI_FVB_ALIGNMENT_16 0x00080000 +#define EFI_FVB_ALIGNMENT_32 0x00100000 +#define EFI_FVB_ALIGNMENT_64 0x00200000 +#define EFI_FVB_ALIGNMENT_128 0x00400000 +#define EFI_FVB_ALIGNMENT_256 0x00800000 +#define EFI_FVB_ALIGNMENT_512 0x01000000 +#define EFI_FVB_ALIGNMENT_1K 0x02000000 +#define EFI_FVB_ALIGNMENT_2K 0x04000000 +#define EFI_FVB_ALIGNMENT_4K 0x08000000 +#define EFI_FVB_ALIGNMENT_8K 0x10000000 +#define EFI_FVB_ALIGNMENT_16K 0x20000000 +#define EFI_FVB_ALIGNMENT_32K 0x40000000 +#define EFI_FVB_ALIGNMENT_64K 0x80000000 + +#define EFI_FVB_CAPABILITIES (EFI_FVB_READ_DISABLED_CAP | \ + EFI_FVB_READ_ENABLED_CAP | \ + EFI_FVB_WRITE_DISABLED_CAP | \ + EFI_FVB_WRITE_ENABLED_CAP | \ + EFI_FVB_LOCK_CAP \ + ) + +#define EFI_FVB_STATUS (EFI_FVB_READ_STATUS | EFI_FVB_WRITE_STATUS | EFI_FVB_LOCK_STATUS) + + + +#else + +#define EFI_FVB2_READ_LOCK_CAP 0x00001000 +#define EFI_FVB2_READ_LOCK_STATUS 0x00002000 + +#define EFI_FVB2_WRITE_LOCK_CAP 0x00004000 +#define EFI_FVB2_WRITE_LOCK_STATUS 0x00008000 + +#define EFI_FVB2_ALIGNMENT 0x001F0000 +#define EFI_FVB2_ALIGNMENT_1 0x00000000 +#define EFI_FVB2_ALIGNMENT_2 0x00010000 +#define EFI_FVB2_ALIGNMENT_4 0x00020000 +#define EFI_FVB2_ALIGNMENT_8 0x00030000 +#define EFI_FVB2_ALIGNMENT_16 0x00040000 +#define EFI_FVB2_ALIGNMENT_32 0x00050000 +#define EFI_FVB2_ALIGNMENT_64 0x00060000 +#define EFI_FVB2_ALIGNMENT_128 0x00070000 +#define EFI_FVB2_ALIGNMENT_256 0x00080000 +#define EFI_FVB2_ALIGNMENT_512 0x00090000 +#define EFI_FVB2_ALIGNMENT_1K 0x000A0000 +#define EFI_FVB2_ALIGNMENT_2K 0x000B0000 +#define EFI_FVB2_ALIGNMENT_4K 0x000C0000 +#define EFI_FVB2_ALIGNMENT_8K 0x000D0000 +#define EFI_FVB2_ALIGNMENT_16K 0x000E0000 +#define EFI_FVB2_ALIGNMENT_32K 0x000F0000 +#define EFI_FVB2_ALIGNMENT_64K 0x00100000 +#define EFI_FVB2_ALIGNMENT_128K 0x00110000 +#define EFI_FVB2_ALIGNMENT_256K 0x00120000 +#define EFI_FVB2_ALIGNMNET_512K 0x00130000 +#define EFI_FVB2_ALIGNMENT_1M 0x00140000 +#define EFI_FVB2_ALIGNMENT_2M 0x00150000 +#define EFI_FVB2_ALIGNMENT_4M 0x00160000 +#define EFI_FVB2_ALIGNMENT_8M 0x00170000 +#define EFI_FVB2_ALIGNMENT_16M 0x00180000 +#define EFI_FVB2_ALIGNMENT_32M 0x00190000 +#define EFI_FVB2_ALIGNMENT_64M 0x001A0000 +#define EFI_FVB2_ALIGNMENT_128M 0x001B0000 +#define EFI_FVB2_ALIGNMENT_256M 0x001C0000 +#define EFI_FVB2_ALIGNMENT_512M 0x001D0000 +#define EFI_FVB2_ALIGNMENT_1G 0x001E0000 +#define EFI_FVB2_ALIGNMENT_2G 0x001F0000 + +#define EFI_FVB_CAPABILITIES (EFI_FVB_READ_DISABLED_CAP | \ + EFI_FVB_READ_ENABLED_CAP | \ + EFI_FVB_WRITE_DISABLED_CAP | \ + EFI_FVB_WRITE_ENABLED_CAP | \ + EFI_FVB_LOCK_CAP | \ + EFI_FVB2_READ_LOCK_CAP | \ + EFI_FVB2_WRITE_LOCK_CAP ) + +#define EFI_FVB_STATUS (EFI_FVB_READ_STATUS | EFI_FVB_WRITE_STATUS | \ + EFI_FVB_LOCK_STATUS | EFI_FVB2_READ_LOCK_STATUS | \ + EFI_FVB2_WRITE_LOCK_STATUS ) + + + +// +// Extended Header Header. Located via ExtHeaderOffset. +// The extended headers follow each other in memory and are +// terminated by ExtHeaderType EFI_FV_EXT_TYPE_END +// +#define EFI_FV_EXT_TYPE_END 0x00 +typedef struct { + UINT16 ExtEntrySize; + UINT16 ExtEntryType; +} EFI_FIRMWARE_VOLUME_EXT_ENTRY; + +// +// GUID that maps OEM file types to GUIDs +// +#define EFI_FV_EXT_TYPE_OEM_TYPE 0x01 +typedef struct { + EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr; + UINT32 TypeMask; + EFI_GUID Types[1]; +} EFI_FIRMWARE_VOLUME_EXT_HEADER_OEM_TYPE; + +// +// Unique name of the FV +// +typedef struct { + EFI_GUID FvName; + UINT32 ExtHeaderSize; +} EFI_FIRMWARE_VOLUME_EXT_HEADER; + + +#endif + +// +// Firmware Volume Header Revision definition +// +#define EFI_FVH_REVISION 0x01 +// +// PI1.0 define Firmware Volume Header Revision to 2 +// +#define EFI_FVH_PI_REVISION 0x02 + +// +// Firmware Volume Header Signature definition +// +#define EFI_FVH_SIGNATURE EFI_SIGNATURE_32 ('_', 'F', 'V', 'H') + +// +// Firmware Volume Header Block Map Entry definition +// +typedef struct { + UINT32 NumBlocks; + UINT32 BlockLength; +} EFI_FV_BLOCK_MAP_ENTRY; + +// +// Firmware Volume Header definition +// +typedef struct { + UINT8 ZeroVector[16]; + EFI_GUID FileSystemGuid; + UINT64 FvLength; + UINT32 Signature; + EFI_FVB_ATTRIBUTES Attributes; + UINT16 HeaderLength; + UINT16 Checksum; +//;;## ...AMI_OVERRIDE... Support PI1.x +#if (PI_SPECIFICATION_VERSION < 0x00010000) + UINT8 Reserved[3]; +#else + UINT16 ExtHeaderOffset; + UINT8 Reserved[1]; +#endif + UINT8 Revision; + EFI_FV_BLOCK_MAP_ENTRY FvBlockMap[1]; +} EFI_FIRMWARE_VOLUME_HEADER; + +#endif diff --git a/EDK/Foundation/Framework/Include/EfiImageFormat.h b/EDK/Foundation/Framework/Include/EfiImageFormat.h new file mode 100644 index 0000000..de2a4f3 --- /dev/null +++ b/EDK/Foundation/Framework/Include/EfiImageFormat.h @@ -0,0 +1,279 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + EfiImageFormat.h + +Abstract: + + This file defines the data structures that are architecturally defined for file + images loaded via the FirmwareVolume protocol. The Firmware Volume specification + is the basis for these definitions. + +--*/ + +#ifndef _EFI_IMAGE_FORMAT_H_ +#define _EFI_IMAGE_FORMAT_H_ + +// +// pack all data structures since this is actually a binary format and we cannot +// allow internal padding in the data structures because of some compilerism.. +// +#pragma pack(1) +// +// //////////////////////////////////////////////////////////////////////////// +// +// Architectural file types +// +typedef UINT8 EFI_FV_FILETYPE; + +#define EFI_FV_FILETYPE_ALL 0x00 +#define EFI_FV_FILETYPE_RAW 0x01 +#define EFI_FV_FILETYPE_FREEFORM 0x02 +#define EFI_FV_FILETYPE_SECURITY_CORE 0x03 +#define EFI_FV_FILETYPE_PEI_CORE 0x04 +#define EFI_FV_FILETYPE_DXE_CORE 0x05 +#define EFI_FV_FILETYPE_PEIM 0x06 +#define EFI_FV_FILETYPE_DRIVER 0x07 +#define EFI_FV_FILETYPE_COMBINED_PEIM_DRIVER 0x08 +#define EFI_FV_FILETYPE_APPLICATION 0x09 +// +// File type 0x0A is reserved and should not be used +// +#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B + +// +// //////////////////////////////////////////////////////////////////////////// +// +// Section types +// +typedef UINT8 EFI_SECTION_TYPE; + +// +// ************************************************************ +// The section type EFI_SECTION_ALL is a psuedo type. It is +// used as a wildcard when retrieving sections. The section +// type EFI_SECTION_ALL matches all section types. +// ************************************************************ +// +#define EFI_SECTION_ALL 0x00 + +// +// ************************************************************ +// Encapsulation section Type values +// ************************************************************ +// +#define EFI_SECTION_COMPRESSION 0x01 +#define EFI_SECTION_GUID_DEFINED 0x02 + +// +// ************************************************************ +// Leaf section Type values +// ************************************************************ +// +#define EFI_SECTION_FIRST_LEAF_SECTION_TYPE 0x10 + +#define EFI_SECTION_PE32 0x10 +#define EFI_SECTION_PIC 0x11 +#define EFI_SECTION_TE 0x12 +#define EFI_SECTION_DXE_DEPEX 0x13 +#define EFI_SECTION_VERSION 0x14 +#define EFI_SECTION_USER_INTERFACE 0x15 +#define EFI_SECTION_COMPATIBILITY16 0x16 +#define EFI_SECTION_FIRMWARE_VOLUME_IMAGE 0x17 +#define EFI_SECTION_FREEFORM_SUBTYPE_GUID 0x18 +#define EFI_SECTION_RAW 0x19 +#define EFI_SECTION_PEI_DEPEX 0x1B + +#define EFI_SECTION_LAST_LEAF_SECTION_TYPE 0x1B +#define EFI_SECTION_LAST_SECTION_TYPE 0x1B + +// +// //////////////////////////////////////////////////////////////////////////// +// +// Common section header +// +typedef struct { + UINT8 Size[3]; + UINT8 Type; +} EFI_COMMON_SECTION_HEADER; + +#define SECTION_SIZE(SectionHeaderPtr) \ + ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) SectionHeaderPtr)->Size) & 0x00ffffff)) + +// +// //////////////////////////////////////////////////////////////////////////// +// +// Compression section +// +// +// CompressionType values +// +#define EFI_NOT_COMPRESSED 0x00 +#define EFI_STANDARD_COMPRESSION 0x01 +#define EFI_CUSTOMIZED_COMPRESSION 0x02 + +typedef struct { + EFI_COMMON_SECTION_HEADER CommonHeader; + UINT32 UncompressedLength; + UINT8 CompressionType; +} EFI_COMPRESSION_SECTION; + +// +// //////////////////////////////////////////////////////////////////////////// +// +// GUID defined section +// +typedef struct { + EFI_COMMON_SECTION_HEADER CommonHeader; + EFI_GUID SectionDefinitionGuid; + UINT16 DataOffset; + UINT16 Attributes; +} EFI_GUID_DEFINED_SECTION; + +// +// Bit values for Attributes +// +#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED 0x01 +#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID 0x02 + +// +// Bit values for AuthenticationStatus +// +#define EFI_AGGREGATE_AUTH_STATUS_PLATFORM_OVERRIDE 0x000001 +#define EFI_AGGREGATE_AUTH_STATUS_IMAGE_SIGNED 0x000002 +#define EFI_AGGREGATE_AUTH_STATUS_NOT_TESTED 0x000004 +#define EFI_AGGREGATE_AUTH_STATUS_TEST_FAILED 0x000008 +#define EFI_AGGREGATE_AUTH_STATUS_ALL 0x00000f + +#define EFI_LOCAL_AUTH_STATUS_PLATFORM_OVERRIDE 0x010000 +#define EFI_LOCAL_AUTH_STATUS_IMAGE_SIGNED 0x020000 +#define EFI_LOCAL_AUTH_STATUS_NOT_TESTED 0x040000 +#define EFI_LOCAL_AUTH_STATUS_TEST_FAILED 0x080000 +#define EFI_LOCAL_AUTH_STATUS_ALL 0x0f0000 + +// +// //////////////////////////////////////////////////////////////////////////// +// +// PE32+ section +// +typedef struct { + EFI_COMMON_SECTION_HEADER CommonHeader; +} EFI_PE32_SECTION; + +// +// //////////////////////////////////////////////////////////////////////////// +// +// PIC section +// +typedef struct { + EFI_COMMON_SECTION_HEADER CommonHeader; +} EFI_PIC_SECTION; + +// +// //////////////////////////////////////////////////////////////////////////// +// +// PEIM header section +// +typedef struct { + EFI_COMMON_SECTION_HEADER CommonHeader; +} EFI_PEIM_HEADER_SECTION; + +// +// //////////////////////////////////////////////////////////////////////////// +// +// DEPEX section +// +typedef struct { + EFI_COMMON_SECTION_HEADER CommonHeader; +} EFI_DEPEX_SECTION; + +// +// //////////////////////////////////////////////////////////////////////////// +// +// Version section +// +typedef struct { + EFI_COMMON_SECTION_HEADER CommonHeader; + UINT16 BuildNumber; + INT16 VersionString[1]; +} EFI_VERSION_SECTION; + +// +// //////////////////////////////////////////////////////////////////////////// +// +// User interface section +// +typedef struct { + EFI_COMMON_SECTION_HEADER CommonHeader; + INT16 FileNameString[1]; +} EFI_USER_INTERFACE_SECTION; + +// +// //////////////////////////////////////////////////////////////////////////// +// +// Code16 section +// +typedef struct { + EFI_COMMON_SECTION_HEADER CommonHeader; +} EFI_CODE16_SECTION; + +// +// //////////////////////////////////////////////////////////////////////////// +// +// Firmware Volume Image section +// +typedef struct { + EFI_COMMON_SECTION_HEADER CommonHeader; +} EFI_FIRMWARE_VOLUME_IMAGE_SECTION; + +// +// //////////////////////////////////////////////////////////////////////////// +// +// Freeform subtype GUID section +// +typedef struct { + EFI_COMMON_SECTION_HEADER CommonHeader; + EFI_GUID SubTypeGuid; +} EFI_FREEFORM_SUBTYPE_GUID_SECTION; + +// +// //////////////////////////////////////////////////////////////////////////// +// +// Raw section +// +typedef struct { + EFI_COMMON_SECTION_HEADER CommonHeader; +} EFI_RAW_SECTION; + +// +// undo the pragma from the beginning... +// +#pragma pack() + +typedef union { + EFI_COMMON_SECTION_HEADER *CommonHeader; + EFI_COMPRESSION_SECTION *CompressionSection; + EFI_GUID_DEFINED_SECTION *GuidDefinedSection; + EFI_PE32_SECTION *Pe32Section; + EFI_PIC_SECTION *PicSection; + EFI_PEIM_HEADER_SECTION *PeimHeaderSection; + EFI_DEPEX_SECTION *DependencySection; + EFI_VERSION_SECTION *VersionSection; + EFI_USER_INTERFACE_SECTION *UISection; + EFI_CODE16_SECTION *Code16Section; + EFI_FIRMWARE_VOLUME_IMAGE_SECTION *FVImageSection; + EFI_FREEFORM_SUBTYPE_GUID_SECTION *FreeformSubtypeSection; + EFI_RAW_SECTION *RawSection; +} EFI_FILE_SECTION_POINTER; + +#endif diff --git a/EDK/Foundation/Framework/Include/EfiInternalFormRepresentation.h b/EDK/Foundation/Framework/Include/EfiInternalFormRepresentation.h new file mode 100644 index 0000000..8b963fd --- /dev/null +++ b/EDK/Foundation/Framework/Include/EfiInternalFormRepresentation.h @@ -0,0 +1,431 @@ +/*++ + +Copyright (c) 2004 - 2005, 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. + +Module Name: + + EfiInternalFormRepresentation.h + +Abstract: + + This file defines the encoding for the VFR (Visual Form Representation) language. + IFR is primarily consumed by the EFI presentation engine, and produced by EFI + internal application and drivers as well as all add-in card option-ROM drivers + +--*/ + +#ifndef _EFI_INTERNAL_FORM_REPRESENTATION_H_ +#define _EFI_INTERNAL_FORM_REPRESENTATION_H_ + +// +// The following types are currently defined: +// +typedef UINT32 RELOFST; +typedef UINT16 STRING_REF; +typedef CHAR16 *EFI_STRING; + +// +// IFR Op codes +// +#define EFI_IFR_FORM_OP 0x01 +#define EFI_IFR_SUBTITLE_OP 0x02 +#define EFI_IFR_TEXT_OP 0x03 +#define EFI_IFR_GRAPHIC_OP 0x04 +#define EFI_IFR_ONE_OF_OP 0x05 +#define EFI_IFR_CHECKBOX_OP 0x06 +#define EFI_IFR_NUMERIC_OP 0x07 +#define EFI_IFR_PASSWORD_OP 0x08 +#define EFI_IFR_ONE_OF_OPTION_OP 0x09 // ONEOF OPTION field +#define EFI_IFR_SUPPRESS_IF_OP 0x0A +#define EFI_IFR_END_FORM_OP 0x0B +#define EFI_IFR_HIDDEN_OP 0x0C +#define EFI_IFR_END_FORM_SET_OP 0x0D +#define EFI_IFR_FORM_SET_OP 0x0E +#define EFI_IFR_REF_OP 0x0F +#define EFI_IFR_END_ONE_OF_OP 0x10 +#define EFI_IFR_END_OP EFI_IFR_END_ONE_OF_OP +#define EFI_IFR_INCONSISTENT_IF_OP 0x11 +#define EFI_IFR_EQ_ID_VAL_OP 0x12 +#define EFI_IFR_EQ_ID_ID_OP 0x13 +#define EFI_IFR_EQ_ID_LIST_OP 0x14 +#define EFI_IFR_AND_OP 0x15 +#define EFI_IFR_OR_OP 0x16 +#define EFI_IFR_NOT_OP 0x17 +#define EFI_IFR_END_IF_OP 0x18 // for endif of inconsistentif, suppressif, grayoutif +#define EFI_IFR_GRAYOUT_IF_OP 0x19 +#define EFI_IFR_DATE_OP 0x1A +#define EFI_IFR_TIME_OP 0x1B +#define EFI_IFR_STRING_OP 0x1C +#define EFI_IFR_LABEL_OP 0x1D +#define EFI_IFR_SAVE_DEFAULTS_OP 0x1E +#define EFI_IFR_RESTORE_DEFAULTS_OP 0x1F +#define EFI_IFR_BANNER_OP 0x20 +#define EFI_IFR_INVENTORY_OP 0x21 +#define EFI_IFR_EQ_VAR_VAL_OP 0x22 +#define EFI_IFR_ORDERED_LIST_OP 0x23 +#define EFI_IFR_VARSTORE_OP 0x24 +#define EFI_IFR_VARSTORE_SELECT_OP 0x25 +#define EFI_IFR_VARSTORE_SELECT_PAIR_OP 0x26 +#define EFI_IFR_TRUE_OP 0x27 +#define EFI_IFR_FALSE_OP 0x28 +#define EFI_IFR_GT_OP 0x29 +#define EFI_IFR_GE_OP 0x2A +#define EFI_IFR_OEM_DEFINED_OP 0x2B +#define EFI_IFR_LAST_OPCODE EFI_IFR_OEM_DEFINED_OP +#define EFI_IFR_OEM_OP 0xFE +#define EFI_IFR_NV_ACCESS_COMMAND 0xFF + +// +// Define values for the flags fields in some VFR opcodes. These are +// bitmasks. +// +#define EFI_IFR_FLAG_DEFAULT 0x01 +#define EFI_IFR_FLAG_MANUFACTURING 0x02 +#define EFI_IFR_FLAG_INTERACTIVE 0x04 +#define EFI_IFR_FLAG_NV_ACCESS 0x08 +#define EFI_IFR_FLAG_RESET_REQUIRED 0x10 +#define EFI_IFR_FLAG_LATE_CHECK 0x20 + +#define EFI_NON_DEVICE_CLASS 0x00 // Useful when you do not want something in the Device Manager +#define EFI_DISK_DEVICE_CLASS 0x01 +#define EFI_VIDEO_DEVICE_CLASS 0x02 +#define EFI_NETWORK_DEVICE_CLASS 0x04 +#define EFI_INPUT_DEVICE_CLASS 0x08 +#define EFI_ON_BOARD_DEVICE_CLASS 0x10 +#define EFI_OTHER_DEVICE_CLASS 0x20 + +#define EFI_SETUP_APPLICATION_SUBCLASS 0x00 +#define EFI_GENERAL_APPLICATION_SUBCLASS 0x01 +#define EFI_FRONT_PAGE_SUBCLASS 0x02 +#define EFI_SINGLE_USE_SUBCLASS 0x03 // Used to display a single entity and then exit +// +// Used to flag dynamically created op-codes. This is meaningful to the IFR Library set +// and the browser since we need to distinguish between compiled NV map data and created data. +// We do not allow new entries to be created in the NV map dynamically however we still need +// to display this information correctly. To dynamically create op-codes and assume that their +// data will be saved, ensure that the NV starting location they refer to is pre-defined in the +// NV map. +// +#define EFI_IFR_FLAG_CREATED 128 + +#pragma pack(1) +// +// IFR Structure definitions +// +typedef struct { + UINT8 OpCode; + UINT8 Length; +} EFI_IFR_OP_HEADER; + +typedef struct { + EFI_IFR_OP_HEADER Header; + EFI_GUID Guid; + STRING_REF FormSetTitle; + STRING_REF Help; + EFI_PHYSICAL_ADDRESS CallbackHandle; + UINT16 Class; + UINT16 SubClass; + UINT16 NvDataSize; // set once, size of the NV data as defined in the script +} EFI_IFR_FORM_SET; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 FormId; + STRING_REF FormTitle; +} EFI_IFR_FORM; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 LabelId; +} EFI_IFR_LABEL; + +typedef struct { + EFI_IFR_OP_HEADER Header; + STRING_REF SubTitle; +} EFI_IFR_SUBTITLE; + +typedef struct { + EFI_IFR_OP_HEADER Header; + STRING_REF Help; + STRING_REF Text; + STRING_REF TextTwo; + UINT8 Flags; // This is included solely for purposes of interactive/dynamic support. + UINT16 Key; // Value to be passed to caller to identify this particular op-code +} EFI_IFR_TEXT; + +// +// goto +// +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 FormId; + STRING_REF Prompt; + STRING_REF Help; // The string Token for the context-help + UINT8 Flags; // This is included solely for purposes of interactive/dynamic support. + UINT16 Key; // Value to be passed to caller to identify this particular op-code +} EFI_IFR_REF; + +typedef struct { + EFI_IFR_OP_HEADER Header; +} EFI_IFR_END_FORM; + +typedef struct { + EFI_IFR_OP_HEADER Header; +} EFI_IFR_END_FORM_SET; + +// +// Also notice that the IFR_ONE_OF and IFR_CHECK_BOX are identical in structure......code assumes this to be true, if this ever +// changes we need to revisit the InitializeTagStructures code +// +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name + UINT8 Width; // The Size of the Data being saved + STRING_REF Prompt; // The String Token for the Prompt + STRING_REF Help; // The string Token for the context-help +} EFI_IFR_ONE_OF; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 QuestionId; // The offset in NV for storage of the data + UINT8 MaxEntries; // The maximum number of options in the ordered list (=size of NVStore) + STRING_REF Prompt; // The string token for the prompt + STRING_REF Help; // The string token for the context-help +} EFI_IFR_ORDERED_LIST; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name + UINT8 Width; // The Size of the Data being saved + STRING_REF Prompt; // The String Token for the Prompt + STRING_REF Help; // The string Token for the context-help + UINT8 Flags; // For now, if non-zero, means that it is the default option, - further definition likely + UINT16 Key; // Value to be passed to caller to identify this particular op-code +} EFI_IFR_CHECK_BOX; + +typedef struct { + EFI_IFR_OP_HEADER Header; + STRING_REF Option; // The string token describing the option + UINT16 Value; // The value associated with this option that is stored in the NVRAM if chosen + UINT8 Flags; // For now, if non-zero, means that it is the default option, - further definition likely above + UINT16 Key; // Value to be passed to caller to identify this particular op-code +} EFI_IFR_ONE_OF_OPTION; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name + UINT8 Width; // The Size of the Data being saved + STRING_REF Prompt; // The String Token for the Prompt + STRING_REF Help; // The string Token for the context-help + UINT8 Flags; // This is included solely for purposes of interactive/dynamic support. + UINT16 Key; // Value to be passed to caller to identify this particular op-code + UINT16 Minimum; + UINT16 Maximum; + UINT16 Step; // If step is 0, then manual input is specified, otherwise, left/right arrow selection is called for + UINT16 Default; +} EFI_IFR_NUMERIC; + +// +// There is an interesting twist with regards to Time and Date. This is one of the few items which can accept input from +// a user, however may or may not need to use storage in the NVRAM space. The decided method for determining if NVRAM space +// will be used (only for a TimeOp or DateOp) is: If .QuestionId == 0 && .Width == 0 (normally an impossibility) then use system +// resources to store the data away and not NV resources. In other words, the setup engine will call gRT->SetTime, and gRT->SetDate +// for the saving of data, and the values displayed will be from the gRT->GetXXXX series of calls. +// +typedef struct { + EFI_IFR_NUMERIC Hour; + EFI_IFR_NUMERIC Minute; + EFI_IFR_NUMERIC Second; +} EFI_IFR_TIME; + +typedef struct { + EFI_IFR_NUMERIC Year; + EFI_IFR_NUMERIC Month; + EFI_IFR_NUMERIC Day; +} EFI_IFR_DATE; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name + UINT8 Width; // The Size of the Data being saved -- BUGBUG -- remove someday + STRING_REF Prompt; // The String Token for the Prompt + STRING_REF Help; // The string Token for the context-help + UINT8 Flags; // This is included solely for purposes of interactive/dynamic support. + UINT16 Key; // Value to be passed to caller to identify this particular op-code + UINT8 MinSize; // Minimum allowable sized password + UINT8 MaxSize; // Maximum allowable sized password + UINT16 Encoding; +} EFI_IFR_PASSWORD; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name + UINT8 Width; // The Size of the Data being saved -- BUGBUG -- remove someday + STRING_REF Prompt; // The String Token for the Prompt + STRING_REF Help; // The string Token for the context-help + UINT8 Flags; // This is included solely for purposes of interactive/dynamic support. + UINT16 Key; // Value to be passed to caller to identify this particular op-code + UINT8 MinSize; // Minimum allowable sized password + UINT8 MaxSize; // Maximum allowable sized password +} EFI_IFR_STRING; + +typedef struct { + EFI_IFR_OP_HEADER Header; +} EFI_IFR_END_ONE_OF; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 Value; + UINT16 Key; +} EFI_IFR_HIDDEN; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT8 Flags; +} EFI_IFR_SUPPRESS; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT8 Flags; +} EFI_IFR_GRAYOUT; + +typedef struct { + EFI_IFR_OP_HEADER Header; + STRING_REF Popup; + UINT8 Flags; +} EFI_IFR_INCONSISTENT; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 QuestionId; // offset into variable storage + UINT8 Width; // size of variable storage + UINT16 Value; // value to compare against +} EFI_IFR_EQ_ID_VAL; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 QuestionId; // offset into variable storage + UINT8 Width; // size of variable storage + UINT16 ListLength; + UINT16 ValueList[1]; +} EFI_IFR_EQ_ID_LIST; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 QuestionId1; // offset into variable storage for first value to compare + UINT8 Width; // size of variable storage (must be same for both) + UINT16 QuestionId2; // offset into variable storage for second value to compare +} EFI_IFR_EQ_ID_ID; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 VariableId; // offset into variable storage + UINT16 Value; // value to compare against +} EFI_IFR_EQ_VAR_VAL; + +typedef struct { + EFI_IFR_OP_HEADER Header; +} EFI_IFR_AND; + +typedef struct { + EFI_IFR_OP_HEADER Header; +} EFI_IFR_OR; + +typedef struct { + EFI_IFR_OP_HEADER Header; +} EFI_IFR_NOT; + +typedef struct { + EFI_IFR_OP_HEADER Header; +} EFI_IFR_END_IF; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 FormId; + STRING_REF Prompt; + STRING_REF Help; + UINT8 Flags; + UINT16 Key; +} EFI_IFR_SAVE_DEFAULTS; + +typedef struct { + EFI_IFR_OP_HEADER Header; + STRING_REF Help; + STRING_REF Text; + STRING_REF TextTwo; // optional text +} EFI_IFR_INVENTORY; + +typedef struct { + EFI_IFR_OP_HEADER Header; + EFI_GUID Guid; // GUID for the variable + UINT16 VarId; // variable store ID, as referenced elsewhere in the form + UINT16 Size; // size of the variable storage +} EFI_IFR_VARSTORE; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 VarId; // variable store ID, as referenced elsewhere in the form +} EFI_IFR_VARSTORE_SELECT; + +// +// Used for the ideqid VFR statement where two variable stores may be referenced in the +// same VFR statement. +// A browser should treat this as an EFI_IFR_VARSTORE_SELECT statement and assume that all following +// IFR opcodes use the VarId as defined here. +// +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 VarId; // variable store ID, as referenced elsewhere in the form + UINT16 SecondaryVarId; // variable store ID, as referenced elsewhere in the form +} EFI_IFR_VARSTORE_SELECT_PAIR; + +typedef struct { + EFI_IFR_OP_HEADER Header; +} EFI_IFR_TRUE; + +typedef struct { + EFI_IFR_OP_HEADER Header; +} EFI_IFR_FALSE; + +typedef struct { + EFI_IFR_OP_HEADER Header; +} EFI_IFR_GT; + +typedef struct { + EFI_IFR_OP_HEADER Header; +} EFI_IFR_GE; + +// +// Save defaults and restore defaults have same structure +// +#define EFI_IFR_RESTORE_DEFAULTS EFI_IFR_SAVE_DEFAULTS + +typedef struct { + EFI_IFR_OP_HEADER Header; + STRING_REF Title; // The string token for the banner title + UINT16 LineNumber; // 1-based line number + UINT8 Alignment; // left, center, or right-aligned +} EFI_IFR_BANNER; + +typedef struct { + EFI_IFR_OP_HEADER Header; + UINT16 QuestionId; // Offset into the map + UINT8 StorageWidth; // Width of the value + CHAR8 Data[1]; // The Data itself +} EFI_IFR_NV_DATA; + +#define EFI_IFR_BANNER_ALIGN_LEFT 0 +#define EFI_IFR_BANNER_ALIGN_CENTER 1 +#define EFI_IFR_BANNER_ALIGN_RIGHT 2 +#define EFI_IFR_BANNER_TIMEOUT 0xFF + +#pragma pack() + +#endif diff --git a/EDK/Foundation/Framework/Include/EfiPciCfg.h b/EDK/Foundation/Framework/Include/EfiPciCfg.h new file mode 100644 index 0000000..f65b163 --- /dev/null +++ b/EDK/Foundation/Framework/Include/EfiPciCfg.h @@ -0,0 +1,81 @@ +/*++ + +Copyright (c) 2007 - 2009, 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. + +Module Name: + + EfiPciCfg.h + +Abstract: + + Abstract the common fields of PciCfg definition between Framework 0.9x + and PI 1.0. + +--*/ + +#ifndef _EFI_PCI_CFG_H_ +#define _EFI_PCI_CFG_H_ + +// +// Framework specification 0.9x definition. +// +typedef enum { + PeiPciCfgWidthUint8 = 0, + PeiPciCfgWidthUint16 = 1, + PeiPciCfgWidthUint32 = 2, + PeiPciCfgWidthUint64 = 3, + PeiPciCfgWidthMaximum +} PEI_PCI_CFG_PPI_WIDTH; + +#define PEI_PCI_CFG_ADDRESS(bus, dev, func, reg) ( \ + (UINT64) ((((UINTN) bus) << 24) + (((UINTN) dev) << 16) + (((UINTN) func) << 8) + ((UINTN) reg)) \ + ) & 0x00000000ffffffff + +// +// PI 1.0 definition. +// +typedef enum { + EfiPeiPciCfgWidthUint8 = 0, + EfiPeiPciCfgWidthUint16 = 1, + EfiPeiPciCfgWidthUint32 = 2, + EfiPeiPciCfgWidthUint64 = 3, + EfiPeiPciCfgWidthMaximum +} EFI_PEI_PCI_CFG_PPI_WIDTH; + +#define EFI_PEI_PCI_CFG_ADDRESS(bus, dev, func, reg) \ + (UINT64) ((((UINTN) (bus)) << 24) | \ + (((UINTN) (dev)) << 16) | \ + (((UINTN) (func)) << 8) | \ + ((reg) < 256 ? ((UINTN) (reg)): ((UINT64) (reg) << 32))) + +#if (PI_SPECIFICATION_VERSION < 0x00010000) + +typedef struct { + UINT8 Register; + UINT8 Function; + UINT8 Device; + UINT8 Bus; + UINT8 Reserved[4]; +} PEI_PCI_CFG_PPI_PCI_ADDRESS; + +typedef PEI_PCI_CFG_PPI_PCI_ADDRESS EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS; + +#else + +typedef struct { + UINT8 Register; + UINT8 Function; + UINT8 Device; + UINT8 Bus; + UINT32 ExtendedRegister; +} EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS; +#endif + +#endif diff --git a/EDK/Foundation/Framework/Include/EfiSmbus.h b/EDK/Foundation/Framework/Include/EfiSmbus.h new file mode 100644 index 0000000..425694c --- /dev/null +++ b/EDK/Foundation/Framework/Include/EfiSmbus.h @@ -0,0 +1,70 @@ +/*++ + +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. + +Module Name: + + EfiSmbus.h + +Abstract: + + + +--*/ + +#ifndef _EFI_SMBUS_DEFINITION_H_ +#define _EFI_SMBUS_DEFINITION_H_ + +// +// EFI Smbus Device Address, Smbus Device Command, Smbus Operation +// +typedef struct { + UINTN SmbusDeviceAddress : 7; +} EFI_SMBUS_DEVICE_ADDRESS; + +typedef UINTN EFI_SMBUS_DEVICE_COMMAND; + +typedef enum _EFI_SMBUS_OPERATION +{ + EfiSmbusQuickRead, + EfiSmbusQuickWrite, + EfiSmbusReceiveByte, + EfiSmbusSendByte, + EfiSmbusReadByte, + EfiSmbusWriteByte, + EfiSmbusReadWord, + EfiSmbusWriteWord, + EfiSmbusReadBlock, + EfiSmbusWriteBlock, + EfiSmbusProcessCall, + EfiSmbusBWBRProcessCall +} EFI_SMBUS_OPERATION; + +//;;## ...AMI_OVERRIDE... Support PI1.x start +typedef struct { + UINT32 VendorSpecificId; + UINT16 SubsystemDeviceId; + UINT16 SubsystemVendorId; + UINT16 Interface; + UINT16 DeviceId; + UINT16 VendorId; + UINT8 VendorRevision; + UINT8 DeviceCapabilities; +} EFI_SMBUS_UDID; + + +typedef struct { + EFI_SMBUS_DEVICE_ADDRESS SmbusDeviceAddress; + EFI_SMBUS_UDID SmbusDeviceUdid; +} EFI_SMBUS_DEVICE_MAP; +//;;## ...AMI_OVERRIDE... Support PI1.x end + + +#endif diff --git a/EDK/Foundation/Framework/Include/EfiStatusCode.h b/EDK/Foundation/Framework/Include/EfiStatusCode.h new file mode 100644 index 0000000..cc16c10 --- /dev/null +++ b/EDK/Foundation/Framework/Include/EfiStatusCode.h @@ -0,0 +1,961 @@ +/*++ + +Copyright (c) 2004 - 2011, 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. + +Module Name: + + EfiStatusCode.h + +Abstract: + + Status Code Definitions, according to Intel Platform Innovation Framework + for EFI Status Codes Specification + Revision 0.92 + + The file is divided into sections for ease of use. + + Section: Contents: + 1 General Status Code Definitions + 2 Class definitions + 3 Computing Unit Subclasses, Progress and Error Codes + 4 Peripheral Subclasses, Progress and Error Codes. + 5 IO Bus Subclasses, Progress and Error Codes. + 6 Software Subclasses, Progress and Error Codes. + 7 Debug Codes + +--*/ + +#ifndef _EFI_STATUS_CODE_H_ +#define _EFI_STATUS_CODE_H_ + +// +// ///////////////////////////////////////////////////////////////////////////// +// Section 1 +/////////////////////////////////////////////////////////////////////////////// +// +// Status Code Type Definition +// +typedef UINT32 EFI_STATUS_CODE_TYPE; + +// +// A Status Code Type is made up of the code type and severity +// All values masked by EFI_STATUS_CODE_RESERVED_MASK are +// reserved for use by this specification. +// +#define EFI_STATUS_CODE_TYPE_MASK 0x000000FF +#define EFI_STATUS_CODE_SEVERITY_MASK 0xFF000000 +#define EFI_STATUS_CODE_RESERVED_MASK 0x00FFFF00 + +// +// Definition of code types, all other values masked by +// EFI_STATUS_CODE_TYPE_MASK are reserved for use by +// this specification. +// +#define EFI_PROGRESS_CODE 0x00000001 +#define EFI_ERROR_CODE 0x00000002 +#define EFI_DEBUG_CODE 0x00000003 + +// +// Definitions of severities, all other values masked by +// EFI_STATUS_CODE_SEVERITY_MASK are reserved for use by +// this specification. +// +#define EFI_ERROR_MINOR 0x40000000 +#define EFI_ERROR_MAJOR 0x80000000 +#define EFI_ERROR_UNRECOVERED 0x90000000 +#define EFI_ERROR_UNCONTAINED 0xA0000000 + +// +// Status Code Value Definition +// +typedef UINT32 EFI_STATUS_CODE_VALUE; + +// +// A Status Code Value is made up of the class, subclass, and +// an operation. Classes, subclasses, and operations are defined +// in the following sections. +// +#define EFI_STATUS_CODE_CLASS_MASK 0xFF000000 +#define EFI_STATUS_CODE_SUBCLASS_MASK 0x00FF0000 +#define EFI_STATUS_CODE_OPERATION_MASK 0x0000FFFF + +typedef struct { + UINT16 HeaderSize; + UINT16 Size; + EFI_GUID Type; +} EFI_STATUS_CODE_DATA; + +// +// Data Hub Status Code class record definition +// +typedef struct { + EFI_STATUS_CODE_TYPE CodeType; + EFI_STATUS_CODE_VALUE Value; + UINT32 Instance; + EFI_GUID CallerId; + EFI_STATUS_CODE_DATA Data; +} DATA_HUB_STATUS_CODE_DATA_RECORD; + +// +// ///////////////////////////////////////////////////////////////////////////// +// Section 2 +/////////////////////////////////////////////////////////////////////////////// +// +// Class definitions +// Values of 4-127 are reserved for future use by this +// specification. +// Values in the range 128-255 are reserved for OEM use. +// +#define EFI_COMPUTING_UNIT 0x00000000 +#define EFI_PERIPHERAL 0x01000000 +#define EFI_IO_BUS 0x02000000 +#define EFI_SOFTWARE 0x03000000 + +// +// General partitioning scheme for Progress and Error Codes are +// 0x0000-0x0FFF - Shared by all sub-classes in a given class +// 0x1000-0x7FFF - Subclass Specific +// 0x8000-0xFFFF - OEM specific +// +#define EFI_SUBCLASS_SPECIFIC 0x1000 +#define EFI_OEM_SPECIFIC 0x8000 + +// +// ///////////////////////////////////////////////////////////////////////////// +// Section 3 +/////////////////////////////////////////////////////////////////////////////// +// +// Computing Unit Subclass definitions. +// Values of 7-127 are reserved for future use by this +// specification. +// Values of 128-255 are reserved for OEM use. +// +#define EFI_COMPUTING_UNIT_UNSPECIFIED (EFI_COMPUTING_UNIT | 0x00000000) +#define EFI_COMPUTING_UNIT_HOST_PROCESSOR (EFI_COMPUTING_UNIT | 0x00010000) +#define EFI_COMPUTING_UNIT_FIRMWARE_PROCESSOR (EFI_COMPUTING_UNIT | 0x00020000) +#define EFI_COMPUTING_UNIT_IO_PROCESSOR (EFI_COMPUTING_UNIT | 0x00030000) +#define EFI_COMPUTING_UNIT_CACHE (EFI_COMPUTING_UNIT | 0x00040000) +#define EFI_COMPUTING_UNIT_MEMORY (EFI_COMPUTING_UNIT | 0x00050000) +#define EFI_COMPUTING_UNIT_CHIPSET (EFI_COMPUTING_UNIT | 0x00060000) + +// +// Computing Unit Class Progress Code definitions. +// These are shared by all subclasses. +// +#define EFI_CU_PC_INIT_BEGIN 0x00000000 +#define EFI_CU_PC_INIT_END 0x00000001 + +// +// Computing Unit Unspecified Subclass Progress Code definitions. +// +// +// Computing Unit Host Processor Subclass Progress Code definitions. +// +#define EFI_CU_HP_PC_POWER_ON_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_CU_HP_PC_CACHE_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_CU_HP_PC_RAM_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_CU_HP_PC_MEMORY_CONTROLLER_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000003) +#define EFI_CU_HP_PC_IO_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000004) +#define EFI_CU_HP_PC_BSP_SELECT (EFI_SUBCLASS_SPECIFIC | 0x00000005) +#define EFI_CU_HP_PC_BSP_RESELECT (EFI_SUBCLASS_SPECIFIC | 0x00000006) +#define EFI_CU_HP_PC_AP_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000007) +#define EFI_CU_HP_PC_SMM_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000008) + +// +// Computing Unit Firmware Processor Subclass Progress Code definitions. +// +// +// Computing Unit IO Processor Subclass Progress Code definitions. +// +// +// Computing Unit Cache Subclass Progress Code definitions. +// +#define EFI_CU_CACHE_PC_PRESENCE_DETECT (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_CU_CACHE_PC_CONFIGURATION (EFI_SUBCLASS_SPECIFIC | 0x00000001) + +// +// Computing Unit Memory Subclass Progress Code definitions. +// +#define EFI_CU_MEMORY_PC_SPD_READ (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_CU_MEMORY_PC_PRESENCE_DETECT (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_CU_MEMORY_PC_TIMING (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_CU_MEMORY_PC_CONFIGURING (EFI_SUBCLASS_SPECIFIC | 0x00000003) +#define EFI_CU_MEMORY_PC_OPTIMIZING (EFI_SUBCLASS_SPECIFIC | 0x00000004) +#define EFI_CU_MEMORY_PC_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000005) +#define EFI_CU_MEMORY_PC_TEST (EFI_SUBCLASS_SPECIFIC | 0x00000006) + +// +// Computing Unit Chipset Subclass Progress Code definitions. +// +// +// Computing Unit Class Error Code definitions. +// These are shared by all subclasses. +// +#define EFI_CU_EC_NON_SPECIFIC 0x00000000 +#define EFI_CU_EC_DISABLED 0x00000001 +#define EFI_CU_EC_NOT_SUPPORTED 0x00000002 +#define EFI_CU_EC_NOT_DETECTED 0x00000003 +#define EFI_CU_EC_NOT_CONFIGURED 0x00000004 + +// +// Computing Unit Unspecified Subclass Error Code definitions. +// +// +// Computing Unit Host Processor Subclass Error Code definitions. +// +#define EFI_CU_HP_EC_INVALID_TYPE (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_CU_HP_EC_INVALID_SPEED (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_CU_HP_EC_MISMATCH (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_CU_HP_EC_TIMER_EXPIRED (EFI_SUBCLASS_SPECIFIC | 0x00000003) +#define EFI_CU_HP_EC_SELF_TEST (EFI_SUBCLASS_SPECIFIC | 0x00000004) +#define EFI_CU_HP_EC_INTERNAL (EFI_SUBCLASS_SPECIFIC | 0x00000005) +#define EFI_CU_HP_EC_THERMAL (EFI_SUBCLASS_SPECIFIC | 0x00000006) +#define EFI_CU_HP_EC_LOW_VOLTAGE (EFI_SUBCLASS_SPECIFIC | 0x00000007) +#define EFI_CU_HP_EC_HIGH_VOLTAGE (EFI_SUBCLASS_SPECIFIC | 0x00000008) +#define EFI_CU_HP_EC_CACHE (EFI_SUBCLASS_SPECIFIC | 0x00000009) +#define EFI_CU_HP_EC_MICROCODE_UPDATE (EFI_SUBCLASS_SPECIFIC | 0x0000000A) +#define EFI_CU_HP_EC_CORRECTABLE (EFI_SUBCLASS_SPECIFIC | 0x0000000B) +#define EFI_CU_HP_EC_UNCORRECTABLE (EFI_SUBCLASS_SPECIFIC | 0x0000000C) +#define EFI_CU_HP_EC_NO_MICROCODE_UPDATE (EFI_SUBCLASS_SPECIFIC | 0x0000000D) + +// +// Computing Unit Firmware Processor Subclass Error Code definitions. +// +#define EFI_CU_FP_EC_HARD_FAIL (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_CU_FP_EC_SOFT_FAIL (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_CU_FP_EC_COMM_ERROR (EFI_SUBCLASS_SPECIFIC | 0x00000002) + +// +// Computing Unit IO Processor Subclass Error Code definitions. +// +// +// Computing Unit Cache Subclass Error Code definitions. +// +#define EFI_CU_CACHE_EC_INVALID_TYPE (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_CU_CACHE_EC_INVALID_SPEED (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_CU_CACHE_EC_INVALID_SIZE (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_CU_CACHE_EC_MISMATCH (EFI_SUBCLASS_SPECIFIC | 0x00000003) + +// +// Computing Unit Memory Subclass Error Code definitions. +// +#define EFI_CU_MEMORY_EC_INVALID_TYPE (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_CU_MEMORY_EC_INVALID_SPEED (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_CU_MEMORY_EC_CORRECTABLE (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_CU_MEMORY_EC_UNCORRECTABLE (EFI_SUBCLASS_SPECIFIC | 0x00000003) +#define EFI_CU_MEMORY_EC_SPD_FAIL (EFI_SUBCLASS_SPECIFIC | 0x00000004) +#define EFI_CU_MEMORY_EC_INVALID_SIZE (EFI_SUBCLASS_SPECIFIC | 0x00000005) +#define EFI_CU_MEMORY_EC_MISMATCH (EFI_SUBCLASS_SPECIFIC | 0x00000006) +#define EFI_CU_MEMORY_EC_S3_RESUME_FAIL (EFI_SUBCLASS_SPECIFIC | 0x00000007) +#define EFI_CU_MEMORY_EC_UPDATE_FAIL (EFI_SUBCLASS_SPECIFIC | 0x00000008) +#define EFI_CU_MEMORY_EC_NONE_DETECTED (EFI_SUBCLASS_SPECIFIC | 0x00000009) +#define EFI_CU_MEMORY_EC_NONE_USEFUL (EFI_SUBCLASS_SPECIFIC | 0x0000000A) + +// +// Computing Unit Chipset Subclass Error Code definitions. +// + +/////////////////////////////////////////////////////////////////////////////// +// Section 4 +/////////////////////////////////////////////////////////////////////////////// +// +// Peripheral Subclass definitions. +// Values of 13-127 are reserved for future use by this +// specification. +// Values of 128-255 are reserved for OEM use. +// +#define EFI_PERIPHERAL_UNSPECIFIED (EFI_PERIPHERAL | 0x00000000) +#define EFI_PERIPHERAL_KEYBOARD (EFI_PERIPHERAL | 0x00010000) +#define EFI_PERIPHERAL_MOUSE (EFI_PERIPHERAL | 0x00020000) +#define EFI_PERIPHERAL_LOCAL_CONSOLE (EFI_PERIPHERAL | 0x00030000) +#define EFI_PERIPHERAL_REMOTE_CONSOLE (EFI_PERIPHERAL | 0x00040000) +#define EFI_PERIPHERAL_SERIAL_PORT (EFI_PERIPHERAL | 0x00050000) +#define EFI_PERIPHERAL_PARALLEL_PORT (EFI_PERIPHERAL | 0x00060000) +#define EFI_PERIPHERAL_FIXED_MEDIA (EFI_PERIPHERAL | 0x00070000) +#define EFI_PERIPHERAL_REMOVABLE_MEDIA (EFI_PERIPHERAL | 0x00080000) +#define EFI_PERIPHERAL_AUDIO_INPUT (EFI_PERIPHERAL | 0x00090000) +#define EFI_PERIPHERAL_AUDIO_OUTPUT (EFI_PERIPHERAL | 0x000A0000) +#define EFI_PERIPHERAL_LCD_DEVICE (EFI_PERIPHERAL | 0x000B0000) +#define EFI_PERIPHERAL_NETWORK (EFI_PERIPHERAL | 0x000C0000) + +// +// Peripheral Class Progress Code definitions. +// These are shared by all subclasses. +// +#define EFI_P_PC_INIT 0x00000000 +#define EFI_P_PC_RESET 0x00000001 +#define EFI_P_PC_DISABLE 0x00000002 +#define EFI_P_PC_PRESENCE_DETECT 0x00000003 +#define EFI_P_PC_ENABLE 0x00000004 +#define EFI_P_PC_RECONFIG 0x00000005 +#define EFI_P_PC_DETECTED 0x00000006 + +// +// Peripheral Class Unspecified Subclass Progress Code definitions. +// +// +// Peripheral Class Keyboard Subclass Progress Code definitions. +// +#define EFI_P_KEYBOARD_PC_CLEAR_BUFFER (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_P_KEYBOARD_PC_SELF_TEST (EFI_SUBCLASS_SPECIFIC | 0x00000001) + +// +// Peripheral Class Mouse Subclass Progress Code definitions. +// +#define EFI_P_MOUSE_PC_SELF_TEST (EFI_SUBCLASS_SPECIFIC | 0x00000000) + +// +// Peripheral Class Local Console Subclass Progress Code definitions. +// +// +// Peripheral Class Remote Console Subclass Progress Code definitions. +// +// +// Peripheral Class Serial Port Subclass Progress Code definitions. +// +#define EFI_P_SERIAL_PORT_PC_CLEAR_BUFFER (EFI_SUBCLASS_SPECIFIC | 0x00000000) + +// +// Peripheral Class Parallel Port Subclass Progress Code definitions. +// +// +// Peripheral Class Fixed Media Subclass Progress Code definitions. +// +// +// Peripheral Class Removable Media Subclass Progress Code definitions. +// +// +// Peripheral Class Audio Input Subclass Progress Code definitions. +// +// +// Peripheral Class Audio Output Subclass Progress Code definitions. +// +// +// Peripheral Class LCD Device Subclass Progress Code definitions. +// +// +// Peripheral Class Network Subclass Progress Code definitions. +// +// +// Peripheral Class Error Code definitions. +// These are shared by all subclasses. +// +#define EFI_P_EC_NON_SPECIFIC 0x00000000 +#define EFI_P_EC_DISABLED 0x00000001 +#define EFI_P_EC_NOT_SUPPORTED 0x00000002 +#define EFI_P_EC_NOT_DETECTED 0x00000003 +#define EFI_P_EC_NOT_CONFIGURED 0x00000004 +#define EFI_P_EC_INTERFACE_ERROR 0x00000005 +#define EFI_P_EC_CONTROLLER_ERROR 0x00000006 +#define EFI_P_EC_INPUT_ERROR 0x00000007 +#define EFI_P_EC_OUTPUT_ERROR 0x00000008 +#define EFI_P_EC_RESOURCE_CONFLICT 0x00000009 + +// +// Peripheral Class Unspecified Subclass Error Code definitions. +// +// +// Peripheral Class Keyboard Subclass Error Code definitions. +// +#define EFI_P_KEYBOARD_EC_LOCKED (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_P_KEYBOARD_EC_STUCK_KEY (EFI_SUBCLASS_SPECIFIC | 0x00000001) + +// +// Peripheral Class Mouse Subclass Error Code definitions. +// +#define EFI_P_MOUSE_EC_LOCKED (EFI_SUBCLASS_SPECIFIC | 0x00000000) + +// +// Peripheral Class Local Console Subclass Error Code definitions. +// +// +// Peripheral Class Remote Console Subclass Error Code definitions. +// +// +// Peripheral Class Serial Port Subclass Error Code definitions. +// +// +// Peripheral Class Parallel Port Subclass Error Code definitions. +// +// +// Peripheral Class Fixed Media Subclass Error Code definitions. +// +// +// Peripheral Class Removable Media Subclass Error Code definitions. +// +// +// Peripheral Class Audio Input Subclass Error Code definitions. +// +// +// Peripheral Class Audio Output Subclass Error Code definitions. +// +// +// Peripheral Class LCD Device Subclass Error Code definitions. +// +// +// Peripheral Class Network Subclass Error Code definitions. +// + +/////////////////////////////////////////////////////////////////////////////// +// Section 5 +/////////////////////////////////////////////////////////////////////////////// +// +// IO Bus Subclass definitions. +// Values of 13-127 are reserved for future use by this +// specification. +// Values of 128-255 are reserved for OEM use. +// +#define EFI_IO_BUS_UNSPECIFIED (EFI_IO_BUS | 0x00000000) +#define EFI_IO_BUS_PCI (EFI_IO_BUS | 0x00010000) +#define EFI_IO_BUS_USB (EFI_IO_BUS | 0x00020000) +#define EFI_IO_BUS_IBA (EFI_IO_BUS | 0x00030000) +#define EFI_IO_BUS_AGP (EFI_IO_BUS | 0x00040000) +#define EFI_IO_BUS_PC_CARD (EFI_IO_BUS | 0x00050000) +#define EFI_IO_BUS_LPC (EFI_IO_BUS | 0x00060000) +#define EFI_IO_BUS_SCSI (EFI_IO_BUS | 0x00070000) +#define EFI_IO_BUS_ATA_ATAPI (EFI_IO_BUS | 0x00080000) +#define EFI_IO_BUS_FC (EFI_IO_BUS | 0x00090000) +#define EFI_IO_BUS_IP_NETWORK (EFI_IO_BUS | 0x000A0000) +#define EFI_IO_BUS_SMBUS (EFI_IO_BUS | 0x000B0000) +#define EFI_IO_BUS_I2C (EFI_IO_BUS | 0x000C0000) + +// +// IO Bus Class Progress Code definitions. +// These are shared by all subclasses. +// +#define EFI_IOB_PC_INIT 0x00000000 +#define EFI_IOB_PC_RESET 0x00000001 +#define EFI_IOB_PC_DISABLE 0x00000002 +#define EFI_IOB_PC_DETECT 0x00000003 +#define EFI_IOB_PC_ENABLE 0x00000004 +#define EFI_IOB_PC_RECONFIG 0x00000005 +#define EFI_IOB_PC_HOTPLUG 0x00000006 + +// +// IO Bus Class Unspecified Subclass Progress Code definitions. +// +// +// IO Bus Class PCI Subclass Progress Code definitions. +// +#define EFI_IOB_PCI_PC_BUS_ENUM (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_IOB_PCI_PC_RES_ALLOC (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_IOB_PCI_PC_HPC_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000002) + +// +// IO Bus Class USB Subclass Progress Code definitions. +// +// +// IO Bus Class IBA Subclass Progress Code definitions. +// +// +// IO Bus Class AGP Subclass Progress Code definitions. +// +// +// IO Bus Class PC Card Subclass Progress Code definitions. +// +// +// IO Bus Class LPC Subclass Progress Code definitions. +// +// +// IO Bus Class SCSI Subclass Progress Code definitions. +// +// +// IO Bus Class ATA/ATAPI Subclass Progress Code definitions. +// +#define EFI_IOB_ATA_BUS_SMART_ENABLE (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_IOB_ATA_BUS_SMART_DISABLE (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_IOB_ATA_BUS_SMART_OVERTHRESHOLD (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_IOB_ATA_BUS_SMART_UNDERTHRESHOLD (EFI_SUBCLASS_SPECIFIC | 0x00000003) + +// +// IO Bus Class FC Subclass Progress Code definitions. +// +// +// IO Bus Class IP Network Subclass Progress Code definitions. +// +// +// IO Bus Class SMBUS Subclass Progress Code definitions. +// +// +// IO Bus Class I2C Subclass Progress Code definitions. +// +// +// IO Bus Class Error Code definitions. +// These are shared by all subclasses. +// +#define EFI_IOB_EC_NON_SPECIFIC 0x00000000 +#define EFI_IOB_EC_DISABLED 0x00000001 +#define EFI_IOB_EC_NOT_SUPPORTED 0x00000002 +#define EFI_IOB_EC_NOT_DETECTED 0x00000003 +#define EFI_IOB_EC_NOT_CONFIGURED 0x00000004 +#define EFI_IOB_EC_INTERFACE_ERROR 0x00000005 +#define EFI_IOB_EC_CONTROLLER_ERROR 0x00000006 +#define EFI_IOB_EC_READ_ERROR 0x00000007 +#define EFI_IOB_EC_WRITE_ERROR 0x00000008 +#define EFI_IOB_EC_RESOURCE_CONFLICT 0x00000009 + +// +// IO Bus Class Unspecified Subclass Error Code definitions. +// +// +// IO Bus Class PCI Subclass Error Code definitions. +// +#define EFI_IOB_PCI_EC_PERR (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_IOB_PCI_EC_SERR (EFI_SUBCLASS_SPECIFIC | 0x00000001) + +// +// IO Bus Class USB Subclass Error Code definitions. +// +// +// IO Bus Class IBA Subclass Error Code definitions. +// +// +// IO Bus Class AGP Subclass Error Code definitions. +// +// +// IO Bus Class PC Card Subclass Error Code definitions. +// +// +// IO Bus Class LPC Subclass Error Code definitions. +// +// +// IO Bus Class SCSI Subclass Error Code definitions. +// +// +// IO Bus Class ATA/ATAPI Subclass Error Code definitions. +// +#define EFI_IOB_ATA_BUS_SMART_NOTSUPPORTED (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_IOB_ATA_BUS_SMART_DISABLED (EFI_SUBCLASS_SPECIFIC | 0x00000001) + +// +// IO Bus Class FC Subclass Error Code definitions. +// +// +// IO Bus Class IP Network Subclass Error Code definitions. +// +// +// IO Bus Class SMBUS Subclass Error Code definitions. +// +// +// IO Bus Class I2C Subclass Error Code definitions. +// + +/////////////////////////////////////////////////////////////////////////////// +// Section 6 +/////////////////////////////////////////////////////////////////////////////// +// +// Software Subclass definitions. +// Values of 20-127 are reserved for future use by this +// specification. +// Values of 128-255 are reserved for OEM use. +// +#define EFI_SOFTWARE_UNSPECIFIED (EFI_SOFTWARE | 0x00000000) +#define EFI_SOFTWARE_SEC (EFI_SOFTWARE | 0x00010000) +#define EFI_SOFTWARE_PEI_CORE (EFI_SOFTWARE | 0x00020000) +#define EFI_SOFTWARE_PEI_MODULE (EFI_SOFTWARE | 0x00030000) +#define EFI_SOFTWARE_DXE_CORE (EFI_SOFTWARE | 0x00040000) +#define EFI_SOFTWARE_DXE_BS_DRIVER (EFI_SOFTWARE | 0x00050000) +#define EFI_SOFTWARE_DXE_RT_DRIVER (EFI_SOFTWARE | 0x00060000) +#define EFI_SOFTWARE_SMM_DRIVER (EFI_SOFTWARE | 0x00070000) +#define EFI_SOFTWARE_EFI_APPLICATION (EFI_SOFTWARE | 0x00080000) +#define EFI_SOFTWARE_EFI_OS_LOADER (EFI_SOFTWARE | 0x00090000) +#define EFI_SOFTWARE_RT (EFI_SOFTWARE | 0x000A0000) +#define EFI_SOFTWARE_AL (EFI_SOFTWARE | 0x000B0000) +#define EFI_SOFTWARE_EBC_EXCEPTION (EFI_SOFTWARE | 0x000C0000) +#define EFI_SOFTWARE_IA32_EXCEPTION (EFI_SOFTWARE | 0x000D0000) +#define EFI_SOFTWARE_IPF_EXCEPTION (EFI_SOFTWARE | 0x000E0000) +#define EFI_SOFTWARE_PEI_SERVICE (EFI_SOFTWARE | 0x000F0000) +#define EFI_SOFTWARE_EFI_BOOT_SERVICE (EFI_SOFTWARE | 0x00100000) +#define EFI_SOFTWARE_EFI_RUNTIME_SERVICE (EFI_SOFTWARE | 0x00110000) +#define EFI_SOFTWARE_EFI_DXE_SERVICE (EFI_SOFTWARE | 0x00120000) +#define EFI_SOFTWARE_X64_EXCEPTION (EFI_SOFTWARE | 0x00130000) + +// +// Software Class Progress Code definitions. +// These are shared by all subclasses. +// +#define EFI_SW_PC_INIT 0x00000000 +#define EFI_SW_PC_LOAD 0x00000001 +#define EFI_SW_PC_INIT_BEGIN 0x00000002 +#define EFI_SW_PC_INIT_END 0x00000003 +#define EFI_SW_PC_AUTHENTICATE_BEGIN 0x00000004 +#define EFI_SW_PC_AUTHENTICATE_END 0x00000005 +#define EFI_SW_PC_INPUT_WAIT 0x00000006 +#define EFI_SW_PC_USER_SETUP 0x00000007 + +// +// Software Class Unspecified Subclass Progress Code definitions. +// +// +// Software Class SEC Subclass Progress Code definitions. +// +#define EFI_SW_SEC_PC_ENTRY_POINT (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_SW_SEC_PC_HANDOFF_TO_NEXT (EFI_SUBCLASS_SPECIFIC | 0x00000001) + +// +// Software Class PEI Core Subclass Progress Code definitions. +// +#define EFI_SW_PEI_CORE_PC_ENTRY_POINT (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_SW_PEI_CORE_PC_HANDOFF_TO_NEXT (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_SW_PEI_CORE_PC_RETURN_TO_LAST (EFI_SUBCLASS_SPECIFIC | 0x00000002) + +// +// Software Class PEI Module Subclass Progress Code definitions. +// +#define EFI_SW_PEIM_PC_RECOVERY_BEGIN (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_SW_PEIM_PC_CAPSULE_LOAD (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_SW_PEIM_PC_CAPSULE_START (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_SW_PEIM_PC_RECOVERY_USER (EFI_SUBCLASS_SPECIFIC | 0x00000003) +#define EFI_SW_PEIM_PC_RECOVERY_AUTO (EFI_SUBCLASS_SPECIFIC | 0x00000004) + +// +// Software Class DXE Core Subclass Progress Code definitions. +// +#define EFI_SW_DXE_CORE_PC_ENTRY_POINT (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_SW_DXE_CORE_PC_HANDOFF_TO_NEXT (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_SW_DXE_CORE_PC_RETURN_TO_LAST (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_SW_DXE_CORE_PC_START_DRIVER (EFI_SUBCLASS_SPECIFIC | 0x00000003) + +// +// Software Class DXE BS Driver Subclass Progress Code definitions. +// +#define EFI_SW_DXE_BS_PC_LEGACY_OPROM_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_SW_DXE_BS_PC_READY_TO_BOOT_EVENT (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_SW_DXE_BS_PC_LEGACY_BOOT_EVENT (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_SW_DXE_BS_PC_EXIT_BOOT_SERVICES_EVENT (EFI_SUBCLASS_SPECIFIC | 0x00000003) +#define EFI_SW_DXE_BS_PC_VIRTUAL_ADDRESS_CHANGE_EVENT (EFI_SUBCLASS_SPECIFIC | 0x00000004) +#define EFI_SW_DXE_BS_PC_BEGIN_CONNECTING_DRIVERS (EFI_SUBCLASS_SPECIFIC | 0x00000005) +#define EFI_SW_DXE_BS_PC_VERIFYING_PASSWORD (EFI_SUBCLASS_SPECIFIC | 0x00000006) + +// +// Software Class DXE RT Driver Subclass Progress Code definitions. +// +#define EFI_SW_DXE_RT_PC_S0 (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_SW_DXE_RT_PC_S1 (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_SW_DXE_RT_PC_S2 (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_SW_DXE_RT_PC_S3 (EFI_SUBCLASS_SPECIFIC | 0x00000003) +#define EFI_SW_DXE_RT_PC_S4 (EFI_SUBCLASS_SPECIFIC | 0x00000004) +#define EFI_SW_DXE_RT_PC_S5 (EFI_SUBCLASS_SPECIFIC | 0x00000005) + +// +// Software Class SMM Driver Subclass Progress Code definitions. +// +// +// Software Class EFI Application Subclass Progress Code definitions. +// +// +// Software Class EFI OS Loader Subclass Progress Code definitions. +// +// +// Software Class EFI RT Subclass Progress Code definitions. +// +#define EFI_SW_RT_PC_ENTRY_POINT (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_SW_RT_PC_HANDOFF_TO_NEXT (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_SW_RT_PC_RETURN_TO_LAST (EFI_SUBCLASS_SPECIFIC | 0x00000002) + +// +// Software Class EFI AL Subclass Progress Code definitions. +// +#define EFI_SW_AL_PC_ENTRY_POINT (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_SW_AL_PC_RETURN_TO_LAST (EFI_SUBCLASS_SPECIFIC | 0x00000001) + +// +// Software Class EBC Exception Subclass Progress Code definitions. +// +// +// Software Class IA32 Exception Subclass Progress Code definitions. +// +// +// Software Class X64 Exception Subclass Progress Code definitions. +// +// +// Software Class IPF Exception Subclass Progress Code definitions. +// +// +// Software Class PEI Services Subclass Progress Code definitions. +// +#define EFI_SW_PS_PC_INSTALL_PPI (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_SW_PS_PC_REINSTALL_PPI (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_SW_PS_PC_LOCATE_PPI (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_SW_PS_PC_NOTIFY_PPI (EFI_SUBCLASS_SPECIFIC | 0x00000003) +#define EFI_SW_PS_PC_GET_BOOT_MODE (EFI_SUBCLASS_SPECIFIC | 0x00000004) +#define EFI_SW_PS_PC_SET_BOOT_MODE (EFI_SUBCLASS_SPECIFIC | 0x00000005) +#define EFI_SW_PS_PC_GET_HOB_LIST (EFI_SUBCLASS_SPECIFIC | 0x00000006) +#define EFI_SW_PS_PC_CREATE_HOB (EFI_SUBCLASS_SPECIFIC | 0x00000007) +#define EFI_SW_PS_PC_FFS_FIND_NEXT_VOLUME (EFI_SUBCLASS_SPECIFIC | 0x00000008) +#define EFI_SW_PS_PC_FFS_FIND_NEXT_FILE (EFI_SUBCLASS_SPECIFIC | 0x00000009) +#define EFI_SW_PS_PC_FFS_FIND_SECTION_DATA (EFI_SUBCLASS_SPECIFIC | 0x0000000A) +#define EFI_SW_PS_PC_INSTALL_PEI_MEMORY (EFI_SUBCLASS_SPECIFIC | 0x0000000B) +#define EFI_SW_PS_PC_ALLOCATE_PAGES (EFI_SUBCLASS_SPECIFIC | 0x0000000C) +#define EFI_SW_PS_PC_ALLOCATE_POOL (EFI_SUBCLASS_SPECIFIC | 0x0000000D) +#define EFI_SW_PS_PC_COPY_MEM (EFI_SUBCLASS_SPECIFIC | 0x0000000E) +#define EFI_SW_PS_PC_SET_MEM (EFI_SUBCLASS_SPECIFIC | 0x0000000F) + +// +// Software Class EFI Boot Services Subclass Progress Code definitions. +// +#define EFI_SW_BS_PC_RAISE_TPL (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_SW_BS_PC_RESTORE_TPL (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_SW_BS_PC_ALLOCATE_PAGES (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_SW_BS_PC_FREE_PAGES (EFI_SUBCLASS_SPECIFIC | 0x00000003) +#define EFI_SW_BS_PC_GET_MEMORY_MAP (EFI_SUBCLASS_SPECIFIC | 0x00000004) +#define EFI_SW_BS_PC_ALLOCATE_POOL (EFI_SUBCLASS_SPECIFIC | 0x00000005) +#define EFI_SW_BS_PC_FREE_POOL (EFI_SUBCLASS_SPECIFIC | 0x00000006) +#define EFI_SW_BS_PC_CREATE_EVENT (EFI_SUBCLASS_SPECIFIC | 0x00000007) +#define EFI_SW_BS_PC_SET_TIMER (EFI_SUBCLASS_SPECIFIC | 0x00000008) +#define EFI_SW_BS_PC_WAIT_FOR_EVENT (EFI_SUBCLASS_SPECIFIC | 0x00000009) +#define EFI_SW_BS_PC_SIGNAL_EVENT (EFI_SUBCLASS_SPECIFIC | 0x0000000A) +#define EFI_SW_BS_PC_CLOSE_EVENT (EFI_SUBCLASS_SPECIFIC | 0x0000000B) +#define EFI_SW_BS_PC_CHECK_EVENT (EFI_SUBCLASS_SPECIFIC | 0x0000000C) +#define EFI_SW_BS_PC_INSTALL_PROTOCOL_INTERFACE (EFI_SUBCLASS_SPECIFIC | 0x0000000D) +#define EFI_SW_BS_PC_REINSTALL_PROTOCOL_INTERFACE (EFI_SUBCLASS_SPECIFIC | 0x0000000E) +#define EFI_SW_BS_PC_UNINSTALL_PROTOCOL_INTERFACE (EFI_SUBCLASS_SPECIFIC | 0x0000000F) +#define EFI_SW_BS_PC_HANDLE_PROTOCOL (EFI_SUBCLASS_SPECIFIC | 0x00000010) +#define EFI_SW_BS_PC_PC_HANDLE_PROTOCOL (EFI_SUBCLASS_SPECIFIC | 0x00000011) +#define EFI_SW_BS_PC_REGISTER_PROTOCOL_NOTIFY (EFI_SUBCLASS_SPECIFIC | 0x00000012) +#define EFI_SW_BS_PC_LOCATE_HANDLE (EFI_SUBCLASS_SPECIFIC | 0x00000013) +#define EFI_SW_BS_PC_INSTALL_CONFIGURATION_TABLE (EFI_SUBCLASS_SPECIFIC | 0x00000014) +#define EFI_SW_BS_PC_LOAD_IMAGE (EFI_SUBCLASS_SPECIFIC | 0x00000015) +#define EFI_SW_BS_PC_START_IMAGE (EFI_SUBCLASS_SPECIFIC | 0x00000016) +#define EFI_SW_BS_PC_EXIT (EFI_SUBCLASS_SPECIFIC | 0x00000017) +#define EFI_SW_BS_PC_UNLOAD_IMAGE (EFI_SUBCLASS_SPECIFIC | 0x00000018) +#define EFI_SW_BS_PC_EXIT_BOOT_SERVICES (EFI_SUBCLASS_SPECIFIC | 0x00000019) +#define EFI_SW_BS_PC_GET_NEXT_MONOTONIC_COUNT (EFI_SUBCLASS_SPECIFIC | 0x0000001A) +#define EFI_SW_BS_PC_STALL (EFI_SUBCLASS_SPECIFIC | 0x0000001B) +#define EFI_SW_BS_PC_SET_WATCHDOG_TIMER (EFI_SUBCLASS_SPECIFIC | 0x0000001C) +#define EFI_SW_BS_PC_CONNECT_CONTROLLER (EFI_SUBCLASS_SPECIFIC | 0x0000001D) +#define EFI_SW_BS_PC_DISCONNECT_CONTROLLER (EFI_SUBCLASS_SPECIFIC | 0x0000001E) +#define EFI_SW_BS_PC_OPEN_PROTOCOL (EFI_SUBCLASS_SPECIFIC | 0x0000001F) +#define EFI_SW_BS_PC_CLOSE_PROTOCOL (EFI_SUBCLASS_SPECIFIC | 0x00000020) +#define EFI_SW_BS_PC_OPEN_PROTOCOL_INFORMATION (EFI_SUBCLASS_SPECIFIC | 0x00000021) +#define EFI_SW_BS_PC_PROTOCOLS_PER_HANDLE (EFI_SUBCLASS_SPECIFIC | 0x00000022) +#define EFI_SW_BS_PC_LOCATE_HANDLE_BUFFER (EFI_SUBCLASS_SPECIFIC | 0x00000023) +#define EFI_SW_BS_PC_LOCATE_PROTOCOL (EFI_SUBCLASS_SPECIFIC | 0x00000024) +#define EFI_SW_BS_PC_INSTALL_MULTIPLE_INTERFACES (EFI_SUBCLASS_SPECIFIC | 0x00000025) +#define EFI_SW_BS_PC_UNINSTALL_MULTIPLE_INTERFACES (EFI_SUBCLASS_SPECIFIC | 0x00000026) +#define EFI_SW_BS_PC_CALCULATE_CRC_32 (EFI_SUBCLASS_SPECIFIC | 0x00000027) +#define EFI_SW_BS_PC_COPY_MEM (EFI_SUBCLASS_SPECIFIC | 0x00000028) +#define EFI_SW_BS_PC_SET_MEM (EFI_SUBCLASS_SPECIFIC | 0x00000029) + +// +// Software Class EFI Runtime Services Subclass Progress Code definitions. +// +#define EFI_SW_RS_PC_GET_TIME (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_SW_RS_PC_SET_TIME (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_SW_RS_PC_GET_WAKEUP_TIME (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_SW_RS_PC_SET_WAKEUP_TIME (EFI_SUBCLASS_SPECIFIC | 0x00000003) +#define EFI_SW_RS_PC_SET_VIRTUAL_ADDRESS_MAP (EFI_SUBCLASS_SPECIFIC | 0x00000004) +#define EFI_SW_RS_PC_CONVERT_POINTER (EFI_SUBCLASS_SPECIFIC | 0x00000005) +#define EFI_SW_RS_PC_GET_VARIABLE (EFI_SUBCLASS_SPECIFIC | 0x00000006) +#define EFI_SW_RS_PC_GET_NEXT_VARIABLE_NAME (EFI_SUBCLASS_SPECIFIC | 0x00000007) +#define EFI_SW_RS_PC_SET_VARIABLE (EFI_SUBCLASS_SPECIFIC | 0x00000008) +#define EFI_SW_RS_PC_GET_NEXT_HIGH_MONOTONIC_COUNT (EFI_SUBCLASS_SPECIFIC | 0x00000009) +#define EFI_SW_RS_PC_RESET_SYSTEM (EFI_SUBCLASS_SPECIFIC | 0x0000000A) + +// +// Software Class EFI DXE Services Subclass Progress Code definitions +// +#define EFI_SW_DS_PC_ADD_MEMORY_SPACE (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_SW_DS_PC_ALLOCATE_MEMORY_SPACE (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_SW_DS_PC_FREE_MEMORY_SPACE (EFI_SUBCLASS_SPECIFIC | 0x00000002) +#define EFI_SW_DS_PC_REMOVE_MEMORY_SPACE (EFI_SUBCLASS_SPECIFIC | 0x00000003) +#define EFI_SW_DS_PC_GET_MEMORY_SPACE_DESCRIPTOR (EFI_SUBCLASS_SPECIFIC | 0x00000004) +#define EFI_SW_DS_PC_SET_MEMORY_SPACE_ATTRIBUTES (EFI_SUBCLASS_SPECIFIC | 0x00000005) +#define EFI_SW_DS_PC_GET_MEMORY_SPACE_MAP (EFI_SUBCLASS_SPECIFIC | 0x00000006) +#define EFI_SW_DS_PC_ADD_IO_SPACE (EFI_SUBCLASS_SPECIFIC | 0x00000007) +#define EFI_SW_DS_PC_ALLOCATE_IO_SPACE (EFI_SUBCLASS_SPECIFIC | 0x00000008) +#define EFI_SW_DS_PC_FREE_IO_SPACE (EFI_SUBCLASS_SPECIFIC | 0x00000009) +#define EFI_SW_DS_PC_REMOVE_IO_SPACE (EFI_SUBCLASS_SPECIFIC | 0x0000000A) +#define EFI_SW_DS_PC_GET_IO_SPACE_DESCRIPTOR (EFI_SUBCLASS_SPECIFIC | 0x0000000B) +#define EFI_SW_DS_PC_GET_IO_SPACE_MAP (EFI_SUBCLASS_SPECIFIC | 0x0000000C) +#define EFI_SW_DS_PC_DISPATCH (EFI_SUBCLASS_SPECIFIC | 0x0000000D) +#define EFI_SW_DS_PC_SCHEDULE (EFI_SUBCLASS_SPECIFIC | 0x0000000E) +#define EFI_SW_DS_PC_TRUST (EFI_SUBCLASS_SPECIFIC | 0x0000000F) +#define EFI_SW_DS_PC_PROCESS_FIRMWARE_VOLUME (EFI_SUBCLASS_SPECIFIC | 0x00000010) + +// +// Software Class Error Code definitions. +// These are shared by all subclasses. +// +#define EFI_SW_EC_NON_SPECIFIC 0x00000000 +#define EFI_SW_EC_LOAD_ERROR 0x00000001 +#define EFI_SW_EC_INVALID_PARAMETER 0x00000002 +#define EFI_SW_EC_UNSUPPORTED 0x00000003 +#define EFI_SW_EC_INVALID_BUFFER 0x00000004 +#define EFI_SW_EC_OUT_OF_RESOURCES 0x00000005 +#define EFI_SW_EC_ABORTED 0x00000006 +#define EFI_SW_EC_ILLEGAL_SOFTWARE_STATE 0x00000007 +#define EFI_SW_EC_ILLEGAL_HARDWARE_STATE 0x00000008 +#define EFI_SW_EC_START_ERROR 0x00000009 +#define EFI_SW_EC_BAD_DATE_TIME 0x0000000A +#define EFI_SW_EC_CFG_INVALID 0x0000000B +#define EFI_SW_EC_CFG_CLR_REQUEST 0x0000000C +#define EFI_SW_EC_CFG_DEFAULT 0x0000000D +#define EFI_SW_EC_PWD_INVALID 0x0000000E +#define EFI_SW_EC_PWD_CLR_REQUEST 0x0000000F +#define EFI_SW_EC_PWD_CLEARED 0x00000010 +#define EFI_SW_EC_EVENT_LOG_FULL 0x00000011 + +// +// Software Class Unspecified Subclass Error Code definitions. +// +// +// Software Class SEC Subclass Error Code definitions. +// +// +// Software Class PEI Core Subclass Error Code definitions. +// +#define EFI_SW_PEI_CORE_EC_DXE_CORRUPT (EFI_SUBCLASS_SPECIFIC | 0x00000000) + +// +// Software Class PEI Module Subclass Error Code definitions. +// +#define EFI_SW_PEIM_EC_NO_RECOVERY_CAPSULE (EFI_SUBCLASS_SPECIFIC | 0x00000000) +#define EFI_SW_PEIM_EC_INVALID_CAPSULE_DESCRIPTOR (EFI_SUBCLASS_SPECIFIC | 0x00000001) + +// +// Software Class DXE Core Subclass Error Code definitions. +// +#define EFI_SW_CSM_LEGACY_ROM_INIT (EFI_SUBCLASS_SPECIFIC | 0x00000000) +// +// Software Class DXE Boot Service Driver Subclass Error Code definitions. +// +#define EFI_SW_DXE_BS_EC_LEGACY_OPROM_NO_SPACE (EFI_SUBCLASS_SPECIFIC | 0x00000000) + +// +// Software Class DXE Runtime Service Driver Subclass Error Code definitions. +// +// +// Software Class SMM Driver Subclass Error Code definitions. +// +// +// Software Class EFI Application Subclass Error Code definitions. +// +// +// Software Class EFI OS Loader Subclass Error Code definitions. +// +// +// Software Class EFI RT Subclass Error Code definitions. +// +// +// Software Class EFI AL Subclass Error Code definitions. +// +// +// Software Class EBC Exception Subclass Error Code definitions. +// These exceptions are derived from the debug protocol definitions in the EFI +// specification. +// +#define EFI_SW_EC_EBC_UNDEFINED (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_UNDEFINED) +#define EFI_SW_EC_EBC_DIVIDE_ERROR (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_DIVIDE_ERROR) +#define EFI_SW_EC_EBC_DEBUG (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_DEBUG) +#define EFI_SW_EC_EBC_BREAKPOINT (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_BREAKPOINT) +#define EFI_SW_EC_EBC_OVERFLOW (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_OVERFLOW) +#define EFI_SW_EC_EBC_INVALID_OPCODE (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_INVALID_OPCODE) +#define EFI_SW_EC_EBC_STACK_FAULT (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_STACK_FAULT) +#define EFI_SW_EC_EBC_ALIGNMENT_CHECK (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_ALIGNMENT_CHECK) +#define EFI_SW_EC_EBC_INSTRUCTION_ENCODING (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_INSTRUCTION_ENCODING) +#define EFI_SW_EC_EBC_BAD_BREAK (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_BAD_BREAK) +#define EFI_SW_EC_EBC_STEP (EFI_SUBCLASS_SPECIFIC | EXCEPT_EBC_STEP) + +// +// Software Class IA32 Exception Subclass Error Code definitions. +// These exceptions are derived from the debug protocol definitions in the EFI +// specification. +// +#define EFI_SW_EC_IA32_DIVIDE_ERROR (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_DIVIDE_ERROR) +#define EFI_SW_EC_IA32_DEBUG (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_DEBUG) +#define EFI_SW_EC_IA32_NMI (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_NMI) +#define EFI_SW_EC_IA32_BREAKPOINT (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_BREAKPOINT) +#define EFI_SW_EC_IA32_OVERFLOW (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_OVERFLOW) +#define EFI_SW_EC_IA32_BOUND (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_BOUND) +#define EFI_SW_EC_IA32_INVALID_OPCODE (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_INVALID_OPCODE) +#define EFI_SW_EC_IA32_DOUBLE_FAULT (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_DOUBLE_FAULT) +#define EFI_SW_EC_IA32_INVALID_TSS (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_INVALID_TSS) +#define EFI_SW_EC_IA32_SEG_NOT_PRESENT (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_SEG_NOT_PRESENT) +#define EFI_SW_EC_IA32_STACK_FAULT (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_STACK_FAULT) +#define EFI_SW_EC_IA32_GP_FAULT (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_GP_FAULT) +#define EFI_SW_EC_IA32_PAGE_FAULT (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_PAGE_FAULT) +#define EFI_SW_EC_IA32_FP_ERROR (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_FP_ERROR) +#define EFI_SW_EC_IA32_ALIGNMENT_CHECK (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_ALIGNMENT_CHECK) +#define EFI_SW_EC_IA32_MACHINE_CHECK (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_MACHINE_CHECK) +#define EFI_SW_EC_IA32_SIMD (EFI_SUBCLASS_SPECIFIC | EXCEPT_IA32_SIMD) + +// +// Software Class X64 Exception Subclass Error Code definitions. +// These exceptions are derived from the debug protocol definitions in the EFI +// specification. +// +#define EFI_SW_EC_X64_DIVIDE_ERROR (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_DIVIDE_ERROR) +#define EFI_SW_EC_X64_DEBUG (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_DEBUG) +#define EFI_SW_EC_X64_NMI (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_NMI) +#define EFI_SW_EC_X64_BREAKPOINT (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_BREAKPOINT) +#define EFI_SW_EC_X64_OVERFLOW (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_OVERFLOW) +#define EFI_SW_EC_X64_BOUND (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_BOUND) +#define EFI_SW_EC_X64_INVALID_OPCODE (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_INVALID_OPCODE) +#define EFI_SW_EC_X64_DOUBLE_FAULT (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_DOUBLE_FAULT) +#define EFI_SW_EC_X64_INVALID_TSS (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_INVALID_TSS) +#define EFI_SW_EC_X64_SEG_NOT_PRESENT (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_SEG_NOT_PRESENT) +#define EFI_SW_EC_X64_STACK_FAULT (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_STACK_FAULT) +#define EFI_SW_EC_X64_GP_FAULT (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_GP_FAULT) +#define EFI_SW_EC_X64_PAGE_FAULT (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_PAGE_FAULT) +#define EFI_SW_EC_X64_FP_ERROR (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_FP_ERROR) +#define EFI_SW_EC_X64_ALIGNMENT_CHECK (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_ALIGNMENT_CHECK) +#define EFI_SW_EC_X64_MACHINE_CHECK (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_MACHINE_CHECK) +#define EFI_SW_EC_X64_SIMD (EFI_SUBCLASS_SPECIFIC | EXCEPT_X64_SIMD) + +// +// Software Class IPF Exception Subclass Error Code definitions. +// These exceptions are derived from the debug protocol definitions in the EFI +// specification. +// +#define EFI_SW_EC_IPF_ALT_DTLB (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_ALT_DTLB) +#define EFI_SW_EC_IPF_DNESTED_TLB (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_DNESTED_TLB) +#define EFI_SW_EC_IPF_BREAKPOINT (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_BREAKPOINT) +#define EFI_SW_EC_IPF_EXTERNAL_INTERRUPT (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_EXTERNAL_INTERRUPT) +#define EFI_SW_EC_IPF_GEN_EXCEPT (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_GEN_EXCEPT) +#define EFI_SW_EC_IPF_NAT_CONSUMPTION (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_NAT_CONSUMPTION) +#define EFI_SW_EC_IPF_DEBUG_EXCEPT (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_DEBUG_EXCEPT) +#define EFI_SW_EC_IPF_UNALIGNED_ACCESS (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_UNALIGNED_ACCESS) +#define EFI_SW_EC_IPF_FP_FAULT (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_FP_FAULT) +#define EFI_SW_EC_IPF_FP_TRAP (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_FP_TRAP) +#define EFI_SW_EC_IPF_TAKEN_BRANCH (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_TAKEN_BRANCH) +#define EFI_SW_EC_IPF_SINGLE_STEP (EFI_SUBCLASS_SPECIFIC | EXCEPT_IPF_SINGLE_STEP) + +// +// Software Class PEI Service Subclass Error Code definitions. +// +// +// Software Class EFI Boot Service Subclass Error Code definitions. +// +// +// Software Class EFI Runtime Service Subclass Error Code definitions. +// +// +// Software Class EFI DXE Service Subclass Error Code definitions. +// + +/////////////////////////////////////////////////////////////////////////////// +// Section 7 +/////////////////////////////////////////////////////////////////////////////// +// +// Debug Code definitions for all classes and subclass +// Only one debug code is defined at this point and should +// be used for anything that gets sent to debug stream. +// +#define EFI_DC_UNSPECIFIED 0x0 + +// +// Progress code for S3 suspend start and S3 suspend end is not defined, +// the following are the implementation specific definition. +// +#define PROGRESS_CODE_S3_SUSPEND_START (EFI_SOFTWARE_SMM_DRIVER | (EFI_OEM_SPECIFIC | 0x00000000)) +#define PROGRESS_CODE_S3_SUSPEND_END (EFI_SOFTWARE_SMM_DRIVER | (EFI_OEM_SPECIFIC | 0x00000001)) + +#endif diff --git a/EDK/Foundation/Framework/Include/EfiVariable.h b/EDK/Foundation/Framework/Include/EfiVariable.h new file mode 100644 index 0000000..6879f60 --- /dev/null +++ b/EDK/Foundation/Framework/Include/EfiVariable.h @@ -0,0 +1,34 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + EfiVariable.h + +Abstract: + + + +--*/ + +#ifndef _EFI_VARIABLE_DEFINITION_H_ +#define _EFI_VARIABLE_DEFINITION_H_ + +// +// Variable attributes +// +#define EFI_VARIABLE_NON_VOLATILE 0x00000001 +#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 +#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004 +#define EFI_VARIABLE_READ_ONLY 0x00000008 + + +#endif diff --git a/EDK/Foundation/Framework/Include/PeiApi.h b/EDK/Foundation/Framework/Include/PeiApi.h new file mode 100644 index 0000000..f21b6da --- /dev/null +++ b/EDK/Foundation/Framework/Include/PeiApi.h @@ -0,0 +1,632 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + PeiApi.h + +Abstract: + + Tiano PEI intrinsic definitions. This includes all Pei Services APIs. + + Peims are passed in a pointer to a pointer to the PEI Services table. + The PEI Services table contains pointers to the PEI services exported + by the PEI Core. + +--*/ + +#ifndef _PEI_API_H_ +#define _PEI_API_H_ + +#include "PeiHob.h" +#include "EfiFirmwareFileSystem.h" +#include "EfiFirmwareVolumeHeader.h" +#include EFI_PPI_DEFINITION (FirmwareVolumeInfo) //;;## ...AMI_OVERRIDE... Support PI1.x +#include EFI_PPI_DEFINITION (FirmwareVolume) //;;## ...AMI_OVERRIDE... Support PI1.x +#include EFI_PPI_DEFINITION (Decompress) //;;## ...AMI_OVERRIDE... Support PI1.x + + +// +// Declare forward referenced data structures +// +EFI_FORWARD_DECLARATION (EFI_PEI_NOTIFY_DESCRIPTOR); +EFI_FORWARD_DECLARATION (EFI_PEI_SERVICES); + +#include EFI_PPI_DEFINITION (CpuIo) +#include EFI_PPI_DEFINITION (PciCfg) +#include EFI_PPI_DEFINITION (PciCfg2) +#include EFI_PPI_DEFINITION (EcpPciCfg) + +// +// PEI Specification Revision information +// +//;;## ...AMI_OVERRIDE... Support PI1.x +#if (PI_SPECIFICATION_VERSION < 0x00010000) +#define PEI_SPECIFICATION_MAJOR_REVISION 0 +#define PEI_SPECIFICATION_MINOR_REVISION 91 +#else +#define PEI_SPECIFICATION_MAJOR_REVISION 1 +#define PEI_SPECIFICATION_MINOR_REVISION 00 +#endif + +typedef +EFI_STATUS +(EFIAPI *EFI_PEIM_ENTRY_POINT)(IN EFI_FFS_FILE_HEADER * FfsHeader, + IN EFI_PEI_SERVICES **PeiServices + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEIM_NOTIFY_ENTRY_POINT) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR * NotifyDescriptor, + IN VOID *Ppi + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_VERIFICATION) ( + IN UINTN SectionAddress + ); + +// +// PEI Ppi Services List Descriptors +// +#define EFI_PEI_PPI_DESCRIPTOR_PIC 0x00000001 +#define EFI_PEI_PPI_DESCRIPTOR_PPI 0x00000010 +#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK 0x00000020 +#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_DISPATCH 0x00000040 +#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_TYPES 0x00000060 +#define EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST 0x80000000 + +typedef struct { + UINTN Flags; + EFI_GUID *Guid; + VOID *Ppi; +} EFI_PEI_PPI_DESCRIPTOR; + +typedef struct _EFI_PEI_NOTIFY_DESCRIPTOR { + UINTN Flags; + EFI_GUID *Guid; + EFI_PEIM_NOTIFY_ENTRY_POINT Notify; +} EFI_PEI_NOTIFY_DESCRIPTOR; + +//;;## ...AMI_OVERRIDE... Support PI1.x +#if (PI_SPECIFICATION_VERSION < 0x00010000) +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_INSTALL_PPI) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_PPI_DESCRIPTOR * PpiList + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_REINSTALL_PPI) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_PPI_DESCRIPTOR * OldPpi, + IN EFI_PEI_PPI_DESCRIPTOR * NewPpi + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_LOCATE_PPI) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_GUID * Guid, + IN UINTN Instance, + IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor, + IN OUT VOID **Ppi + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_NOTIFY_PPI) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR * NotifyList + ); + +// +// EFI PEI Boot Mode Services +// +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_GET_BOOT_MODE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN OUT EFI_BOOT_MODE * BootMode + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_SET_BOOT_MODE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_BOOT_MODE BootMode + ); + +// +// PEI HOB Services +// +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_GET_HOB_LIST) ( + IN EFI_PEI_SERVICES **PeiServices, + IN OUT VOID **HobList + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_CREATE_HOB) ( + IN EFI_PEI_SERVICES **PeiServices, + IN UINT16 Type, + IN UINT16 Length, + IN OUT VOID **Hob + ); + +// +// FFS Fw Volume support functions +// +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME) ( + IN EFI_PEI_SERVICES **PeiServices, + IN UINTN Instance, + IN OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_FV_FILETYPE SearchType, + IN EFI_FIRMWARE_VOLUME_HEADER * FwVolHeader, + IN OUT EFI_FFS_FILE_HEADER **FileHeader + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_SECTION_TYPE SectionType, + IN EFI_FFS_FILE_HEADER * FfsFileHeader, + IN OUT VOID **SectionData + ); + +// +// Memory Services +// +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_INSTALL_PEI_MEMORY) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PHYSICAL_ADDRESS MemoryBegin, + IN UINT64 MemoryLength + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_ALLOCATE_PAGES) ( + + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN Pages, + IN OUT EFI_PHYSICAL_ADDRESS * Memory + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_ALLOCATE_POOL) ( + IN EFI_PEI_SERVICES **PeiServices, + IN UINTN Size, + OUT VOID **Buffer + ); + +typedef +VOID +(EFIAPI *EFI_PEI_COPY_MEM) ( + IN VOID *Destination, + IN VOID *Source, + IN UINTN Length + ); + +typedef +VOID +(EFIAPI *EFI_PEI_SET_MEM) ( + IN VOID *Buffer, + IN UINTN Size, + IN UINT8 Value + ); + +// +// Status Code +// +// +// Definition of Status Code extended data header +// +// HeaderSize The size of the architecture. This is specified to enable +// the future expansion +// +// Size The size of the data in bytes. This does not include the size +// of the header structure. +// +// Type A GUID defining the type of the data +// +// +typedef +EFI_STATUS +(EFIAPI *EFI_REPORT_STATUS_CODE) ( + IN EFI_STATUS_CODE_TYPE Type, + IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, + IN EFI_GUID * CallerId OPTIONAL, + IN EFI_STATUS_CODE_DATA * Data OPTIONAL + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_REPORT_STATUS_CODE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_STATUS_CODE_TYPE Type, + IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, + IN EFI_GUID * CallerId OPTIONAL, + IN EFI_STATUS_CODE_DATA * Data OPTIONAL + ); + +// +// PEI Reset +// +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_RESET_SYSTEM) ( + IN EFI_PEI_SERVICES **PeiServices + ); + + + +#else + +// +// PEI PPI Services +// +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_INSTALL_PPI) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PPI_DESCRIPTOR * PpiList + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_REINSTALL_PPI) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PPI_DESCRIPTOR * OldPpi, + IN CONST EFI_PEI_PPI_DESCRIPTOR * NewPpi + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_LOCATE_PPI) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_GUID * Guid, + IN UINTN Instance, + IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor OPTIONAL, + IN OUT VOID **Ppi + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_NOTIFY_PPI) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_NOTIFY_DESCRIPTOR * NotifyList + ); + +// +// PEI Boot Mode Services +// +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_GET_BOOT_MODE) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN OUT EFI_BOOT_MODE * BootMode + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_SET_BOOT_MODE) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_BOOT_MODE BootMode + ); + +// +// PEI HOB Services +// +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_GET_HOB_LIST) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN OUT VOID **HobList + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_CREATE_HOB) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINT16 Type, + IN UINT16 Length, + IN OUT VOID **Hob + ); + + + + // + // PEI Firmware Volume Services + // +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME2) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINTN Instance, + IN OUT EFI_PEI_FV_HANDLE *VolumeHandle + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE2) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_FV_FILETYPE SearchType, + IN CONST EFI_PEI_FV_HANDLE FvHandle, + IN OUT EFI_PEI_FILE_HANDLE *FileHandle + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA2) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_SECTION_TYPE SectionType, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT VOID **SectionData + ); + + + // + // PEI Memory Services + // +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_INSTALL_PEI_MEMORY) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_PHYSICAL_ADDRESS MemoryBegin, + IN UINT64 MemoryLength + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_ALLOCATE_PAGES) ( + + IN CONST EFI_PEI_SERVICES **PeiServices, + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN Pages, + IN OUT EFI_PHYSICAL_ADDRESS * Memory + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_ALLOCATE_POOL) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN UINTN Size, + OUT VOID **Buffer + ); + +typedef +VOID +(EFIAPI *EFI_PEI_COPY_MEM) ( + IN VOID *Destination, + IN VOID *Source, + IN UINTN Length + ); + +typedef +VOID +(EFIAPI *EFI_PEI_SET_MEM) ( + IN VOID *Buffer, + IN UINTN Size, + IN UINT8 Value + ); + + // + // New interfaceas added by the PI 1.0 + // +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FFS_FIND_BY_NAME) ( + IN CONST EFI_GUID *FileName, + IN EFI_PEI_FV_HANDLE VolumeHandle, + OUT EFI_PEI_FILE_HANDLE *FileHandle + ); + + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FFS_GET_FILE_INFO) ( + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT EFI_FV_FILE_INFO *FileInfo + ); + + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FFS_GET_VOLUME_INFO) ( + IN EFI_PEI_FV_HANDLE VolumeHandle, + OUT EFI_FV_INFO *VolumeInfo + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_REGISTER_FOR_SHADOW) ( + IN EFI_PEI_FILE_HANDLE FileHandle + ); + +// +// PEI Status Code Service +// +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_REPORT_STATUS_CODE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_STATUS_CODE_TYPE Type, + IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, + IN EFI_GUID *CallerId OPTIONAL, + IN EFI_STATUS_CODE_DATA *Data OPTIONAL + ); + +// +// PEI Reset Service +// +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_RESET_SYSTEM) ( + IN EFI_PEI_SERVICES **PeiServices + ); + +#endif + + +// +// EFI PEI Services Table +// +#define PEI_SERVICES_SIGNATURE 0x5652455320494550 +#define PEI_SERVICES_REVISION ((PEI_SPECIFICATION_MAJOR_REVISION << 16) | (PEI_SPECIFICATION_MINOR_REVISION)) +typedef PEI_CPU_IO_PPI EFI_PEI_CPU_IO_PPI; //;;## ...AMI_OVERRIDE... Support PI1.x + +typedef struct _EFI_PEI_SERVICES { + EFI_TABLE_HEADER Hdr; + + // + // PPI Functions + // + EFI_PEI_INSTALL_PPI InstallPpi; + EFI_PEI_REINSTALL_PPI ReInstallPpi; + EFI_PEI_LOCATE_PPI LocatePpi; + EFI_PEI_NOTIFY_PPI NotifyPpi; + + // + // Boot Mode Functions + // + EFI_PEI_GET_BOOT_MODE GetBootMode; + EFI_PEI_SET_BOOT_MODE SetBootMode; + + // + // HOB Functions + // + EFI_PEI_GET_HOB_LIST GetHobList; + EFI_PEI_CREATE_HOB CreateHob; + + // + // Filesystem Functions + // +//;;## ...AMI_OVERRIDE... Support PI1.x +#if (PI_SPECIFICATION_VERSION < 0x00010000) + EFI_PEI_FFS_FIND_NEXT_VOLUME FfsFindNextVolume; + EFI_PEI_FFS_FIND_NEXT_FILE FfsFindNextFile; + EFI_PEI_FFS_FIND_SECTION_DATA FfsFindSectionData; +#else + EFI_PEI_FFS_FIND_NEXT_VOLUME2 FfsFindNextVolume; + EFI_PEI_FFS_FIND_NEXT_FILE2 FfsFindNextFile; + EFI_PEI_FFS_FIND_SECTION_DATA2 FfsFindSectionData; +#endif + // + // Memory Functions + // + EFI_PEI_INSTALL_PEI_MEMORY InstallPeiMemory; + EFI_PEI_ALLOCATE_PAGES AllocatePages; + EFI_PEI_ALLOCATE_POOL AllocatePool; + EFI_PEI_COPY_MEM CopyMem; + EFI_PEI_SET_MEM SetMem; + + // + // Status Code + // + EFI_PEI_REPORT_STATUS_CODE PeiReportStatusCode; + + // + // Reset + // + EFI_PEI_RESET_SYSTEM PeiResetSystem; + + // + // Pointer to PPI interface + // +//;;## ...AMI_OVERRIDE... Support PI1.x start +#if (PI_SPECIFICATION_VERSION < 0x00010000) + + PEI_CPU_IO_PPI *CpuIo; +#if defined (SUPPORT_DEPRECATED_PCI_CFG_PPI) + PEI_PCI_CFG_PPI *PciCfg; +#else + ECP_PEI_PCI_CFG_PPI *PciCfg; +#endif +#else + EFI_PEI_CPU_IO_PPI *CpuIo; +#if defined (SUPPORT_DEPRECATED_PCI_CFG_PPI) + EFI_PEI_PCI_CFG2_PPI *PciCfg; +#else + ECP_PEI_PCI_CFG_PPI *PciCfg; +#endif + // + // New interfaceas added by the PI 1.0 + // + EFI_PEI_FFS_FIND_BY_NAME FfsFindFileByName; + EFI_PEI_FFS_GET_FILE_INFO FfsGetFileInfo; + EFI_PEI_FFS_GET_VOLUME_INFO FfsGetVolumeInfo; + EFI_PEI_REGISTER_FOR_SHADOW RegisterForShadow; +#endif +//;;## ...AMI_OVERRIDE... Support PI1.x end +} EFI_PEI_SERVICES; + +//;;## ...AMI_OVERRIDE... Support PI1.x +#if (PI_SPECIFICATION_VERSION < 0x00010000) + +typedef struct { + UINTN BootFirmwareVolume; + UINTN SizeOfCacheAsRam; + EFI_PEI_PPI_DESCRIPTOR *DispatchTable; +} EFI_PEI_STARTUP_DESCRIPTOR; + +typedef +EFI_STATUS +(EFIAPI *PEI_MAIN_ENTRY_POINT) ( + IN EFI_PEI_STARTUP_DESCRIPTOR *PeiStartupDescriptor + ); + +#else + +typedef struct _EFI_SEC_PEI_HAND_OFF{ + UINT16 DataSize; + VOID *BootFirmwareVolumeBase; + UINTN BootFirmwareVolumeSize; + VOID *TemporaryRamBase; + UINTN TemporaryRamSize; + VOID *PeiTemporaryRamBase; + UINTN PeiTemporaryRamSize; + VOID *StackBase; + UINTN StackSize; +}EFI_SEC_PEI_HAND_OFF; + +typedef +EFI_STATUS +(EFIAPI *PEI_MAIN_ENTRY_POINT) ( + IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, + IN CONST EFI_PEI_PPI_DESCRIPTOR *PpList + ); + +#endif + +#endif diff --git a/EDK/Foundation/Framework/Include/PeiHob.h b/EDK/Foundation/Framework/Include/PeiHob.h new file mode 100644 index 0000000..a11709b --- /dev/null +++ b/EDK/Foundation/Framework/Include/PeiHob.h @@ -0,0 +1,253 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + PeiHob.h + +Abstract: + + PEI Hand Off Block (HOB) definition. + + The HOB is a memory data structure used to hand-off system information from + PEI to DXE (the next phase). + +--*/ + +#ifndef _PEI_HOB_H_ +#define _PEI_HOB_H_ + +#include "BootMode.h" + +// +// Every Hob must start with this data structure. +// +typedef struct { + UINT16 HobType; + UINT16 HobLength; + UINT32 Reserved; +} EFI_HOB_GENERIC_HEADER; + +// +// End of HOB List HOB +// +#define EFI_HOB_TYPE_END_OF_HOB_LIST 0xffff + +// +// Handoff Information Table HOB +// +#define EFI_HOB_TYPE_HANDOFF 0x0001 + +#define EFI_HOB_HANDOFF_TABLE_VERSION 0x0009 + +typedef UINT32 EFI_BOOT_MODE; + +typedef struct { + 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; + +// +// Memory Descriptor HOB +// +#define EFI_HOB_TYPE_MEMORY_ALLOCATION 0x0002 + +typedef struct { + EFI_GUID Name; + EFI_PHYSICAL_ADDRESS MemoryBaseAddress; + UINT64 MemoryLength; + EFI_MEMORY_TYPE MemoryType; + UINT8 Reserved[4]; +} EFI_HOB_MEMORY_ALLOCATION_HEADER; + +typedef struct { + EFI_HOB_GENERIC_HEADER Header; + EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor; + // + // Additional data pertaining to the "Name" Guid memory + // may go here. + // +} EFI_HOB_MEMORY_ALLOCATION; + +typedef struct { + EFI_HOB_GENERIC_HEADER Header; + EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor; +} EFI_HOB_MEMORY_ALLOCATION_BSP_STORE; + +typedef struct { + EFI_HOB_GENERIC_HEADER Header; + EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor; +} EFI_HOB_MEMORY_ALLOCATION_STACK; + +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_TYPE_RESOURCE_DESCRIPTOR 0x0003 + +typedef UINT32 EFI_RESOURCE_TYPE; + +#define EFI_RESOURCE_SYSTEM_MEMORY 0 +#define EFI_RESOURCE_MEMORY_MAPPED_IO 1 +#define EFI_RESOURCE_IO 2 +#define EFI_RESOURCE_FIRMWARE_DEVICE 3 +#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT 4 +#define EFI_RESOURCE_MEMORY_RESERVED 5 +#define EFI_RESOURCE_IO_RESERVED 6 +#define EFI_RESOURCE_MAX_MEMORY_TYPE 7 + +typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE; + +#define EFI_RESOURCE_ATTRIBUTE_PRESENT 0x00000001 +#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED 0x00000002 +#define EFI_RESOURCE_ATTRIBUTE_TESTED 0x00000004 +#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 + +typedef struct { + 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; + +// +// GUID Extension HOB +// The HobLength is variable as it includes the GUID specific data. +// +#define EFI_HOB_TYPE_GUID_EXTENSION 0x0004 + +typedef struct { + EFI_HOB_GENERIC_HEADER Header; + EFI_GUID Name; + + // + // Guid specific data goes here + // +} EFI_HOB_GUID_TYPE; + +// +// Firmware Volume HOB +// +#define EFI_HOB_TYPE_FV 0x0005 + +typedef struct { + EFI_HOB_GENERIC_HEADER Header; + EFI_PHYSICAL_ADDRESS BaseAddress; + UINT64 Length; +} EFI_HOB_FIRMWARE_VOLUME; + +// +// CPU HOB +// +#define EFI_HOB_TYPE_CPU 0x0006 + +typedef struct { + EFI_HOB_GENERIC_HEADER Header; + UINT8 SizeOfMemorySpace; + UINT8 SizeOfIoSpace; + UINT8 Reserved[6]; +} EFI_HOB_CPU; + +// +// PEI Core Memory Pool HOB +// The HobLength is variable as the HOB contains pool allocations by +// the PeiServices AllocatePool function +// +#define EFI_HOB_TYPE_PEI_MEMORY_POOL 0x0007 + +typedef struct { + EFI_HOB_GENERIC_HEADER Header; +} EFI_HOB_MEMORY_POOL; + +// +// Capsule volume HOB -- identical to a firmware volume +// +#define EFI_HOB_TYPE_CV 0x0008 + +typedef struct { + EFI_HOB_GENERIC_HEADER Header; + EFI_PHYSICAL_ADDRESS BaseAddress; + UINT64 Length; +} EFI_HOB_CAPSULE_VOLUME; + +//;;## ...AMI_OVERRIDE... Support PI1.x +#if (PI_SPECIFICATION_VERSION >= 0x00010000) + +#define EFI_HOB_TYPE_FV2 0x0009 + +typedef struct { + EFI_HOB_GENERIC_HEADER Header; + EFI_PHYSICAL_ADDRESS BaseAddress; + UINT64 Length; + EFI_GUID FvName; + EFI_GUID FileName; +} EFI_HOB_FIRMWARE_VOLUME2; + +#define EFI_HOB_TYPE_LOAD_PEIM 0x000A + +#endif + +#define EFI_HOB_TYPE_UNUSED 0xFFFE + +// +// 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; +//;;## ...AMI_OVERRIDE... Support PI1.x +#if (PI_SPECIFICATION_VERSION >= 0x00010000) + EFI_HOB_FIRMWARE_VOLUME2 *FirmwareVolume2; +#endif + EFI_HOB_CPU *Cpu; + EFI_HOB_MEMORY_POOL *Pool; + EFI_HOB_CAPSULE_VOLUME *CapsuleVolume; + UINT8 *Raw; +} EFI_PEI_HOB_POINTERS; + +#define GET_HOB_TYPE(Hob) ((Hob).Header->HobType) +#define GET_HOB_LENGTH(Hob) ((Hob).Header->HobLength) +#define GET_NEXT_HOB(Hob) ((Hob).Raw + GET_HOB_LENGTH (Hob)) +#define END_OF_HOB_LIST(Hob) (GET_HOB_TYPE (Hob) == EFI_HOB_TYPE_END_OF_HOB_LIST) + +#endif diff --git a/EDK/Foundation/Framework/Include/TianoSpecApi.h b/EDK/Foundation/Framework/Include/TianoSpecApi.h new file mode 100644 index 0000000..2279eda --- /dev/null +++ b/EDK/Foundation/Framework/Include/TianoSpecApi.h @@ -0,0 +1,590 @@ +/*++ + +Copyright (c) 2004 - 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. + +Module Name: + + TianoSpecApi.h + +Abstract: + + Tiano intrinsic definitions in Tiano spec. + + +--*/ + +#ifndef _TIANO_SPEC_API_H_ +#define _TIANO_SPEC_API_H_ + + +#if ((TIANO_RELEASE_VERSION != 0) && (EFI_SPECIFICATION_VERSION < 0x00020000)) +// +// Prior to UEFI 2.0 Tiano extended these enums. This was replaced by +// CreateEventEx() Event Groups in UEFI 2.0 +// +#define EFI_EVENT_NOTIFY_SIGNAL_ALL 0x00000400 + +#define EFI_EVENT_SIGNAL_READY_TO_BOOT 0x00000203 +#define EFI_EVENT_SIGNAL_LEGACY_BOOT 0x00000204 +#endif + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_ADD_MEMORY_SPACE) ( + IN EFI_GCD_MEMORY_TYPE GcdMemoryType, + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Capabilities + ) +/*++ + +Routine Description: + + Adds reserved memory, system memory, or memory-mapped I/O resources to the +global coherency domain of the processor. + +Arguments: + + GcdMemoryType - Memory type of the memory space. + + BaseAddress - Base address of the memory space. + + Length - Length of the memory space. + + Capabilities - alterable attributes of the memory space. + +Returns: + + EFI_SUCCESS - Merged this memory space into GCD map. + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_ALLOCATE_MEMORY_SPACE) ( + IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType, + IN EFI_GCD_MEMORY_TYPE GcdMemoryType, + IN UINTN Alignment, + IN UINT64 Length, + IN OUT EFI_PHYSICAL_ADDRESS * BaseAddress, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE DeviceHandle OPTIONAL + ) +/*++ + +Routine Description: + + Allocates nonexistent memory, reserved memory, system memory, or memorymapped +I/O resources from the global coherency domain of the processor. + +Arguments: + + GcdAllocateType - The type of allocate operation + + GcdMemoryType - The desired memory type + + Alignment - Align with 2^Alignment + + Length - Length to allocate + + BaseAddress - Base address to allocate + + Imagehandle - The image handle consume the allocated space. + + DeviceHandle - The device handle consume the allocated space. + +Returns: + + EFI_INVALID_PARAMETER - Invalid parameter. + + EFI_NOT_FOUND - No descriptor contains the desired space. + + EFI_SUCCESS - Memory space successfully allocated. + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_FREE_MEMORY_SPACE) ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ) +/*++ + +Routine Description:Routine Description: + + Frees nonexistent memory, reserved memory, system memory, or memory-mapped +I/O resources from the global coherency domain of the processor. + +Arguments: + + BaseAddress - Base address of the segment. + + Length - Length of the segment. + +Returns: + + EFI_SUCCESS - Space successfully freed. + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_REMOVE_MEMORY_SPACE) ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ) +/*++ + +Routine Description:Routine Description: + + Removes reserved memory, system memory, or memory-mapped I/O resources from +the global coherency domain of the processor. + +Arguments: + + BaseAddress - Base address of the memory space. + + Length - Length of the memory space. + +Returns: + + EFI_SUCCESS - Successfully remove a segment of memory space. + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_GET_MEMORY_SPACE_DESCRIPTOR) ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR * Descriptor + ) +/*++ + +Routine Description: + + Retrieves the descriptor for a memory region containing a specified address. + +Arguments: + + BaseAddress - Specified start address + + Descriptor - Specified length + +Returns: + + EFI_INVALID_PARAMETER - Invalid parameter + + EFI_SUCCESS - Successfully get memory space descriptor. + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_SET_MEMORY_SPACE_ATTRIBUTES) ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Attributes + ) +/*++ + +Routine Description: + + Modifies the attributes for a memory region in the global coherency domain of the +processor. + +Arguments: + + BaseAddress - Specified start address + + Length - Specified length + + Attributes - Specified attributes + +Returns: + + EFI_SUCCESS - Successfully set attribute of a segment of memory space. + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_GET_MEMORY_SPACE_MAP) ( + OUT UINTN *NumberOfDescriptors, + OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR **MemorySpaceMap + ) +/*++ + +Routine Description: + + Returns a map of the memory resources in the global coherency domain of the +processor. + +Arguments: + + NumberOfDescriptors - Number of descriptors. + + MemorySpaceMap - Descriptor array + +Returns: + + EFI_INVALID_PARAMETER - Invalid parameter + + EFI_OUT_OF_RESOURCES - No enough buffer to allocate + + EFI_SUCCESS - Successfully get memory space map. + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_ADD_IO_SPACE) ( + IN EFI_GCD_IO_TYPE GcdIoType, + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ) +/*++ + +Routine Description: + + Adds reserved I/O or I/O resources to the global coherency domain of the processor. + +Arguments: + + GcdIoType - IO type of the segment. + + BaseAddress - Base address of the segment. + + Length - Length of the segment. + +Returns: + + EFI_SUCCESS - Merged this segment into GCD map. + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_ALLOCATE_IO_SPACE) ( + IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType, + IN EFI_GCD_IO_TYPE GcdIoType, + IN UINTN Alignment, + IN UINT64 Length, + IN OUT EFI_PHYSICAL_ADDRESS * BaseAddress, + IN EFI_HANDLE ImageHandle, + IN EFI_HANDLE DeviceHandle OPTIONAL + ) +/*++ + +Routine Description: + + Allocates nonexistent I/O, reserved I/O, or I/O resources from the global coherency +domain of the processor. + +Arguments: + + GcdAllocateType - The type of allocate operation + + GcdIoType - The desired IO type + + Alignment - Align with 2^Alignment + + Length - Length to allocate + + BaseAddress - Base address to allocate + + Imagehandle - The image handle consume the allocated space. + + DeviceHandle - The device handle consume the allocated space. + +Returns: + + EFI_INVALID_PARAMETER - Invalid parameter. + + EFI_NOT_FOUND - No descriptor contains the desired space. + + EFI_SUCCESS - IO space successfully allocated. + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_FREE_IO_SPACE) ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ) +/*++ + +Routine Description:Routine Description: + + Frees nonexistent I/O, reserved I/O, or I/O resources from the global coherency +domain of the processor. + +Arguments: + + BaseAddress - Base address of the segment. + + Length - Length of the segment. + +Returns: + + EFI_SUCCESS - Space successfully freed. + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_REMOVE_IO_SPACE) ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length + ) +/*++ + +Routine Description:Routine Description: + + Removes reserved I/O or I/O resources from the global coherency domain of the +processor. + +Arguments: + + BaseAddress - Base address of the segment. + + Length - Length of the segment. + +Returns: + + EFI_SUCCESS - Successfully removed a segment of IO space. + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_GET_IO_SPACE_DESCRIPTOR) ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + OUT EFI_GCD_IO_SPACE_DESCRIPTOR * Descriptor + ) +/*++ + +Routine Description: + + Retrieves the descriptor for an I/O region containing a specified address. + +Arguments: + + BaseAddress - Specified start address + + Descriptor - Specified length + +Returns: + + EFI_INVALID_PARAMETER - Descriptor is NULL. + + EFI_SUCCESS - Successfully get the IO space descriptor. + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_GET_IO_SPACE_MAP) ( + OUT UINTN *NumberOfDescriptors, + OUT EFI_GCD_IO_SPACE_DESCRIPTOR **IoSpaceMap + ) +/*++ + +Routine Description: + + Returns a map of the I/O resources in the global coherency domain of the processor. + +Arguments: + + NumberOfDescriptors - Number of descriptors. + + MemorySpaceMap - Descriptor array + +Returns: + + EFI_INVALID_PARAMETER - Invalid parameter + + EFI_OUT_OF_RESOURCES - No enough buffer to allocate + + EFI_SUCCESS - Successfully get IO space map. + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_DISPATCH) (VOID) +/*++ + +Routine Description: + + Loads and executed DXE drivers from firmware volumes. + +Arguments: + + None + +Returns: + + Status code + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_SCHEDULE) ( + IN EFI_HANDLE FirmwareVolumeHandle, + IN EFI_GUID * DriverName + ) +/*++ + +Routine Description: + + Clears the Schedule on Request (SOR) flag for a component that is stored in a firmware volume. + +Arguments: + + FirmwareVolumeHandle - The handle of the firmware volume that contains the file specified by FileName. + + DriverName - A pointer to the name of the file in a firmware volume. + +Returns: + + Status code + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_TRUST) ( + IN EFI_HANDLE FirmwareVolumeHandle, + IN EFI_GUID * DriverName + ) +/*++ + +Routine Description: + + Promotes a file stored in a firmware volume from the untrusted to the trusted state. + +Arguments: + + FirmwareVolumeHandle - The handle of the firmware volume that contains the file specified by FileName. + + DriverName - A pointer to the name of the file in a firmware volume. + +Returns: + + Status code + +--*/ +; + +typedef +EFI_BOOTSERVICE +EFI_STATUS +(EFIAPI *EFI_PROCESS_FIRMWARE_VOLUME) ( + IN VOID *FvHeader, + IN UINTN Size, + OUT EFI_HANDLE * FirmwareVolumeHandle + ) +/*++ + +Routine Description: + + Creates a firmware volume handle for a firmware volume that is present in system memory. + +Arguments: + + FirmwareVolumeHeader - A pointer to the header of the firmware volume. + Size - The size, in bytes, of the firmware volume. + FirmwareVolumeHandle - On output, a pointer to the created handle. + +Returns: + + Status code + +--*/ +; + +// +// DXE Services Table +// +#define EFI_DXE_SERVICES_SIGNATURE 0x565245535f455844 +//;;## ...AMI_OVERRIDE... Support PI1.x +#if (PI_SPECIFICATION_VERSION < 0x00010000) +#define EFI_DXE_SERVICES_REVISION ((0 << 16) | (90)) +#else +#define EFI_DXE_SERVICES_REVISION ((1 << 16) | (00)) +#endif + +typedef struct { + EFI_TABLE_HEADER Hdr; + + // + // Global Coherency Domain Services + // + EFI_ADD_MEMORY_SPACE AddMemorySpace; + EFI_ALLOCATE_MEMORY_SPACE AllocateMemorySpace; + EFI_FREE_MEMORY_SPACE FreeMemorySpace; + EFI_REMOVE_MEMORY_SPACE RemoveMemorySpace; + EFI_GET_MEMORY_SPACE_DESCRIPTOR GetMemorySpaceDescriptor; + EFI_SET_MEMORY_SPACE_ATTRIBUTES SetMemorySpaceAttributes; + EFI_GET_MEMORY_SPACE_MAP GetMemorySpaceMap; + EFI_ADD_IO_SPACE AddIoSpace; + EFI_ALLOCATE_IO_SPACE AllocateIoSpace; + EFI_FREE_IO_SPACE FreeIoSpace; + EFI_REMOVE_IO_SPACE RemoveIoSpace; + EFI_GET_IO_SPACE_DESCRIPTOR GetIoSpaceDescriptor; + EFI_GET_IO_SPACE_MAP GetIoSpaceMap; + + // + // Dispatcher Services + // + EFI_DISPATCH Dispatch; + EFI_SCHEDULE Schedule; + EFI_TRUST Trust; + // + // Service to process a single firmware volume found in a capsule + // + EFI_PROCESS_FIRMWARE_VOLUME ProcessFirmwareVolume; +} EFI_DXE_SERVICES; + +#endif diff --git a/EDK/Foundation/Framework/Include/TianoSpecDevicePath.h b/EDK/Foundation/Framework/Include/TianoSpecDevicePath.h new file mode 100644 index 0000000..efe7eaf --- /dev/null +++ b/EDK/Foundation/Framework/Include/TianoSpecDevicePath.h @@ -0,0 +1,32 @@ +/*++ + +Copyright (c) 2004 - 2008, 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. + +Module Name: + + TianoSpecDevicePath.h + +Abstract: + + Tiano Device Path definitions in Tiano Spec. + +--*/ + +#ifndef _TIANO_SPEC_DEVICE_PATH_H +#define _TIANO_SPEC_DEVICE_PATH_H + +#include "EfiDevicePath.h" + +// +// MEDIA_FW_VOL_FILEPATH_DEVICE_PATH and MEDIA_FW_VOL_DEVICE_PATH are defined in +// EfiDevicePath.h +// + +#endif diff --git a/EDK/Foundation/Framework/Include/TianoSpecError.h b/EDK/Foundation/Framework/Include/TianoSpecError.h new file mode 100644 index 0000000..815cdf4 --- /dev/null +++ b/EDK/Foundation/Framework/Include/TianoSpecError.h @@ -0,0 +1,41 @@ +/*++ + +Copyright (c) 2004 - 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. + +Module Name: + + TianoSpecError.h + +Abstract: + + Tiano error codes defined in Tiano spec. + +--*/ + +#ifndef _TIANO_SPEC_ERROR_H_ +#define _TIANO_SPEC_ERROR_H_ + +#include "EfiBind.h" +#define TIANO_ERROR(a) (MAX_2_BITS | (a)) + +// +// Tiano added a couple of return types. These are owned by UEFI specification +// and Tiano can not use them. Thus for UEFI 2.0/R8.6 support we moved the values +// to a UEFI OEM extension range to conform to UEFI specification. +// +#if (EFI_SPECIFICATION_VERSION < 0x00020000) + #define EFI_NOT_AVAILABLE_YET EFIERR (28) + #define EFI_UNLOAD_IMAGE EFIERR (29) +#else + #define EFI_NOT_AVAILABLE_YET TIANO_ERROR (0) + #define EFI_UNLOAD_IMAGE TIANO_ERROR (1) +#endif + +#endif diff --git a/EDK/Foundation/Framework/Include/TianoSpecTypes.h b/EDK/Foundation/Framework/Include/TianoSpecTypes.h new file mode 100644 index 0000000..e7ff834 --- /dev/null +++ b/EDK/Foundation/Framework/Include/TianoSpecTypes.h @@ -0,0 +1,75 @@ +/*++ + +Copyright (c) 2004 - 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. + +Module Name: + + TianoSpecTypes.h + +Abstract: + + Tiano types defined in Tiano spec. + +--*/ + +#ifndef _TIANO_SPEC_TYPES_H_ +#define _TIANO_SPEC_TYPES_H_ + +// +// Modifier for EFI DXE Services +// +#define EFI_DXESERVICE + +// +// Global Coherencey Domain types +// +typedef enum { + EfiGcdMemoryTypeNonExistent, + EfiGcdMemoryTypeReserved, + EfiGcdMemoryTypeSystemMemory, + EfiGcdMemoryTypeMemoryMappedIo, + EfiGcdMemoryTypeMaximum +} EFI_GCD_MEMORY_TYPE; + +typedef enum { + EfiGcdIoTypeNonExistent, + EfiGcdIoTypeReserved, + EfiGcdIoTypeIo, + EfiGcdIoTypeMaximum +} EFI_GCD_IO_TYPE; + +typedef enum { + EfiGcdAllocateAnySearchBottomUp, + EfiGcdAllocateMaxAddressSearchBottomUp, + EfiGcdAllocateAddress, + EfiGcdAllocateAnySearchTopDown, + EfiGcdAllocateMaxAddressSearchTopDown, + EfiGcdMaxAllocateType +} EFI_GCD_ALLOCATE_TYPE; + +typedef struct { + EFI_PHYSICAL_ADDRESS BaseAddress; + UINT64 Length; + UINT64 Capabilities; + UINT64 Attributes; + EFI_GCD_MEMORY_TYPE GcdMemoryType; + EFI_HANDLE ImageHandle; + EFI_HANDLE DeviceHandle; +} EFI_GCD_MEMORY_SPACE_DESCRIPTOR; + +typedef struct { + EFI_PHYSICAL_ADDRESS BaseAddress; + UINT64 Length; + EFI_GCD_IO_TYPE GcdIoType; + EFI_HANDLE ImageHandle; + EFI_HANDLE DeviceHandle; +} EFI_GCD_IO_SPACE_DESCRIPTOR; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/BlockIo/BlockIo.c b/EDK/Foundation/Framework/Ppi/BlockIo/BlockIo.c new file mode 100644 index 0000000..b8b0953 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/BlockIo/BlockIo.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + BlockIo.c + +Abstract: + + BlockIo PPI GUID as defined in EFI 2.0 + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (BlockIo) + +EFI_GUID gPeiBlockIoPpiGuid = PEI_BLOCK_IO_PPI_GUID; + +EFI_GUID_STRING(&gPeiBlockIoPpiGuid, "BlockIo", "PEI Block I/O PPI"); diff --git a/EDK/Foundation/Framework/Ppi/BlockIo/BlockIo.h b/EDK/Foundation/Framework/Ppi/BlockIo/BlockIo.h new file mode 100644 index 0000000..c518b37 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/BlockIo/BlockIo.h @@ -0,0 +1,88 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + BlockIo.h + +Abstract: + + BlockIo PPI as defined in EFI 2.0 + + Used to access block-oriented storage devices + +--*/ + +#ifndef _PEI_BLOCK_IO_H_ +#define _PEI_BLOCK_IO_H_ + +#define PEI_BLOCK_IO_PPI_GUID \ + { \ + 0x695d8aa1, 0x42ee, 0x4c46, 0x80, 0x5c, 0x6e, 0xa6, 0xbc, 0xe7, 0x99, 0xe3 \ + } + +EFI_FORWARD_DECLARATION (PEI_RECOVERY_BLOCK_IO_INTERFACE); + +typedef UINT64 PEI_LBA; + +typedef enum { + LegacyFloppy = 0, + IdeCDROM = 1, + IdeLS120 = 2, + UsbMassStorage= 3, + MaxDeviceType +} PEI_BLOCK_DEVICE_TYPE; + +typedef struct { + PEI_BLOCK_DEVICE_TYPE DeviceType; + BOOLEAN MediaPresent; + UINTN LastBlock; + UINTN BlockSize; +} PEI_BLOCK_IO_MEDIA; + +typedef +EFI_STATUS +(EFIAPI *PEI_GET_NUMBER_BLOCK_DEVICES) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_RECOVERY_BLOCK_IO_INTERFACE * This, + OUT UINTN *NumberBlockDevices + ); + +typedef +EFI_STATUS +(EFIAPI *PEI_GET_DEVICE_MEDIA_INFORMATION) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_RECOVERY_BLOCK_IO_INTERFACE * This, + IN UINTN DeviceIndex, + OUT PEI_BLOCK_IO_MEDIA * MediaInfo + ); + +typedef +EFI_STATUS +(EFIAPI *PEI_READ_BLOCKS) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_RECOVERY_BLOCK_IO_INTERFACE * This, + IN UINTN DeviceIndex, + IN PEI_LBA StartLBA, + IN UINTN BufferSize, + OUT VOID *Buffer + ); + +typedef struct _PEI_RECOVERY_BLOCK_IO_INTERFACE { + PEI_GET_NUMBER_BLOCK_DEVICES GetNumberOfBlockDevices; + PEI_GET_DEVICE_MEDIA_INFORMATION GetBlockDeviceMediaInfo; + PEI_READ_BLOCKS ReadBlocks; +} PEI_RECOVERY_BLOCK_IO_INTERFACE; + +extern EFI_GUID gPeiBlockIoPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/BootInRecoveryMode/BootInRecoveryMode.c b/EDK/Foundation/Framework/Ppi/BootInRecoveryMode/BootInRecoveryMode.c new file mode 100644 index 0000000..e5840a8 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/BootInRecoveryMode/BootInRecoveryMode.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + BootInRecoveryMode.c + +Abstract: + + Boot Mode PPI GUID as defined in PEI EAS + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (BootInRecoveryMode) + +EFI_GUID gPeiBootInRecoveryModePpiGuid = PEI_BOOT_IN_RECOVERY_MODE_PEIM_PPI; + +EFI_GUID_STRING(&gPeiMasterBootModePpiGuid, "BootMode", "Master Boot Mode PPI"); diff --git a/EDK/Foundation/Framework/Ppi/BootInRecoveryMode/BootInRecoveryMode.h b/EDK/Foundation/Framework/Ppi/BootInRecoveryMode/BootInRecoveryMode.h new file mode 100644 index 0000000..15ca5ca --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/BootInRecoveryMode/BootInRecoveryMode.h @@ -0,0 +1,34 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + BootInRecoveryMode.h + +Abstract: + + Boot Mode PPI as defined in Tiano + +--*/ + +#ifndef _PEI_BOOT_IN_RECOVERY_MODE_PPI_H +#define _PEI_BOOT_IN_RECOVERY_MODE_PPI_H + +#define PEI_BOOT_IN_RECOVERY_MODE_PEIM_PPI \ + { \ + 0x17ee496a, 0xd8e4, 0x4b9a, 0x94, 0xd1, 0xce, 0x82, 0x72, 0x30, 0x8, 0x50 \ + } + +EFI_FORWARD_DECLARATION (PEI_BOOT_IN_RECOVERY_MODE_PPI); + +extern EFI_GUID gPeiBootInRecoveryModePpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/BootMode/BootMode.c b/EDK/Foundation/Framework/Ppi/BootMode/BootMode.c new file mode 100644 index 0000000..f88b757 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/BootMode/BootMode.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + BootMode.c + +Abstract: + + Boot Mode PPI GUID as defined in PEI EAS + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (BootMode) + +EFI_GUID gPeiMasterBootModePpiGuid = PEI_MASTER_BOOT_MODE_PEIM_PPI; + +EFI_GUID_STRING(&gPeiMasterBootModePpiGuid, "BootMode", "Master Boot Mode PPI"); diff --git a/EDK/Foundation/Framework/Ppi/BootMode/BootMode.h b/EDK/Foundation/Framework/Ppi/BootMode/BootMode.h new file mode 100644 index 0000000..552ed23 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/BootMode/BootMode.h @@ -0,0 +1,34 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + BootMode.h + +Abstract: + + Boot Mode PPI as defined in Tiano + +--*/ + +#ifndef _PEI_MASTER_BOOT_MODE_PPI_H +#define _PEI_MASTER_BOOT_MODE_PPI_H + +#define PEI_MASTER_BOOT_MODE_PEIM_PPI \ + { \ + 0x7408d748, 0xfc8c, 0x4ee6, 0x92, 0x88, 0xc4, 0xbe, 0xc0, 0x92, 0xa4, 0x10 \ + } + +EFI_FORWARD_DECLARATION (PEI_MASTER_BOOT_MODE_PPI); + +extern EFI_GUID gPeiMasterBootModePpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/BootScriptExecuter/BootScriptExecuter.c b/EDK/Foundation/Framework/Ppi/BootScriptExecuter/BootScriptExecuter.c new file mode 100644 index 0000000..bcb7d48 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/BootScriptExecuter/BootScriptExecuter.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2001 - 2002, 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. + +Module Name: + + BootScriptExecuter.c + +Abstract: + + Boot Script Executer PPI GUID as defined in EFI 2.0 + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (BootScriptExecuter) + +EFI_GUID gPeiBootScriptExecuterPpiGuid = PEI_BOOT_SCRIPT_EXECUTER_PPI_GUID; + +EFI_GUID_STRING(&gPeiBootScriptExecuterPpiGuid, "BootScriptExecuter", "Boot Script Executer PPI"); diff --git a/EDK/Foundation/Framework/Ppi/BootScriptExecuter/BootScriptExecuter.h b/EDK/Foundation/Framework/Ppi/BootScriptExecuter/BootScriptExecuter.h new file mode 100644 index 0000000..72540f0 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/BootScriptExecuter/BootScriptExecuter.h @@ -0,0 +1,50 @@ +/*++ + +Copyright (c) 2001 - 2002, 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. + +Module Name: + + BootScriptExecuter.h + +Abstract: + + Boot Script Executer PPI as defined in EFI 2.0 + +--*/ + +#ifndef _PEI_BOOT_SCRIPT_EXECUTER_PPI_H +#define _PEI_BOOT_SCRIPT_EXECUTER_PPI_H + +#define PEI_BOOT_SCRIPT_EXECUTER_PPI_GUID \ + { \ + 0xabd42895, 0x78cf, 0x4872, 0x84, 0x44, 0x1b, 0x5c, 0x18, 0x0b, 0xfb, 0xff \ + } + +EFI_FORWARD_DECLARATION (PEI_BOOT_SCRIPT_EXECUTER_PPI); + +#define PEI_BOOT_SCRIPT_EXECUTER_PPI_REVISION 0x00000001 + +typedef +EFI_STATUS +(EFIAPI *PEI_BOOT_SCRIPT_EXECUTE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_BOOT_SCRIPT_EXECUTER_PPI * This, + IN EFI_PHYSICAL_ADDRESS Address, + IN EFI_GUID * FvFile OPTIONAL + ); + +typedef struct _PEI_BOOT_SCRIPT_EXECUTER_PPI { + UINT64 Revision; + PEI_BOOT_SCRIPT_EXECUTE Execute; +} PEI_BOOT_SCRIPT_EXECUTER_PPI; + +extern EFI_GUID gPeiBootScriptExecuterPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/CpuIo/CpuIo.c b/EDK/Foundation/Framework/Ppi/CpuIo/CpuIo.c new file mode 100644 index 0000000..10daaf3 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/CpuIo/CpuIo.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + CpuIO.c + +Abstract: + + CPU IO PPI GUID as defined in Tiano + + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (CpuIo) + +EFI_GUID gPeiCpuIoPpiInServiceTableGuid = PEI_CPU_IO_PPI_GUID; + +EFI_GUID_STRING(&gPeiCpuIoPpiInServiceTableGuid, "CPU IO", "CPU IO PPI"); diff --git a/EDK/Foundation/Framework/Ppi/CpuIo/CpuIo.h b/EDK/Foundation/Framework/Ppi/CpuIo/CpuIo.h new file mode 100644 index 0000000..b99fca9 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/CpuIo/CpuIo.h @@ -0,0 +1,250 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + CpuIo.h + +Abstract: + + CPU IO PPI defined in Tiano + CPU IO PPI abstracts CPU IO access + + +--*/ + +#ifndef _PEI_CPUIO_PPI_H_ +#define _PEI_CPUIO_PPI_H_ + +#define PEI_CPU_IO_PPI_GUID \ + { \ + 0xe6af1f7b, 0xfc3f, 0x46da, 0xa8, 0x28, 0xa3, 0xb4, 0x57, 0xa4, 0x42, 0x82 \ + } + +EFI_FORWARD_DECLARATION (PEI_CPU_IO_PPI); + +// +// ******************************************************* +// PEI_CPU_IO_PPI_WIDTH +// ******************************************************* +// +typedef enum { + PeiCpuIoWidthUint8, + PeiCpuIoWidthUint16, + PeiCpuIoWidthUint32, + PeiCpuIoWidthUint64, + PeiCpuIoWidthFifoUint8, + PeiCpuIoWidthFifoUint16, + PeiCpuIoWidthFifoUint32, + PeiCpuIoWidthFifoUint64, + PeiCpuIoWidthFillUint8, + PeiCpuIoWidthFillUint16, + PeiCpuIoWidthFillUint32, + PeiCpuIoWidthFillUint64, + PeiCpuIoWidthMaximum +} PEI_CPU_IO_PPI_WIDTH; + +// +// ******************************************************* +// PEI_CPU_IO_PPI_IO_MEM +// ******************************************************* +// +typedef +EFI_STATUS +(EFIAPI *PEI_CPU_IO_PPI_IO_MEM) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN PEI_CPU_IO_PPI_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer + ); + +// +// ******************************************************* +// PEI_CPU_IO_PPI_ACCESS +// ******************************************************* +// +typedef struct { + PEI_CPU_IO_PPI_IO_MEM Read; + PEI_CPU_IO_PPI_IO_MEM Write; +} PEI_CPU_IO_PPI_ACCESS; + +// +// ******************************************************* +// Base IO Class Functions +// ******************************************************* +// +typedef +UINT8 +(EFIAPI *PEI_CPU_IO_PPI_IO_READ8) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address + ); + +typedef +UINT16 +(EFIAPI *PEI_CPU_IO_PPI_IO_READ16) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address + ); + +typedef +UINT32 +(EFIAPI *PEI_CPU_IO_PPI_IO_READ32) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address + ); + +typedef +UINT64 +(EFIAPI *PEI_CPU_IO_PPI_IO_READ64) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address + ); + +typedef +VOID +(EFIAPI *PEI_CPU_IO_PPI_IO_WRITE8) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address, + IN UINT8 Data + ); + +typedef +VOID +(EFIAPI *PEI_CPU_IO_PPI_IO_WRITE16) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address, + IN UINT16 Data + ); + +typedef +VOID +(EFIAPI *PEI_CPU_IO_PPI_IO_WRITE32) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address, + IN UINT32 Data + ); + +typedef +VOID +(EFIAPI *PEI_CPU_IO_PPI_IO_WRITE64) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address, + IN UINT64 Data + ); + +typedef +UINT8 +(EFIAPI *PEI_CPU_IO_PPI_MEM_READ8) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address + ); + +typedef +UINT16 +(EFIAPI *PEI_CPU_IO_PPI_MEM_READ16) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address + ); + +typedef +UINT32 +(EFIAPI *PEI_CPU_IO_PPI_MEM_READ32) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address + ); + +typedef +UINT64 +(EFIAPI *PEI_CPU_IO_PPI_MEM_READ64) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address + ); + +typedef +VOID +(EFIAPI *PEI_CPU_IO_PPI_MEM_WRITE8) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address, + IN UINT8 Data + ); + +typedef +VOID +(EFIAPI *PEI_CPU_IO_PPI_MEM_WRITE16) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address, + IN UINT16 Data + ); + +typedef +VOID +(EFIAPI *PEI_CPU_IO_PPI_MEM_WRITE32) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address, + IN UINT32 Data + ); + +typedef +VOID +(EFIAPI *PEI_CPU_IO_PPI_MEM_WRITE64) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_CPU_IO_PPI * This, + IN UINT64 Address, + IN UINT64 Data + ); + +// +// ******************************************************* +// PEI_CPU_IO_PPI +// ******************************************************* +// +typedef struct _PEI_CPU_IO_PPI { + PEI_CPU_IO_PPI_ACCESS Mem; + PEI_CPU_IO_PPI_ACCESS Io; + PEI_CPU_IO_PPI_IO_READ8 IoRead8; + PEI_CPU_IO_PPI_IO_READ16 IoRead16; + PEI_CPU_IO_PPI_IO_READ32 IoRead32; + PEI_CPU_IO_PPI_IO_READ64 IoRead64; + PEI_CPU_IO_PPI_IO_WRITE8 IoWrite8; + PEI_CPU_IO_PPI_IO_WRITE16 IoWrite16; + PEI_CPU_IO_PPI_IO_WRITE32 IoWrite32; + PEI_CPU_IO_PPI_IO_WRITE64 IoWrite64; + PEI_CPU_IO_PPI_MEM_READ8 MemRead8; + PEI_CPU_IO_PPI_MEM_READ16 MemRead16; + PEI_CPU_IO_PPI_MEM_READ32 MemRead32; + PEI_CPU_IO_PPI_MEM_READ64 MemRead64; + PEI_CPU_IO_PPI_MEM_WRITE8 MemWrite8; + PEI_CPU_IO_PPI_MEM_WRITE16 MemWrite16; + PEI_CPU_IO_PPI_MEM_WRITE32 MemWrite32; + PEI_CPU_IO_PPI_MEM_WRITE64 MemWrite64; +} PEI_CPU_IO_PPI; + +extern EFI_GUID gPeiCpuIoPpiInServiceTableGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/Decompress/Decompress.c b/EDK/Foundation/Framework/Ppi/Decompress/Decompress.c new file mode 100644 index 0000000..4b95013 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Decompress/Decompress.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + Decompress.c + +Abstract: + + PI 1.0 spec definition. + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (Decompress) + + +EFI_GUID gEfiPeiDecompressPpiGuid = EFI_PEI_DECOMPRESS_PPI_GUID; +EFI_GUID_STRING(&gEfiPeiDecompressPpiGuid, "PeiDecompress", "PeiDecompress PPI"); diff --git a/EDK/Foundation/Framework/Ppi/Decompress/Decompress.h b/EDK/Foundation/Framework/Ppi/Decompress/Decompress.h new file mode 100644 index 0000000..7007576 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Decompress/Decompress.h @@ -0,0 +1,49 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + Decompress.h + +Abstract: + + PI 1.0 spec definition. + +--*/ + +#ifndef __DECOMPRESS_PPI_H__ +#define __DECOMPRESS_PPI_H__ + + +#define EFI_PEI_DECOMPRESS_PPI_GUID \ + { 0x1a36e4e7, 0xfab6, 0x476a, 0x8e, 0x75, 0x69, 0x5a, 0x5, 0x76, 0xfd, 0xd7} + +EFI_FORWARD_DECLARATION (EFI_PEI_DECOMPRESS_PPI); + + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_DECOMPRESS_DECOMPRESS)( + IN CONST EFI_PEI_DECOMPRESS_PPI *This, + IN CONST EFI_COMPRESSION_SECTION *InputSection, + OUT VOID **OutputBuffer, + OUT UINTN *OutputSize + ); + +typedef struct _EFI_PEI_DECOMPRESS_PPI { + EFI_PEI_DECOMPRESS_DECOMPRESS Decompress; +} EFI_PEI_DECOMPRESS_PPI; + + + +extern EFI_GUID gEfiPeiDecompressPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/DeviceRecoveryModule/DeviceRecoveryModule.c b/EDK/Foundation/Framework/Ppi/DeviceRecoveryModule/DeviceRecoveryModule.c new file mode 100644 index 0000000..909b8d7 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/DeviceRecoveryModule/DeviceRecoveryModule.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + DeviceRecoveryModule.c + +Abstract: + + Device Recovery Module PPI GUID as defined in PEI EAS + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (DeviceRecoveryModule) + +EFI_GUID gPeiDeviceRecoveryModulePpiGuid = PEI_DEVICE_RECOVERY_MODULE_INTERFACE_PPI; + +EFI_GUID_STRING(&gPeiDeviceRecoveryModulePpiGuid, "DeviceRecoveryModule", "Device Recovery Module PPI"); diff --git a/EDK/Foundation/Framework/Ppi/DeviceRecoveryModule/DeviceRecoveryModule.h b/EDK/Foundation/Framework/Ppi/DeviceRecoveryModule/DeviceRecoveryModule.h new file mode 100644 index 0000000..40d0602 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/DeviceRecoveryModule/DeviceRecoveryModule.h @@ -0,0 +1,68 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + DeviceRecoveryModule.h + +Abstract: + + Device Recovery Module PPI as defined in EFI 2.0 + +--*/ + +#ifndef _PEI_DEVICE_RECOVERY_MODULE_PPI_H +#define _PEI_DEVICE_RECOVERY_MODULE_PPI_H + +#define PEI_DEVICE_RECOVERY_MODULE_INTERFACE_PPI \ + { \ + 0x0DE2CE25, 0x446A, 0x45a7, 0xBF, 0xC9, 0x37, 0xDA, 0x26, 0x34, 0x4B, 0x37 \ + } + +EFI_FORWARD_DECLARATION (PEI_DEVICE_RECOVERY_MODULE_INTERFACE); + +typedef +EFI_STATUS +(EFIAPI *PEI_DEVICE_GET_NUMBER_RECOVERY_CAPSULE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_DEVICE_RECOVERY_MODULE_INTERFACE * This, + OUT UINTN *NumberRecoveryCapsules + ); + +typedef +EFI_STATUS +(EFIAPI *PEI_DEVICE_GET_RECOVERY_CAPSULE_INFO) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_DEVICE_RECOVERY_MODULE_INTERFACE * This, + IN UINTN CapsuleInstance, + OUT UINTN *Size, + OUT EFI_GUID * CapsuleType + ); + +typedef +EFI_STATUS +(EFIAPI *PEI_DEVICE_LOAD_RECOVERY_CAPSULE) ( + IN OUT EFI_PEI_SERVICES **PeiServices, + IN PEI_DEVICE_RECOVERY_MODULE_INTERFACE * This, + IN UINTN CapsuleInstance, + OUT VOID *Buffer + ); + +typedef struct _PEI_DEVICE_RECOVERY_MODULE_INTERFACE { + PEI_DEVICE_GET_NUMBER_RECOVERY_CAPSULE GetNumberRecoveryCapsules; + PEI_DEVICE_GET_RECOVERY_CAPSULE_INFO GetRecoveryCapsuleInfo; + PEI_DEVICE_LOAD_RECOVERY_CAPSULE LoadRecoveryCapsule; +} PEI_DEVICE_RECOVERY_MODULE_INTERFACE; + +extern EFI_GUID gPeiDeviceRecoveryModulePpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/DxeIpl/DxeIpl.c b/EDK/Foundation/Framework/Ppi/DxeIpl/DxeIpl.c new file mode 100644 index 0000000..4884011 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/DxeIpl/DxeIpl.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + DxeIpl.c + +Abstract: + + DXE Initial Program Load PPI GUID as defined in Tiano + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (DxeIpl) + +EFI_GUID gEfiDxeIplPpiGuid = EFI_DXE_IPL_PPI_GUID; + +EFI_GUID_STRING(&gEfiDxeIplPpiGuid, "DxeIpl", "DXE IPL PPI"); diff --git a/EDK/Foundation/Framework/Ppi/DxeIpl/DxeIpl.h b/EDK/Foundation/Framework/Ppi/DxeIpl/DxeIpl.h new file mode 100644 index 0000000..688ec8a --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/DxeIpl/DxeIpl.h @@ -0,0 +1,51 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + DxeIpl.h + +Abstract: + + DXE Initial Program Load PPI as defined in Tiano + + When the PEI core is done it calls the DXE IPL via this PPI. + +--*/ + +#ifndef _DXE_IPL_H_ +#define _DXE_IPL_H_ + +#include "Tiano.h" +#include "PeiHob.h" + +#define EFI_DXE_IPL_PPI_GUID \ + { \ + 0xae8ce5d, 0xe448, 0x4437, 0xa8, 0xd7, 0xeb, 0xf5, 0xf1, 0x94, 0xf7, 0x31 \ + } + +EFI_FORWARD_DECLARATION (EFI_DXE_IPL_PPI); + +typedef +EFI_STATUS +(EFIAPI *EFI_DXE_IPL_ENTRY) ( + IN EFI_DXE_IPL_PPI * This, + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_HOB_POINTERS HobList + ); + +typedef struct _EFI_DXE_IPL_PPI { + EFI_DXE_IPL_ENTRY Entry; +} EFI_DXE_IPL_PPI; + +extern EFI_GUID gEfiDxeIplPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/EcpPciCfg/EcpPciCfg.c b/EDK/Foundation/Framework/Ppi/EcpPciCfg/EcpPciCfg.c new file mode 100644 index 0000000..6a2194e --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/EcpPciCfg/EcpPciCfg.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2004, Intel Corporation. All rights reserved.<BR> +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. + +Module Name: + + EcpPciCfg.c + +Abstract: + + This PPI which is same with PciCfg PPI. But Modify API is removed. + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (EcpPciCfg) + +EFI_GUID gEcpPeiPciCfgPpiGuid = ECP_PEI_PCI_CFG_PPI_GUID; + +EFI_GUID_STRING(&gEcpPeiPciCfgPpiGuid, "Ecp PciCfg", "Ecp PciCfg PPI"); diff --git a/EDK/Foundation/Framework/Ppi/EcpPciCfg/EcpPciCfg.h b/EDK/Foundation/Framework/Ppi/EcpPciCfg/EcpPciCfg.h new file mode 100644 index 0000000..eddd9bb --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/EcpPciCfg/EcpPciCfg.h @@ -0,0 +1,50 @@ +/*++ + +Copyright (c) 2008, Intel Corporation. All rights reserved.<BR> +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. + +Module Name: + + PciCfg.h + +Abstract: + + This PPI which is same with PciCfg PPI. But Modify API is removed. + +--*/ + +#ifndef _ECP_PEI_PCI_CFG_H_ +#define _ECP_PEI_PCI_CFG_H_ +#include EFI_PPI_DEFINITION (PciCfg) + +#define ECP_PEI_PCI_CFG_PPI_GUID \ + {0xb0ee53d4, 0xa049, 0x4a79, { 0xb2, 0xff, 0x19, 0xd9, 0xfa, 0xef, 0xaa, 0x94 }} + +EFI_FORWARD_DECLARATION (ECP_PEI_PCI_CFG_PPI); + + +typedef +EFI_STATUS +(EFIAPI *ECP_PEI_PCI_CFG_PPI_IO) ( + IN EFI_PEI_SERVICES **PeiServices, + IN ECP_PEI_PCI_CFG_PPI *This, + IN PEI_PCI_CFG_PPI_WIDTH Width, + IN UINT64 Address, + IN OUT VOID *Buffer + ); + +struct _ECP_PEI_PCI_CFG_PPI { + ECP_PEI_PCI_CFG_PPI_IO Read; + ECP_PEI_PCI_CFG_PPI_IO Write; +}; + +extern EFI_GUID gEcpPeiPciCfgPpiGuid; + +#endif + diff --git a/EDK/Foundation/Framework/Ppi/EdkFrameworkPpiLib.cif b/EDK/Foundation/Framework/Ppi/EdkFrameworkPpiLib.cif new file mode 100644 index 0000000..fecf03f --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/EdkFrameworkPpiLib.cif @@ -0,0 +1,74 @@ +<component> + name = "EdkFrameworkPpiLib" + category = ModulePart + LocalRoot = "Edk\Foundation\Framework\Ppi\" + RefName = "EdkFrameworkPpiLib" +[files] +"EdkFrameworkPpiLib.sdl" +"EdkFrameworkPpiLib.mak" +"BlockIo\BlockIo.h" +"BlockIo\BlockIo.c" +"BootInRecoveryMode\BootInRecoveryMode.h" +"BootInRecoveryMode\BootInRecoveryMode.c" +"BootMode\BootMode.h" +"BootMode\BootMode.c" +"BootScriptExecuter\BootScriptExecuter.h" +"BootScriptExecuter\BootScriptExecuter.c" +"CpuIo\CpuIo.h" +"CpuIo\CpuIo.c" +"DeviceRecoveryModule\DeviceRecoveryModule.h" +"DeviceRecoveryModule\DeviceRecoveryModule.c" +"DxeIpl\DxeIpl.h" +"DxeIpl\DxeIpl.c" +"EndOfPeiSignal\EndOfPeiSignal.h" +"EndOfPeiSignal\EndOfPeiSignal.c" +"FindFv\FindFv.h" +"FindFv\FindFv.c" +"LoadFile\LoadFile.h" +"LoadFile\LoadFile.c" +"MemoryDiscovered\MemoryDiscovered.h" +"MemoryDiscovered\MemoryDiscovered.c" +"PciCfg\PciCfg.h" +"PciCfg\PciCfg.c" +"PciCfg2\PciCfg2.h" +"PciCfg2\PciCfg2.c" +"RecoveryModule\RecoveryModule.h" +"RecoveryModule\RecoveryModule.c" +"Reset\Reset.h" +"Reset\Reset.c" +"S3Resume\S3Resume.h" +"S3Resume\S3Resume.c" +"SecPlatformInformation\SecPlatformInformation.h" +"SecPlatformInformation\SecPlatformInformation.c" +"SectionExtraction\SectionExtraction.h" +"SectionExtraction\SectionExtraction.c" +"Security\Security.h" +"Security\Security.c" +"Smbus\Smbus.h" +"Smbus\Smbus.c" +"Smbus2\Smbus2.h" +"Smbus2\Smbus2.c" +"Stall\Stall.h" +"Stall\Stall.c" +"StatusCode\StatusCode.h" +"StatusCode\StatusCode.c" +"Variable\Variable.h" +"Variable\Variable.c" +"Variable2\Variable2.h" +"Variable2\Variable2.c" +"Decompress\Decompress.h" +"Decompress\Decompress.c" +"FirmwareVolumeInfo\FirmwareVolumeInfo.h" +"FirmwareVolumeInfo\FirmwareVolumeInfo.c" +"LoadFile2\LoadFile2.h" +"LoadFile2\LoadFile2.c" +"Security2\Security2.h" +"Security2\Security2.c" +"FirmwareVolume\FirmwareVolume.h" +"FirmwareVolume\FirmwareVolume.c" +"GuidedSectionExtraction\GuidedSectionExtraction.h" +"GuidedSectionExtraction\GuidedSectionExtraction.c" +"EdkFrameworkPpiLib.inf" +"EcpPciCfg\EcpPciCfg.c" +"EcpPciCfg\EcpPciCfg.h" +<endComponent> diff --git a/EDK/Foundation/Framework/Ppi/EdkFrameworkPpiLib.inf b/EDK/Foundation/Framework/Ppi/EdkFrameworkPpiLib.inf new file mode 100644 index 0000000..95e2542 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/EdkFrameworkPpiLib.inf @@ -0,0 +1,91 @@ +#/*++ +# +# Copyright (c) 2004, 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. +# +# Module Name: +# +# EdkFrameworkPpiLib.inf +# +# Abstract: +# +# Component description file. +# +#--*/ + +[defines] +BASE_NAME= EdkFrameworkPpiLib +COMPONENT_TYPE= LIBRARY + +[includes.common] + $(EDK_SOURCE)\Foundation\Framework + $(EDK_SOURCE)\Foundation\Efi + $(EDK_SOURCE)\Foundation\Include + $(EDK_SOURCE)\Foundation\Efi\Include + $(EDK_SOURCE)\Foundation\Framework\Include + $(EDK_SOURCE)\Foundation\Include\IndustryStandard + $(EDK_SOURCE)\Foundation\Include\Pei + $(EDK_SOURCE)\Foundation\Library\Pei\Include + $(EDK_SOURCE)\Foundation\Core\Dxe + $(EDK_SOURCE)\Foundation\Library\Dxe\Include + +[nmake.common] +C_STD_INCLUDE= + +[sources.common] + BlockIo\BlockIo.h + BlockIo\BlockIo.c + BootInRecoveryMode\BootInRecoveryMode.h + BootInRecoveryMode\BootInRecoveryMode.c + BootMode\BootMode.h + BootMode\BootMode.c + BootScriptExecuter\BootScriptExecuter.h + BootScriptExecuter\BootScriptExecuter.c + CpuIo\CpuIo.h + CpuIo\CpuIo.c + DeviceRecoveryModule\DeviceRecoveryModule.h + DeviceRecoveryModule\DeviceRecoveryModule.c + DxeIpl\DxeIpl.h + DxeIpl\DxeIpl.c + EndOfPeiSignal\EndOfPeiSignal.h + EndOfPeiSignal\EndOfPeiSignal.c + FindFv\FindFv.h + FindFv\FindFv.c + LoadFile\LoadFile.h + LoadFile\LoadFile.c + MemoryDiscovered\MemoryDiscovered.h + MemoryDiscovered\MemoryDiscovered.c + PciCfg\PciCfg.h + PciCfg\PciCfg.c + PciCfg2\PciCfg2.h + PciCfg2\PciCfg2.c + RecoveryModule\RecoveryModule.h + RecoveryModule\RecoveryModule.c + Reset\Reset.h + Reset\Reset.c + S3Resume\S3Resume.h + S3Resume\S3Resume.c + SecPlatformInformation\SecPlatformInformation.h + SecPlatformInformation\SecPlatformInformation.c + SectionExtraction\SectionExtraction.h + SectionExtraction\SectionExtraction.c + Security\Security.h + Security\Security.c + Smbus\Smbus.h + Smbus\Smbus.c + Stall\Stall.h + Stall\Stall.c + StatusCode\StatusCode.h + StatusCode\StatusCode.c + Variable\Variable.h + Variable\Variable.c + FirmwareVolumeInfo\FirmwareVolumeInfo.h + FirmwareVolumeInfo\FirmwareVolumeInfo.c + EcpPciCfg\EcpPciCfg.h + EcpPciCfg\EcpPciCfg.c diff --git a/EDK/Foundation/Framework/Ppi/EdkFrameworkPpiLib.mak b/EDK/Foundation/Framework/Ppi/EdkFrameworkPpiLib.mak new file mode 100644 index 0000000..1aec2e0 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/EdkFrameworkPpiLib.mak @@ -0,0 +1,70 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2009, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** + +#********************************************************************** +# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelEDK/EdkFrameworkPpiLib/EdkFrameworkPpiLib.mak 2 3/27/12 4:26a Jeffch $ +# +# $Revision: 2 $ +# +# $Date: 3/27/12 4:26a $ +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelEDK/EdkFrameworkPpiLib/EdkFrameworkPpiLib.mak $ +# +# 2 3/27/12 4:26a Jeffch +# +# 1 1/20/12 4:03a Jeffch +# Create Intel EDK 1117 Patch 7. +# +# 1 9/27/11 6:26a Wesleychen +# Intel EDK initially releases. +# +# 2 9/02/09 3:19a Iminglin +# EIP24919 +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: EdkFrameworkPpiLib.mak +# +# Description: +# +#<AMI_FHDR_END> +#********************************************************************** + +$(EDKFRAMEWORKPPILIB) : EdkFrameworkPpiLib + +EdkFrameworkPpiLib : $(BUILD_DIR)\EdkFrameworkPpiLib.mak EdkFrameworkPpiLibBin + +$(BUILD_DIR)\EdkFrameworkPpiLib.mak : $(EdkFrameworkPpiLib_DIR)\$(@B).cif $(EdkFrameworkPpiLib_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(EdkFrameworkPpiLib_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +EdkFrameworkPpiLibBin : $(EDKPPILIB) + $(MAKE) /$(MAKEFLAGS) $(EDK_DEFAULTS)\ + /f $(BUILD_DIR)\EdkFrameworkPpiLib.mak all\ + TYPE=PEI_LIBRARY \ +#********************************************************************** +#********************************************************************** +#** ** +#** (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 diff --git a/EDK/Foundation/Framework/Ppi/EdkFrameworkPpiLib.sdl b/EDK/Foundation/Framework/Ppi/EdkFrameworkPpiLib.sdl new file mode 100644 index 0000000..5485bc0 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/EdkFrameworkPpiLib.sdl @@ -0,0 +1,26 @@ +TOKEN + Name = "EdkFrameworkPpiLib_SUPPORT" + Value = "1" + Help = "Main switch to enable EdkFrameworkPpiLib support in Project" + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + Master = Yes +End + +TOKEN + Name = "EDKFRAMEWORKPPILIB" + Value = "$(BUILD_DIR)\EdkFrameworkPpiLib.lib" + TokenType = Expression + TargetMAK = Yes +End + +PATH + Name = "EdkFrameworkPpiLib_DIR" +End + +MODULE + Help = "Includes EdkFrameworkPpiLib.mak to Project" + File = "EdkFrameworkPpiLib.mak" +End + diff --git a/EDK/Foundation/Framework/Ppi/EndOfPeiSignal/EndOfPeiSignal.c b/EDK/Foundation/Framework/Ppi/EndOfPeiSignal/EndOfPeiSignal.c new file mode 100644 index 0000000..eb43147 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/EndOfPeiSignal/EndOfPeiSignal.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + EndOfPeiSignal.c + +Abstract: + + This is installed prior to DXE taking over the memory map + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (EndOfPeiSignal) + +EFI_GUID gEndOfPeiSignalPpiGuid = PEI_END_OF_PEI_PHASE_PPI_GUID; + +EFI_GUID_STRING(&gEndOfPeiSignalPpiGuid, "EndOfPeiSignal", "End of PEI Phase Signalled PPI"); diff --git a/EDK/Foundation/Framework/Ppi/EndOfPeiSignal/EndOfPeiSignal.h b/EDK/Foundation/Framework/Ppi/EndOfPeiSignal/EndOfPeiSignal.h new file mode 100644 index 0000000..155ed82 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/EndOfPeiSignal/EndOfPeiSignal.h @@ -0,0 +1,35 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + EndOfPeiSignal.h + +Abstract: + + PPI to be used to signal when the PEI ownership of the memory map + officially ends and DXE will take over + +--*/ + +#ifndef _PEI_END_OF_PEI_SIGNAL_PPI_H +#define _PEI_END_OF_PEI_SIGNAL_PPI_H + +#define PEI_END_OF_PEI_PHASE_PPI_GUID \ + { \ + 0x605EA650, 0xC65C, 0x42e1, 0xBA, 0x80, 0x91, 0xA5, 0x2A, 0xB6, 0x18, 0xC6 \ + } + +EFI_FORWARD_DECLARATION (PEI_END_OF_PEI_SIGNAL_PPI); + +extern EFI_GUID gEndOfPeiSignalPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/FindFv/FindFv.c b/EDK/Foundation/Framework/Ppi/FindFv/FindFv.c new file mode 100644 index 0000000..91b06fd --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/FindFv/FindFv.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + FindFv.c + +Abstract: + + FindFv PPI GUID as defined in Tiano + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (FindFv) + +EFI_GUID gEfiFindFvPpiGuid = EFI_FIND_FV_PPI_GUID; + +EFI_GUID_STRING(&gEfiFindFvPpiGuid, "FindFv", "FindFv PPI"); diff --git a/EDK/Foundation/Framework/Ppi/FindFv/FindFv.h b/EDK/Foundation/Framework/Ppi/FindFv/FindFv.h new file mode 100644 index 0000000..da87115 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/FindFv/FindFv.h @@ -0,0 +1,51 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + FindFv.h + +Abstract: + + FindFv PPI as defined in Tiano + + Used to locate FVs that contain PEIMs in PEI + +--*/ + +#ifndef _FIND_FV_H_ +#define _FIND_FV_H_ + +#include "EfiFirmwareVolumeHeader.h" + +#define EFI_FIND_FV_PPI_GUID \ + { \ + 0x36164812, 0xa023, 0x44e5, 0xbd, 0x85, 0x5, 0xbf, 0x3c, 0x77, 0x0, 0xaa \ + } + +EFI_FORWARD_DECLARATION (EFI_FIND_FV_PPI); + +typedef +EFI_STATUS +(EFIAPI *EFI_FIND_FV_FINDFV) ( + IN EFI_FIND_FV_PPI * This, + IN EFI_PEI_SERVICES **PeiServices, + UINT8 *FvNumber, + EFI_FIRMWARE_VOLUME_HEADER **FVAddress + ); + +typedef struct _EFI_FIND_FV_PPI { + EFI_FIND_FV_FINDFV FindFv; +} EFI_FIND_FV_PPI; + +extern EFI_GUID gEfiFindFvPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/FirmwareVolume/FirmwareVolume.c b/EDK/Foundation/Framework/Ppi/FirmwareVolume/FirmwareVolume.c new file mode 100644 index 0000000..5afe01f --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/FirmwareVolume/FirmwareVolume.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + FirmwareVolume.c + +Abstract: + + PI 1.0 spec definition. + +--*/ + + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (FirmwareVolume) + +// +// There is no PPI Guid definition here, since the guid of +// this ppi is the same as the firmware volume format Guid. +//
\ No newline at end of file diff --git a/EDK/Foundation/Framework/Ppi/FirmwareVolume/FirmwareVolume.h b/EDK/Foundation/Framework/Ppi/FirmwareVolume/FirmwareVolume.h new file mode 100644 index 0000000..0c8b508 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/FirmwareVolume/FirmwareVolume.h @@ -0,0 +1,112 @@ +/*++ + +Copyright (c) 2007 - 2009, 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. + +Module Name: + + FirmwareVolume.h + +Abstract: + + PI 1.0 spec definition. + +--*/ + +#ifndef __FIRMWARE_VOLUME_H__ +#define __FIRMWARE_VOLUME_H__ + +EFI_FORWARD_DECLARATION (EFI_PEI_FIRMWARE_VOLUME_PPI); + +typedef UINT32 EFI_FV_FILE_ATTRIBUTES; +typedef VOID * EFI_PEI_FILE_HANDLE; +typedef VOID * EFI_PEI_FV_HANDLE; + + +typedef struct { + EFI_GUID FileName; + EFI_FV_FILETYPE FileType; + EFI_FV_FILE_ATTRIBUTES FileAttributes; + VOID *Buffer; + UINT32 BufferSize; +} EFI_FV_FILE_INFO; + +typedef struct { + EFI_FVB_ATTRIBUTES FvAttributes; + EFI_GUID FvFormat; + EFI_GUID FvName; + VOID *FvStart; + UINT64 FvSize; +} EFI_FV_INFO; + + + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FV_PROCESS_FV) ( + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN VOID *Buffer, + IN UINTN BufferSize, + OUT EFI_PEI_FV_HANDLE *FvHandle + ); + + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FV_FIND_FILE_TYPE) ( + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN EFI_FV_FILETYPE SearchType, + IN EFI_PEI_FV_HANDLE FvHandle, + IN OUT EFI_PEI_FILE_HANDLE *FileHandle + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FV_FIND_FILE_NAME) ( + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN CONST EFI_GUID *FileName, + IN OUT EFI_PEI_FV_HANDLE *FvHandle, + OUT EFI_PEI_FILE_HANDLE *FileHandle + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FV_GET_FILE_INFO) ( + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT EFI_FV_FILE_INFO *FileInfo + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FV_GET_INFO)( + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN EFI_PEI_FV_HANDLE FvHandle, + OUT EFI_FV_INFO *VolumeInfo + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FV_FIND_SECTION) ( + IN CONST EFI_PEI_FIRMWARE_VOLUME_PPI *This, + IN EFI_SECTION_TYPE SearchType, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT VOID **SectionData + ); + +typedef struct _EFI_PEI_FIRMWARE_VOLUME_PPI { + EFI_PEI_FV_PROCESS_FV ProcessVolume; + EFI_PEI_FV_FIND_FILE_TYPE FindFileByType; + EFI_PEI_FV_FIND_FILE_NAME FindFileByName; + EFI_PEI_FV_GET_FILE_INFO GetFileInfo; + EFI_PEI_FV_GET_INFO GetVolumeInfo; + EFI_PEI_FV_FIND_SECTION FindSectionByType; +} EFI_PEI_FIRMWARE_VOLUME_PPI; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/FirmwareVolumeInfo/FirmwareVolumeInfo.c b/EDK/Foundation/Framework/Ppi/FirmwareVolumeInfo/FirmwareVolumeInfo.c new file mode 100644 index 0000000..ed00f62 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/FirmwareVolumeInfo/FirmwareVolumeInfo.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2007, Intel Corporation. All rights reserved.<BR> +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. + +Module Name: + + FirmwareVolumeInfo.c + +Abstract: + + PI 1.0 spec definition. + +--*/ + + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (FirmwareVolumeInfo) + +EFI_GUID gEfiFirmwareVolumeInfoPpiGuid = EFI_PEI_FIRMWARE_VOLUME_INFO_PPI_GUID; +EFI_GUID_STRING(&gEfiFirmwareVolumeInfoPpiGuid, "FirmwareVolumeInfo", "FirmwareVolumeInfo PPI"); diff --git a/EDK/Foundation/Framework/Ppi/FirmwareVolumeInfo/FirmwareVolumeInfo.h b/EDK/Foundation/Framework/Ppi/FirmwareVolumeInfo/FirmwareVolumeInfo.h new file mode 100644 index 0000000..f1a49ee --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/FirmwareVolumeInfo/FirmwareVolumeInfo.h @@ -0,0 +1,46 @@ +/*++ + +Copyright (c) 2007, Intel Corporation. All rights reserved.<BR> +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. + +Module Name: + + FirmwareVolumeInfo.h + +Abstract: + + PI 1.0 spec definition. + +--*/ + +#ifndef __FIRMWARE_VOLUME_INFO_PPI__ +#define __FIRMWARE_VOLUME_INFO_PPI__ + +EFI_FORWARD_DECLARATION (EFI_PEI_FIRMWARE_VOLUME_INFO_PPI); + + +// +// The PPI GUID must match the EFI_GUID FvFormat value +// +#define EFI_PEI_FIRMWARE_VOLUME_INFO_PPI_GUID \ + { 0x49edb1c1, 0xbf21, 0x4761, { 0xbb, 0x12, 0xeb, 0x0, 0x31, 0xaa, 0xbb, 0x39 } } + + +struct _EFI_PEI_FIRMWARE_VOLUME_INFO_PPI { + EFI_GUID FvFormat; + VOID *FvInfo; + UINT32 FvInfoSize; + EFI_GUID *ParentFvName; + EFI_GUID *ParentFileName; +}; + + +extern EFI_GUID gEfiFirmwareVolumeInfoPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/GuidedSectionExtraction/GuidedSectionExtraction.c b/EDK/Foundation/Framework/Ppi/GuidedSectionExtraction/GuidedSectionExtraction.c new file mode 100644 index 0000000..a7460ac --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/GuidedSectionExtraction/GuidedSectionExtraction.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + GuidedSectionExtraction.c + +Abstract: + + PI 1.0 spec definition. + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (GuidedSectionExtraction) + +// +// There is no PPI Guid definition here since this PPI is for +// extract EFI_SECTION_GUID_DEFINED type section. +//
\ No newline at end of file diff --git a/EDK/Foundation/Framework/Ppi/GuidedSectionExtraction/GuidedSectionExtraction.h b/EDK/Foundation/Framework/Ppi/GuidedSectionExtraction/GuidedSectionExtraction.h new file mode 100644 index 0000000..b53ffa6 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/GuidedSectionExtraction/GuidedSectionExtraction.h @@ -0,0 +1,42 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + GuidedSectionExtraction.h + +Abstract: + + PI 1.0 spec definition. + +--*/ + + +#ifndef __GUIDED_SECTION_EXTRACTION_PPI_H__ +#define __GUIDED_SECTION_EXTRACTION_PPI_H__ + +EFI_FORWARD_DECLARATION (EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_EXTRACT_GUIDED_SECTION)( + IN CONST EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI *This, + IN CONST VOID *InputSection, + OUT VOID **OutputBuffer, + OUT UINTN *OutputSize, + OUT UINT32 *AuthenticationStatus + ); + +typedef struct _EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI { + EFI_PEI_EXTRACT_GUIDED_SECTION ExtractSection; +} EFI_PEI_GUIDED_SECTION_EXTRACTION_PPI; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/LoadFile/LoadFile.c b/EDK/Foundation/Framework/Ppi/LoadFile/LoadFile.c new file mode 100644 index 0000000..e8a4065 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/LoadFile/LoadFile.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + LoadFile.c + +Abstract: + + Load File PPI GUID. + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (LoadFile) + +EFI_GUID gPeiFvFileLoaderPpiGuid = EFI_PEI_FV_FILE_LOADER_GUID; + +EFI_GUID_STRING(&gPeiFvFileLoaderPpiGuid, "FvFileLoader", "Fv File Loader Support PPI"); diff --git a/EDK/Foundation/Framework/Ppi/LoadFile/LoadFile.h b/EDK/Foundation/Framework/Ppi/LoadFile/LoadFile.h new file mode 100644 index 0000000..6cd4b1d --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/LoadFile/LoadFile.h @@ -0,0 +1,48 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + LoadFile.h + +Abstract: + + Load image file from fv to memory. + +--*/ + +#ifndef _PEI_FV_FILE_LOADER_PPI_H +#define _PEI_FV_FILE_LOADER_PPI_H + +#define EFI_PEI_FV_FILE_LOADER_GUID \ + { \ + 0x7e1f0d85, 0x4ff, 0x4bb2, 0x86, 0x6a, 0x31, 0xa2, 0x99, 0x6a, 0x48, 0xa8 \ + } + +EFI_FORWARD_DECLARATION (EFI_PEI_FV_FILE_LOADER_PPI); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_FV_LOAD_FILE) ( + IN EFI_PEI_FV_FILE_LOADER_PPI * This, + IN EFI_FFS_FILE_HEADER * FfsHeader, + OUT EFI_PHYSICAL_ADDRESS * ImageAddress, + OUT UINT64 *ImageSize, + OUT EFI_PHYSICAL_ADDRESS * EntryPoint + ); + +typedef struct _EFI_PEI_FV_FILE_LOADER_PPI { + EFI_PEI_FV_LOAD_FILE FvLoadFile; +} EFI_PEI_FV_FILE_LOADER_PPI; + +extern EFI_GUID gPeiFvFileLoaderPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/LoadFile2/LoadFile2.c b/EDK/Foundation/Framework/Ppi/LoadFile2/LoadFile2.c new file mode 100644 index 0000000..9e63e7b --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/LoadFile2/LoadFile2.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + LoadFile2.c + +Abstract: + + PI 1.0 spec definition. + +--*/ + + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (LoadFile2) + + +EFI_GUID gEfiLoadFile2PpiGuid = EFI_PEI_LOAD_FILE_GUID; +EFI_GUID_STRING(&gEfiLoadFile2PpiGuid, "PeiLoadFile2", "PeiLoadFile2 PPI"); diff --git a/EDK/Foundation/Framework/Ppi/LoadFile2/LoadFile2.h b/EDK/Foundation/Framework/Ppi/LoadFile2/LoadFile2.h new file mode 100644 index 0000000..4646b1c --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/LoadFile2/LoadFile2.h @@ -0,0 +1,49 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + LoadFile2.h + +Abstract: + + PI 1.0 spec definition. + +--*/ + +#ifndef __LOAD_FILE_PPI_H__ +#define __LOAD_FILE_PPI_H__ + +EFI_FORWARD_DECLARATION (EFI_PEI_LOAD_FILE_PPI); + +#define EFI_PEI_LOAD_FILE_GUID \ + { 0xb9e0abfe, 0x5979, 0x4914, 0x97, 0x7f, 0x6d, 0xee, 0x78, 0xc2, 0x78, 0xa6} + + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_LOAD_FILE) ( + IN CONST EFI_PEI_LOAD_FILE_PPI *This, + IN EFI_PEI_FILE_HANDLE FileHandle, + OUT EFI_PHYSICAL_ADDRESS *ImageAddress, + OUT UINT64 *ImageSize, + OUT EFI_PHYSICAL_ADDRESS *EntryPoint, + OUT UINT32 *AuthenticationState + ); + + +typedef struct _EFI_PEI_LOAD_FILE_PPI { + EFI_PEI_LOAD_FILE LoadFile; +} EFI_PEI_LOAD_FILE_PPI; + + +extern EFI_GUID gEfiLoadFile2PpiGuid; +#endif diff --git a/EDK/Foundation/Framework/Ppi/MemoryDiscovered/MemoryDiscovered.c b/EDK/Foundation/Framework/Ppi/MemoryDiscovered/MemoryDiscovered.c new file mode 100644 index 0000000..8a4779f --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/MemoryDiscovered/MemoryDiscovered.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + MemoryDiscovered.c + +Abstract: + + Memory Discovered PPI GUID as defined in PEI EAS + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (MemoryDiscovered) + +EFI_GUID gPeiMemoryDiscoveredPpiGuid = PEI_PERMANENT_MEMORY_INSTALLED_PPI_GUID; + +EFI_GUID_STRING(&gPeiMemoryDiscoveredPpiGuid, "MemoryDiscovered", "Memory Discovered PPI"); diff --git a/EDK/Foundation/Framework/Ppi/MemoryDiscovered/MemoryDiscovered.h b/EDK/Foundation/Framework/Ppi/MemoryDiscovered/MemoryDiscovered.h new file mode 100644 index 0000000..7cde19a --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/MemoryDiscovered/MemoryDiscovered.h @@ -0,0 +1,34 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + MemoryDiscovered.h + +Abstract: + + Memory Discovered PPI as defined in Tiano + +--*/ + +#ifndef _PEI_MEMORY_DISCOVERED_PPI_H +#define _PEI_MEMORY_DISCOVERED_PPI_H + +#define PEI_PERMANENT_MEMORY_INSTALLED_PPI_GUID \ + { \ + 0xf894643d, 0xc449, 0x42d1, 0x8e, 0xa8, 0x85, 0xbd, 0xd8, 0xc6, 0x5b, 0xde \ + } + +EFI_FORWARD_DECLARATION (PEI_PERMANENT_MEMORY_INSTALLED_PPI); + +extern EFI_GUID gPeiMemoryDiscoveredPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/PciCfg/PciCfg.c b/EDK/Foundation/Framework/Ppi/PciCfg/PciCfg.c new file mode 100644 index 0000000..5bc6f68 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/PciCfg/PciCfg.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + PciCfg.c + +Abstract: + + PciCfg PPI GUID as defined in PEI CIS specification. + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (PciCfg) + +EFI_GUID gPeiPciCfgPpiInServiceTableGuid = PEI_PCI_CFG_PPI_GUID; + +EFI_GUID_STRING(&gPeiPciCfgPpiInServiceTableGuid, "PciCfg", "PciCfg PPI"); diff --git a/EDK/Foundation/Framework/Ppi/PciCfg/PciCfg.h b/EDK/Foundation/Framework/Ppi/PciCfg/PciCfg.h new file mode 100644 index 0000000..d116b50 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/PciCfg/PciCfg.h @@ -0,0 +1,65 @@ +/*++ + +Copyright (c) 2004 - 2007, 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. + +Module Name: + + PciCfg.h + +Abstract: + + PciCfg PPI as defined in PEI CIS specification + + Used to access PCI configuration space in PEI + +--*/ + +#ifndef _PEI_PCI_CFG_H_ +#define _PEI_PCI_CFG_H_ +#include "EfiPciCfg.h" + +#define PEI_PCI_CFG_PPI_GUID \ + { \ + 0xe1f2eba0, 0xf7b9, 0x4a26, 0x86, 0x20, 0x13, 0x12, 0x21, 0x64, 0x2a, 0x90 \ + } + +EFI_FORWARD_DECLARATION (PEI_PCI_CFG_PPI); + + +typedef +EFI_STATUS +(EFIAPI *PEI_PCI_CFG_PPI_IO) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_PCI_CFG_PPI * This, + IN PEI_PCI_CFG_PPI_WIDTH Width, + IN UINT64 Address, + IN OUT VOID *Buffer + ); + +typedef +EFI_STATUS +(EFIAPI *PEI_PCI_CFG_PPI_RW) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_PCI_CFG_PPI * This, + IN PEI_PCI_CFG_PPI_WIDTH Width, + IN UINT64 Address, + IN UINTN SetBits, + IN UINTN ClearBits + ); + +typedef struct _PEI_PCI_CFG_PPI { + PEI_PCI_CFG_PPI_IO Read; + PEI_PCI_CFG_PPI_IO Write; + PEI_PCI_CFG_PPI_RW Modify; +} PEI_PCI_CFG_PPI; + +extern EFI_GUID gPeiPciCfgPpiInServiceTableGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/PciCfg2/PciCfg2.c b/EDK/Foundation/Framework/Ppi/PciCfg2/PciCfg2.c new file mode 100644 index 0000000..e733d74 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/PciCfg2/PciCfg2.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + PciCfg2.c + +Abstract: + + PciCfg2 PPI GUID as defined in PI1.0 specification. + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (PciCfg2) + +EFI_GUID gPeiPciCfg2PpiGuid = EFI_PEI_PCI_CFG2_PPI_GUID; + +EFI_GUID_STRING(&gPeiPciCfg2PpiGuid, "PciCfg2", "PciCfg2 PPI"); diff --git a/EDK/Foundation/Framework/Ppi/PciCfg2/PciCfg2.h b/EDK/Foundation/Framework/Ppi/PciCfg2/PciCfg2.h new file mode 100644 index 0000000..285f97c --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/PciCfg2/PciCfg2.h @@ -0,0 +1,67 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + PciCfg2.h + +Abstract: + + PciCfg2 PPI as defined in PI1.0 specification + + Used to access PCI configuration space in PEI + +--*/ + +#ifndef _PEI_PCI_CFG2_H_ +#define _PEI_PCI_CFG2_H_ +#include "EfiPciCfg.h" + +//;;## ...AMI_OVERRIDE... Fixed Build error issue. +#define EFI_PEI_PCI_CFG2_PPI_GUID \ + { \ + 0x57a449a, 0x1fdc, 0x4c06, 0xbf, 0xc9, 0xf5, 0x3f, 0x6a, 0x99, 0xbb, 0x92 \ + } + +EFI_FORWARD_DECLARATION (EFI_PEI_PCI_CFG2_PPI); + + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_PCI_CFG_PPI_IO) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PCI_CFG2_PPI *This, + IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, + IN UINT64 Address, + IN OUT VOID *Buffer + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_PCI_CFG_PPI_RW) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_PCI_CFG2_PPI *This, + IN EFI_PEI_PCI_CFG_PPI_WIDTH Width, + IN UINT64 Address, + IN VOID *SetBits, + IN VOID *ClearBits + ); + +struct _EFI_PEI_PCI_CFG2_PPI { + EFI_PEI_PCI_CFG_PPI_IO Read; + EFI_PEI_PCI_CFG_PPI_IO Write; + EFI_PEI_PCI_CFG_PPI_RW Modify; + UINT16 Segment; +}; + +extern EFI_GUID gPeiPciCfg2PpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/RecoveryModule/RecoveryModule.c b/EDK/Foundation/Framework/Ppi/RecoveryModule/RecoveryModule.c new file mode 100644 index 0000000..ad53fe3 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/RecoveryModule/RecoveryModule.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + RecoveryModule.c + +Abstract: + + Recovery Module PPI GUID as defined in PEI EAS + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (RecoveryModule) + +EFI_GUID gPeiRecoveryModulePpiGuid = PEI_RECOVERY_MODULE_INTERFACE_PPI; + +EFI_GUID_STRING(&gPeiRecoveryModulePpiGuid, "RecoveryModule", "Recovery Module PPI"); diff --git a/EDK/Foundation/Framework/Ppi/RecoveryModule/RecoveryModule.h b/EDK/Foundation/Framework/Ppi/RecoveryModule/RecoveryModule.h new file mode 100644 index 0000000..c36e914 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/RecoveryModule/RecoveryModule.h @@ -0,0 +1,45 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + RecoveryModule.h + +Abstract: + + Recovery Module PPI as defined in Tiano + +--*/ + +#ifndef _PEI_RECOVERY_MODULE_PPI_H +#define _PEI_RECOVERY_MODULE_PPI_H + +#define PEI_RECOVERY_MODULE_INTERFACE_PPI \ + { \ + 0xFB6D9542, 0x612D, 0x4f45, 0x87, 0x2F, 0x5C, 0xFF, 0x52, 0xE9, 0x3D, 0xCF \ + } + +EFI_FORWARD_DECLARATION (PEI_RECOVERY_MODULE_INTERFACE); + +typedef +EFI_STATUS +(EFIAPI *PEI_LOAD_RECOVERY_CAPSULE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_RECOVERY_MODULE_INTERFACE * This + ); + +typedef struct _PEI_RECOVERY_MODULE_INTERFACE { + PEI_LOAD_RECOVERY_CAPSULE LoadRecoveryCapsule; +} PEI_RECOVERY_MODULE_INTERFACE; + +extern EFI_GUID gPeiRecoveryModulePpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/Reset/Reset.c b/EDK/Foundation/Framework/Ppi/Reset/Reset.c new file mode 100644 index 0000000..6f680b2 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Reset/Reset.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + Reset.c + +Abstract: + + Reset Service PPI GUID as defined in Tiano + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (Reset) + +EFI_GUID gPeiResetPpiGuid = PEI_RESET_PPI_GUID; + +EFI_GUID_STRING(&gPeiResetPpiGuid, "Reset", "Reset PPI"); diff --git a/EDK/Foundation/Framework/Ppi/Reset/Reset.h b/EDK/Foundation/Framework/Ppi/Reset/Reset.h new file mode 100644 index 0000000..8239b42 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Reset/Reset.h @@ -0,0 +1,54 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + Reset.h + +Abstract: + + Reset PPI as defined in Tiano + + Used to reset the platform from PEI + +--*/ + +#ifndef _PEI_RESET_H_ +#define _PEI_RESET_H_ + +#define PEI_RESET_PPI_GUID \ + { \ + 0xef398d58, 0x9dfd, 0x4103, 0xbf, 0x94, 0x78, 0xc6, 0xf4, 0xfe, 0x71, 0x2f \ + } + +// +// ******************************************************* +// PEI_RESET_TYPE +// ******************************************************* +// +typedef enum { + PeiResetCold, + PeiResetWarm, +} PEI_RESET_TYPE; + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_RESET_SYSTEM) ( + IN EFI_PEI_SERVICES **PeiServices + ); + +typedef struct { + EFI_PEI_RESET_SYSTEM ResetSystem; +} PEI_RESET_PPI; + +extern EFI_GUID gPeiResetPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/S3Resume/S3Resume.c b/EDK/Foundation/Framework/Ppi/S3Resume/S3Resume.c new file mode 100644 index 0000000..12b8e56 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/S3Resume/S3Resume.c @@ -0,0 +1,29 @@ +/*++ + + Copyright (c) 2004, 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. + +Module Name: + + S3Resume.c + +Abstract: + + Boot Script Executer PPI GUID as defined in Tiano + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (S3Resume) + +EFI_GUID gPeiS3ResumePpiGuid = PEI_S3_RESUME_PPI_GUID; + +EFI_GUID_STRING(&gPeiS3ResumePpiGuid, "S3Resume", "S3 Resume PPI"); diff --git a/EDK/Foundation/Framework/Ppi/S3Resume/S3Resume.h b/EDK/Foundation/Framework/Ppi/S3Resume/S3Resume.h new file mode 100644 index 0000000..43a2afb --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/S3Resume/S3Resume.h @@ -0,0 +1,44 @@ +/*++ + + Copyright (c) 2004, 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. + +Module Name: + + S3Resume.h + +Abstract: + + S3 Resume PPI + +--*/ + +#ifndef _PEI_S3_RESUME_PPI_H +#define _PEI_S3_RESUME_PPI_H + +#define PEI_S3_RESUME_PPI_GUID \ + { \ + 0x4426CCB2, 0xE684, 0x4a8a, 0xAE, 0x40, 0x20, 0xD4, 0xB0, 0x25, 0xB7, 0x10 \ + } + +EFI_FORWARD_DECLARATION (PEI_S3_RESUME_PPI); + +typedef +EFI_STATUS +(EFIAPI *PEI_S3_RESUME_PPI_RESTORE_CONFIG) ( + IN EFI_PEI_SERVICES **PeiServices + ); + +typedef struct _PEI_S3_RESUME_PPI { + PEI_S3_RESUME_PPI_RESTORE_CONFIG S3RestoreConfig; +} PEI_S3_RESUME_PPI; + +extern EFI_GUID gPeiS3ResumePpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/SecPlatformInformation/SecPlatformInformation.c b/EDK/Foundation/Framework/Ppi/SecPlatformInformation/SecPlatformInformation.c new file mode 100644 index 0000000..ecc0c34 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/SecPlatformInformation/SecPlatformInformation.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + SecPlatformInformation.c + +Abstract: + + Sec Platform Information as defined in PEI EAS + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (SecPlatformInformation) + +EFI_GUID gEfiSecPlatformInformationPpiGuid = EFI_SEC_PLATFORM_INFORMATION_GUID; + +EFI_GUID_STRING(&gEfiSecPlatformInformationPpiGuid, "SecPlatformInformation", "Sec Platform Information"); diff --git a/EDK/Foundation/Framework/Ppi/SecPlatformInformation/SecPlatformInformation.h b/EDK/Foundation/Framework/Ppi/SecPlatformInformation/SecPlatformInformation.h new file mode 100644 index 0000000..f9ea0e6 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/SecPlatformInformation/SecPlatformInformation.h @@ -0,0 +1,57 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + SecPlatformInformation.h + +Abstract: + + Sec Platform Information PPI as defined in Tiano + +--*/ + +#ifndef _PEI_SEC_PLATFORM_INFORMATION_PPI_H +#define _PEI_SEC_PLATFORM_INFORMATION_PPI_H + +#define EFI_SEC_PLATFORM_INFORMATION_GUID \ + { \ + 0x6f8c2b35, 0xfef4, 0x448d, 0x82, 0x56, 0xe1, 0x1b, 0x19, 0xd6, 0x10, 0x77 \ + } + +EFI_FORWARD_DECLARATION (EFI_SEC_PLATFORM_INFORMATION_PPI); + +extern EFI_GUID gEfiSecPlatformInformationPpiGuid; + +typedef struct { + UINTN HealthFlags; +} SEC_PLATFORM_INFORMATION_RECORD; + +typedef struct { + UINTN BootPhase; // entry r20 value + UINTN UniqueId; // PAL arbitration ID + UINTN HealthStat; // Health Status + UINTN PALRetAddress; // return address to PAL +} IPF_HANDOFF_STATUS; + +typedef +EFI_STATUS +(EFIAPI *SEC_PLATFORM_INFORMATION) ( + IN EFI_PEI_SERVICES **PeiServices, + IN OUT UINT64 *StructureSize, + IN OUT SEC_PLATFORM_INFORMATION_RECORD * PlatformInformationRecord + ); + +typedef struct _EFI_SEC_PLATFORM_INFORMATION_PPI { + SEC_PLATFORM_INFORMATION PlatformInformation; +} EFI_SEC_PLATFORM_INFORMATION_PPI; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/SectionExtraction/SectionExtraction.c b/EDK/Foundation/Framework/Ppi/SectionExtraction/SectionExtraction.c new file mode 100644 index 0000000..7f3d962 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/SectionExtraction/SectionExtraction.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + SectionExtraction.c + +Abstract: + + Section Extraction Protocol PPI GUID as defined in Tiano + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (SectionExtraction) + +EFI_GUID gPeiSectionExtractionPpiGuid = EFI_PEI_SECTION_EXTRACTION_PPI_GUID; + +EFI_GUID_STRING(&gPeiSectionExtractionPpiGuid, "Section Extraction PPI", "Section Extraction PPI"); diff --git a/EDK/Foundation/Framework/Ppi/SectionExtraction/SectionExtraction.h b/EDK/Foundation/Framework/Ppi/SectionExtraction/SectionExtraction.h new file mode 100644 index 0000000..1e1a501 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/SectionExtraction/SectionExtraction.h @@ -0,0 +1,59 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + SectionExtraction.h + +Abstract: + + Section Extraction PPI as defined in Tiano + +--*/ + +#ifndef _SECTION_EXTRACTION_PPI_H_ +#define _SECTION_EXTRACTION_PPI_H_ + +#define EFI_PEI_SECTION_EXTRACTION_PPI_GUID \ + { \ + 0x4F89E208, 0xE144, 0x4804, 0x9E, 0xC8, 0x0F, 0x89, 0x4F, 0x7E, 0x36, 0xD7 \ + } + +EFI_FORWARD_DECLARATION (EFI_PEI_SECTION_EXTRACTION_PPI); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_GET_SECTION) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_SECTION_EXTRACTION_PPI * This, + IN EFI_SECTION_TYPE * SectionType, + IN EFI_GUID * SectionDefinitionGuid, OPTIONAL + IN UINTN SectionInstance, + IN VOID **Buffer, + IN OUT UINT32 *BufferSize, + OUT UINT32 *AuthenticationStatus + ); + +// +// Bit values for AuthenticationStatus +// +#define EFI_PEI_AUTH_STATUS_PLATFORM_OVERRIDE 0x01 +#define EFI_PEI_AUTH_STATUS_IMAGE_SIGNED 0x02 +#define EFI_PEI_AUTH_STATUS_NOT_TESTED 0x04 +#define EFI_PEI_AUTH_STATUS_TEST_FAILED 0x08 + +typedef struct _EFI_PEI_SECTION_EXTRACTION_PPI { + EFI_PEI_GET_SECTION PeiGetSection; +} EFI_PEI_SECTION_EXTRACTION_PPI; + +extern EFI_GUID gPeiSectionExtractionPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/Security/Security.c b/EDK/Foundation/Framework/Ppi/Security/Security.c new file mode 100644 index 0000000..9d18044 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Security/Security.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + Security.c + +Abstract: + + Security Architectural Protocol PPI GUID as defined in Tiano + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (Security) + +EFI_GUID gPeiSecurityPpiGuid = PEI_SECURITY_PPI_GUID; + +EFI_GUID_STRING(&gPeiSecurityPpiGuid, "Security PPI", "Security Arch PPI"); diff --git a/EDK/Foundation/Framework/Ppi/Security/Security.h b/EDK/Foundation/Framework/Ppi/Security/Security.h new file mode 100644 index 0000000..ec72ffa --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Security/Security.h @@ -0,0 +1,48 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + Security.h + +Abstract: + + Security Architectural PPI as defined in Tiano + +--*/ + +#ifndef _SECURITY_PPI_H_ +#define _SECURITY_PPI_H_ + +#define PEI_SECURITY_PPI_GUID \ + { \ + 0x1388066e, 0x3a57, 0x4efa, 0x98, 0xf3, 0xc1, 0x2f, 0x3a, 0x95, 0x8a, 0x29 \ + } + +EFI_FORWARD_DECLARATION (PEI_SECURITY_PPI); + +typedef +EFI_STATUS +(EFIAPI *PEI_SECURITY_AUTHENTICATION_STATE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_SECURITY_PPI * This, + IN UINT32 AuthenticationStatus, + IN EFI_FFS_FILE_HEADER * FfsFileHeader, + IN OUT BOOLEAN *StartCrisisRecovery + ); + +typedef struct _PEI_SECURITY_PPI { + PEI_SECURITY_AUTHENTICATION_STATE AuthenticationState; +} PEI_SECURITY_PPI; + +extern EFI_GUID gPeiSecurityPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/Security2/Security2.c b/EDK/Foundation/Framework/Ppi/Security2/Security2.c new file mode 100644 index 0000000..b2ada7f --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Security2/Security2.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + Security2.c + +Abstract: + + PI 1.0 spec definition. + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (Security2) + +EFI_GUID gEfiPeiSecurity2PpiGuid = EFI_PEI_SECURITY2_PPI_GUID; + +EFI_GUID_STRING(&gEfiPeiSecurity2PpiGuid, "Security2 PPI", "Security2 Arch PPI"); diff --git a/EDK/Foundation/Framework/Ppi/Security2/Security2.h b/EDK/Foundation/Framework/Ppi/Security2/Security2.h new file mode 100644 index 0000000..55d2031 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Security2/Security2.h @@ -0,0 +1,50 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + Security2.h + +Abstract: + + PI 1.0 spec definition. + +--*/ + + +#ifndef __SECURITY2_PPI_H__ +#define __SECURITY2_PPI_H__ + +#define EFI_PEI_SECURITY2_PPI_GUID \ + { 0xdcd0be23, 0x9586, 0x40f4, 0xb6, 0x43, 0x6, 0x52, 0x2c, 0xed, 0x4e, 0xde} + + +EFI_FORWARD_DECLARATION (EFI_PEI_SECURITY2_PPI); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_SECURITY_AUTHENTICATION_STATE) ( + IN CONST EFI_PEI_SERVICES **PeiServices, + IN CONST EFI_PEI_SECURITY2_PPI *This, + IN UINT32 AuthenticationStatus, + IN EFI_PEI_FV_HANDLE FvHandle, + IN EFI_PEI_FILE_HANDLE FileHandle, + IN OUT BOOLEAN *DeferExection + ); + +typedef struct _EFI_PEI_SECURITY2_PPI { + EFI_PEI_SECURITY_AUTHENTICATION_STATE AuthenticationState; +} EFI_PEI_SECURITY2_PPI; + + +extern EFI_GUID gEfiPeiSecurity2PpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/Smbus/Smbus.c b/EDK/Foundation/Framework/Ppi/Smbus/Smbus.c new file mode 100644 index 0000000..ad2340c --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Smbus/Smbus.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 1999 - 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. + + +Module Name: + + Smbus.c + +Abstract: + + Smbus PPI GUID as defined in EFI 2.0 + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (Smbus) + +EFI_GUID gPeiSmbusPpiGuid = PEI_SMBUS_PPI_GUID; + +EFI_GUID_STRING(&gPeiSmbusPpiGuid, "Smbus", "Smbus PPI"); diff --git a/EDK/Foundation/Framework/Ppi/Smbus/Smbus.h b/EDK/Foundation/Framework/Ppi/Smbus/Smbus.h new file mode 100644 index 0000000..c4c6fbe --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Smbus/Smbus.h @@ -0,0 +1,115 @@ +/*++ + +Copyright (c) 1999 - 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. + + +Module Name: + + Smbus.h + +Abstract: + + Smbus PPI as defined in EFI 2.0 + +--*/ + +#ifndef _PEI_SMBUS_PPI_H +#define _PEI_SMBUS_PPI_H + +#include "EfiSmbus.h" + +#define PEI_SMBUS_PPI_GUID \ + { \ + 0xabd42895, 0x78cf, 0x4872, 0x84, 0x44, 0x1b, 0x5c, 0x18, 0xb, 0xfb, 0xda \ + } + +EFI_FORWARD_DECLARATION (PEI_SMBUS_PPI); + +typedef +EFI_STATUS +(EFIAPI *PEI_SMBUS_PPI_EXECUTE_OPERATION) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_SMBUS_PPI * This, + IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress, + IN EFI_SMBUS_DEVICE_COMMAND Command, + IN EFI_SMBUS_OPERATION Operation, + IN BOOLEAN PecCheck, + IN OUT UINTN *Length, + IN OUT VOID *Buffer + ); + +//;;## ...AMI_OVERRIDE... Support PI1.x typedef struct { +//;;## ...AMI_OVERRIDE... Support PI1.x UINT32 VendorSpecificId; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT16 SubsystemDeviceId; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT16 SubsystemVendorId; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT16 Interface; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT16 DeviceId; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT16 VendorId; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT8 VendorRevision; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT8 DeviceCapabilities; +//;;## ...AMI_OVERRIDE... Support PI1.x } EFI_SMBUS_UDID; + +typedef +EFI_STATUS +(EFIAPI *PEI_SMBUS_NOTIFY_FUNCTION) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_SMBUS_PPI * SmbusPpi, + IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress, + IN UINTN Data + ); + +// +// If ArpAll is TRUE, SmbusUdid/SlaveAddress is Optional. +// If FALSE, ArpDevice will enum SmbusUdid and the address will be at SlaveAddress +// +typedef +EFI_STATUS +(EFIAPI *PEI_SMBUS_PPI_ARP_DEVICE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_SMBUS_PPI * This, + IN BOOLEAN ArpAll, + IN EFI_SMBUS_UDID * SmbusUdid, OPTIONAL + IN OUT EFI_SMBUS_DEVICE_ADDRESS * SlaveAddress OPTIONAL + ); + +//;;## ...AMI_OVERRIDE... Support PI1.x typedef struct { +//;;## ...AMI_OVERRIDE... Support PI1.x EFI_SMBUS_DEVICE_ADDRESS SmbusDeviceAddress; +//;;## ...AMI_OVERRIDE... Support PI1.x EFI_SMBUS_UDID SmbusDeviceUdid; +//;;## ...AMI_OVERRIDE... Support PI1.x } EFI_SMBUS_DEVICE_MAP; + +typedef +EFI_STATUS +(EFIAPI *PEI_SMBUS_PPI_GET_ARP_MAP) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_SMBUS_PPI * This, + IN OUT UINTN *Length, + IN OUT EFI_SMBUS_DEVICE_MAP **SmbusDeviceMap + ); + +typedef +EFI_STATUS +(EFIAPI *PEI_SMBUS_PPI_NOTIFY) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_SMBUS_PPI * This, + IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress, + IN UINTN Data, + IN PEI_SMBUS_NOTIFY_FUNCTION NotifyFunction + ); + +typedef struct _PEI_SMBUS_PPI { + PEI_SMBUS_PPI_EXECUTE_OPERATION Execute; + PEI_SMBUS_PPI_ARP_DEVICE ArpDevice; + PEI_SMBUS_PPI_GET_ARP_MAP GetArpMap; + PEI_SMBUS_PPI_NOTIFY Notify; +} PEI_SMBUS_PPI; + +extern EFI_GUID gPeiSmbusPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/Smbus2/Smbus2.c b/EDK/Foundation/Framework/Ppi/Smbus2/Smbus2.c new file mode 100644 index 0000000..bbd372a --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Smbus2/Smbus2.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2007, 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. + + +Module Name: + + Smbus2.c + +Abstract: + + Smbus2 PPI GUID as defined in PI1.0 + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (Smbus2) + +EFI_GUID gPeiSmbus2PpiGuid = PEI_SMBUS2_PPI_GUID; + +EFI_GUID_STRING(&gPeiSmbus2PpiGuid, "Smbus2", "Smbus2 PPI"); diff --git a/EDK/Foundation/Framework/Ppi/Smbus2/Smbus2.h b/EDK/Foundation/Framework/Ppi/Smbus2/Smbus2.h new file mode 100644 index 0000000..23bfa93 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Smbus2/Smbus2.h @@ -0,0 +1,96 @@ +/*++ + +Copyright (c) 2007, 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. + + +Module Name: + + Smbus2.h + +Abstract: + + Smbus2 PPI as defined in PI 1.0 + +--*/ + +#ifndef _PEI_SMBUS2_PPI_H +#define _PEI_SMBUS2_PPI_H + +#include "EfiSmbus.h" + +#define PEI_SMBUS2_PPI_GUID \ + { \ + 0x9ca93627, 0xb65b, 0x4324, 0xa2, 0x2, 0xc0, 0xb4, 0x61, 0x76, 0x45, 0x43 \ + } + +EFI_FORWARD_DECLARATION (EFI_PEI_SMBUS2_PPI); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_SMBUS2_PPI_EXECUTE_OPERATION) ( + IN CONST EFI_PEI_SMBUS2_PPI * This, + IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress, + IN EFI_SMBUS_DEVICE_COMMAND Command, + IN EFI_SMBUS_OPERATION Operation, + IN BOOLEAN PecCheck, + IN OUT UINTN *Length, + IN OUT VOID *Buffer + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_SMBUS_NOTIFY2_FUNCTION) ( + IN CONST EFI_PEI_SMBUS2_PPI * SmbusPpi, + IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress, + IN UINTN Data + ); + +// +// If ArpAll is TRUE, SmbusUdid/SlaveAddress is Optional. +// If FALSE, ArpDevice will enum SmbusUdid and the address will be at SlaveAddress +// +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_SMBUS2_PPI_ARP_DEVICE) ( + IN CONST EFI_PEI_SMBUS2_PPI * This, + IN BOOLEAN ArpAll, + IN EFI_SMBUS_UDID * SmbusUdid, OPTIONAL + IN OUT EFI_SMBUS_DEVICE_ADDRESS * SlaveAddress OPTIONAL + ); + + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_SMBUS2_PPI_GET_ARP_MAP) ( + IN CONST EFI_PEI_SMBUS2_PPI * This, + IN OUT UINTN *Length, + IN OUT EFI_SMBUS_DEVICE_MAP **SmbusDeviceMap + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_SMBUS2_PPI_NOTIFY) ( + IN CONST EFI_PEI_SMBUS2_PPI * This, + IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress, + IN UINTN Data, + IN EFI_PEI_SMBUS_NOTIFY2_FUNCTION NotifyFunction + ); + +typedef struct _EFI_PEI_SMBUS2_PPI { + EFI_PEI_SMBUS2_PPI_EXECUTE_OPERATION Execute; + EFI_PEI_SMBUS2_PPI_ARP_DEVICE ArpDevice; + EFI_PEI_SMBUS2_PPI_GET_ARP_MAP GetArpMap; + EFI_PEI_SMBUS2_PPI_NOTIFY Notify; + EFI_GUID Identifier; +} EFI_PEI_SMBUS2_PPI; + +extern EFI_GUID gPeiSmbus2PpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/Stall/Stall.c b/EDK/Foundation/Framework/Ppi/Stall/Stall.c new file mode 100644 index 0000000..8d00347 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Stall/Stall.c @@ -0,0 +1,28 @@ +/*++ + + Copyright (c) 1999 - 2002, 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. + +Module Name: + + Stall.c + +Abstract: + + Stall PPI + +--*/ + +#include "Tiano.h" +#include "Pei.h" +#include EFI_PPI_DEFINITION (Stall) + +EFI_GUID gPeiStallPpiGuid = PEI_STALL_PPI_GUID; + +EFI_GUID_STRING(&gPeiStallPpiGuid, "Stall", "Stall PPI"); diff --git a/EDK/Foundation/Framework/Ppi/Stall/Stall.h b/EDK/Foundation/Framework/Ppi/Stall/Stall.h new file mode 100644 index 0000000..c878a63 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Stall/Stall.h @@ -0,0 +1,47 @@ +/*++ + + Copyright (c) 1999 - 2002, 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. + +Module Name: + + Stall.h + +Abstract: + + Stall PPI + +--*/ + +#ifndef _PEI_STALL_PPI_H_ +#define _PEI_STALL_PPI_H_ + +#define PEI_STALL_PPI_GUID \ + { \ + 0x1f4c6f90, 0xb06b, 0x48d8, 0xa2, 0x01, 0xba, 0xe5, 0xf1, 0xcd, 0x7d, 0x56 \ + } + +EFI_FORWARD_DECLARATION (PEI_STALL_PPI); + +typedef +EFI_STATUS +(EFIAPI *PEI_STALL) ( + IN EFI_PEI_SERVICES **PeiServices, + IN PEI_STALL_PPI * This, + IN UINTN Microseconds + ); + +typedef struct _PEI_STALL_PPI { + UINTN Resolution; + PEI_STALL Stall; +} PEI_STALL_PPI; + +extern EFI_GUID gPeiStallPpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/StatusCode/StatusCode.c b/EDK/Foundation/Framework/Ppi/StatusCode/StatusCode.c new file mode 100644 index 0000000..6fc697c --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/StatusCode/StatusCode.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + StatusCode.c + +Abstract: + + Status Code PPI GUID as defined in PEI EAS + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (StatusCode) + +EFI_GUID gPeiStatusCodePpiGuid = PEI_STATUS_CODE_PPI_GUID; + +EFI_GUID_STRING(&gPeiProgressCodePpiGuid, "StatusCode", "Status Code PPI"); diff --git a/EDK/Foundation/Framework/Ppi/StatusCode/StatusCode.h b/EDK/Foundation/Framework/Ppi/StatusCode/StatusCode.h new file mode 100644 index 0000000..a19800b --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/StatusCode/StatusCode.h @@ -0,0 +1,49 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + StatusCode.h + +Abstract: + + Status Code PPI as defined in Tiano + +--*/ + +#ifndef _PEI_STATUS_CODE_PPI_H +#define _PEI_STATUS_CODE_PPI_H + +#define PEI_STATUS_CODE_PPI_GUID \ + { \ + 0x229832d3, 0x7a30, 0x4b36, 0xb8, 0x27, 0xf4, 0xc, 0xb7, 0xd4, 0x54, 0x36 \ + } + +EFI_FORWARD_DECLARATION (PEI_STATUS_CODE_PPI); + +typedef +EFI_STATUS +(EFIAPI *PEI_REPORT_STATUS_CODE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_STATUS_CODE_TYPE CodeType, + IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, + IN EFI_GUID * CallerId, + IN EFI_STATUS_CODE_DATA * Data OPTIONAL + ); + +typedef struct _PEI_STATUS_CODE_PPI { + PEI_REPORT_STATUS_CODE ReportStatusCode; +} PEI_STATUS_CODE_PPI; + +extern EFI_GUID gPeiStatusCodePpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/Variable/Variable.c b/EDK/Foundation/Framework/Ppi/Variable/Variable.c new file mode 100644 index 0000000..77d8359 --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Variable/Variable.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + Variable.c + +Abstract: + + Boot Mode PPI GUID as defined in PEI EAS + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (Variable) + +EFI_GUID gPeiReadOnlyVariablePpiGuid = PEI_READ_ONLY_VARIABLE_ACCESS_PPI_GUID; + +EFI_GUID_STRING(&gPeiReadOnlyVariablePpiGuid, "Variable", "Read Only Variable PPI"); diff --git a/EDK/Foundation/Framework/Ppi/Variable/Variable.h b/EDK/Foundation/Framework/Ppi/Variable/Variable.h new file mode 100644 index 0000000..90965cb --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Variable/Variable.h @@ -0,0 +1,69 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + Variable.h + +Abstract: + + Read-only Variable Service PPI as defined in Tiano + +--*/ + +#ifndef _PEI_READ_ONLY_VARIABLE_PPI_H +#define _PEI_READ_ONLY_VARIABLE_PPI_H + +#include "EfiVariable.h" //;;## ...AMI_OVERRIDE... Support PI1.x + +#define PEI_READ_ONLY_VARIABLE_ACCESS_PPI_GUID \ + { \ + 0x3cdc90c6, 0x13fb, 0x4a75, 0x9e, 0x79, 0x59, 0xe9, 0xdd, 0x78, 0xb9, 0xfa \ + } + +// +// Variable attributes +// +//;;## ...AMI_OVERRIDE... Support PI1.x #define EFI_VARIABLE_NON_VOLATILE 0x00000001 +//;;## ...AMI_OVERRIDE... Support PI1.x #define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 +//;;## ...AMI_OVERRIDE... Support PI1.x #define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004 +//;;## ...AMI_OVERRIDE... Support PI1.x #define EFI_VARIABLE_READ_ONLY 0x00000008 + +typedef +EFI_STATUS +(EFIAPI *PEI_GET_VARIABLE) ( + IN EFI_PEI_SERVICES **PeiServices, + IN CHAR16 *VariableName, + IN EFI_GUID * VendorGuid, + OUT UINT32 *Attributes OPTIONAL, + IN OUT UINTN *DataSize, + OUT VOID *Data + ); + +typedef +EFI_STATUS +(EFIAPI *PEI_GET_NEXT_VARIABLE_NAME) ( + IN EFI_PEI_SERVICES **PeiServices, + IN OUT UINTN *VariableNameSize, + IN OUT CHAR16 *VariableName, + IN OUT EFI_GUID * VendorGuid + ); + +typedef struct PEI_READ_ONLY_VARIABLE_PPI { + PEI_GET_VARIABLE PeiGetVariable; + PEI_GET_NEXT_VARIABLE_NAME PeiGetNextVariableName; +} PEI_READ_ONLY_VARIABLE_PPI; + +EFI_FORWARD_DECLARATION (PEI_MASTER_BOOT_MODE_PPI); + +extern EFI_GUID gPeiReadOnlyVariablePpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Ppi/Variable2/Variable2.c b/EDK/Foundation/Framework/Ppi/Variable2/Variable2.c new file mode 100644 index 0000000..3f4d57a --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Variable2/Variable2.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + Variable2.c + +Abstract: + + Read-only Variable2 Service PPI as defined in PI1.0 + +--*/ + +#include "Tiano.h" +#include "PeiBind.h" +#include "PeiApi.h" +#include EFI_PPI_DEFINITION (Variable2) + +EFI_GUID gPeiReadOnlyVariable2PpiGuid = EFI_PEI_READ_ONLY_VARIABLE2_PPI_GUID; + +EFI_GUID_STRING(&gPeiReadOnlyVariable2PpiGuid, "Variable2", "Read Only Variable2 PPI"); diff --git a/EDK/Foundation/Framework/Ppi/Variable2/Variable2.h b/EDK/Foundation/Framework/Ppi/Variable2/Variable2.h new file mode 100644 index 0000000..31020ed --- /dev/null +++ b/EDK/Foundation/Framework/Ppi/Variable2/Variable2.h @@ -0,0 +1,61 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + Variable2.h + +Abstract: + + Read-only Variable2 Service PPI as defined in PI1.0 + +--*/ + +#ifndef _PEI_READ_ONLY_VARIABLE2_PPI_H +#define _PEI_READ_ONLY_VARIABLE2_PPI_H + +#include "EfiVariable.h" + +#define EFI_PEI_READ_ONLY_VARIABLE2_PPI_GUID \ + { \ + 0x2ab86ef5, 0xecb5, 0x4134, 0xb5, 0x56, 0x38, 0x54, 0xca, 0x1f, 0xe1, 0xb4 \ + } + +EFI_FORWARD_DECLARATION (EFI_PEI_READ_ONLY_VARIABLE2_PPI); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_GET_VARIABLE2) ( + IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This, + IN CONST CHAR16 *VariableName, + IN CONST EFI_GUID *VariableGuid, + OUT UINT32 *Attributes, + IN OUT UINTN *DataSize, + OUT VOID *Data + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_PEI_GET_NEXT_VARIABLE_NAME2) ( + IN CONST EFI_PEI_READ_ONLY_VARIABLE2_PPI *This, + IN OUT UINTN *VariableNameSize, + IN OUT CHAR16 *VariableName, + IN OUT EFI_GUID *VariableGuid + ); + +typedef struct _EFI_PEI_READ_ONLY_VARIABLE2_PPI { + EFI_PEI_GET_VARIABLE2 GetVariable; + EFI_PEI_GET_NEXT_VARIABLE_NAME2 GetNextVariableName; +} EFI_PEI_READ_ONLY_VARIABLE2_PPI; + +extern EFI_GUID gPeiReadOnlyVariable2PpiGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/AcpiS3Save/AcpiS3Save.c b/EDK/Foundation/Framework/Protocol/AcpiS3Save/AcpiS3Save.c new file mode 100644 index 0000000..cca3c2f --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/AcpiS3Save/AcpiS3Save.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + AcpiS3Save.c + +Abstract: + + Tiano Tiano S3 Save Protocol + +--*/ + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (AcpiS3Save) + +EFI_GUID gEfiAcpiS3SaveGuid = EFI_ACPI_S3_SAVE_GUID; + +EFI_GUID_STRING(&gEfiAcpiS3SaveGuid, "EFI Acpi S3 Save Protocol", "Tiano Acpi S3 Save Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/AcpiS3Save/AcpiS3Save.h b/EDK/Foundation/Framework/Protocol/AcpiS3Save/AcpiS3Save.h new file mode 100644 index 0000000..bdd61b4 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/AcpiS3Save/AcpiS3Save.h @@ -0,0 +1,68 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + AcpiS3Save.h + +Abstract: + + +--*/ + +#ifndef _ACPI_S3_SAVE_PROTOCOL_H +#define _ACPI_S3_SAVE_PROTOCOL_H + +// +// Includes +// +#include "Tiano.h" + +// +// Forward reference for pure ANSI compatability +// +EFI_FORWARD_DECLARATION (EFI_ACPI_S3_SAVE_PROTOCOL); + +// +// S3 Save Protocol GUID +// +#define EFI_ACPI_S3_SAVE_GUID \ + { \ + 0x125f2de1, 0xfb85, 0x440c, 0xa5, 0x4c, 0x4d, 0x99, 0x35, 0x8a, 0x8d, 0x38 \ + } + +// +// Protocol Data Structures +// +typedef +EFI_STATUS +EFI_BOOTSERVICE +(EFIAPI *EFI_ACPI_S3_SAVE) ( + IN EFI_ACPI_S3_SAVE_PROTOCOL * This, + IN VOID * LegacyMemoryAddress + ); + +typedef +EFI_STATUS +EFI_BOOTSERVICE +(EFIAPI *EFI_ACPI_GET_LEGACY_MEMORY_SIZE) ( + IN EFI_ACPI_S3_SAVE_PROTOCOL * This, + OUT UINTN * Size +); + +typedef struct _EFI_ACPI_S3_SAVE_PROTOCOL { + EFI_ACPI_GET_LEGACY_MEMORY_SIZE GetLegacyMemorySize; + EFI_ACPI_S3_SAVE S3Save; +} EFI_ACPI_S3_SAVE_PROTOCOL; + +extern EFI_GUID gEfiAcpiS3SaveGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/AcpiSupport/AcpiSupport.c b/EDK/Foundation/Framework/Protocol/AcpiSupport/AcpiSupport.c new file mode 100644 index 0000000..7723b32 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/AcpiSupport/AcpiSupport.c @@ -0,0 +1,29 @@ +/*++ + +Copyright (c) 1999 - 2005, 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. + + +Module Name: + + AcpiSupport.c + +Abstract: + + Tiano EFI 2.0 ACPI Support Protocol + +--*/ + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (AcpiSupport) + +EFI_GUID gEfiAcpiSupportGuid = EFI_ACPI_SUPPORT_GUID; + +EFI_GUID_STRING(&gEfiAcpiSupportGuid, "ACPI Support Protocol", "EFI 2.0 ACPI Support Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/AcpiSupport/AcpiSupport.h b/EDK/Foundation/Framework/Protocol/AcpiSupport/AcpiSupport.h new file mode 100644 index 0000000..10205fa --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/AcpiSupport/AcpiSupport.h @@ -0,0 +1,128 @@ +/*++ + +Copyright (c) 1999 - 2005, 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. + + +Module Name: + + AcpiSupport.h + +Abstract: + + Definition of the ACPI Support protocol. This is defined in the + Tiano ACPI External Product Specification, revision 0.5.1. + +--*/ + +#ifndef _ACPI_SUPPORT_PROTOCOL_H_ +#define _ACPI_SUPPORT_PROTOCOL_H_ + +// +// Includes +// +#include "Tiano.h" + +// +// Forward reference for pure ANSI compatability +// +EFI_FORWARD_DECLARATION (EFI_ACPI_SUPPORT_PROTOCOL); + +// +// ACPI Support Protocol GUID +// +#define EFI_ACPI_SUPPORT_GUID \ + { \ + 0xdbff9d55, 0x89b7, 0x46da, 0xbd, 0xdf, 0x67, 0x7d, 0x3d, 0xc0, 0x24, 0x1d \ + } + +// +// Extern the GUID for protocol users. +// +extern EFI_GUID gEfiAcpiSupportGuid; + +// +// Protocol Data Definitions +// +// +// ACPI Version bitmap definition: +// +// EFI_ACPI_TABLE_VERSION_1_0B - ACPI Version 1.0b +// EFI_ACPI_TABLE_VERSION_2_0 - ACPI Version 2.0 +// EFI_ACPI_TABLE_VERSION_3_0 - ACPI Version 3.0 +// EFI_ACPI_TABLE_VERSION_NONE - No ACPI Versions. This might be used +// to create memory-based operation regions or other information +// that is not part of the ACPI "tree" but must still be found +// in ACPI memory space and/or managed by the core ACPI driver. +// +// Note that EFI provides discrete GUIDs for each version of ACPI +// that is supported. It is expected that each EFI GUIDed +// version of ACPI will also have a corresponding bitmap +// definition. This allows maintenance of separate ACPI trees +// for each distinctly different version of ACPI. +// +#define EFI_ACPI_TABLE_VERSION UINT32 + +#define EFI_ACPI_TABLE_VERSION_NONE (1 << 0) +#define EFI_ACPI_TABLE_VERSION_1_0B (1 << 1) +#define EFI_ACPI_TABLE_VERSION_2_0 (1 << 2) +#define EFI_ACPI_TABLE_VERSION_3_0 (1 << 3) + +// +// Protocol Member Functions +// +// +// Retrieve a copy of an ACPI table and the handle of the table. +// +typedef +EFI_STATUS +EFI_BOOTSERVICE +(EFIAPI *EFI_ACPI_GET_ACPI_TABLE) ( + IN EFI_ACPI_SUPPORT_PROTOCOL * This, + IN INTN Index, + OUT VOID **Table, + OUT EFI_ACPI_TABLE_VERSION * Version, + OUT UINTN *Handle + ); + +// +// Add, update, or remove a table. +// +typedef +EFI_STATUS +EFI_BOOTSERVICE +(EFIAPI *EFI_ACPI_SET_ACPI_TABLE) ( + IN EFI_ACPI_SUPPORT_PROTOCOL * This, + IN VOID *Table OPTIONAL, + IN BOOLEAN Checksum, + IN EFI_ACPI_TABLE_VERSION Version, + IN OUT UINTN *Handle + ); + +// +// Publish tables to the outside world +// +typedef +EFI_STATUS +EFI_BOOTSERVICE +(EFIAPI *EFI_ACPI_PUBLISH_TABLES) ( + IN EFI_ACPI_SUPPORT_PROTOCOL * This, + IN EFI_ACPI_TABLE_VERSION Version + ); + +// +// ACPI Support Protocol +// +typedef struct _EFI_ACPI_SUPPORT_PROTOCOL { + EFI_ACPI_GET_ACPI_TABLE GetAcpiTable; + EFI_ACPI_SET_ACPI_TABLE SetAcpiTable; + EFI_ACPI_PUBLISH_TABLES PublishTables; +} EFI_ACPI_SUPPORT_PROTOCOL; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/BootScriptSave/BootScriptSave.c b/EDK/Foundation/Framework/Protocol/BootScriptSave/BootScriptSave.c new file mode 100644 index 0000000..d196780 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/BootScriptSave/BootScriptSave.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 1999 - 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. + +Module Name: + + BootScriptSave.c + +Abstract: + + S3 Save Protocol + +--*/ + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (BootScriptSave) + +EFI_GUID gEfiBootScriptSaveGuid = EFI_BOOT_SCRIPT_SAVE_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiBootScriptSaveGuid, "EFI Boot Script Save Protocol", "EFI Boot Script Save Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/BootScriptSave/BootScriptSave.h b/EDK/Foundation/Framework/Protocol/BootScriptSave/BootScriptSave.h new file mode 100644 index 0000000..ff103e8 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/BootScriptSave/BootScriptSave.h @@ -0,0 +1,75 @@ +/*++ + +Copyright (c) 1999 - 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. + +Module Name: + + BootScriptSave.h + +Abstract: + + S3 Save Protocol + +--*/ + +#ifndef _BOOT_SCRIPT_SAVE_PROTOCOL_H +#define _BOOT_SCRIPT_SAVE_PROTOCOL_H + +// +// Includes +// +#include "Tiano.h" + +// +// Forward reference for pure ANSI compatability +// +EFI_FORWARD_DECLARATION (EFI_BOOT_SCRIPT_SAVE_PROTOCOL); + +// +// S3 Save Protocol GUID +// +#define EFI_BOOT_SCRIPT_SAVE_PROTOCOL_GUID \ + { \ + 0x470e1529, 0xb79e, 0x4e32, 0xa0, 0xfe, 0x6a, 0x15, 0x6d, 0x29, 0xf9, 0xb2 \ + } + +// +// Protocol Data Structures +// +typedef +EFI_STATUS +EFI_BOOTSERVICE +(EFIAPI *EFI_BOOT_SCRIPT_WRITE) ( + IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL * This, + IN UINT16 TableName, + IN UINT16 OpCode, + ... + ); + +typedef +EFI_STATUS +EFI_BOOTSERVICE +(EFIAPI *EFI_BOOT_SCRIPT_CLOSE_TABLE) ( + IN EFI_BOOT_SCRIPT_SAVE_PROTOCOL * This, + IN UINT16 TableName, + OUT EFI_PHYSICAL_ADDRESS * Address + ); + +// +// S3 Save Protocol data structure +// +typedef struct _EFI_BOOT_SCRIPT_SAVE_PROTOCOL { + EFI_BOOT_SCRIPT_WRITE Write; + EFI_BOOT_SCRIPT_CLOSE_TABLE CloseTable; +} EFI_BOOT_SCRIPT_SAVE_PROTOCOL; + +extern EFI_GUID gEfiBootScriptSaveGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/CpuIo/CpuIo.c b/EDK/Foundation/Framework/Protocol/CpuIo/CpuIo.c new file mode 100644 index 0000000..f3044b3 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/CpuIo/CpuIo.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + CpuIO.c + +Abstract: + + CPU IO Protocol GUID as defined in Tiano + + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (CpuIo) + +EFI_GUID gEfiCpuIoProtocolGuid = EFI_CPU_IO_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiCpuIoProtocolGuid, "CPU IO", "CPU IO Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/CpuIo/CpuIo.h b/EDK/Foundation/Framework/Protocol/CpuIo/CpuIo.h new file mode 100644 index 0000000..1e8fb70 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/CpuIo/CpuIo.h @@ -0,0 +1,93 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + CpuIO.h + +Abstract: + + CPU IO Protocol as defined in Tiano + + This code abstracts the CPU IO Protocol + +--*/ + +#ifndef _CPUIO_H_ +#define _CPUIO_H_ + +#define EFI_CPU_IO_PROTOCOL_GUID \ + { \ + 0xB0732526, 0x38C8, 0x4b40, 0x88, 0x77, 0x61, 0xC7, 0xB0, 0x6A, 0xAC, 0x45 \ + } + +EFI_FORWARD_DECLARATION (EFI_CPU_IO_PROTOCOL); + +// +// ******************************************************* +// EFI_CPU_IO_PROTOCOL_WIDTH +// ******************************************************* +// +typedef enum { + EfiCpuIoWidthUint8, + EfiCpuIoWidthUint16, + EfiCpuIoWidthUint32, + EfiCpuIoWidthUint64, + EfiCpuIoWidthFifoUint8, + EfiCpuIoWidthFifoUint16, + EfiCpuIoWidthFifoUint32, + EfiCpuIoWidthFifoUint64, + EfiCpuIoWidthFillUint8, + EfiCpuIoWidthFillUint16, + EfiCpuIoWidthFillUint32, + EfiCpuIoWidthFillUint64, + EfiCpuIoWidthMaximum +} EFI_CPU_IO_PROTOCOL_WIDTH; + +// +// ******************************************************* +// EFI_CPU_IO_PROTOCOL_IO_MEM +// ******************************************************* +// +typedef +EFI_STATUS +EFI_RUNTIMESERVICE +(EFIAPI *EFI_CPU_IO_PROTOCOL_IO_MEM) ( + IN EFI_CPU_IO_PROTOCOL * This, + IN EFI_CPU_IO_PROTOCOL_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer + ); + +// +// ******************************************************* +// EFI_CPU_IO_PROTOCOL_ACCESS +// ******************************************************* +// +typedef struct { + EFI_CPU_IO_PROTOCOL_IO_MEM Read; + EFI_CPU_IO_PROTOCOL_IO_MEM Write; +} EFI_CPU_IO_PROTOCOL_ACCESS; + +// +// ******************************************************* +// EFI_CPU_IO_PROTOCOL +// ******************************************************* +// +typedef struct _EFI_CPU_IO_PROTOCOL { + EFI_CPU_IO_PROTOCOL_ACCESS Mem; + EFI_CPU_IO_PROTOCOL_ACCESS Io; +} EFI_CPU_IO_PROTOCOL; + +extern EFI_GUID gEfiCpuIoProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/DataHub/DataHub.c b/EDK/Foundation/Framework/Protocol/DataHub/DataHub.c new file mode 100644 index 0000000..7cc5e29 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/DataHub/DataHub.c @@ -0,0 +1,32 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + DataHub.c + +Abstract: + + The logging hub protocol is used both by agents wishing to log + errors and those wishing to be made aware of all information that + has been logged. + + For more information please look at Intel Platform Innovation + Framework for EFI Data Hub Specification. + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (DataHub) + +EFI_GUID gEfiDataHubProtocolGuid = EFI_DATA_HUB_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiDataHubProtocolGuid, "DataHub Protocol", "EFI Data Hub Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/DataHub/DataHub.h b/EDK/Foundation/Framework/Protocol/DataHub/DataHub.h new file mode 100644 index 0000000..5245eca --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/DataHub/DataHub.h @@ -0,0 +1,125 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + DataHub.h + +Abstract: + + The data hub protocol is used both by agents wishing to log + data and those wishing to be made aware of all information that + has been logged. + + For more information please look at Intel Platform Innovation + Framework for EFI Data Hub Specification. + +--*/ + +#ifndef __DATA_HUB_H__ +#define __DATA_HUB_H__ + +#define EFI_DATA_HUB_PROTOCOL_GUID \ + { \ + 0xae80d021, 0x618e, 0x11d4, 0xbc, 0xd7, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 \ + } + +// +// EFI generic Data Hub Header +// +// A Data Record is an EFI_DATA_RECORD_HEADER followed by RecordSize bytes of +// data. The format of the data is defined by the DataRecordGuid. +// +// If EFI_DATA_RECORD_HEADER is extended in the future the Version number must +// change and the HeaderSize will change if the definition of +// EFI_DATA_RECORD_HEADER is extended. +// +// The logger is responcible for initializing: +// Version, HeaderSize, RecordSize, DataRecordGuid, DataRecordClass +// +// The Data Hub driver is responcible for initializing: +// LogTime and LogMonotonicCount. +// +#define EFI_DATA_RECORD_HEADER_VERSION 0x0100 +typedef struct { + UINT16 Version; + UINT16 HeaderSize; + UINT32 RecordSize; + EFI_GUID DataRecordGuid; + EFI_GUID ProducerName; + UINT64 DataRecordClass; + EFI_TIME LogTime; + UINT64 LogMonotonicCount; +} EFI_DATA_RECORD_HEADER; + +// +// Definition of DataRecordClass. These are used to filter out class types +// at a very high level. The DataRecordGuid still defines the format of +// the data. See DateHub.doc for rules on what can and can not be a +// new DataRecordClass +// +#define EFI_DATA_RECORD_CLASS_DEBUG 0x0000000000000001 +#define EFI_DATA_RECORD_CLASS_ERROR 0x0000000000000002 +#define EFI_DATA_RECORD_CLASS_DATA 0x0000000000000004 +#define EFI_DATA_RECORD_CLASS_PROGRESS_CODE 0x0000000000000008 + +// +// Forward reference for pure ANSI compatability +// +EFI_FORWARD_DECLARATION (EFI_DATA_HUB_PROTOCOL); + +typedef +EFI_STATUS +(EFIAPI *EFI_DATA_HUB_LOG_DATA) ( + IN EFI_DATA_HUB_PROTOCOL * This, + IN EFI_GUID * DataRecordGuid, + IN EFI_GUID * ProducerName, + IN UINT64 DataRecordClass, + IN VOID *RawData, + IN UINT32 RawDataSize + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_DATA_HUB_GET_NEXT_RECORD) ( + IN EFI_DATA_HUB_PROTOCOL * This, + IN OUT UINT64 *MonotonicCount, + IN EFI_EVENT * FilterDriver OPTIONAL, + OUT EFI_DATA_RECORD_HEADER **Record + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_DATA_HUB_REGISTER_FILTER_DRIVER) ( + IN EFI_DATA_HUB_PROTOCOL * This, + IN EFI_EVENT FilterEvent, + IN EFI_TPL FilterTpl, + IN UINT64 FilterClass, + IN EFI_GUID * FilterDataRecordGuid OPTIONAL + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_DATA_HUB_UNREGISTER_FILTER_DRIVER) ( + IN EFI_DATA_HUB_PROTOCOL * This, + IN EFI_EVENT FilterEvent + ); + +typedef struct _EFI_DATA_HUB_PROTOCOL { + EFI_DATA_HUB_LOG_DATA LogData; + EFI_DATA_HUB_GET_NEXT_RECORD GetNextRecord; + EFI_DATA_HUB_REGISTER_FILTER_DRIVER RegisterFilterDriver; + EFI_DATA_HUB_UNREGISTER_FILTER_DRIVER UnregisterFilterDriver; +} EFI_DATA_HUB_PROTOCOL; + +extern EFI_GUID gEfiDataHubProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/EdkFrameworkProtocolLib.cif b/EDK/Foundation/Framework/Protocol/EdkFrameworkProtocolLib.cif new file mode 100644 index 0000000..25fe8c8 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/EdkFrameworkProtocolLib.cif @@ -0,0 +1,87 @@ +<component> + name = "EdkFrameworkProtocolLib" + category = ModulePart + LocalRoot = "Edk\Foundation\Framework\Protocol\" + RefName = "EdkFrameworkProtocolLib" +[files] +"EdkFrameworkProtocolLib.sdl" +"EdkFrameworkProtocolLib.mak" +"AcpiS3Save\AcpiS3Save.h" +"AcpiS3Save\AcpiS3Save.c" +"AcpiSupport\AcpiSupport.h" +"AcpiSupport\AcpiSupport.c" +"BootScriptSave\BootScriptSave.h" +"BootScriptSave\BootScriptSave.c" +"CpuIo\CpuIo.h" +"CpuIo\CpuIo.c" +"DataHub\DataHub.h" +"DataHub\DataHub.c" +"ExitPmAuth\ExitPmAuth.h" +"ExitPmAuth\ExitPmAuth.c" +"FirmwareVolume\FirmwareVolume.h" +"FirmwareVolume\FirmwareVolume.c" +"FirmwareVolume2\FirmwareVolume2.h" +"FirmwareVolume2\FirmwareVolume2.c" +"FirmwareVolumeBlock\FirmwareVolumeBlock.h" +"FirmwareVolumeBlock\FirmwareVolumeBlock.c" +"FormBrowser\FormBrowser.h" +"FormBrowser\FormBrowser.c" +"FormCallback\FormCallback.h" +"FormCallback\FormCallback.c" +"Hii\Hii.h" +"Hii\Hii.c" +"IdeControllerInit\IdeControllerInit.h" +"IdeControllerInit\IdeControllerInit.c" +"IncompatiblePciDeviceSupport\IncompatiblePciDeviceSupport.h" +"IncompatiblePciDeviceSupport\IncompatiblePciDeviceSupport.c" +"Legacy8259\Legacy8259.h" +"Legacy8259\Legacy8259.c" +"LegacyBios\LegacyBios.h" +"LegacyBios\LegacyBios.c" +"LegacyBiosPlatform\LegacyBiosPlatform.h" +"LegacyBiosPlatform\LegacyBiosPlatform.c" +"LegacyInterrupt\LegacyInterrupt.h" +"LegacyInterrupt\LegacyInterrupt.c" +"LegacyRegion\LegacyRegion.h" +"LegacyRegion\LegacyRegion.c" +"PciHostBridgeResourceAllocation\PciHostBridgeResourceAllocation.h" +"PciHostBridgeResourceAllocation\PciHostBridgeResourceAllocation.c" +"PciHotPlugInit\PciHotPlugInit.h" +"PciHotPlugInit\PciHotPlugInit.c" +"PciPlatform\PciPlatform.h" +"PciPlatform\PciPlatform.c" +"SectionExtraction\SectionExtraction.h" +"SectionExtraction\SectionExtraction.c" +"SecurityPolicy\SecurityPolicy.h" +"SecurityPolicy\SecurityPolicy.c" +"Smbus\Smbus.h" +"Smbus\Smbus.c" +"SmmAccess\SmmAccess.h" +"SmmAccess\SmmAccess.c" +"SmmBase\SmmBase.h" +"SmmBase\SmmBase.c" +"SmmControl\SmmControl.h" +"SmmControl\SmmControl.c" +"SmmCpuState\CpuSaveState.h" +"SmmCpuState\SmmCpuState.h" +"SmmCpuState\SmmCpuState.c" +"SmmGpiDispatch\SmmGpiDispatch.h" +"SmmGpiDispatch\SmmGpiDispatch.c" +"SmmIchnDispatch\SmmIchnDispatch.h" +"SmmIchnDispatch\SmmIchnDispatch.c" +"SmmPeriodicTimerDispatch\SmmPeriodicTimerDispatch.h" +"SmmPeriodicTimerDispatch\SmmPeriodicTimerDispatch.c" +"SmmPowerButtonDispatch\SmmPowerButtonDispatch.h" +"SmmPowerButtonDispatch\SmmPowerButtonDispatch.c" +"SmmStandbyButtonDispatch\SmmStandbyButtonDispatch.h" +"SmmStandbyButtonDispatch\SmmStandbyButtonDispatch.c" +"SmmStatusCode\SmmStatusCode.h" +"SmmStatusCode\SmmStatusCode.c" +"SmmSwDispatch\SmmSwDispatch.h" +"SmmSwDispatch\SmmSwDispatch.c" +"SmmSxDispatch\SmmSxDispatch.h" +"SmmSxDispatch\SmmSxDispatch.c" +"SmmUsbDispatch\SmmUsbDispatch.h" +"SmmUsbDispatch\SmmUsbDispatch.c" +"EdkFrameworkProtocolLib.inf" +<endComponent> diff --git a/EDK/Foundation/Framework/Protocol/EdkFrameworkProtocolLib.inf b/EDK/Foundation/Framework/Protocol/EdkFrameworkProtocolLib.inf new file mode 100644 index 0000000..2e1b3e6 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/EdkFrameworkProtocolLib.inf @@ -0,0 +1,117 @@ +#/*++ +# +# Copyright (c) 2004, 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. +# +# Module Name: +# +# EdkFrameworkProtocolLib.inf +# +# Abstract: +# +# Component description file. +# +#--*/ + +[defines] +BASE_NAME= EdkFrameworkProtocolLib +COMPONENT_TYPE= LIBRARY + +[includes.common] + $(EDK_SOURCE)\Foundation\Framework + $(EDK_SOURCE)\Foundation\Efi + $(EDK_SOURCE)\Foundation\Include + $(EDK_SOURCE)\Foundation\Efi\Include + $(EDK_SOURCE)\Foundation\Framework\Include + $(EDK_SOURCE)\Foundation\Include\IndustryStandard + $(EDK_SOURCE)\Foundation\Include\Pei + $(EDK_SOURCE)\Foundation\Library\Pei\Include + $(EDK_SOURCE)\Foundation\Core\Dxe + $(EDK_SOURCE)\Foundation\Library\Dxe\Include + +[nmake.common] +C_STD_INCLUDE= + +[sources.common] + AcpiS3Save\AcpiS3Save.h + AcpiS3Save\AcpiS3Save.c + AcpiSupport\AcpiSupport.h + AcpiSupport\AcpiSupport.c + BootScriptSave\BootScriptSave.h + BootScriptSave\BootScriptSave.c + CpuIo\CpuIo.h + CpuIo\CpuIo.c + DataHub\DataHub.h + DataHub\DataHub.c + ExitPmAuth\ExitPmAuth.h + ExitPmAuth\ExitPmAuth.c + FirmwareVolume\FirmwareVolume.h + FirmwareVolume\FirmwareVolume.c + FirmwareVolumeBlock\FirmwareVolumeBlock.h + FirmwareVolumeBlock\FirmwareVolumeBlock.c + FormBrowser\FormBrowser.h + FormBrowser\FormBrowser.c + FormCallback\FormCallback.h + FormCallback\FormCallback.c + Hii\Hii.h + Hii\Hii.c + IdeControllerInit\IdeControllerInit.h + IdeControllerInit\IdeControllerInit.c + IncompatiblePciDeviceSupport\IncompatiblePciDeviceSupport.h + IncompatiblePciDeviceSupport\IncompatiblePciDeviceSupport.c + Legacy8259\Legacy8259.h + Legacy8259\Legacy8259.c + LegacyBios\LegacyBios.h + LegacyBios\LegacyBios.c + LegacyBiosPlatform\LegacyBiosPlatform.h + LegacyBiosPlatform\LegacyBiosPlatform.c + LegacyInterrupt\LegacyInterrupt.h + LegacyInterrupt\LegacyInterrupt.c + LegacyRegion\LegacyRegion.h + LegacyRegion\LegacyRegion.c + PciHostBridgeResourceAllocation\PciHostBridgeResourceAllocation.h + PciHostBridgeResourceAllocation\PciHostBridgeResourceAllocation.c + PciHotPlugInit\PciHotPlugInit.h + PciHotPlugInit\PciHotPlugInit.c + PciPlatform\PciPlatform.h + PciPlatform\PciPlatform.c + SectionExtraction\SectionExtraction.h + SectionExtraction\SectionExtraction.c + SecurityPolicy\SecurityPolicy.h + SecurityPolicy\SecurityPolicy.c + Smbus\Smbus.h + Smbus\Smbus.c + +[sources.ia32,sources.x64] + SmmAccess\SmmAccess.h + SmmAccess\SmmAccess.c + SmmBase\SmmBase.h + SmmBase\SmmBase.c + SmmControl\SmmControl.h + SmmControl\SmmControl.c + SmmCpuState\SmmCpuState.h + SmmCpuState\SmmCpuState.c + SmmGpiDispatch\SmmGpiDispatch.h + SmmGpiDispatch\SmmGpiDispatch.c + SmmIchnDispatch\SmmIchnDispatch.h + SmmIchnDispatch\SmmIchnDispatch.c + SmmPeriodicTimerDispatch\SmmPeriodicTimerDispatch.h + SmmPeriodicTimerDispatch\SmmPeriodicTimerDispatch.c + SmmPowerButtonDispatch\SmmPowerButtonDispatch.h + SmmPowerButtonDispatch\SmmPowerButtonDispatch.c + SmmStandbyButtonDispatch\SmmStandbyButtonDispatch.h + SmmStandbyButtonDispatch\SmmStandbyButtonDispatch.c + SmmStatusCode\SmmStatusCode.h + SmmStatusCode\SmmStatusCode.c + SmmSwDispatch\SmmSwDispatch.h + SmmSwDispatch\SmmSwDispatch.c + SmmSxDispatch\SmmSxDispatch.h + SmmSxDispatch\SmmSxDispatch.c + SmmUsbDispatch\SmmUsbDispatch.h + SmmUsbDispatch\SmmUsbDispatch.c
\ No newline at end of file diff --git a/EDK/Foundation/Framework/Protocol/EdkFrameworkProtocolLib.mak b/EDK/Foundation/Framework/Protocol/EdkFrameworkProtocolLib.mak new file mode 100644 index 0000000..4545cd9 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/EdkFrameworkProtocolLib.mak @@ -0,0 +1,68 @@ +#********************************************************************** +#********************************************************************** +#** ** +#** (C)Copyright 1985-2009, American Megatrends, Inc. ** +#** ** +#** All Rights Reserved. ** +#** ** +#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 ** +#** ** +#** Phone: (770)-246-8600 ** +#** ** +#********************************************************************** +#********************************************************************** + +#********************************************************************** +# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelEDK/EdkFrameworkProtocolLib/EdkFrameworkProtocolLib.mak 1 1/20/12 4:03a Jeffch $ +# +# $Revision: 1 $ +# +# $Date: 1/20/12 4:03a $ +#********************************************************************** +# Revision History +# ---------------- +# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelEDK/EdkFrameworkProtocolLib/EdkFrameworkProtocolLib.mak $ +# +# 1 1/20/12 4:03a Jeffch +# +# 1 9/27/11 6:27a Wesleychen +# Intel EDK initially releases. +# +# 2 9/02/09 3:20a Iminglin +# EIP24919 +# +#********************************************************************** +#<AMI_FHDR_START> +# +# Name: EdkFrameworkProtocolLib.mak +# +# Description: +# +#<AMI_FHDR_END> +#********************************************************************** +$(EDKFRAMEWORKPROTOCOLLIB) : EdkFrameworkProtocolLib + +$(BUILD_DIR)\EdkFrameworkProtocolLib.lib : EdkFrameworkProtocolLib + +EdkFrameworkProtocolLib : $(BUILD_DIR)\EdkFrameworkProtocolLib.mak EdkFrameworkProtocolLibBin + +$(BUILD_DIR)\EdkFrameworkProtocolLib.mak : $(EdkFrameworkProtocolLib_DIR)\$(@B).cif $(EdkFrameworkProtocolLib_DIR)\$(@B).mak $(BUILD_RULES) + $(CIF2MAK) $(EdkFrameworkProtocolLib_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) + +EdkFrameworkProtocolLibBin : + $(MAKE) /$(MAKEFLAGS) $(EDK_DEFAULTS)\ + /f $(BUILD_DIR)\EdkFrameworkProtocolLib.mak all\ + TYPE=LIBRARY \ +#********************************************************************** +#********************************************************************** +#** ** +#** (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 diff --git a/EDK/Foundation/Framework/Protocol/EdkFrameworkProtocolLib.sdl b/EDK/Foundation/Framework/Protocol/EdkFrameworkProtocolLib.sdl new file mode 100644 index 0000000..5471689 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/EdkFrameworkProtocolLib.sdl @@ -0,0 +1,26 @@ +TOKEN + Name = "EdkFrameworkProtocolLib_SUPPORT" + Value = "1" + Help = "Main switch to enable EdkFrameworkProtocolLib support in Project" + TokenType = Boolean + TargetEQU = Yes + TargetMAK = Yes + Master = Yes +End + +TOKEN + Name = "EDKFRAMEWORKPROTOCOLLIB" + Value = "$(BUILD_DIR)\EdkFrameworkProtocolLib.lib" + TokenType = Expression + TargetMAK = Yes +End + +PATH + Name = "EdkFrameworkProtocolLib_DIR" +End + +MODULE + Help = "Includes EdkFrameworkProtocolLib.mak to Project" + File = "EdkFrameworkProtocolLib.mak" +End + diff --git a/EDK/Foundation/Framework/Protocol/ExitPmAuth/ExitPmAuth.c b/EDK/Foundation/Framework/Protocol/ExitPmAuth/ExitPmAuth.c new file mode 100644 index 0000000..9e1624a --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/ExitPmAuth/ExitPmAuth.c @@ -0,0 +1,35 @@ +/*++ + This file contains 'Framework Code' and is licensed as such + under the terms of your license agreement with Intel or your + vendor. This file may not be modified, except as allowed by + additional terms of your license agreement. +--*/ +/*++ + +Copyright (c) 2009 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. + + +Module Name: + + ExitPmAuth.c + +Abstract: + + + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (ExitPmAuth) + +EFI_GUID gExitPmAuthProtocolGuid = EXIT_PM_AUTH_PROTOCOL_GUID; + +EFI_GUID_STRING(&gExitPmAuthProtocolGuid, "Exit PM Auth Protocol", "Exit PM Auth Protocol"); + diff --git a/EDK/Foundation/Framework/Protocol/ExitPmAuth/ExitPmAuth.h b/EDK/Foundation/Framework/Protocol/ExitPmAuth/ExitPmAuth.h new file mode 100644 index 0000000..d27689b --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/ExitPmAuth/ExitPmAuth.h @@ -0,0 +1,40 @@ +// +// This file contains 'Framework Code' and is licensed as such +// under the terms of your license agreement with Intel or your +// vendor. This file may not be modified, except as allowed by +// additional terms of your license agreement. +// +/*++ + +Copyright (c) 2009 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. + + +Module Name: + + ExitPmAuth.h + +Abstract: + + +--*/ + +#ifndef _EXIT_PM_AUTH_PROTOCOL_H_ +#define _EXIT_PM_AUTH_PROTOCOL_H_ + +#include "Tiano.h" + +#define EXIT_PM_AUTH_PROTOCOL_GUID \ + { \ + 0xd088a413, 0xa70, 0x4217, 0xba, 0x55, 0x9a, 0x3c, 0xb6, 0x5c, 0x41, 0xb3 \ + } + +extern EFI_GUID gExitPmAuthProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/FirmwareVolume/FirmwareVolume.c b/EDK/Foundation/Framework/Protocol/FirmwareVolume/FirmwareVolume.c new file mode 100644 index 0000000..c64d73a --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/FirmwareVolume/FirmwareVolume.c @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + FirmwareVolume.c + +Abstract: + + Firmware Volume protocol as defined in the Tiano Firmware Volume + specification. + + File level access layered on top of Firmware File System protocol. This + protocol exists to provide a hook for a filter driver for a firmware volume. + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (FirmwareVolume) + +EFI_GUID gEfiFirmwareVolumeProtocolGuid = EFI_FIRMWARE_VOLUME_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiFirmwareVolumeProtocolGuid, "FirmwareVolume Protocol", "Firmware Volume protocol"); diff --git a/EDK/Foundation/Framework/Protocol/FirmwareVolume/FirmwareVolume.h b/EDK/Foundation/Framework/Protocol/FirmwareVolume/FirmwareVolume.h new file mode 100644 index 0000000..fadc1b8 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/FirmwareVolume/FirmwareVolume.h @@ -0,0 +1,334 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + FirmwareVolume.h + +Abstract: + + Firmware Volume protocol as defined in the Tiano Firmware Volume + specification. + +--*/ + +#ifndef _FW_VOL_H_ +#define _FW_VOL_H_ + +// +// Statements that include other files +// +#include "EfiFirmwareVolumeHeader.h" +#include "EfiFirmwareFileSystem.h" +#include "EfiFirmwareVolume.h" //;;## ...AMI_OVERRIDE... Support PI1.x +// +// Firmware Volume Protocol GUID definition +// +#define EFI_FIRMWARE_VOLUME_PROTOCOL_GUID \ + { \ + 0x389F751F, 0x1838, 0x4388, 0x83, 0x90, 0xCD, 0x81, 0x54, 0xBD, 0x27, 0xF8 \ + } + +//;;## ...AMI_OVERRIDE... Support PI1.x #define FV_DEVICE_SIGNATURE EFI_SIGNATURE_32 ('_', 'F', 'V', '_') + +EFI_FORWARD_DECLARATION (EFI_FIRMWARE_VOLUME_PROTOCOL); + +// +// EFI_FV_ATTRIBUTES bit definitions +// +//;;## ...AMI_OVERRIDE... Support PI1.x typedef UINT64 EFI_FV_ATTRIBUTES; + +// +// ************************************************************ +// EFI_FV_ATTRIBUTES bit definitions +// ************************************************************ +// +#define EFI_FV_READ_DISABLE_CAP 0x0000000000000001 +#define EFI_FV_READ_ENABLE_CAP 0x0000000000000002 +#define EFI_FV_READ_STATUS 0x0000000000000004 + +#define EFI_FV_WRITE_DISABLE_CAP 0x0000000000000008 +#define EFI_FV_WRITE_ENABLE_CAP 0x0000000000000010 +#define EFI_FV_WRITE_STATUS 0x0000000000000020 + +#define EFI_FV_LOCK_CAP 0x0000000000000040 +#define EFI_FV_LOCK_STATUS 0x0000000000000080 +#define EFI_FV_WRITE_POLICY_RELIABLE 0x0000000000000100 + +#define EFI_FV_ALIGNMENT_CAP 0x0000000000008000 +#define EFI_FV_ALIGNMENT_2 0x0000000000010000 +#define EFI_FV_ALIGNMENT_4 0x0000000000020000 +#define EFI_FV_ALIGNMENT_8 0x0000000000040000 +#define EFI_FV_ALIGNMENT_16 0x0000000000080000 +#define EFI_FV_ALIGNMENT_32 0x0000000000100000 +#define EFI_FV_ALIGNMENT_64 0x0000000000200000 +#define EFI_FV_ALIGNMENT_128 0x0000000000400000 +#define EFI_FV_ALIGNMENT_256 0x0000000000800000 +#define EFI_FV_ALIGNMENT_512 0x0000000001000000 +#define EFI_FV_ALIGNMENT_1K 0x0000000002000000 +#define EFI_FV_ALIGNMENT_2K 0x0000000004000000 +#define EFI_FV_ALIGNMENT_4K 0x0000000008000000 +#define EFI_FV_ALIGNMENT_8K 0x0000000010000000 +#define EFI_FV_ALIGNMENT_16K 0x0000000020000000 +#define EFI_FV_ALIGNMENT_32K 0x0000000040000000 +#define EFI_FV_ALIGNMENT_64K 0x0000000080000000 + +// +// Protocol API definitions +// +// +// Forward declaration of protocol data structure +// +typedef struct _EFI_FIRMWARE_VOLUME_PROTOCOL EFI_FIRMWARE_VOLUME_PROTOCOL; + +typedef +EFI_STATUS +//;;## ...AMI_OVERRIDE... Support PI1.x (EFIAPI *EFI_FV_GET_ATTRIBUTES) ( +(EFIAPI *FV_GET_ATTRIBUTES) ( + IN EFI_FIRMWARE_VOLUME_PROTOCOL * This, + OUT EFI_FV_ATTRIBUTES * Attributes + ); + +/*++ + +Routine Description: + Retrieves attributes, insures positive polarity of attribute bits, returns + resulting attributes in output parameter + +Arguments: + This - Calling context + Attributes - output buffer which contains attributes + +Returns: + EFI_INVALID_PARAMETER + EFI_SUCCESS + +--*/ +typedef +EFI_STATUS +//;;## ...AMI_OVERRIDE... Support PI1.x (EFIAPI *EFI_FV_SET_ATTRIBUTES) ( +(EFIAPI *FV_SET_ATTRIBUTES) ( + IN EFI_FIRMWARE_VOLUME_PROTOCOL * This, + IN OUT EFI_FV_ATTRIBUTES * Attributes + ); + +/*++ + +Routine Description: + Sets volume attributes + +Arguments: + This Calling context + Attributes Buffer which contains attributes + +Returns: + EFI_INVALID_PARAMETER + EFI_DEVICE_ERROR + EFI_SUCCESS + +--*/ +//;;## ...AMI_OVERRIDE... Support PI1.x typedef UINT32 EFI_FV_FILE_ATTRIBUTES; + +//;;## ...AMI_OVERRIDE... Support PI1.x #define EFI_FV_FILE_ATTRIB_ALIGNMENT 0x0000001F + +typedef +EFI_STATUS +//;;## ...AMI_OVERRIDE... Support PI1.x (EFIAPI *EFI_FV_READ_FILE) ( +(EFIAPI *FV_READ_FILE) ( + IN EFI_FIRMWARE_VOLUME_PROTOCOL * This, + IN EFI_GUID * NameGuid, + IN OUT VOID **Buffer, + IN OUT UINTN *BufferSize, + OUT EFI_FV_FILETYPE * FoundType, + OUT EFI_FV_FILE_ATTRIBUTES * FileAttributes, + OUT UINT32 *AuthenticationStatus + ); + +/*++ + +Routine Description: + Read the requested file (NameGuid) and returns data in Buffer. + +Arguments: + This - Calling context + NameGuid - Filename identifying which file to read + Buffer - Pointer to pointer to buffer in which contents of file are returned. + + If Buffer is NULL, only type, attributes, and size are returned as + there is no output buffer. + + If Buffer != NULL and *Buffer == NULL, the output buffer is allocated + from BS pool by ReadFile + + If Buffer != NULL and *Buffer != NULL, the output buffer has been + allocated by the caller and is being passed in. + + BufferSize - Indicates the buffer size passed in, and on output the size + required to complete the read + FoundType - Indicates the type of the file who's data is returned + FileAttributes - Indicates the attributes of the file who's data is resturned + AuthenticationStatus - Indicates the authentication status of the data + +Returns: + EFI_SUCCESS + EFI_WARN_BUFFER_TOO_SMALL + EFI_NOT_FOUND + EFI_DEVICE_ERROR + EFI_ACCESS_DENIED + +--*/ +typedef +EFI_STATUS +//;;## ...AMI_OVERRIDE... Support PI1.x (EFIAPI *EFI_FV_READ_SECTION) ( +(EFIAPI *FV_READ_SECTION) ( + IN EFI_FIRMWARE_VOLUME_PROTOCOL * This, + IN EFI_GUID * NameGuid, + IN EFI_SECTION_TYPE SectionType, + IN UINTN SectionInstance, + IN OUT VOID **Buffer, + IN OUT UINTN *BufferSize, + OUT UINT32 *AuthenticationStatus + ); + +/*++ + +Routine Description: + Read the requested section from the specified file and returns data in Buffer. + +Arguments: + This - Calling context + NameGuid - Filename identifying the file from which to read + SectionType - Indicates what section type to retrieve + SectionInstance - Indicates which instance of SectionType to retrieve + Buffer - Pointer to pointer to buffer in which contents of file are returned. + + If Buffer is NULL, only type, attributes, and size are returned as + there is no output buffer. + + If Buffer != NULL and *Buffer == NULL, the output buffer is allocated + from BS pool by ReadFile + + If Buffer != NULL and *Buffer != NULL, the output buffer has been + allocated by the caller and is being passed in. + + BufferSize - Indicates the buffer size passed in, and on output the size + required to complete the read + AuthenticationStatus - Indicates the authentication status of the data + +Returns: + EFI_SUCCESS + EFI_WARN_BUFFER_TOO_SMALL + EFI_OUT_OF_RESOURCES + EFI_NOT_FOUND + EFI_DEVICE_ERROR + EFI_ACCESS_DENIED + +--*/ +//;;## ...AMI_OVERRIDE... Support PI1.x typedef UINT32 EFI_FV_WRITE_POLICY; + +//;;## ...AMI_OVERRIDE... Support PI1.x #define EFI_FV_UNRELIABLE_WRITE 0x00000000 +//;;## ...AMI_OVERRIDE... Support PI1.x #define EFI_FV_RELIABLE_WRITE 0x00000001 + +//;;## ...AMI_OVERRIDE... Support PI1.x typedef struct { +//;;## ...AMI_OVERRIDE... Support PI1.x EFI_GUID *NameGuid; +//;;## ...AMI_OVERRIDE... Support PI1.x EFI_FV_FILETYPE Type; +//;;## ...AMI_OVERRIDE... Support PI1.x EFI_FV_FILE_ATTRIBUTES FileAttributes; +//;;## ...AMI_OVERRIDE... Support PI1.x VOID *Buffer; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT32 BufferSize; +//;;## ...AMI_OVERRIDE... Support PI1.x } EFI_FV_WRITE_FILE_DATA; + +typedef +EFI_STATUS +//;;## ...AMI_OVERRIDE... Support PI1.x (EFIAPI *EFI_FV_WRITE_FILE) ( +(EFIAPI *FV_WRITE_FILE) ( + IN EFI_FIRMWARE_VOLUME_PROTOCOL * This, + IN UINT32 NumberOfFiles, + IN EFI_FV_WRITE_POLICY WritePolicy, + IN EFI_FV_WRITE_FILE_DATA * FileData + ); + +/*++ + +Routine Description: + Write the supplied file (NameGuid) to the FV. + +Arguments: + This - Calling context + NumberOfFiles - Indicates the number of file records pointed to by FileData + WritePolicy - Indicates the level of reliability of the write with respect to + things like power failure events. + FileData - A pointer to an array of EFI_FV_WRITE_FILE_DATA structures. Each + element in the array indicates a file to write, and there are + NumberOfFiles elements in the input array. + +Returns: + EFI_SUCCESS + EFI_OUT_OF_RESOURCES + EFI_DEVICE_ERROR + EFI_WRITE_PROTECTED + EFI_NOT_FOUND + EFI_INVALID_PARAMETER + +--*/ +typedef +EFI_STATUS +//;;## ...AMI_OVERRIDE... Support PI1.x (EFIAPI *EFI_FV_GET_NEXT_FILE) ( +(EFIAPI *FV_GET_NEXT_FILE) ( + IN EFI_FIRMWARE_VOLUME_PROTOCOL * This, + IN OUT VOID *Key, + IN OUT EFI_FV_FILETYPE * FileType, + OUT EFI_GUID * NameGuid, + OUT EFI_FV_FILE_ATTRIBUTES * Attributes, + OUT UINTN *Size + ); + +/*++ + +Routine Description: + Given the input key, search for the next matching file in the volume. + +Arguments: + This - Calling context + Key - Pointer to a caller allocated buffer that contains an implementation + specific key that is used to track where to begin searching on + successive calls. + FileType - Indicates the file type to filter for + NameGuid - Guid filename of the file found + Attributes - Attributes of the file found + Size - Size in bytes of the file found + +Returns: + EFI_SUCCESS + EFI_NOT_FOUND + EFI_DEVICE_ERROR + EFI_ACCESS_DENIED + +--*/ +typedef struct _EFI_FIRMWARE_VOLUME_PROTOCOL { +//;;## ...AMI_OVERRIDE... Support PI1.x EFI_FV_GET_ATTRIBUTES GetVolumeAttributes; +//;;## ...AMI_OVERRIDE... Support PI1.x EFI_FV_SET_ATTRIBUTES SetVolumeAttributes; +//;;## ...AMI_OVERRIDE... Support PI1.x EFI_FV_READ_FILE ReadFile; +//;;## ...AMI_OVERRIDE... Support PI1.x EFI_FV_READ_SECTION ReadSection; +//;;## ...AMI_OVERRIDE... Support PI1.x EFI_FV_WRITE_FILE WriteFile; +//;;## ...AMI_OVERRIDE... Support PI1.x EFI_FV_GET_NEXT_FILE GetNextFile; + FV_GET_ATTRIBUTES GetVolumeAttributes; + FV_SET_ATTRIBUTES SetVolumeAttributes; + FV_READ_FILE ReadFile; + FV_READ_SECTION ReadSection; + FV_WRITE_FILE WriteFile; + FV_GET_NEXT_FILE GetNextFile; + UINT32 KeySize; + EFI_HANDLE ParentHandle; +} EFI_FIRMWARE_VOLUME_PROTOCOL; + +extern EFI_GUID gEfiFirmwareVolumeProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/FirmwareVolume2/FirmwareVolume2.c b/EDK/Foundation/Framework/Protocol/FirmwareVolume2/FirmwareVolume2.c new file mode 100644 index 0000000..9e284b2 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/FirmwareVolume2/FirmwareVolume2.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + FirmwareVolume2.c + +Abstract: + + PI 1.0 spec definition. + +--*/ + + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (FirmwareVolume2) + + //;;## ...AMI_ADD FILE... Support PI1.x +EFI_GUID gEfiFirmwareVolume2ProtocolGuid = EFI_FIRMWARE_VOLUME2_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiFirmwareVolume2ProtocolGuid, "FirmwareVolume2Protocol", "Efi FirmwareVolume2Protocol");
\ No newline at end of file diff --git a/EDK/Foundation/Framework/Protocol/FirmwareVolume2/FirmwareVolume2.h b/EDK/Foundation/Framework/Protocol/FirmwareVolume2/FirmwareVolume2.h new file mode 100644 index 0000000..766cc94 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/FirmwareVolume2/FirmwareVolume2.h @@ -0,0 +1,195 @@ +/*++ + +Copyright (c) 2007, 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. + +Module Name: + + FirmwareVolume2.h + +Abstract: + + PI 1.0 spec definition. + +--*/ + +#ifndef __FIRMWARE_VOLUME2_H__ +#define __FIRMWARE_VOLUME2_H__ +#include "EfiImageFormat.h" +#include "EfiFirmwareVolume.h" + //;;## ...AMI_ADD FILE... Support PI1.x +// +// Firmware Volume Protocol GUID definition +// +#define EFI_FIRMWARE_VOLUME2_PROTOCOL_GUID \ + { 0x220e73b6, 0x6bdb, 0x4413, 0x84, 0x5, 0xb9, 0x74, 0xb1, 0x8, 0x61, 0x9a } + + +EFI_FORWARD_DECLARATION (EFI_FIRMWARE_VOLUME2_PROTOCOL); + + +// +// ************************************************************ +// EFI_FV2_ATTRIBUTES bit definitions +// ************************************************************ +// +#define EFI_FV2_READ_DISABLE_CAP 0x0000000000000001 +#define EFI_FV2_READ_ENABLE_CAP 0x0000000000000002 +#define EFI_FV2_READ_STATUS 0x0000000000000004 + +#define EFI_FV2_WRITE_DISABLE_CAP 0x0000000000000008 +#define EFI_FV2_WRITE_ENABLE_CAP 0x0000000000000010 +#define EFI_FV2_WRITE_STATUS 0x0000000000000020 + +#define EFI_FV2_LOCK_CAP 0x0000000000000040 +#define EFI_FV2_LOCK_STATUS 0x0000000000000080 +#define EFI_FV2_WRITE_POLICY_RELIABLE 0x0000000000000100 + +#define EFI_FV2_READ_LOCK_CAP 0x0000000000001000 +#define EFI_FV2_READ_LOCK_STATUS 0x0000000000002000 +#define EFI_FV2_WRITE_LOCK_CAP 0x0000000000004000 +#define EFI_FV2_WRITE_LOCK_STATUS 0x0000000000008000 +#define EFI_FV2_ALIGNMENT 0x00000000001F0000 + + +#define EFI_FV2_ALIGNMENT_1 0x0000000000000000 +#define EFI_FV2_ALIGNMENT_2 0x0000000000010000 +#define EFI_FV2_ALIGNMENT_4 0x0000000000020000 +#define EFI_FV2_ALIGNMENT_8 0x0000000000030000 +#define EFI_FV2_ALIGNMENT_16 0x0000000000040000 +#define EFI_FV2_ALIGNMENT_32 0x0000000000050000 +#define EFI_FV2_ALIGNMENT_64 0x0000000000060000 +#define EFI_FV2_ALIGNMENT_128 0x0000000000070000 +#define EFI_FV2_ALIGNMENT_256 0x0000000000080000 +#define EFI_FV2_ALIGNMENT_512 0x0000000000090000 +#define EFI_FV2_ALIGNMENT_1K 0x00000000000A0000 +#define EFI_FV2_ALIGNMENT_2K 0x00000000000B0000 +#define EFI_FV2_ALIGNMENT_4K 0x00000000000C0000 +#define EFI_FV2_ALIGNMENT_8K 0x00000000000D0000 +#define EFI_FV2_ALIGNMENT_16K 0x00000000000E0000 +#define EFI_FV2_ALIGNMENT_32K 0x00000000000F0000 +#define EFI_FV2_ALIGNMENT_64K 0x0000000000100000 +#define EFI_FV2_ALIGNMENT_128K 0x0000000000110000 +#define EFI_FV2_ALIGNMENT_256K 0x0000000000120000 +#define EFI_FV2_ALIGNMENT_512K 0x0000000000130000 +#define EFI_FV2_ALIGNMENT_1M 0x0000000000140000 +#define EFI_FV2_ALIGNMENT_2M 0x0000000000150000 +#define EFI_FV2_ALIGNMENT_4M 0x0000000000160000 +#define EFI_FV2_ALIGNMENT_8M 0x0000000000170000 +#define EFI_FV2_ALIGNMENT_16M 0x0000000000180000 +#define EFI_FV2_ALIGNMENT_32M 0x0000000000190000 +#define EFI_FV2_ALIGNMENT_64M 0x00000000001A0000 +#define EFI_FV2_ALIGNMENT_128M 0x00000000001B0000 +#define EFI_FV2_ALIGNMENT_256M 0x00000000001C0000 +#define EFI_FV2_ALIGNMENT_512M 0x00000000001D0000 +#define EFI_FV2_ALIGNMENT_1G 0x00000000001E0000 +#define EFI_FV2_ALIGNMENT_2G 0x00000000001F0000 + +#define EFI_FV_FILE_ATTRIB_FIXED 0x00000100 +#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED 0x00000200 + + +// +// Protocol API definitions +// + +typedef +EFI_STATUS +(EFIAPI *EFI_FV_GET_ATTRIBUTES) ( + IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, + OUT EFI_FV_ATTRIBUTES *Attributes + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_FV_SET_ATTRIBUTES) ( + IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, + IN OUT EFI_FV_ATTRIBUTES *Attributes + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_FV_READ_FILE) ( + IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, + IN CONST EFI_GUID *NameGuid, + IN OUT VOID **Buffer, + IN OUT UINTN *BufferSize, + OUT EFI_FV_FILETYPE *FoundType, + OUT EFI_FV_FILE_ATTRIBUTES *FileAttributes, + OUT UINT32 *AuthenticationStatus + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_FV_READ_SECTION) ( + IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, + IN CONST EFI_GUID *NameGuid, + IN EFI_SECTION_TYPE SectionType, + IN UINTN SectionInstance, + IN OUT VOID **Buffer, + IN OUT UINTN *BufferSize, + OUT UINT32 *AuthenticationStatus + ); + + +typedef +EFI_STATUS +(EFIAPI *EFI_FV_WRITE_FILE) ( + IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, + IN UINT32 NumberOfFiles, + IN EFI_FV_WRITE_POLICY WritePolicy, + IN EFI_FV_WRITE_FILE_DATA *FileData + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_FV_GET_NEXT_FILE) ( + IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, + IN OUT VOID *Key, + IN OUT EFI_FV_FILETYPE *FileType, + OUT EFI_GUID *NameGuid, + OUT EFI_FV_FILE_ATTRIBUTES *Attributes, + OUT UINTN *Size + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_FV_GET_INFO) ( + IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, + IN CONST EFI_GUID *InformationType, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_FV_SET_INFO) ( + IN CONST EFI_FIRMWARE_VOLUME2_PROTOCOL *This, + IN CONST EFI_GUID *InformationType, + IN UINTN BufferSize, + IN CONST VOID *Buffer + ); + + +typedef struct _EFI_FIRMWARE_VOLUME2_PROTOCOL { + EFI_FV_GET_ATTRIBUTES GetVolumeAttributes; + EFI_FV_SET_ATTRIBUTES SetVolumeAttributes; + EFI_FV_READ_FILE ReadFile; + EFI_FV_READ_SECTION ReadSection; + EFI_FV_WRITE_FILE WriteFile; + EFI_FV_GET_NEXT_FILE GetNextFile; + UINT32 KeySize; + EFI_HANDLE ParentHandle; + EFI_FV_GET_INFO GetInfo; + EFI_FV_SET_INFO SetInfo; +} EFI_FIRMWARE_VOLUME2_PROTOCOL; + +extern EFI_GUID gEfiFirmwareVolume2ProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/FirmwareVolumeBlock/FirmwareVolumeBlock.c b/EDK/Foundation/Framework/Protocol/FirmwareVolumeBlock/FirmwareVolumeBlock.c new file mode 100644 index 0000000..17c37df --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/FirmwareVolumeBlock/FirmwareVolumeBlock.c @@ -0,0 +1,35 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + FirmwareVolumeBlock.c + +Abstract: + + Firmware Volume Block protocol as defined in the Tiano Firmware Volume + specification. + + Low level firmware device access routines to abstract firmware device + hardware. + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (FirmwareVolumeBlock) + +EFI_GUID gFramerworkEfiFirmwareVolumeBlockProtocolGuid = FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID; //;;## ...AMI_OVERRIDE... Support PI1.x +EFI_GUID gEfiFirmwareVolumeBlockProtocolGuid = EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID; +EFI_GUID gEfiFirmwareVolumeBlock2ProtocolGuid = EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL_GUID; //;;## ...AMI_OVERRIDE... Support PI1.x + +EFI_GUID_STRING(&gFramerworkEfiFirmwareVolumeBlockProtocolGuid, "FirmwareVolumeBlock Protocol", "Framework Firmware Volume Block protocol"); //;;## ...AMI_OVERRIDE... Support PI1.x +EFI_GUID_STRING(&gEfiFirmwareVolumeBlock2ProtocolGuid, "FirmwareVolumeBlock2 Protocol", "Firmware Volume Block2 protocol"); //;;## ...AMI_OVERRIDE... Support PI1.x + diff --git a/EDK/Foundation/Framework/Protocol/FirmwareVolumeBlock/FirmwareVolumeBlock.h b/EDK/Foundation/Framework/Protocol/FirmwareVolumeBlock/FirmwareVolumeBlock.h new file mode 100644 index 0000000..12599f6 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/FirmwareVolumeBlock/FirmwareVolumeBlock.h @@ -0,0 +1,270 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + FirmwareVolumeBlock.h + +Abstract: + + Firmware Volume Block protocol as defined in the Tiano Firmware Volume + specification. + + Low level firmware device access routines to abstract firmware device + hardware. + +--*/ + +#ifndef _FW_VOL_BLOCK_H_ +#define _FW_VOL_BLOCK_H_ + +#include "EfiFirmwareVolumeHeader.h" +//;;## ...AMI_OVERRIDE... Support PI1.x start +#define FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID \ + { \ + 0xDE28BC59, 0x6228, 0x41BD, 0xBD, 0xF6, 0xA3, 0xB9, 0xAD, 0xB5, 0x8D, 0xA1 \ + } + +#define EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL_GUID \ + { \ + 0x8f644fa9, 0xe850, 0x4db1, 0x9c, 0xe2, 0xb, 0x44, 0x69, 0x8e, 0x8d, 0xa4 \ + } + +#if (PI_SPECIFICATION_VERSION < 0x00010000) +#define EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID FRAMEWORK_EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID +#else +// +// EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL is defined in PI 1.0 spec and its GUID value +// is later updated to be the same as that of EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL +// defined in PI 1.2 spec. +// +#define EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL_GUID EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL_GUID +#endif + +EFI_FORWARD_DECLARATION (EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL); +typedef EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL; +//;;## ...AMI_OVERRIDE... Support PI1.x end + +typedef +EFI_STATUS +(EFIAPI *EFI_FVB_GET_ATTRIBUTES) ( + IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL * This, + OUT EFI_FVB_ATTRIBUTES * Attributes + ) +/*++ + +Routine Description: + Retrieves Volume attributes. No polarity translations are done. + +Arguments: + This - Calling context + Attributes - output buffer which contains attributes + +Returns: + EFI_INVALID_PARAMETER + EFI_SUCCESS + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_FVB_SET_ATTRIBUTES) ( + IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL * This, + IN OUT EFI_FVB_ATTRIBUTES * Attributes + ) +/*++ + +Routine Description: + Sets Volume attributes. No polarity translations are done. + +Arguments: + This - Calling context + Attributes - On input: contains new attributes + On output: contains current attributes of FV + +Returns: + EFI_INVALID_PARAMETER + EFI_SUCCESS + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_FVB_GET_PHYSICAL_ADDRESS) ( + IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL * This, + OUT EFI_PHYSICAL_ADDRESS * Address + ) +/*++ + +Routine Description: + Retrieves the physical address of a memory mapped FV. + +Arguments: + This - Calling context + Attributes - Address is a pointer to a caller allocated EFI_PHYSICAL_ADDRESS + that on successful return from GetPhysicalAddress() contains the + base address of the firmware volume. + +Returns: + EFI_UNSUPPORTED + EFI_SUCCESS + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_FVB_GET_BLOCK_SIZE) ( + IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL * This, + IN EFI_LBA Lba, + OUT UINTN *BlockSize, + OUT UINTN *NumberOfBlocks + ) +/*++ + +Routine Description: + Retrieves the size in bytes of a specific block within an FV. + +Arguments: + This - Calling context. + Lba - Indicates which block to return the size for. + BlockSize - BlockSize is a pointer to a caller allocated + UINTN in which the size of the block is returned. + NumberOfBlocks - NumberOfBlocks is a pointer to a caller allocated + UINTN in which the number of consecutive blocks + starting with Lba is returned. All blocks in this + range have a size of BlockSize. + +Returns: + EFI_INVALID_PARAMETER + EFI_SUCCESS + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_FVB_READ) ( + IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL * This, + IN EFI_LBA Lba, + IN UINTN Offset, + IN OUT UINTN *NumBytes, + OUT UINT8 *Buffer + ) +/*++ + +Routine Description: + Reads data beginning at Lba:Offset from FV and places the data in Buffer. + The read terminates either when *NumBytes of data have been read, or when + a block boundary is reached. *NumBytes is updated to reflect the actual + number of bytes read. + +Arguments: + This - Calling context + Lba - Block in which to begin read + Offset - Offset in the block at which to begin read + NumBytes - At input, indicates the requested read size. At output, indicates + the actual number of bytes read. + Buffer - Data buffer in which to place data read. + +Returns: + EFI_INVALID_PARAMETER + EFI_NOT_FOUND + EFI_DEVICE_ERROR + EFI_SUCCESS + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_FVB_WRITE) ( + IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL * This, + IN EFI_LBA Lba, + IN UINTN Offset, + IN OUT UINTN *NumBytes, + IN UINT8 *Buffer + ) +/*++ + +Routine Description: + + Writes data beginning at Lba:Offset from FV. The write terminates either + when *NumBytes of data have been written, or when a block boundary is + reached. *NumBytes is updated to reflect the actual number of bytes + written. + +Arguments: + This - Calling context + Lba - Block in which to begin write + Offset - Offset in the block at which to begin write + NumBytes - At input, indicates the requested write size. At output, indicates + the actual number of bytes written. + Buffer - Buffer containing source data for the write. + +Returns: + EFI_INVALID_PARAMETER + EFI_NOT_FOUND + EFI_DEVICE_ERROR + EFI_SUCCESS + +--*/ +; + +#define EFI_LBA_LIST_TERMINATOR 0xFFFFFFFFFFFFFFFF + +typedef +EFI_STATUS +(EFIAPI *EFI_FVB_ERASE_BLOCKS) ( + IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL * This, + ... + ) +/*++ + +Routine Description: + The EraseBlock() function erases one or more blocks as denoted by the +variable argument list. The entire parameter list of blocks must be verified +prior to erasing any blocks. If a block is requested that does not exist +within the associated firmware volume (it has a larger index than the last +block of the firmware volume), the EraseBlock() function must return +EFI_INVALID_PARAMETER without modifying the contents of the firmware volume. + +Arguments: + This - Calling context + ... - Starting LBA followed by Number of Lba to erase. a -1 to terminate + the list. + +Returns: + EFI_INVALID_PARAMETER + EFI_DEVICE_ERROR + EFI_SUCCESS + EFI_ACCESS_DENIED + +--*/ +; + +typedef struct _EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL { + EFI_FVB_GET_ATTRIBUTES GetVolumeAttributes; + EFI_FVB_SET_ATTRIBUTES SetVolumeAttributes; + EFI_FVB_GET_PHYSICAL_ADDRESS GetPhysicalAddress; + EFI_FVB_GET_BLOCK_SIZE GetBlockSize; + EFI_FVB_READ Read; + EFI_FVB_WRITE Write; + EFI_FVB_ERASE_BLOCKS EraseBlocks; + EFI_HANDLE ParentHandle; +} EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL; + +extern EFI_GUID gEfiFirmwareVolumeBlockProtocolGuid; +extern EFI_GUID gEfiFirmwareVolumeBlock2ProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/FormBrowser/FormBrowser.c b/EDK/Foundation/Framework/Protocol/FormBrowser/FormBrowser.c new file mode 100644 index 0000000..f8c5843 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/FormBrowser/FormBrowser.c @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + FormBrowser.c + +Abstract: + + The EFI_FORM_BROWSER_PROTOCOL is the interface to the EFI + Configuration Driver. This will allow the caller to direct the + configuration driver to use either the HII database or use the passed + in packet of data. This will also allow the caller to post messages + into the configuration drivers internal mailbox. + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (FormBrowser) + +EFI_GUID gEfiFormBrowserProtocolGuid = EFI_FORM_BROWSER_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiFormBrowserProtocolGuid, "Form Browser Protocol", "Form Browser 1.0 protocol"); diff --git a/EDK/Foundation/Framework/Protocol/FormBrowser/FormBrowser.h b/EDK/Foundation/Framework/Protocol/FormBrowser/FormBrowser.h new file mode 100644 index 0000000..5f1e3ba --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/FormBrowser/FormBrowser.h @@ -0,0 +1,97 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + FormBrowser.h + +Abstract: + + The EFI_FORM_BROWSER_PROTOCOL is the interface to the EFI + Configuration Driver. This will allow the caller to direct the + configuration driver to use either the HII database or use the passed + in packet of data. This will also allow the caller to post messages + into the configuration drivers internal mailbox. + +--*/ + +#ifndef _FORM_BROWSER_H_ +#define _FORM_BROWSER_H_ + +#include EFI_PROTOCOL_DEFINITION (Hii) + +#define EFI_FORM_BROWSER_PROTOCOL_GUID \ + { \ + 0xe5a1333e, 0xe1b4, 0x4d55, 0xce, 0xeb, 0x35, 0xc3, 0xef, 0x13, 0x34, 0x43 \ + } + +// +// Forward reference for pure ANSI compatability +// +EFI_FORWARD_DECLARATION (EFI_FORM_BROWSER_PROTOCOL); + +typedef struct _EFI_FORM_BROWSER_PROTOCOL EFI_FORM_BROWSER_PROTOCOL; + +typedef struct { + UINT32 Length; + UINT16 Type; + UINT8 Data[1]; +} EFI_HII_PACKET; + +typedef struct { + EFI_HII_IFR_PACK *IfrData; + EFI_HII_STRING_PACK *StringData; +} EFI_IFR_PACKET; + +typedef struct { + UINTN LeftColumn; + UINTN RightColumn; + UINTN TopRow; + UINTN BottomRow; +} SCREEN_DESCRIPTOR; + +// +// The following types are currently defined: +// +typedef +EFI_STATUS +(EFIAPI *EFI_SEND_FORM) ( + IN EFI_FORM_BROWSER_PROTOCOL * This, + IN BOOLEAN UseDatabase, + IN EFI_HII_HANDLE * Handle, + IN UINTN HandleCount, + IN EFI_IFR_PACKET * Packet, + IN EFI_HANDLE CallbackHandle, + IN UINT8 *NvMapOverride, + IN SCREEN_DESCRIPTOR * ScreenDimensions, + OUT BOOLEAN *ResetRequired OPTIONAL + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_CREATE_POP_UP) ( + IN UINTN NumberOfLines, + IN BOOLEAN HotKey, + IN UINTN MaximumStringSize, + OUT CHAR16 *StringBuffer, + OUT EFI_INPUT_KEY * KeyValue, + IN CHAR16 *String, + ... + ); + +typedef struct _EFI_FORM_BROWSER_PROTOCOL { + EFI_SEND_FORM SendForm; + EFI_CREATE_POP_UP CreatePopUp; +} EFI_FORM_BROWSER_PROTOCOL; + +extern EFI_GUID gEfiFormBrowserProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/FormCallback/FormCallback.c b/EDK/Foundation/Framework/Protocol/FormCallback/FormCallback.c new file mode 100644 index 0000000..3563117 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/FormCallback/FormCallback.c @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + FormCallback.c + +Abstract: + + The EFI_FORM_CALLBACK_PROTOCOL is the defined interface for access to custom + NV storage devices as well as communication of user selections in a more + interactive environment. This protocol should be published by hardware + specific drivers which want to export access to custom hardware storage or + publish IFR which has a requirement to call back the original driver. + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (FormCallback) + +EFI_GUID gEfiFormCallbackProtocolGuid = EFI_FORM_CALLBACK_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiFormCallbackProtocolGuid, "Form Callback Protocol", "Form Callback 1.0 protocol"); diff --git a/EDK/Foundation/Framework/Protocol/FormCallback/FormCallback.h b/EDK/Foundation/Framework/Protocol/FormCallback/FormCallback.h new file mode 100644 index 0000000..7595981 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/FormCallback/FormCallback.h @@ -0,0 +1,120 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + FormCallback.h + +Abstract: + + The EFI_FORM_CALLBACK_PROTOCOL is the defined interface for access to custom + NV storage devices as well as communication of user selections in a more + interactive environment. This protocol should be published by hardware + specific drivers which want to export access to custom hardware storage or + publish IFR which has a requirement to call back the original driver. + +--*/ + +#ifndef _FORM_CALLBACK_H_ +#define _FORM_CALLBACK_H_ + +#include EFI_PROTOCOL_DEFINITION (FormBrowser) + +#define EFI_FORM_CALLBACK_PROTOCOL_GUID \ + { \ + 0xf3e4543d, 0xcf35, 0x6cef, 0x35, 0xc4, 0x4f, 0xe6, 0x34, 0x4d, 0xfc, 0x54 \ + } + +// +// Forward reference for pure ANSI compatability +// +EFI_FORWARD_DECLARATION (EFI_FORM_CALLBACK_PROTOCOL); + +typedef struct _EFI_FORM_CALLBACK_PROTOCOL EFI_FORM_CALLBACK_PROTOCOL; + +#define RESET_REQUIRED 1 // Flags setting to signify that the callback operation resulted in an eventual +// reset to be done upon exit of the browser +// +#define EXIT_REQUIRED 2 // Flags setting to signify that after the processing of the callback results - exit the browser +#define SAVE_REQUIRED 4 // Flags setting to signify that after the processing of the callback results - save the NV data +#define NV_CHANGED 8 // Flags setting to signify that after the processing of the callback results - turn the NV flag on +#define NV_NOT_CHANGED 16 // Flags setting to signify that after the processing of the callback results - turn the NV flag off +#pragma pack(1) +typedef struct { + UINT8 OpCode; // Likely a string, numeric, or one-of + UINT8 Length; // Length of the EFI_IFR_DATA_ENTRY packet + UINT16 Flags; // Flags settings to determine what behavior is desired from the browser after the callback + VOID *Data; // The data in the form based on the op-code type - this is not a pointer to the data, the data follows immediately + // If the OpCode is a OneOf or Numeric type - Data is a UINT16 value + // If the OpCode is a String type - Data is a CHAR16[x] type + // If the OpCode is a Checkbox type - Data is a UINT8 value + // If the OpCode is a NV Access type - Data is a EFI_IFR_NV_DATA structure + // +} EFI_IFR_DATA_ENTRY; + +typedef struct { + VOID *NvRamMap; // If the flag of the op-code specified retrieval of a copy of the NVRAM map, + // this is a pointer to a buffer copy + // + UINT32 EntryCount; // How many EFI_IFR_DATA_ENTRY entries + EFI_IFR_DATA_ENTRY Data[1]; // The in-line Data entries. +} EFI_IFR_DATA_ARRAY; + +typedef union { + EFI_IFR_DATA_ARRAY DataArray; // Primarily used by those who call back to their drivers and use HII as a repository + EFI_IFR_PACKET DataPacket; // Primarily used by those which do not use HII as a repository + CHAR16 String[1]; // If returning an error - fill the string with null-terminated contents +} EFI_HII_CALLBACK_PACKET; +#pragma pack() +// +// The following types are currently defined: +// +typedef +EFI_STATUS +(EFIAPI *EFI_NV_READ) ( + IN EFI_FORM_CALLBACK_PROTOCOL * This, + IN CHAR16 *VariableName, + IN EFI_GUID * VendorGuid, + OUT UINT32 *Attributes OPTIONAL, + IN OUT UINTN *DataSize, + OUT VOID *Buffer + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_NV_WRITE) ( + IN EFI_FORM_CALLBACK_PROTOCOL * This, + IN CHAR16 *VariableName, + IN EFI_GUID * VendorGuid, + IN UINT32 Attributes, + IN UINTN DataSize, + IN VOID *Buffer, + OUT BOOLEAN *ResetRequired + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_FORM_CALLBACK) ( + IN EFI_FORM_CALLBACK_PROTOCOL * This, + IN UINT16 KeyValue, + IN EFI_IFR_DATA_ARRAY * Data, + OUT EFI_HII_CALLBACK_PACKET **Packet + ); + +typedef struct _EFI_FORM_CALLBACK_PROTOCOL { + EFI_NV_READ NvRead; + EFI_NV_WRITE NvWrite; + EFI_FORM_CALLBACK Callback; +} EFI_FORM_CALLBACK_PROTOCOL; + +extern EFI_GUID gEfiFormCallbackProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/Hii/Hii.c b/EDK/Foundation/Framework/Protocol/Hii/Hii.c new file mode 100644 index 0000000..917d89b --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/Hii/Hii.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + Hii.c + +Abstract: + + This file defines the Human Interface Infrastructure protocol which will + be used by resources which want to publish IFR/Font/String data and have it + collected by the Configuration engine. + + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (Hii) + +EFI_GUID gEfiHiiProtocolGuid = EFI_HII_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiHiiProtocolGuid, "Human Interface Infrastructure Protocol", "HII 1.0 protocol"); diff --git a/EDK/Foundation/Framework/Protocol/Hii/Hii.h b/EDK/Foundation/Framework/Protocol/Hii/Hii.h new file mode 100644 index 0000000..ee1341b --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/Hii/Hii.h @@ -0,0 +1,618 @@ +/*++ + +Copyright (c) 2004 - 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. + +Module Name: + + Hii.h + +Abstract: + + This file defines the Human Interface Infrastructure protocol which will + be used by resources which want to publish IFR/Font/String data and have it + collected by the Configuration engine. + +--*/ + +#ifndef _HII_H_ +#define _HII_H_ + +#include "EfiInternalFormRepresentation.h" +#include EFI_PROTOCOL_DEFINITION (UgaDraw) +#include EFI_PROTOCOL_DEFINITION (GraphicsOutput) + +//*** AMI PORTING BEGIN ***// +//#define EFI_HII_PROTOCOL_GUID \ +// { \ +// 0xd7ad636e, 0xb997, 0x459b, 0xbf, 0x3f, 0x88, 0x46, 0x89, 0x79, 0x80, 0xe1 \ +// } + +#define EFI_HII_NEW_PROTOCOL_GUID \ + { 0xea816d2c, 0xcee5, 0x4f02, 0x99, 0xb5, 0xd3, 0x90, 0x5c, 0xbb, 0xd0, 0x77 } +#define EFI_HII_PROTOCOL_GUID EFI_HII_NEW_PROTOCOL_GUID +//*** AMI PORTING END *****// +// +// Forward reference for pure ANSI compatability +// +EFI_FORWARD_DECLARATION (EFI_HII_PROTOCOL); + +typedef struct _EFI_HII_PROTOCOL EFI_HII_PROTOCOL; + +// +// Global definition +// +#define NARROW_CHAR 0xFFF0 +#define WIDE_CHAR 0xFFF1 +#define NON_BREAKING_CHAR 0xFFF2 +#define GLYPH_WIDTH 8 +#define GLYPH_HEIGHT 19 + +#define EFI_HII_FONT 1 +#define EFI_HII_STRING 2 +#define EFI_HII_IFR 3 +#define EFI_HII_KEYBOARD 4 +#define EFI_HII_HANDLES 5 +#define EFI_HII_VARIABLE 6 +#define EFI_HII_DEVICE_PATH 7 + +#define HANG(foo) { \ + volatile INT32 __iii; \ + __iii = foo; \ + while (__iii) \ + ; \ + } +// +// #define HANG(foo) +// +// References to string tokens must use this macro to enable scanning for +// token usages. +// +#define STRING_TOKEN(t) t + +// +// The following types are currently defined: +// +typedef UINT16 EFI_FORM_ID; +typedef UINT16 EFI_FORM_LABEL; +typedef UINT16 EFI_HII_HANDLE; + +#pragma pack(1) + +typedef struct { + UINT32 Length; + UINT16 Type; +} EFI_HII_PACK_HEADER; + +// +// A form list consists of a large variety of structure +// possibilities so to represent the binary blob of data +// associated with a package of forms, we will assume a +// pointer to a self-describing data buffer. +// +typedef struct { + EFI_HII_PACK_HEADER Header; +} EFI_HII_IFR_PACK; + +typedef struct { + EFI_HII_PACK_HEADER Header; // Must be filled in + EFI_HANDLE ImageHandle; // Must be filled in + EFI_HANDLE DeviceHandle; // Optional + EFI_HANDLE ControllerHandle; // Optional + EFI_HANDLE CallbackHandle; // Optional + EFI_HANDLE COBExportHandle; // Optional +} EFI_HII_HANDLE_PACK; + +// +// ******************************************************** +// EFI_VARIABLE_CONTENTS +// ******************************************************** +// +typedef struct { + EFI_HII_PACK_HEADER Header; + EFI_GUID VariableGuid; + UINT32 VariableNameLength; + UINT16 VariableId; + // + // CHAR16 VariableName[]; //Null-terminated + // +} EFI_HII_VARIABLE_PACK; + +// +// ******************************************************** +// EFI_DEVICE_PATH_PACK +// ******************************************************** +// +typedef struct { + EFI_HII_PACK_HEADER Header; + // + // EFI_DEVICE_PATH DevicePath[]; + // +} EFI_HII_DEVICE_PATH_PACK; + +// +// ******************************************************** +// EFI_HII_DATA_TABLE +// ******************************************************** +// +typedef struct { + EFI_HII_HANDLE HiiHandle; + EFI_GUID PackageGuid; + UINT32 DataTableSize; + UINT32 IfrDataOffset; + UINT32 StringDataOffset; + UINT32 VariableDataOffset; + UINT32 DevicePathOffset; + UINT32 NumberOfVariableData; + UINT32 NumberOfLanguages; + // + // EFI_HII_DEVICE_PATH_PACK DevicePath[]; + // EFI_HII_VARIABLE_PACK VariableData[]; + // EFI_HII_IFR_PACK IfrData; + // EFI_HII_STRING_PACK StringData[]; + // +} EFI_HII_DATA_TABLE; + +// +// ******************************************************** +// EFI_HII_EXPORT_TABLE +// ******************************************************** +// +typedef struct { + UINT16 NumberOfHiiDataTables; + EFI_GUID Revision; + // + // EFI_HII_DATA_TABLE HiiDataTable[]; + // +} EFI_HII_EXPORT_TABLE; + +typedef struct { + BOOLEAN FormSetUpdate; // If TRUE, next variable is significant + EFI_PHYSICAL_ADDRESS FormCallbackHandle; // If not 0, will update Formset with this info + BOOLEAN FormUpdate; // If TRUE, next variable is significant + STRING_REF FormTitle; // If not 0, will update Form with this info + UINT16 DataCount; // The number of Data entries in this structure + UINT8 *Data; // An array of 1+ op-codes, specified by DataCount +} EFI_HII_UPDATE_DATA; + +// +// String attributes +// +#define LANG_RIGHT_TO_LEFT 0x00000001 + +// +// A string package is used to localize strings to a particular +// language. The package is associated with a particular driver +// or set of drivers. Tools are used to associate tokens with +// string references in forms and in programs. These tokens are +// language agnostic. When paired with a language pack (directly +// or indirectly), the string token resolves into an actual +// UNICODE string. The NumStringPointers determines how many +// StringPointers (offset values) there are as well as the total +// number of Strings that are defined. +// +typedef struct { + EFI_HII_PACK_HEADER Header; + RELOFST LanguageNameString; + RELOFST PrintableLanguageName; + UINT32 NumStringPointers; + UINT32 Attributes; + // + // RELOFST StringPointers[]; + // EFI_STRING Strings[]; + // +} EFI_HII_STRING_PACK; + +// +// We use this one to get the real size of the header +// +typedef struct { + EFI_HII_PACK_HEADER Header; + RELOFST LanguageNameString; + RELOFST PrintableLanguageName; + UINT32 NumStringPointers; + UINT32 Attributes; +} EFI_HII_STRING_PACK_HEADER; + +// +// Glyph Attributes +// +#define GLYPH_NON_SPACING 1 +#define GLYPH_NON_BREAKING 2 + +typedef struct { + CHAR16 UnicodeWeight; + UINT8 Attributes; + UINT8 GlyphCol1[GLYPH_HEIGHT]; +} EFI_NARROW_GLYPH; + +typedef struct { + CHAR16 UnicodeWeight; + UINT8 Attributes; + UINT8 GlyphCol1[GLYPH_HEIGHT]; + UINT8 GlyphCol2[GLYPH_HEIGHT]; + UINT8 Pad[3]; +} EFI_WIDE_GLYPH; + +// +// A font list consists of a font header followed by a series +// of glyph structures. Note that fonts are not language specific. +// +typedef struct { + EFI_HII_PACK_HEADER Header; + UINT16 NumberOfNarrowGlyphs; + UINT16 NumberOfWideGlyphs; +} EFI_HII_FONT_PACK; + +// +// The IfrData in the EFI_HII_IFR_PACK structure definition +// is variable length, and not really part of the header. To +// simplify from code the size of the header, define an +// identical structure that does not include the IfrData field. +// Then use sizeof() this new structure to determine the +// actual size of the header. +// +typedef struct { + EFI_HII_PACK_HEADER Header; +} EFI_HII_IFR_PACK_HEADER; + +// +// pedef EFI_HII_PACK_HEADER EFI_HII_IFR_PACK_HEADER; +// +typedef enum { + EfiKeyLCtrl, + EfiKeyA0, + EfiKeyLAlt, + EfiKeySpaceBar, + EfiKeyA2, + EfiKeyA3, + EfiKeyA4, + EfiKeyRCtrl, + EfiKeyLeftArrow, + EfiKeyDownArrow, + EfiKeyRightArrow, + EfiKeyZero, + EfiKeyPeriod, + EfiKeyEnter, + EfiKeyLShift, + EfiKeyB0, + EfiKeyB1, + EfiKeyB2, + EfiKeyB3, + EfiKeyB4, + EfiKeyB5, + EfiKeyB6, + EfiKeyB7, + EfiKeyB8, + EfiKeyB9, + EfiKeyB10, + EfiKeyRshift, + EfiKeyUpArrow, + EfiKeyOne, + EfiKeyTwo, + EfiKeyThree, + EfiKeyCapsLock, + EfiKeyC1, + EfiKeyC2, + EfiKeyC3, + EfiKeyC4, + EfiKeyC5, + EfiKeyC6, + EfiKeyC7, + EfiKeyC8, + EfiKeyC9, + EfiKeyC10, + EfiKeyC11, + EfiKeyC12, + EfiKeyFour, + EfiKeyFive, + EfiKeySix, + EfiKeyPlus, + EfiKeyTab, + EfiKeyD1, + EfiKeyD2, + EfiKeyD3, + EfiKeyD4, + EfiKeyD5, + EfiKeyD6, + EfiKeyD7, + EfiKeyD8, + EfiKeyD9, + EfiKeyD10, + EfiKeyD11, + EfiKeyD12, + EfiKeyD13, + EfiKeyDel, + EfiKeyEnd, + EfiKeyPgDn, + EfiKeySeven, + EfiKeyEight, + EfiKeyNine, + EfiKeyE0, + EfiKeyE1, + EfiKeyE2, + EfiKeyE3, + EfiKeyE4, + EfiKeyE5, + EfiKeyE6, + EfiKeyE7, + EfiKeyE8, + EfiKeyE9, + EfiKeyE10, + EfiKeyE11, + EfiKeyE12, + EfiKeyBackSpace, + EfiKeyIns, + EfiKeyHome, + EfiKeyPgUp, + EfiKeyNLck, + EfiKeySlash, + EfiKeyAsterisk, + EfiKeyMinus, + EfiKeyEsc, + EfiKeyF1, + EfiKeyF2, + EfiKeyF3, + EfiKeyF4, + EfiKeyF5, + EfiKeyF6, + EfiKeyF7, + EfiKeyF8, + EfiKeyF9, + EfiKeyF10, + EfiKeyF11, + EfiKeyF12, + EfiKeyPrint, + EfiKeySLck, + EfiKeyPause +} EFI_KEY; + +typedef struct { + EFI_KEY Key; + CHAR16 Unicode; + CHAR16 ShiftedUnicode; + CHAR16 AltGrUnicode; + CHAR16 ShiftedAltGrUnicode; + UINT16 Modifier; +} EFI_KEY_DESCRIPTOR; + +// +// This structure allows a sparse set of keys to be redefined +// or a complete redefinition of the keyboard layout. Most +// keyboards have a lot of commonality in their layouts, therefore +// only defining those keys that need to change from the default +// minimizes the passed in information. +// +// Additionally, when an update occurs, the active keyboard layout +// will be switched to the newly updated keyboard layout. This +// allows for situations that when a keyboard layout driver is +// loaded as part of system initialization, the system will default +// the keyboard behavior to the new layout. +// +// Each call to update the keyboard mapping should contain the +// complete set of key descriptors to be updated, since every +// call to the HII which contains an EFI_HII_KEYBOARD_PACK will +// wipe the previous set of overrides. A call to +// +typedef struct { + EFI_HII_PACK_HEADER Header; + EFI_KEY_DESCRIPTOR *Descriptor; + UINT8 DescriptorCount; +} EFI_HII_KEYBOARD_PACK; + +// +// The EFI_HII_PACKAGES can contain different types of packages just +// after the structure as inline data. +// +typedef struct { + UINTN NumberOfPackages; + EFI_GUID *GuidId; + // + // EFI_HII_HANDLE_PACK *HandlePack; // Only one pack. + // EFI_HII_IFR_PACK *IfrPack; // Only one pack. + // EFI_HII_FONT_PACK *FontPack[]; // Multiple packs ok + // EFI_HII_STRING_PACK *StringPack[]; // Multiple packs ok + // EFI_HII_KEYBOARD_PACK *KeyboardPack[]; // Multiple packs ok + // +} EFI_HII_PACKAGES; + +typedef struct _EFI_HII_VARIABLE_PACK_LIST { + struct _EFI_HII_VARIABLE_PACK_LIST *NextVariablePack; + EFI_HII_VARIABLE_PACK *VariablePack; +} EFI_HII_VARIABLE_PACK_LIST; + +#pragma pack() + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_NEW_PACK) ( + IN EFI_HII_PROTOCOL * This, + IN EFI_HII_PACKAGES * Packages, + OUT EFI_HII_HANDLE * Handle + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_REMOVE_PACK) ( + IN EFI_HII_PROTOCOL *This, + IN EFI_HII_HANDLE Handle + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_FIND_HANDLES) ( + IN EFI_HII_PROTOCOL *This, + IN OUT UINT16 *HandleBufferLength, + OUT EFI_HII_HANDLE *Handle + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_EXPORT) ( + IN EFI_HII_PROTOCOL *This, + IN EFI_HII_HANDLE Handle, + IN OUT UINTN *BufferSize, + OUT VOID *Buffer + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_RESET_STRINGS) ( + IN EFI_HII_PROTOCOL *This, + IN EFI_HII_HANDLE Handle + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_TEST_STRING) ( + IN EFI_HII_PROTOCOL *This, + IN CHAR16 *StringToTest, + IN OUT UINT32 *FirstMissing, + OUT UINT32 *GlyphBufferSize + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_GET_GLYPH) ( + IN EFI_HII_PROTOCOL *This, + IN CHAR16 *Source, + IN OUT UINT16 *Index, + OUT UINT8 **GlyphBuffer, + OUT UINT16 *BitWidth, + IN OUT UINT32 *InternalStatus + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_GLYPH_TO_BLT) ( + IN EFI_HII_PROTOCOL *This, + IN UINT8 *GlyphBuffer, + IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground, + IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background, + IN UINTN Count, + IN UINTN Width, + IN UINTN Height, + IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_NEW_STRING) ( + IN EFI_HII_PROTOCOL *This, + IN CHAR16 *Language, + IN EFI_HII_HANDLE Handle, + IN OUT STRING_REF *Reference, + IN CHAR16 *NewString + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_GET_PRI_LANGUAGES) ( + IN EFI_HII_PROTOCOL *This, + IN EFI_HII_HANDLE Handle, + OUT EFI_STRING *LanguageString + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_GET_SEC_LANGUAGES) ( + IN EFI_HII_PROTOCOL *This, + IN EFI_HII_HANDLE Handle, + IN CHAR16 *PrimaryLanguage, + OUT EFI_STRING *LanguageString + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_GET_STRING) ( + IN EFI_HII_PROTOCOL *This, + IN EFI_HII_HANDLE Handle, + IN STRING_REF Token, + IN BOOLEAN Raw, + IN CHAR16 *LanguageString, + IN OUT UINTN *BufferLength, + OUT EFI_STRING StringBuffer + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_GET_LINE) ( + IN EFI_HII_PROTOCOL *This, + IN EFI_HII_HANDLE Handle, + IN STRING_REF Token, + IN OUT UINT16 *Index, + IN UINT16 LineWidth, + IN CHAR16 *LanguageString, + IN OUT UINT16 *BufferLength, + OUT EFI_STRING StringBuffer + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_GET_FORMS) ( + IN EFI_HII_PROTOCOL *This, + IN EFI_HII_HANDLE Handle, + IN EFI_FORM_ID FormId, + IN OUT UINTN *BufferLength, + OUT UINT8 *Buffer + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_GET_DEFAULT_IMAGE) ( + IN EFI_HII_PROTOCOL *This, + IN EFI_HII_HANDLE Handle, + IN UINTN DefaultMask, + OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_UPDATE_FORM) ( + IN EFI_HII_PROTOCOL *This, + IN EFI_HII_HANDLE Handle, + IN EFI_FORM_LABEL Label, + IN BOOLEAN AddData, + IN EFI_HII_UPDATE_DATA *Data + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_HII_GET_KEYBOARD_LAYOUT) ( + IN EFI_HII_PROTOCOL * This, + OUT UINT16 *DescriptorCount, + OUT EFI_KEY_DESCRIPTOR * Descriptor + ); + +typedef struct _EFI_HII_PROTOCOL { + EFI_HII_NEW_PACK NewPack; + EFI_HII_REMOVE_PACK RemovePack; + EFI_HII_FIND_HANDLES FindHandles; + EFI_HII_EXPORT ExportDatabase; + + EFI_HII_TEST_STRING TestString; + EFI_HII_GET_GLYPH GetGlyph; + EFI_HII_GLYPH_TO_BLT GlyphToBlt; + + EFI_HII_NEW_STRING NewString; + EFI_HII_GET_PRI_LANGUAGES GetPrimaryLanguages; + EFI_HII_GET_SEC_LANGUAGES GetSecondaryLanguages; + EFI_HII_GET_STRING GetString; + EFI_HII_RESET_STRINGS ResetStrings; + EFI_HII_GET_LINE GetLine; + EFI_HII_GET_FORMS GetForms; + EFI_HII_GET_DEFAULT_IMAGE GetDefaultImage; + EFI_HII_UPDATE_FORM UpdateForm; + + EFI_HII_GET_KEYBOARD_LAYOUT GetKeyboardLayout; +} EFI_HII_PROTOCOL; + +extern EFI_GUID gEfiHiiProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/IdeControllerInit/IdeControllerInit.c b/EDK/Foundation/Framework/Protocol/IdeControllerInit/IdeControllerInit.c new file mode 100644 index 0000000..5ae8b2b --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/IdeControllerInit/IdeControllerInit.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + IdeControllerInit.c + +Abstract: + + EFI IDE Controller Init Protocol + +Revision History + +--*/ + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (IdeControllerInit) + +EFI_GUID gEfiIdeControllerInitProtocolGuid = EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiIdeControllerInitProtocolGuid, "IDE Controller Init Protocol", "Platform IDE Init Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/IdeControllerInit/IdeControllerInit.h b/EDK/Foundation/Framework/Protocol/IdeControllerInit/IdeControllerInit.h new file mode 100644 index 0000000..09cbc96 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/IdeControllerInit/IdeControllerInit.h @@ -0,0 +1,348 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + IdeControllerInit.h + +Abstract: + + EFI Platform IDE Init Protocol + +Revision History + + 0.01 - Draft, 5-01-2002 + Add Atapi6 Identify structure definition, 8-14-2002 + +--*/ + +#ifndef _EFI_IDE_CONTROLLER_INIT_PROTOCOL_H +#define _EFI_IDE_CONTROLLER_INIT_PROTOCOL_H + +// +// Global ID for the EFI Platform IDE Protocol GUID +// +#define EFI_IDE_CONTROLLER_INIT_PROTOCOL_GUID \ + { 0xa1e37052, 0x80d9, 0x4e65, 0xa3, 0x17, 0x3e, 0x9a, 0x55, 0xc4, 0x3e, 0xc9 } + +//////////////////////////////////////////////////////////////////////////////////////// +// Forward reference, ANSI compatability +// +EFI_FORWARD_DECLARATION (EFI_IDE_CONTROLLER_INIT_PROTOCOL); + +// +////////////////////////////////////////////////////////////////////////////////////////// +// EFI_IDE_BUS_ENUMERATION_PHASE +// EFI_IDE_CONTROLLER_ENUM_PHASE +// +typedef enum{ + EfiIdeBeforeChannelEnumeration, + EfiIdeAfterChannelEnumeration, + EfiIdeBeforeChannelReset, + EfiIdeAfterChannelReset, + EfiIdeBusBeforeDevicePresenceDetection, + EfiIdeBusAfterDevicePresenceDetection, + EfiIdeResetMode, + EfiIdeBusPhaseMaximum +} EFI_IDE_CONTROLLER_ENUM_PHASE; + +// +//****************************************************** +// EFI_ATA_EXT_TRANSFER_PROTOCOL +//****************************************************** +// +// This extended mode describes the SATA physical protocol. +// SATA physical layers can operate at different speeds. +// These speeds are defined below. Various PATA protocols +// and associated modes are not applicable to SATA devices. +// + +typedef enum { + EfiAtaSataTransferProtocol +} EFI_ATA_EXT_TRANSFER_PROTOCOL; + +#define EFI_SATA_AUTO_SPEED 0 +#define EFI_SATA_GEN1_SPEED 1 +#define EFI_SATA_GEN2_SPEED 2 + +// +//******************************************************* +// EFI_IDE_CABLE_TYPE +//******************************************************* +// +typedef enum { + EfiIdeCableTypeUnknown, + EfiIdeCableType40pin, + EfiIdeCableType80Pin, + EfiIdeCableTypeSerial, + EfiIdeCableTypeMaximum +} EFI_IDE_CABLE_TYPE; + +// +//****************************************************** +// EFI_ATA_MODE +//****************************************************** +// +typedef struct { + BOOLEAN Valid; + UINT32 Mode; +} EFI_ATA_MODE; + +// +//****************************************************** +// EFI_ATA_EXTENDED_MODE +//****************************************************** +// +typedef struct { + EFI_ATA_EXT_TRANSFER_PROTOCOL TransferProtocol; + UINT32 Mode; +} EFI_ATA_EXTENDED_MODE; + +// +//****************************************************** +// EFI_ATA_COLLECTIVE_MODE +//****************************************************** +// +typedef struct { + EFI_ATA_MODE PioMode; + EFI_ATA_MODE SingleWordDmaMode; + EFI_ATA_MODE MultiWordDmaMode; + EFI_ATA_MODE UdmaMode; + UINT32 ExtModeCount; + EFI_ATA_EXTENDED_MODE ExtMode[1]; +} EFI_ATA_COLLECTIVE_MODE; + +// +//******************************************************* +// EFI_ATA_IDENTIFY_DATA +//******************************************************* +// + +#pragma pack(1) + +typedef struct { + UINT16 config; // General Configuration + UINT16 cylinders; // Number of Cylinders + UINT16 reserved_2; + UINT16 heads; //Number of logical heads + UINT16 vendor_data1; + UINT16 vendor_data2; + UINT16 sectors_per_track; + UINT16 vendor_specific_7_9[3]; + CHAR8 SerialNo[20]; // ASCII + UINT16 vendor_specific_20_21[2]; + UINT16 ecc_bytes_available; + CHAR8 FirmwareVer[8]; // ASCII + CHAR8 ModelName[40]; // ASCII + UINT16 multi_sector_cmd_max_sct_cnt; + UINT16 reserved_48; + UINT16 capabilities; + UINT16 reserved_50; + UINT16 pio_cycle_timing; + UINT16 reserved_52; + UINT16 field_validity; + UINT16 current_cylinders; + UINT16 current_heads; + UINT16 current_sectors; + UINT16 CurrentCapacityLsb; + UINT16 CurrentCapacityMsb; + UINT16 reserved_59; + UINT16 user_addressable_sectors_lo; + UINT16 user_addressable_sectors_hi; + UINT16 reserved_62; + UINT16 multi_word_dma_mode; + UINT16 advanced_pio_modes; + UINT16 min_multi_word_dma_cycle_time; + UINT16 rec_multi_word_dma_cycle_time; + UINT16 min_pio_cycle_time_without_flow_control; + UINT16 min_pio_cycle_time_with_flow_control; + UINT16 reserved_69_79[11]; + UINT16 major_version_no; + UINT16 minor_version_no; + UINT16 command_set_supported_82; // word 82 + UINT16 command_set_supported_83; // word 83 + UINT16 command_set_feature_extn; // word 84 + UINT16 command_set_feature_enb_85; // word 85 + UINT16 command_set_feature_enb_86; // word 86 + UINT16 command_set_feature_default; // word 87 + UINT16 ultra_dma_mode; // word 88 + UINT16 reserved_89_127[39]; + UINT16 security_status; + UINT16 vendor_data_129_159[31]; + UINT16 reserved_160_255[96]; +} EFI_ATA_IDENTIFY_DATA; + +#pragma pack() +// +//******************************************************* +// EFI_ATAPI_IDENTIFY_DATA +//******************************************************* +// +#pragma pack(1) +typedef struct { + UINT16 config; // General Configuration + UINT16 obsolete_1; + UINT16 specific_config; + UINT16 obsolete_3; + UINT16 retired_4_5[2]; + UINT16 obsolete_6; + UINT16 cfa_reserved_7_8[2]; + UINT16 retired_9; + CHAR8 SerialNo[20]; // ASCII + UINT16 retired_20_21[2]; + UINT16 obsolete_22; + CHAR8 FirmwareVer[8]; // ASCII + CHAR8 ModelName[40]; // ASCII + UINT16 multi_sector_cmd_max_sct_cnt; + UINT16 reserved_48; + UINT16 capabilities_49; + UINT16 capabilities_50; + UINT16 obsolete_51_52[2]; + UINT16 field_validity; + UINT16 obsolete_54_58[5]; + UINT16 mutil_sector_setting; + UINT16 user_addressable_sectors_lo; + UINT16 user_addressable_sectors_hi; + UINT16 obsolete_62; + UINT16 multi_word_dma_mode; + UINT16 advanced_pio_modes; + UINT16 min_multi_word_dma_cycle_time; + UINT16 rec_multi_word_dma_cycle_time; + UINT16 min_pio_cycle_time_without_flow_control; + UINT16 min_pio_cycle_time_with_flow_control; + UINT16 reserved_69_74[6]; + UINT16 queue_depth; + UINT16 reserved_76_79[4]; + UINT16 major_version_no; + UINT16 minor_version_no; + UINT16 cmd_set_support_82; + UINT16 cmd_set_support_83; + UINT16 cmd_feature_support; + UINT16 cmd_feature_enable_85; + UINT16 cmd_feature_enable_86; + UINT16 cmd_feature_default; + UINT16 ultra_dma_select; + UINT16 time_required_for_sec_erase; + UINT16 time_required_for_enhanced_sec_erase; + UINT16 current_advanced_power_mgmt_value; + UINT16 master_pwd_revison_code; + UINT16 hardware_reset_result; + UINT16 current_auto_acoustic_mgmt_value; + UINT16 reserved_95_99[5]; + UINT16 max_user_lba_for_48bit_addr[4]; + UINT16 reserved_104_126[23]; + UINT16 removable_media_status_notification_support; + UINT16 security_status; + UINT16 vendor_data_129_159[31]; + UINT16 cfa_power_mode; + UINT16 cfa_reserved_161_175[15]; + UINT16 current_media_serial_no[30]; + UINT16 reserved_206_254[49]; + UINT16 integrity_word; +} EFI_ATAPI_IDENTIFY_DATA; + +#pragma pack() +// +//******************************************************* +// EFI_IDENTIFY_DATA +//******************************************************* +// +typedef union { + EFI_ATA_IDENTIFY_DATA AtaData; + EFI_ATAPI_IDENTIFY_DATA AtapiData; +} EFI_IDENTIFY_DATA; + +#define EFI_ATAPI_DEVICE_IDENTIFY_DATA 0x8000 + +// +///////////////////////////////////////////////////////////////////////////////////////// +// Function prototype declaration, for ANSI compatability +// +typedef +EFI_STATUS +(EFIAPI *EFI_IDE_CONTROLLER_GET_CHANNEL_INFO) ( + IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, + IN UINT8 Channel, + OUT BOOLEAN *Enabled, + OUT UINT8 *MaxDevices + +); + +typedef +EFI_STATUS +(EFIAPI *EFI_IDE_CONTROLLER_NOTIFY_PHASE) ( + IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, + IN EFI_IDE_CONTROLLER_ENUM_PHASE Phase, + IN UINT8 Channel +); + +typedef +EFI_STATUS +(EFIAPI *EFI_IDE_CONTROLLER_SUBMIT_DATA) ( + IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, + IN UINT8 Channel, + IN UINT8 Device, + IN EFI_IDENTIFY_DATA *IdentifyData +); + + +typedef +EFI_STATUS +(EFIAPI *EFI_IDE_CONTROLLER_DISQUALIFY_MODE) ( + IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, + IN UINT8 Channel, + IN UINT8 Device, + IN EFI_ATA_COLLECTIVE_MODE *BadModes +); + +typedef +EFI_STATUS +(EFIAPI *EFI_IDE_CONTROLLER_CALCULATE_MODE) ( + IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, + IN UINT8 Channel, + IN UINT8 Device, + OUT EFI_ATA_COLLECTIVE_MODE **SupportedModes +); + +// +// ?? What happen to EFI_IDE_CONTROLLER_SET_TIMING ??? +// +typedef +EFI_STATUS +(EFIAPI *EFI_IDE_CONTROLLER_SET_TIMING) ( + IN EFI_IDE_CONTROLLER_INIT_PROTOCOL *This, + IN UINT8 Channel, + IN UINT8 Device, + IN EFI_ATA_COLLECTIVE_MODE *Modes +); + +// +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Interface structure +// EFI_IDE_CONTROLLER_INIT_PROTOCOL protocol provides the chipset specific information to the IDE bus driver. +// An IDE Bus driver wants to manage an IDE bus and possible IDE devices will have to retrieve the +// EFI_IDE_CONTROLLER_INIT_PROTOCOL instances. +// +typedef struct _EFI_IDE_CONTROLLER_INIT_PROTOCOL { + EFI_IDE_CONTROLLER_GET_CHANNEL_INFO GetChannelInfo; + EFI_IDE_CONTROLLER_NOTIFY_PHASE NotifyPhase; + EFI_IDE_CONTROLLER_SUBMIT_DATA SubmitData; + EFI_IDE_CONTROLLER_DISQUALIFY_MODE DisqualifyMode; + EFI_IDE_CONTROLLER_CALCULATE_MODE CalculateMode; + EFI_IDE_CONTROLLER_SET_TIMING SetTiming; + BOOLEAN EnumAll; + UINT8 ChannelCount; +} EFI_IDE_CONTROLLER_INIT_PROTOCOL; + + +extern EFI_GUID gEfiIdeControllerInitProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/IncompatiblePciDeviceSupport/IncompatiblePciDeviceSupport.c b/EDK/Foundation/Framework/Protocol/IncompatiblePciDeviceSupport/IncompatiblePciDeviceSupport.c new file mode 100644 index 0000000..020331b --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/IncompatiblePciDeviceSupport/IncompatiblePciDeviceSupport.c @@ -0,0 +1,34 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + IncompatiblePciDeviceSupport.c + +Abstract: + + EFI Incompatible PCI Device Support Protocol + +Revision History + +--*/ + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (IncompatiblePciDeviceSupport) + +EFI_GUID gEfiIncompatiblePciDeviceSupportProtocolGuid = EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL_GUID; + +EFI_GUID_STRING + ( + &gEfiIncompatiblePciDeviceSupportProtocolGuid, "Incompatible PCI Device Support Protocol", + "Tiano Incompatible PCI Device Support Protocol" + ); diff --git a/EDK/Foundation/Framework/Protocol/IncompatiblePciDeviceSupport/IncompatiblePciDeviceSupport.h b/EDK/Foundation/Framework/Protocol/IncompatiblePciDeviceSupport/IncompatiblePciDeviceSupport.h new file mode 100644 index 0000000..c8b946d --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/IncompatiblePciDeviceSupport/IncompatiblePciDeviceSupport.h @@ -0,0 +1,55 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + IncompatiblePciDeviceSupport.h + +Abstract: + + EFI Incompatible PCI Device Support Protocol + +Revision History + +--*/ + +#ifndef _INCOMPATIBLE_PCI_DEVICE_SUPPORT_H_ +#define _INCOMPATIBLE_PCI_DEVICE_SUPPORT_H_ + +#define EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL_GUID \ + {0xeb23f55a, 0x7863, 0x4ac2, 0x8d, 0x3d, 0x95, 0x65, 0x35, 0xde, 0x03, 0x75} + +EFI_FORWARD_DECLARATION (EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT); + + +typedef +EFI_STATUS +(EFIAPI *EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_CHECK_DEVICE) ( + IN EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT *This, + IN UINTN VendorId, + IN UINTN DeviceId, + IN UINTN Revision, + IN UINTN SubVendorId,OPTIONAL + IN UINTN SubDeviceId,OPTIONAL + OUT VOID *Configuration +); + + +// +// Interface structure for the Incompatible PCI Device Support Protocol +// +typedef struct _EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT { + EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_CHECK_DEVICE CheckDevice; +} EFI_INCOMPATIBLE_PCI_DEVICE_SUPPORT_PROTOCOL; + +extern EFI_GUID gEfiIncompatiblePciDeviceSupportProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/Legacy8259/Legacy8259.c b/EDK/Foundation/Framework/Protocol/Legacy8259/Legacy8259.c new file mode 100644 index 0000000..f52c030 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/Legacy8259/Legacy8259.c @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 1999 - 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. + + +Module Name: + + Legacy8259.c + +Abstract: + + EFI Legacy Region Protocol + +Revision History + +--*/ + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (Legacy8259) + +EFI_GUID gEfiLegacy8259ProtocolGuid = EFI_LEGACY_8259_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiLegacy8259ProtocolGuid, "Legacy 8259 Protocol", "Legacy 8259 Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/Legacy8259/Legacy8259.h b/EDK/Foundation/Framework/Protocol/Legacy8259/Legacy8259.h new file mode 100644 index 0000000..2819a5e --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/Legacy8259/Legacy8259.h @@ -0,0 +1,317 @@ +/*++ + +Copyright (c) 1999 - 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. + + +Module Name: + + Legacy8259.h + +Abstract: + + This protocol abstracts the 8259 interrupt controller. This includes + PCI IRQ routing need to program the PCI Interrupt Line register. + +Revision History + + The EFI Legacy 8259 Protocol is compliant with CSM spec 0.96. + +--*/ + +#ifndef _EFI_LEGACY_8259_H +#define _EFI_LEGACY_8259_H + +#define EFI_LEGACY_8259_PROTOCOL_GUID \ + { \ + 0x38321dba, 0x4fe0, 0x4e17, 0x8a, 0xec, 0x41, 0x30, 0x55, 0xea, 0xed, 0xc1 \ + } + +EFI_FORWARD_DECLARATION (EFI_LEGACY_8259_PROTOCOL); + +typedef enum { + Efi8259Irq0, + Efi8259Irq1, + Efi8259Irq2, + Efi8259Irq3, + Efi8259Irq4, + Efi8259Irq5, + Efi8259Irq6, + Efi8259Irq7, + Efi8259Irq8, + Efi8259Irq9, + Efi8259Irq10, + Efi8259Irq11, + Efi8259Irq12, + Efi8259Irq13, + Efi8259Irq14, + Efi8259Irq15, + Efi8259IrqMax +} EFI_8259_IRQ; + +typedef enum { + Efi8259LegacyMode, + Efi8259ProtectedMode, + Efi8259MaxMode +} EFI_8259_MODE; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_8259_SET_VECTOR_BASE) ( + IN EFI_LEGACY_8259_PROTOCOL * This, + IN UINT8 MasterBase, + IN UINT8 SlaveBase + ) +/*++ + + Routine Description: + Get the 8259 interrupt masks for Irq0 - Irq15. A different mask exists for + the legacy mode mask and the protected mode mask. The base address for the 8259 + is different for legacy and protected mode, so two masks are required. + + Arguments: + This - Protocol instance pointer. + MasterBase - The base vector for the Master PIC in the 8259 controller + Slavebase - The base vector for the Master PIC in the 8259 controller + + Returns: + EFI_SUCCESS - The new bases were programmed + EFI_DEVICE_ERROR - A device erro occured programming the vector bases + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_8259_GET_MASK) ( + IN EFI_LEGACY_8259_PROTOCOL * This, + OUT UINT16 *LegacyMask, OPTIONAL + OUT UINT16 *LegacyEdgeLevel, OPTIONAL + OUT UINT16 *ProtectedMask, OPTIONAL + OUT UINT16 *ProtectedEdgeLevel OPTIONAL + ) +/*++ + + Routine Description: + Get the 8259 interrupt masks for Irq0 - Irq15. A different mask exists for + the legacy mode mask and the protected mode mask. The base address for the 8259 + is different for legacy and protected mode, so two masks are required. + + Arguments: + This - Protocol instance pointer. + LegacyMask - Bit 0 is Irq0 - Bit 15 is Irq15 + LegacyEdgeLevel - Bit 0 is Irq0 - Bit 15 is Irq15 + ProtectedMask - Bit 0 is Irq0 - Bit 15 is Irq15 + ProtectedEdgeLevel - Bit 0 is Irq0 - Bit 15 is Irq15 + + Returns: + EFI_SUCCESS - 8259 status returned + EFI_DEVICE_ERROR - Error reading 8259 + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_8259_SET_MASK) ( + IN EFI_LEGACY_8259_PROTOCOL * This, + IN UINT16 *LegacyMask, OPTIONAL + IN UINT16 *LegacyEdgeLevel, OPTIONAL + IN UINT16 *ProtectedMask, OPTIONAL + IN UINT16 *ProtectedEdgeLevel OPTIONAL + ) +/*++ + + Routine Description: + Set the 8259 interrupt masks for Irq0 - Irq15. A different mask exists for + the legacy mode mask and the protected mode mask. The base address for the 8259 + is different for legacy and protected mode, so two masks are required. + Also set the edge/level masks. + + Arguments: + This - Protocol instance pointer. + LegacyMask - Bit 0 is Irq0 - Bit 15 is Irq15 + LegacyEdgeLevel - Bit 0 is Irq0 - Bit 15 is Irq15 + ProtectedMask - Bit 0 is Irq0 - Bit 15 is Irq15 + ProtectedEdgeLevel - Bit 0 is Irq0 - Bit 15 is Irq15 + + Returns: + EFI_SUCCESS - 8259 status returned + EFI_DEVICE_ERROR - Error reading 8259 + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_8259_SET_MODE) ( + IN EFI_LEGACY_8259_PROTOCOL * This, + IN EFI_8259_MODE Mode, + IN UINT16 *Mask, OPTIONAL + IN UINT16 *EdgeLevel OPTIONAL + ) +/*++ + + Routine Description: + Set the 8259 mode of operation. The base address for the 8259 is different for + legacy and protected mode. The legacy mode requires the master 8259 to have a + master base of 0x08 and the slave base of 0x70. The protected mode base locations + are not defined. Interrupts must be masked by the caller before this function + is called. The interrupt mask from the current mode is saved. The interrupt + mask for the new mode is Mask, or if Mask does not exist the previously saved + mask is used. + + + Arguments: + This - Protocol instance pointer. + Mode - Mode of operation. i.e. real mode or protected mode + Mask - Optional interupt mask for the new mode. + EdgeLevel - Optional trigger mask for the new mode. + + Returns: + EFI_SUCCESS - 8259 programmed + EFI_DEVICE_ERROR - Error writting to 8259 + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_8259_GET_VECTOR) ( + IN EFI_LEGACY_8259_PROTOCOL * This, + IN EFI_8259_IRQ Irq, + OUT UINT8 *Vector + ) +/*++ + + Routine Description: + Convert from IRQ to processor interrupt vector number. + + Arguments: + This - Protocol instance pointer. + Irq - 8259 IRQ0 - IRQ15 + Vector - Processor vector number that matches Irq + + Returns: + EFI_SUCCESS - The Vector matching Irq is returned + EFI_INVALID_PARAMETER - Irq not valid + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_8259_ENABLE_IRQ) ( + IN EFI_LEGACY_8259_PROTOCOL * This, + IN EFI_8259_IRQ Irq, + IN BOOLEAN LevelTriggered + ) +/*++ + + Routine Description: + Enable Irq by unmasking interrupt in 8259 + + Arguments: + This - Protocol instance pointer. + Irq - 8259 IRQ0 - IRQ15 + LevelTriggered - TRUE if level triggered. FALSE if edge triggered. + + Returns: + EFI_SUCCESS - Irq enabled on 8259 + EFI_INVALID_PARAMETER - Irq not valid + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_8259_DISABLE_IRQ) ( + IN EFI_LEGACY_8259_PROTOCOL * This, + IN EFI_8259_IRQ Irq + ) +/*++ + + Routine Description: + Disable Irq by masking interrupt in 8259 + + Arguments: + This - Protocol instance pointer. + Irq - 8259 IRQ0 - IRQ15 + + Returns: + EFI_SUCCESS - Irq disabled on 8259 + EFI_INVALID_PARAMETER - Irq not valid + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_8259_GET_INTERRUPT_LINE) ( + IN EFI_LEGACY_8259_PROTOCOL * This, + IN EFI_HANDLE PciHandle, + OUT UINT8 *Vector + ) +/*++ + + Routine Description: + PciHandle represents a PCI config space of a PCI function. Vector + represents Interrupt Pin (from PCI config space) and it is the data + that is programmed into the Interrupt Line (from the PCI config space) + register. + + Arguments: + This - Protocol instance pointer. + PciHandle - PCI function to return vector for + Vector - Vector for fucntion that matches + + Returns: + EFI_SUCCESS - A valid Vector is returned + EFI_INVALID_PARAMETER - PciHandle not valid + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_8259_END_OF_INTERRUPT) ( + IN EFI_LEGACY_8259_PROTOCOL * This, + IN EFI_8259_IRQ Irq + ) +/*++ + + Routine Description: + Send an EOI to 8259 + + Arguments: + This - Protocol instance pointer. + Irq - 8259 IRQ0 - IRQ15 + + Returns: + EFI_SUCCESS - EOI successfully sent to 8259 + EFI_INVALID_PARAMETER - Irq not valid + +--*/ +; + +typedef struct _EFI_LEGACY_8259_PROTOCOL { + EFI_LEGACY_8259_SET_VECTOR_BASE SetVectorBase; + EFI_LEGACY_8259_GET_MASK GetMask; + EFI_LEGACY_8259_SET_MASK SetMask; + EFI_LEGACY_8259_SET_MODE SetMode; + EFI_LEGACY_8259_GET_VECTOR GetVector; + EFI_LEGACY_8259_ENABLE_IRQ EnableIrq; + EFI_LEGACY_8259_DISABLE_IRQ DisableIrq; + EFI_LEGACY_8259_GET_INTERRUPT_LINE GetInterruptLine; + EFI_LEGACY_8259_END_OF_INTERRUPT EndOfInterrupt; +} EFI_LEGACY_8259_PROTOCOL; + +extern EFI_GUID gEfiLegacy8259ProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/LegacyBios/LegacyBios.c b/EDK/Foundation/Framework/Protocol/LegacyBios/LegacyBios.c new file mode 100644 index 0000000..bfeaf00 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/LegacyBios/LegacyBios.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + LegacyBios.c + +Abstract: + + EFI Legacy BIOS Protocol + +Revision History + +--*/ + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (LegacyBios) + +EFI_GUID gEfiLegacyBiosProtocolGuid = EFI_LEGACY_BIOS_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiLegacyBiosProtocolGuid, "Legacy BIOS Protocol", "Legacy BIOS Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/LegacyBios/LegacyBios.h b/EDK/Foundation/Framework/Protocol/LegacyBios/LegacyBios.h new file mode 100644 index 0000000..d145be8 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/LegacyBios/LegacyBios.h @@ -0,0 +1,714 @@ +/*++ + +Copyright (c) 2004 - 2007, 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. + +Module Name: + + LegacyBios.h + +Abstract: + + The EFI Legacy BIOS Protocol is used to abstract legacy Option ROM usage + under EFI and Legacy OS boot. + + Note: The names for EFI_IA32_REGISTER_SET elements were picked to follow + well known naming conventions. + + Thunk - A thunk is a transition from one processor mode to another. A Thunk + is a transition from native EFI mode to 16-bit mode. A reverse thunk + would be a transition from 16-bit mode to native EFI mode. + + + Note: Note: Note: Note: Note: Note: Note: + + You most likely should not use this protocol! Find the EFI way to solve the + problem to make your code portable + + Note: Note: Note: Note: Note: Note: Note: + +Revision History + + The EFI Legacy BIOS Protocol is compliant with CSM spec 0.96. + +--*/ + +#ifndef _EFI_LEGACY_BIOS_H +#define _EFI_LEGACY_BIOS_H + +#define EFI_LEGACY_BIOS_PROTOCOL_GUID \ + { \ + 0xdb9a1e3d, 0x45cb, 0x4abb, 0x85, 0x3b, 0xe5, 0x38, 0x7f, 0xdb, 0x2e, 0x2d \ + } + +EFI_FORWARD_DECLARATION (EFI_LEGACY_BIOS_PROTOCOL); + +// +// Convert from 32-bit address (_Adr) to Segment:Offset 16-bit form +// +#define EFI_SEGMENT(_Adr) (UINT16) ((UINT16) (((UINTN) (_Adr)) >> 4) & 0xf000) +#define EFI_OFFSET(_Adr) (UINT16) (((UINT16) ((UINTN) (_Adr))) & 0xffff) +#define BYTE_GRANULARITY 0x01 +#define WORD_GRANULARITY 0x02 +#define DWORD_GRANULARITY 0x04 +#define QWORD_GRANULARITY 0x08 +#define PARAGRAPH_GRANULARITY 0x10 + +#define CARRY_FLAG 0x01 + +typedef struct { + UINT32 CF:1; + UINT32 Reserved1:1; + UINT32 PF:1; + UINT32 Reserved2:1; + UINT32 AF:1; + UINT32 Reserved3:1; + UINT32 ZF:1; + UINT32 SF:1; + UINT32 TF:1; + UINT32 IF:1; + UINT32 DF:1; + UINT32 OF:1; + UINT32 IOPL:2; + UINT32 NT:1; + UINT32 Reserved4:2; + UINT32 VM:1; + UINT32 Reserved5:14; +} EFI_EFLAGS_REG; + +typedef struct { + UINT16 CF : 1; + UINT16 Reserved1 : 1; + UINT16 PF : 1; + UINT16 Reserved2 : 1; + UINT16 AF : 1; + UINT16 Reserved3 : 1; + UINT16 ZF : 1; + UINT16 SF : 1; + UINT16 TF : 1; + UINT16 IF : 1; + UINT16 DF : 1; + UINT16 OF : 1; + UINT16 IOPL : 2; + UINT16 NT : 1; + UINT16 Reserved4 : 1; +} EFI_FLAGS_REG; + +typedef struct { + UINT32 EAX; + UINT32 EBX; + UINT32 ECX; + UINT32 EDX; + UINT32 ESI; + UINT32 EDI; + EFI_EFLAGS_REG EFlags; + UINT16 ES; + UINT16 CS; + UINT16 SS; + UINT16 DS; + UINT16 FS; + UINT16 GS; + UINT32 EBP; + UINT32 ESP; +} EFI_DWORD_REGS; + +typedef struct { + UINT16 AX; + UINT16 ReservedAX; + UINT16 BX; + UINT16 ReservedBX; + UINT16 CX; + UINT16 ReservedCX; + UINT16 DX; + UINT16 ReservedDX; + UINT16 SI; + UINT16 ReservedSI; + UINT16 DI; + UINT16 ReservedDI; + EFI_FLAGS_REG Flags; + UINT16 ReservedFlags; + UINT16 ES; + UINT16 CS; + UINT16 SS; + UINT16 DS; + UINT16 FS; + UINT16 GS; + UINT16 BP; + UINT16 ReservedBP; + UINT16 SP; + UINT16 ReservedSP; +} EFI_WORD_REGS; + +typedef struct { + UINT8 AL; + UINT8 AH; + UINT16 ReservedAX; + UINT8 BL; + UINT8 BH; + UINT16 ReservedBX; + UINT8 CL; + UINT8 CH; + UINT16 ReservedCX; + UINT8 DL; + UINT8 DH; + UINT16 ReservedDX; +} EFI_BYTE_REGS; + +typedef union { + EFI_DWORD_REGS E; + EFI_WORD_REGS X; + EFI_BYTE_REGS H; +} EFI_IA32_REGISTER_SET; + +#pragma pack(1) +// +// $EFI table created by Legacy16 code and consumed by EFI Legacy driver +// +typedef struct { + UINT32 Signature; // "$EFI" + UINT8 TableChecksum; + UINT8 TableLength; + UINT8 EfiMajorRevision; + UINT8 EfiMinorRevision; + UINT8 TableMajorRevision; + UINT8 TableMinorRevision; + UINT16 Reserved; + UINT16 Compatibility16CallSegment; + UINT16 Compatibility16CallOffset; + + UINT16 PnPInstallationCheckSegment; + UINT16 PnPInstallationCheckOffset; + + UINT32 EfiSystemTable; // IPF - CSM Integration + UINT32 OemIdStringPointer; + UINT32 AcpiRsdPtrPointer; + UINT16 OemRevision; + UINT32 E820Pointer; + UINT32 E820Length; + UINT32 IrqRoutingTablePointer; + UINT32 IrqRoutingTableLength; + UINT32 MpTablePtr; + UINT32 MpTableLength; + UINT16 OemIntSegment; + UINT16 OemIntOffset; + UINT16 Oem32Segment; + UINT16 Oem32Offset; + UINT16 Oem16Segment; + UINT16 Oem16Offset; + UINT16 TpmSegment; + UINT16 TpmOffset; + UINT32 IbvPointer; + UINT32 PciExpressBase; + UINT8 LastPciBus; + +} EFI_COMPATIBILITY16_TABLE; + +typedef enum { + Compatibility16InitializeYourself = 0x0000, + Compatibility16UpdateBbs = 0x0001, + Compatibility16PrepareToBoot = 0x0002, + Compatibility16Boot = 0x0003, + Compatibility16RetrieveLastBootDevice = 0x0004, + Compatibility16DispatchOprom = 0x0005, + Compatibility16GetTableAddress = 0x0006, + Compatibility16SetKeyboardLeds = 0x0007, + Compatibility16InstallPciHandler = 0x0008, +} EFI_COMPATIBILITY_FUNCTIONS; + +// +// define maximum number of HDD system supports +// +#define MAX_HDD_ENTRIES 0x30 + +typedef struct { + UINT16 Raw[256]; +} ATAPI_IDENTIFY; + +// +// HDD_INFO status +// +#define HDD_PRIMARY 0x01 +#define HDD_SECONDARY 0x02 +#define HDD_MASTER_ATAPI_CDROM 0x04 +#define HDD_SLAVE_ATAPI_CDROM 0x08 +#define HDD_MASTER_IDE 0x20 +#define HDD_SLAVE_IDE 0x40 +#define HDD_MASTER_ATAPI_ZIPDISK 0x10 +#define HDD_SLAVE_ATAPI_ZIPDISK 0x80 + +typedef struct { + UINT16 Status; + UINT32 Bus; + UINT32 Device; + UINT32 Function; + UINT16 CommandBaseAddress; + UINT16 ControlBaseAddress; + UINT16 BusMasterAddress; + UINT8 HddIrq; + ATAPI_IDENTIFY IdentifyDrive[2]; +} HDD_INFO; + +// +// Parties data structures +// +typedef struct { + UINT8 DirectoryServiceValidity : 1; + UINT8 RabcaUsedFlag : 1; + UINT8 ExecuteHddDiagnosticsFlag : 1; + UINT8 Reserved : 5; +} UDC_ATTRIBUTES; + +typedef struct { + UDC_ATTRIBUTES Attributes; + UINT8 DeviceNumber; + UINT8 BbsTableEntryNumberForParentDevice; + UINT8 BbsTableEntryNumberForBoot; + UINT8 BbsTableEntryNumberForHddDiag; + UINT8 BeerData[128]; + UINT8 ServiceAreaData[64]; +} UD_TABLE; + +// +// define BBS Device Types +// +#define BBS_FLOPPY 0x01 +#define BBS_HARDDISK 0x02 +#define BBS_CDROM 0x03 +#define BBS_PCMCIA 0x04 +#define BBS_USB 0x05 +#define BBS_EMBED_NETWORK 0x06 +#define BBS_BEV_DEVICE 0x80 +#define BBS_UNKNOWN 0xff + +typedef struct { + UINT16 OldPosition : 4; + UINT16 Reserved1 : 4; + UINT16 Enabled : 1; + UINT16 Failed : 1; + UINT16 MediaPresent : 2; + UINT16 Reserved2 : 4; +} BBS_STATUS_FLAGS; + +#define MAX_BBS_ENTRIES 0x100 +// +// BBS_IGNORE_ENTRY is placed in the BootPriority field if the entry is to +// be skipped. +// BBS_UNPRIORITIZED_ENTRY is placed in the BootPriority field before +// priority has been assigned but indicates valid entry. +// BBS_LOWEST_PRIORITY is normally used for removable media with no media +// inserted. This allows the 16-bit CSM to allocate a drive letter to +// the device. +// BBS_DO_NOT_BOOT_FROM is used for devices that the 16-bit CSM is to assign +// a drive letter to but never boot from. +// +// AdditionalIrq??Handler usage is IBV specific. The fields have been added +// for: +// 1. Saving non-BBS card info about IRQs taken by card. +// 2. For BBS compliant cards that hook IRQs in order to have their SETUP +// executed. +// +#define BBS_DO_NOT_BOOT_FROM 0xFFFC +#define BBS_LOWEST_PRIORITY 0xFFFD +#define BBS_UNPRIORITIZED_ENTRY 0xFFFE +#define BBS_IGNORE_ENTRY 0xFFFF + +typedef struct { + UINT16 BootPriority; + UINT32 Bus; + UINT32 Device; + UINT32 Function; + UINT8 Class; + UINT8 SubClass; + UINT16 MfgStringOffset; + UINT16 MfgStringSegment; + UINT16 DeviceType; + BBS_STATUS_FLAGS StatusFlags; + UINT16 BootHandlerOffset; + UINT16 BootHandlerSegment; + UINT16 DescStringOffset; + UINT16 DescStringSegment; + UINT32 InitPerReserved; + UINT32 AdditionalIrq13Handler; + UINT32 AdditionalIrq18Handler; + UINT32 AdditionalIrq19Handler; + UINT32 AdditionalIrq40Handler; + UINT8 AssignedDriveNumber; + UINT32 AdditionalIrq41Handler; + UINT32 AdditionalIrq46Handler; + UINT32 IBV1; + UINT32 IBV2; +} BBS_TABLE; + +#pragma pack() + +typedef +BOOLEAN +(EFIAPI *EFI_LEGACY_BIOS_INT86) ( + IN EFI_LEGACY_BIOS_PROTOCOL * This, + IN UINT8 BiosInt, + IN OUT EFI_IA32_REGISTER_SET * Regs + ) +/*++ + + Routine Description: + Thunk to 16-bit real mode and execute a software interrupt with a vector + of BiosInt. Regs will contain the 16-bit register context on entry and + exit. + + Arguments: + This - Protocol instance pointer. + BiosInt - Processor interrupt vector to invoke + Reg - Register contexted passed into (and returned) from thunk to + 16-bit mode + + Returns: + FALSE - Thunk completed, and there were no BIOS errors in the target code. + See Regs for status. + TRUE - There was a BIOS erro in the target code. + +--*/ +; + +typedef +BOOLEAN +(EFIAPI *EFI_LEGACY_BIOS_FARCALL86) ( + IN EFI_LEGACY_BIOS_PROTOCOL * This, + IN UINT16 Segment, + IN UINT16 Offset, + IN EFI_IA32_REGISTER_SET * Regs, + IN VOID *Stack, + IN UINTN StackSize + ) +/*++ + + Routine Description: + Thunk to 16-bit real mode and call Segment:Offset. Regs will contain the + 16-bit register context on entry and exit. Arguments can be passed on + the Stack argument + + Arguments: + This - Protocol instance pointer. + Segment - Segemnt of 16-bit mode call + Offset - Offset of 16-bit mdoe call + Reg - Register contexted passed into (and returned) from thunk to + 16-bit mode + Stack - Caller allocated stack used to pass arguments + StackSize - Size of Stack in bytes + + Returns: + FALSE - Thunk completed, and there were no BIOS errors in the target code. + See Regs for status. + TRUE - There was a BIOS erro in the target code. + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_CHECK_ROM) ( + IN EFI_LEGACY_BIOS_PROTOCOL * This, + IN EFI_HANDLE PciHandle, + OUT VOID **RomImage, OPTIONAL + OUT UINTN *RomSize, OPTIONAL + OUT UINTN *Flags + + ) +/*++ + + Routine Description: + Test to see if a legacy PCI ROM exists for this device. Optionally return + the Legacy ROM instance for this PCI device. + + Arguments: + This - Protocol instance pointer. + PciHandle - The PCI PC-AT OPROM from this devices ROM BAR will be loaded + RomImage - Return the legacy PCI ROM for this device + RomSize - Size of ROM Image + Flags - Indicates if ROM found and if PC-AT. + + Returns: + EFI_SUCCESS - Legacy Option ROM availible for this device + EFI_UNSUPPORTED - Legacy Option ROM not supported. + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_INSTALL_ROM) ( + IN EFI_LEGACY_BIOS_PROTOCOL * This, + IN EFI_HANDLE PciHandle, + IN VOID **RomImage, + OUT UINTN *Flags, + OUT UINT8 *DiskStart, OPTIONAL + OUT UINT8 *DiskEnd, OPTIONAL + OUT VOID **RomShadowAddress, OPTIONAL + OUT UINT32 *ShadowedRomSize OPTIONAL + ) +/*++ + + Routine Description: + Load a legacy PC-AT OPROM on the PciHandle device. Return information + about how many disks were added by the OPROM and the shadow address and + size. DiskStart & DiskEnd are INT 13h drive letters. Thus 0x80 is C: + + Arguments: + This - Protocol instance pointer. + PciHandle - The PCI PC-AT OPROM from this devices ROM BAR will be loaded. + This value is NULL if RomImage is non-NULL. This is the normal + case. + RomImage - A PCI PC-AT ROM image. This argument is non-NULL if there is + no hardware associated with the ROM and thus no PciHandle, + otherwise is must be NULL. + Example is PXE base code. + Flags - Return Status if ROM was found and if was Legacy OPROM. + DiskStart - Disk number of first device hooked by the ROM. If DiskStart + is the same as DiskEnd no disked were hooked. + DiskEnd - Disk number of the last device hooked by the ROM. + RomShadowAddress - Shadow address of PC-AT ROM + RomShadowSize - Size of RomShadowAddress in bytes + + Returns: + EFI_SUCCESS - Thunk completed, see Regs for status. + EFI_INVALID_PARAMETER - PciHandle not found + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_BOOT) ( + IN EFI_LEGACY_BIOS_PROTOCOL * This, + IN BBS_BBS_DEVICE_PATH * BootOption, + IN UINT32 LoadOptionsSize, + IN VOID *LoadOptions + ) +/*++ + + Routine Description: + Attempt to legacy boot the BootOption. If the EFI contexted has been + compromised this function will not return. + + Arguments: + This - Protocol instance pointer. + BootOption - EFI Device Path from BootXXXX variable. + LoadOptionSize - Size of LoadOption in size. + LoadOption - LoadOption from BootXXXX variable + + Returns: + EFI_SUCCESS - Removable media not present + +--*/ +; +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_UPDATE_KEYBOARD_LED_STATUS) ( + IN EFI_LEGACY_BIOS_PROTOCOL * This, + IN UINT8 Leds + ) +/*++ + + Routine Description: + Update BDA with current Scroll, Num & Cap lock LEDS + + Arguments: + This - Protocol instance pointer. + Leds - Status of current Scroll, Num & Cap lock LEDS + Bit 0 is Scroll Lock 0 = Not locked + Bit 1 is Num Lock + Bit 2 is Caps Lock + + Returns: + EFI_SUCCESS - Removable media not present + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_GET_BBS_INFO) ( + IN EFI_LEGACY_BIOS_PROTOCOL * This, + OUT UINT16 *HddCount, + OUT HDD_INFO **HddInfo, + OUT UINT16 *BbsCount, + IN OUT BBS_TABLE **BbsTable + ) +/*++ + + Routine Description: + Retrieve legacy BBS info and assign boot priority. + + Arguments: + This - Protocol instance pointer. + HddCount - Number of HDD_INFO structures + HddInfo - Onboard IDE controller information + BbsCount - Number of BBS_TABLE structures + BbsTable - List BBS entries + + Returns: + EFI_SUCCESS - Tables returned + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_PREPARE_TO_BOOT_EFI) ( + IN EFI_LEGACY_BIOS_PROTOCOL * This, + OUT UINT16 *BbsCount, + OUT BBS_TABLE **BbsTable + ) +/*++ + + Routine Description: + Assign drive number to legacy HDD drives prior to booting an EFI + aware OS so the OS can access drives without an EFI driver. + + Arguments: + This - Protocol instance pointer. + BbsCount - Number of BBS_TABLE structures + BbsTable - List BBS entries + + Returns: + EFI_SUCCESS - Drive numbers assigned + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_BOOT_UNCONVENTIONAL_DEVICE) ( + IN EFI_LEGACY_BIOS_PROTOCOL * This, + IN UDC_ATTRIBUTES Attributes, + IN UINTN BbsEntry, + IN VOID *BeerData, + IN VOID *ServiceAreaData + ) +/*++ + + Routine Description: + To boot from an unconventional device like parties and/or execute + HDD diagnostics. + + Arguments: + This - Protocol instance pointer. + Attributes - How to interpret the other input parameters + BbsEntry - The 0-based index into the BbsTable for the parent + device. + BeerData - Pointer to the 128 bytes of ram BEER data. + ServiceAreaData - Pointer to the 64 bytes of raw Service Area data. The + caller must provide a pointer to the specific Service + Area and not the start all Service Areas. + Returns: + EFI_INVALID_PARAMETER if error. Does NOT return if no error. + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_SHADOW_ALL_LEGACY_OPROMS) ( + IN EFI_LEGACY_BIOS_PROTOCOL * This + ) +/*++ + + Routine Description: + Shadow all legacy16 OPROMs that haven't been shadowed. + Warning: Use this with caution. This routine disconnects all EFI + drivers. If used externally then caller must re-connect EFI + drivers. + Arguments: + + Returns: + EFI_SUCCESS - OPROMs shadowed + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_GET_LEGACY_REGION) ( + IN EFI_LEGACY_BIOS_PROTOCOL * This, + IN UINTN LegacyMemorySize, + IN UINTN Region, + IN UINTN Alignment, + OUT VOID **LegacyMemoryAddress + ) +/*++ + +Routine Description: + Get a region from the LegacyBios for S3 usage. + +Arguments: + This - Protocol instance pointer. + LegacyMemorySize - Size of required region + Region - Region to use. + 00 = Either 0xE0000 or 0xF0000 block + Bit0 = 1 0xF0000 block + Bit1 = 1 0xE0000 block + Alignment - Address alignment. Bit mapped. First non-zero + bit from right is alignment. + LegacyMemoryAddress - Region Assigned + +Returns: + + EFI_SUCCESS - Region assigned + + Other - Region not assigned + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_COPY_LEGACY_REGION) ( + IN EFI_LEGACY_BIOS_PROTOCOL * This, + IN UINTN LegacyMemorySize, + IN VOID *LegacyMemoryAddress, + IN VOID *LegacyMemorySourceAddress + ) +/*++ + +Routine Description: + Get a region from the LegacyBios for Tiano usage. Can only be invoked once. + +Arguments: + This - Protocol instance pointer. + LegacyMemorySize - Size of data to copy + LegacyMemoryAddress - Legacy Region destination address + Note: must be in region assigned by + LegacyBiosGetLegacyRegion + LegacyMemorySourceAddress - Source of data + +Returns: + + EFI_SUCCESS - Region assigned + EFI_ACCESS_DENIED - Destination outside assigned region + +--*/ +; + +typedef struct _EFI_LEGACY_BIOS_PROTOCOL { + EFI_LEGACY_BIOS_INT86 Int86; + EFI_LEGACY_BIOS_FARCALL86 FarCall86; + EFI_LEGACY_BIOS_CHECK_ROM CheckPciRom; + EFI_LEGACY_BIOS_INSTALL_ROM InstallPciRom; + EFI_LEGACY_BIOS_BOOT LegacyBoot; + EFI_LEGACY_BIOS_UPDATE_KEYBOARD_LED_STATUS UpdateKeyboardLedStatus; + EFI_LEGACY_BIOS_GET_BBS_INFO GetBbsInfo; + EFI_LEGACY_BIOS_SHADOW_ALL_LEGACY_OPROMS ShadowAllLegacyOproms; + EFI_LEGACY_BIOS_PREPARE_TO_BOOT_EFI PrepareToBootEfi; + EFI_LEGACY_BIOS_GET_LEGACY_REGION GetLegacyRegion; + EFI_LEGACY_BIOS_COPY_LEGACY_REGION CopyLegacyRegion; + EFI_LEGACY_BIOS_BOOT_UNCONVENTIONAL_DEVICE BootUnconventionalDevice; +} EFI_LEGACY_BIOS_PROTOCOL; + +extern EFI_GUID gEfiLegacyBiosProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/LegacyBiosPlatform/LegacyBiosPlatform.c b/EDK/Foundation/Framework/Protocol/LegacyBiosPlatform/LegacyBiosPlatform.c new file mode 100644 index 0000000..4581935 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/LegacyBiosPlatform/LegacyBiosPlatform.c @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + LegacyBiosPlatform.c + +Abstract: + + EFI Legacy BIOS Platform Protocol + +Revision History + +--*/ + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (LegacyBiosPlatform) + +EFI_GUID gEfiLegacyBiosPlatformProtocolGuid = EFI_LEGACY_BIOS_PLATFORM_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiLegacyBiosPlatformProtocolGuid, "Legacy BIOS Platform Protocol", "Legacy BIOS Platform Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/LegacyBiosPlatform/LegacyBiosPlatform.h b/EDK/Foundation/Framework/Protocol/LegacyBiosPlatform/LegacyBiosPlatform.h new file mode 100644 index 0000000..d727fe5 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/LegacyBiosPlatform/LegacyBiosPlatform.h @@ -0,0 +1,349 @@ +/*++ + +Copyright (c) 1999 - 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. + + +Module Name: + + LegacyBiosPlatform.h + +Abstract: + + The EFI Legacy BIOS Patform Protocol is used to mate a Legacy16 + implementation with this EFI code. The EFI driver that produces + the Legacy BIOS protocol is generic and consumes this protocol. + A driver that matches the Legacy16 produces this protocol + +Revision History + + The EFI Legacy BIOS Platform Protocol is compliant with CSM spec 0.96. + +--*/ + +#ifndef _EFI_LEGACY_BIOS_PLATFORM_H +#define _EFI_LEGACY_BIOS_PLATFORM_H + +#define EFI_LEGACY_BIOS_PLATFORM_PROTOCOL_GUID \ + { \ + 0x783658a3, 0x4172, 0x4421, 0xa2, 0x99, 0xe0, 0x9, 0x7, 0x9c, 0xc, 0xb4 \ + } + +EFI_FORWARD_DECLARATION (EFI_LEGACY_BIOS_PLATFORM_PROTOCOL); + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (LegacyBios) + +#pragma pack(1) +// +// Define structures for GetOemIntData +// Note: +// OemIntDataElenent is an array of structures from 0 to Count-1. +// RawData is an array of bytes from 0 to RamDataLength-1. +// +typedef struct { + UINT16 Int; + UINT16 Ax; + UINT32 RawDataLength; + UINT8 RawData[1]; +} EFI_OEM_INT_DATA_ELEMENT; + +typedef struct { + UINT16 Count; + EFI_OEM_INT_DATA_ELEMENT OemIntDataElement[1]; +} EFI_OEM_INT_DATA; +#pragma pack() + +typedef enum { + EfiGetPlatformBinaryMpTable = 0, + EfiGetPlatformBinaryOemIntData = 1, + EfiGetPlatformBinaryOem16Data = 2, + EfiGetPlatformBinaryOem32Data = 3, + EfiGetPlatformBinaryTpmBinary = 4, + EfiGetPlatformBinarySystemRom = 5, + EfiGetPlatformPciExpressBase = 6, + EfiGetPlatformPmmSize = 7, + EfiGetPlatformEndOfOpromShadowAddr = 8 +} EFI_GET_PLATFORM_INFO_MODE; + +typedef enum { + EfiGetPlatformVgaHandle = 0, + EfiGetPlatformIdeHandle = 1, + EfiGetPlatformIsaBusHandle = 2, + EfiGetPlatformUsbHandle = 3 +} EFI_GET_PLATFORM_HANDLE_MODE; + +typedef enum { + EfiPlatformHookPrepareToScanRom = 0, + EfiPlatformHookShadowServiceRoms= 1, + EfiPlatformHookAfterRomInit = 2 +} EFI_GET_PLATFORM_HOOK_MODE; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_INFO) ( + IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, + IN EFI_GET_PLATFORM_INFO_MODE Mode, + OUT VOID **Table, + OUT UINTN *TableSize, + OUT UINTN *Location, + OUT UINTN *Alignment, + IN UINT16 LegacySegment, + IN UINT16 LegacyOffset + ) +/*++ + + Routine Description: + Return a System ROM image for the platform + + Arguments: + This - Protocol instance pointer. + Mode - Specifies what data to return + Table - Pointer to MP table. + TableSize - Size in bytes of table. + Location - Legacy region requested + 0x00 = Any location + Bit 0 = 0xF0000 region + Bit 1 = 0xE0000 region + Multiple bits can be set + Alignment - Address alignment for allocation. + Bit mapped. First non-zero bit from right + is alignment. + + LegacySegment - Segment in LegacyBios where Table is stored + LegacyOffset - Offset in LegacyBios where Table is stored + + Returns: + EFI_SUCCESS - Data was returned successfully. + EFI_UNSUPPORTED - Mode is not supported on the platform. + EFI_NOT_FOUND - Binary image or table not found. + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_HANDLE) ( + IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, + IN EFI_GET_PLATFORM_HANDLE_MODE Mode, + IN UINT16 Type, + OUT EFI_HANDLE **HandleBuffer, + OUT UINTN *HandleCount, + IN VOID **AdditionalData OPTIONAL + ) +/*++ + + Routine Description: + Return the Legacy16 policy for which device should be the VGA controller + used during a Legacy16 boot. + + Arguments: + This - Protocol instance pointer. + Mode - Specifies what handle to return. + Type - Type from Device Path for Handle to represent. + HandleBuffer - Handles of the device/controller in priority order + with HandleBuffer[0] highest priority. + HandleCount - Number of handles in the buffer. + AdditionalData - Mode specific. + + + Returns: + EFI_SUCCESS - Handle is valid + EFI_UNSUPPORTED - Mode is not supported on the platform. + EFI_NOT_FOUND - Handle is not known + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_SMM_INIT) ( + IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, + IN VOID *EfiToLegacy16BootTable + ); + +/*++ + + Routine Description: + Load and initialize the Legacy BIOS SMM handler. + + Arguments: + This - Protocol instance pointer. + EfiToLegacy16BootTable - Pointer to Legacy16 boot table. + Returns: + EFI_SUCCESS - SMM code loaded. + EFI_DEVICE_ERROR - SMM code failed to load + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_HOOKS) ( + IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, + IN EFI_GET_PLATFORM_HOOK_MODE Mode, + IN UINT16 Type, + IN EFI_HANDLE DeviceHandle, + IN OUT UINTN *ShadowAddress, + IN EFI_COMPATIBILITY16_TABLE * Compatibility16Table, + IN VOID **AdditionalData OPTIONAL + ) +/*++ + + Routine Description: + Prepare to scan a ROM. + + Arguments: + This - Protocol instance pointer. + Handle - Device handle + ShadowAddress - Address that ROM is shadowed at prior to + initialization or first free ROM address, + depending upon mode. + Compatibility16Table - Pointer to Compatibility16Table. + AdditionalData - Mode specific. + + + Returns: + EFI_SUCCESS - RomImage is valid + EFI_UNSUPPORTED - Mode is not supported on the platform or platform + policy is to not install this OPROM. +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_GET_ROUTING_TABLE) ( + IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, + OUT VOID **RoutingTable, + OUT UINTN *RoutingTableEntries, + OUT VOID **LocalPirqTable, OPTIONAL + OUT UINTN *PirqTableSize, OPTIONAL + OUT VOID **LocalIrqPriorityTable, OPTIONAL + OUT UINTN *IrqPriorityTableEntries OPTIONAL + ) +/*++ + + Routine Description: + 1. List of IRQ routing entries and number of entries. + 2. Pointer to Entire $PIR table and length. + 3. List of IRQs to assign to PCI in priority. + + Arguments: + This - Protocol instance pointer. + RoutingTable - Pointer to PCI IRQ Routing table. + RoutingTableEntries - Number of entries in table. + LocalPirqTable - $PIR table + PirqTableSize - $PIR table size + LocalIrqPriorityTable - List of interrupts in priority order to assign + IrqPriorityTableEntries- Number of entries in priority table + + Returns: + EFI_SUCCESS - Table pointer returned + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_TRANSLATE_PIRQ) ( + IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, + IN UINTN PciBus, + IN UINTN PciDevice, + IN UINTN PciFunction, + IN OUT UINT8 *Pirq, + OUT UINT8 *PciIrq + ) +/*++ + + Routine Description: + Translate the PIRQ reported by the PCI device into the true PIRQ + from the internal IRQ routing information and IRQ assigned or to be + assigned to device. + + Arguments: + This - Protocol instance pointer. + Base as defined below is the bus,device, function in + IRQ routing table. + PciBus - Base Bus for this device. + PciDevice - Base Device for this device. + PciFunction - Base Function for this device. + Pirq - Input is PIRQ reported by device, output is true PIRQ. + PciIrq - The IRQ already assigned to the PIRQ or the IRQ to be + assigned to the PIRQ. + + Returns: + EFI_SUCCESS - Irq translated + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_PREPARE_TO_BOOT) ( + IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This, + IN BBS_BBS_DEVICE_PATH * BbsDevicePath, + IN VOID *BbsTable, + IN UINT32 LoadOptionsSize, + IN VOID *LoadOptions, + IN VOID *EfiToLegacy16BootTable + ) +/*++ + + Routine Description: + Attempt to legacy boot the BootOption. If the EFI contexted has been + compromised this function will not return. + + Arguments: + This - Protocol instance pointer. + BbsDevicePath - EFI Device Path from BootXXXX variable. + BbsTable - Internal BBS table. + LoadOptionSize - Size of LoadOption in size. + LoadOption - LoadOption from BootXXXX variable + EfiToLegacy16BootTable - Pointer to BootTable structure + + Returns: + EFI_SUCCESS - Removable media not present + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_BIOS_PLATFORM_PERFORM_PLATFORM_TPM_TASKS) ( + IN EFI_LEGACY_BIOS_PLATFORM_PROTOCOL * This + ) +/*++ + + Routine Description: + Perform platform-related TPM tasks. + + Arguments: + This - Protocol instance pointer. + + Returns: + EFI_SUCCESS - Successfully performed the TPM tasks or TCG service not found. + Others - Failed to perform the TPM tasks. + +--*/ +; + +typedef struct _EFI_LEGACY_BIOS_PLATFORM_PROTOCOL { + EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_INFO GetPlatformInfo; + EFI_LEGACY_BIOS_PLATFORM_GET_PLATFORM_HANDLE GetPlatformHandle; + EFI_LEGACY_BIOS_PLATFORM_SMM_INIT SmmInit; + EFI_LEGACY_BIOS_PLATFORM_HOOKS PlatformHooks; + EFI_LEGACY_BIOS_PLATFORM_GET_ROUTING_TABLE GetRoutingTable; + EFI_LEGACY_BIOS_PLATFORM_TRANSLATE_PIRQ TranslatePirq; + EFI_LEGACY_BIOS_PLATFORM_PREPARE_TO_BOOT PrepareToBoot; + EFI_LEGACY_BIOS_PLATFORM_PERFORM_PLATFORM_TPM_TASKS PerformPlatformTpmTasks; +} EFI_LEGACY_BIOS_PLATFORM_PROTOCOL; + +extern EFI_GUID gEfiLegacyBiosPlatformProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/LegacyInterrupt/LegacyInterrupt.c b/EDK/Foundation/Framework/Protocol/LegacyInterrupt/LegacyInterrupt.c new file mode 100644 index 0000000..605d71e --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/LegacyInterrupt/LegacyInterrupt.c @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + LegacyInterrupt.c + +Abstract: + + EFI Legacy InterruptProtocol + +Revision History + +--*/ + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (LegacyInterrupt) + +EFI_GUID gEfiLegacyInterruptProtocolGuid = EFI_LEGACY_INTERRUPT_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiLegacyInterruptProtocolGuid, "Legacy Interrupt Protocol", "Legacy Interrupt Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/LegacyInterrupt/LegacyInterrupt.h b/EDK/Foundation/Framework/Protocol/LegacyInterrupt/LegacyInterrupt.h new file mode 100644 index 0000000..5c2783d --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/LegacyInterrupt/LegacyInterrupt.h @@ -0,0 +1,136 @@ +/*++ + +Copyright (c) 1999 - 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. + + +Module Name: + + LegacyInterrupt.h + +Abstract: + + This protocol manages the PIRQ for PCI devices + +Revision History + + The EFI Legacy Interrupt Protocol is compliant with CSM spec 0.96. + +--*/ + +#ifndef _EFI_LEGACY_INTERRUPT_H_ +#define _EFI_LEGACY_INTERRUPT_H_ + +#define EFI_LEGACY_INTERRUPT_PROTOCOL_GUID \ + { \ + 0x31ce593d, 0x108a, 0x485d, 0xad, 0xb2, 0x78, 0xf2, 0x1f, 0x29, 0x66, 0xbe \ + } + +EFI_FORWARD_DECLARATION (EFI_LEGACY_INTERRUPT_PROTOCOL); + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS) ( + IN EFI_LEGACY_INTERRUPT_PROTOCOL * This, + OUT UINT8 *NumberPirqs + ); + +/*++ + + Routine Description: + Return the number of PIRQs this hardware supports. + + Arguments: + This - Protocol instance pointer. + NumberPirsq - Number of PIRQs. + + Returns: + EFI_SUCCESS - Number of PIRQs returned. + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_INTERRUPT_GET_LOCATION) ( + IN EFI_LEGACY_INTERRUPT_PROTOCOL * This, + OUT UINT8 *Bus, + OUT UINT8 *Device, + OUT UINT8 *Function + ); + +/*++ + + Routine Description: + Return PCI location of this device. $PIR table requires this info. + + Arguments: + This - Protocol instance pointer. + Bus - PCI Bus + Device - PCI Device + Function - PCI Function + + Returns: + EFI_SUCCESS - Bus/Device/Function returned + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_INTERRUPT_READ_PIRQ) ( + IN EFI_LEGACY_INTERRUPT_PROTOCOL * This, + IN UINT8 PirqNumber, + OUT UINT8 *PirqData + ); + +/*++ + + Routine Description: + Read the PIRQ register and return the data + + Arguments: + This - Protocol instance pointer. + PirqNumber - PIRQ register to read + PirqData - Data read + + Returns: + EFI_SUCCESS - Data was read + EFI_INVALID_PARAMETER - Invalid PIRQ number + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_INTERRUPT_WRITE_PIRQ) ( + IN EFI_LEGACY_INTERRUPT_PROTOCOL * This, + IN UINT8 PirqNumber, + IN UINT8 PirqData + ); + +/*++ + + Routine Description: + Write the specified PIRQ register with the given data. + + Arguments: + This - Protocol instance pointer. + PirqNumber - PIRQ register to read. + PirqData - Data written. + + Returns: + EFI_SUCCESS - Table pointer returned + EFI_INVALID_PARAMETER - Invalid PIRQ number + +--*/ +typedef struct _EFI_LEGACY_INTERRUPT_PROTOCOL { + EFI_LEGACY_INTERRUPT_GET_NUMBER_PIRQS GetNumberPirqs; + EFI_LEGACY_INTERRUPT_GET_LOCATION GetLocation; + EFI_LEGACY_INTERRUPT_READ_PIRQ ReadPirq; + EFI_LEGACY_INTERRUPT_WRITE_PIRQ WritePirq; +} EFI_LEGACY_INTERRUPT_PROTOCOL; + +extern EFI_GUID gEfiLegacyInterruptProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/LegacyRegion/LegacyRegion.c b/EDK/Foundation/Framework/Protocol/LegacyRegion/LegacyRegion.c new file mode 100644 index 0000000..e465c27 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/LegacyRegion/LegacyRegion.c @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + LegacyRegion.c + +Abstract: + + EFI Legacy Region Protocol + +Revision History + +--*/ + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (LegacyRegion) + +EFI_GUID gEfiLegacyRegionProtocolGuid = EFI_LEGACY_REGION_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiLegacyRegionProtocolGuid, "Legacy Region Protocol", "Legacy Region Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/LegacyRegion/LegacyRegion.h b/EDK/Foundation/Framework/Protocol/LegacyRegion/LegacyRegion.h new file mode 100644 index 0000000..c0bf631 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/LegacyRegion/LegacyRegion.h @@ -0,0 +1,82 @@ +/*++ + +Copyright (c) 1999 - 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. + + +Module Name: + + LegacyRegion.h + +Abstract: + + This protocol manages the legacy memory regions between 0xc0000 - 0xfffff + +Revision History + + The EFI Legacy Region Protocol is compliant with CSM spec 0.96. + +--*/ + +#ifndef _EFI_LEGACY_REGION_H_ +#define _EFI_LEGACY_REGION_H_ + +#define EFI_LEGACY_REGION_PROTOCOL_GUID \ + { \ + 0xfc9013a, 0x568, 0x4ba9, 0x9b, 0x7e, 0xc9, 0xc3, 0x90, 0xa6, 0x60, 0x9b \ + } + +EFI_FORWARD_DECLARATION (EFI_LEGACY_REGION_PROTOCOL); + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_REGION_DECODE) ( + IN EFI_LEGACY_REGION_PROTOCOL * This, + IN UINT32 Start, + IN UINT32 Length, + IN BOOLEAN *On + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_REGION_LOCK) ( + IN EFI_LEGACY_REGION_PROTOCOL * This, + IN UINT32 Start, + IN UINT32 Length, + OUT UINT32 *Granularity OPTIONAL + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_REGION_BOOT_LOCK) ( + IN EFI_LEGACY_REGION_PROTOCOL * This, + IN UINT32 Start, + IN UINT32 Length, + OUT UINT32 *Granularity OPTIONAL + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_LEGACY_REGION_UNLOCK) ( + IN EFI_LEGACY_REGION_PROTOCOL * This, + IN UINT32 Start, + IN UINT32 Length, + OUT UINT32 *Granularity OPTIONAL + ); + +typedef struct _EFI_LEGACY_REGION_PROTOCOL { + EFI_LEGACY_REGION_DECODE Decode; + EFI_LEGACY_REGION_LOCK Lock; + EFI_LEGACY_REGION_BOOT_LOCK BootLock; + EFI_LEGACY_REGION_UNLOCK UnLock; +} EFI_LEGACY_REGION_PROTOCOL; + +extern EFI_GUID gEfiLegacyRegionProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/PciHostBridgeResourceAllocation/PciHostBridgeResourceAllocation.c b/EDK/Foundation/Framework/Protocol/PciHostBridgeResourceAllocation/PciHostBridgeResourceAllocation.c new file mode 100644 index 0000000..5fcfb9f --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/PciHostBridgeResourceAllocation/PciHostBridgeResourceAllocation.c @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + PciHostBridgeResourceAllocation.c + +Abstract: + + +--*/ + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (PciHostBridgeResourceAllocation) + +EFI_GUID gEfiPciHostBridgeResourceAllocationProtocolGuid = EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GUID; + +EFI_GUID_STRING + ( + &gEfiPciHostBridgeResourceAllocationProtocolGuid, "PciHostBridgeRresourceAllocation Protocol", + "Pci Host Bridge Resource Allocation Protocol" + ); diff --git a/EDK/Foundation/Framework/Protocol/PciHostBridgeResourceAllocation/PciHostBridgeResourceAllocation.h b/EDK/Foundation/Framework/Protocol/PciHostBridgeResourceAllocation/PciHostBridgeResourceAllocation.h new file mode 100644 index 0000000..fa13082 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/PciHostBridgeResourceAllocation/PciHostBridgeResourceAllocation.h @@ -0,0 +1,364 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + PciHostBridgeResourceAllocation.h + +Abstract: + + +--*/ + +#ifndef _PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_H_ +#define _PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_H_ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION(PciRootBridgeIo) + + +#define EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GUID \ + { 0xCF8034BE,0x6768,0x4d8b,0xB7,0x39,0x7C,0xCE,0x68,0x3A,0x9F,0xBE } + + +EFI_FORWARD_DECLARATION (EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL); + + +// +// EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ATTRIBUTES +// + +// If this bit is set, then the PCI Root Bridge does not +// support separate windows for Non-prefetchable and Prefetchable +// memory. A PCI bus driver needs to include requests for Prefetchable +// memory in the Non-prefetchable memory pool. +// +#define EFI_PCI_HOST_BRIDGE_COMBINE_MEM_PMEM 1 + +// +// If this bit is set, then the PCI Root Bridge supports +// 64 bit memory windows. If this bit is not set, +// the PCI bus driver needs to include requests for 64 bit +// memory address in the corresponding 32 bit memory pool. +// +#define EFI_PCI_HOST_BRIDGE_MEM64_DECODE 2 + + +// +// EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE +// +typedef enum { + EfiPciHostBridgeBeginEnumeration, + EfiPciHostBridgeBeginBusAllocation, + EfiPciHostBridgeEndBusAllocation, + EfiPciHostBridgeBeginResourceAllocation, + EfiPciHostBridgeAllocateResources, + EfiPciHostBridgeSetResources, + EfiPciHostBridgeFreeResources, + EfiPciHostBridgeEndResourceAllocation +} EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE; + +// +// EfiPciHostBridgeBeginEnumeration +// Reset the host bridge PCI apertures and internal data structures. +// PCI enumerator should issue this notification before starting fresh +// enumeration process. Enumeration cannot be restarted after sending +// any other notification such as EfiPciHostBridgeBeginBusAllocation. +// +// EfiPciHostBridgeBeginBusAllocation +// The bus allocation phase is about to begin. No specific action +// is required here. This notification can be used to perform any +// chipset specific programming. +// +// EfiPciHostBridgeEndBusAllocation +// The bus allocation and bus programming phase is complete. No specific +// action is required here. This notification can be used to perform any +// chipset specific programming. +// +// EfiPciHostBridgeBeginResourceAllocation +// The resource allocation phase is about to begin.No specific action is +// required here. This notification can be used to perform any chipset specific programming. +// +// EfiPciHostBridgeAllocateResources +// Allocate resources per previously submitted requests for all the PCI Root +// Bridges. These resource settings are returned on the next call to +// GetProposedResources(). +// +// EfiPciHostBridgeSetResources +// Program the Host Bridge hardware to decode previously allocated resources +// (proposed resources) for all the PCI Root Bridges. +// +// EfiPciHostBridgeFreeResources +// De-allocate previously allocated resources previously for all the PCI +// Root Bridges and reset the I/O and memory apertures to initial state. +// +// EfiPciHostBridgeEndResourceAllocation +// The resource allocation phase is completed. No specific action is required +// here. This notification can be used to perform any chipset specific programming. + + + +// +// EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE +// +typedef enum { + EfiPciBeforeChildBusEnumeration, + EfiPciBeforeResourceCollection +} EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE; + +// +// EfiPciBeforeChildBusEnumeration +// This notification is only applicable to PCI-PCI bridges and +// indicates that the PCI enumerator is about to begin enumerating +// the bus behind the PCI-PCI Bridge. This notification is sent after +// the primary bus number, the secondary bus number and the subordinate +// bus number registers in the PCI-PCI Bridge are programmed to valid +// (not necessary final) values +// +// EfiPciBeforeResourceCollection +// This notification is sent before the PCI enumerator probes BAR registers +// for every valid PCI function. +// + + +typedef +EFI_STATUS +(EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_NOTIFY_PHASE) ( + IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, + IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE Phase + ); +/*++ + +Routine Description: + Enter a certain phase of the PCI enumeration process + +Arguments: + This -- The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL instance + Phase -- The phase during enumeration + +Returns: + EFI_SUCCESS - Success + EFI_OUT_OF_RESOURCES - If SubmitResources ( ) could not allocate resources + EFI_NOT_READY - This phase cannot be entered at this time + EFI_DEVICE_ERROR - SetResources failed due to HW error. + +--*/ + + +typedef +EFI_STATUS +(EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_NEXT_ROOT_BRIDGE) ( + IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, + IN OUT EFI_HANDLE *RootBridgeHandle + ); +/*++ + +Routine Description: + Return the device handle of the next PCI root bridge that is associated with + this Host Bridge + +Arguments: + This -- The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance + RootBridgeHandle -- Returns the device handle of the next PCI Root Bridge. + On input, it holds the RootBridgeHandle returned by the most + recent call to GetNextRootBridge().The handle for the first + PCI Root Bridge is returned if RootBridgeHandle is NULL on input + +Returns: + EFI_SUCCESS - Success + EFI_INVALID_PARAMETER - RootBridgeHandle is invalid + +--*/ + + +typedef +EFI_STATUS +(EFIAPI * EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_ATTRIBUTES) ( + IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, + IN EFI_HANDLE RootBridgeHandle, + OUT UINT64 *Attributes + ); +/*++ + +Routine Description: + Returns the attributes of a PCI Root Bridge. + +Arguments: + This -- The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance + RootBridgeHandle -- The device handle of the PCI Root Bridge + that the caller is interested in + Attribute -- The pointer to attributes of the PCI Root Bridge + +Returns: + EFI_SUCCESS - Success + EFI_INVALID_PARAMETER - RootBridgeHandle is invalid + EFI_INVALID_PARAMETER - Attributes is NULL + +--*/ + + +typedef +EFI_STATUS +(EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_START_BUS_ENUMERATION) ( + IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, + IN EFI_HANDLE RootBridgeHandle, + OUT VOID **Configuration + ); +/*++ + +Routine Description: + This is the request from the PCI enumerator to set up + the specified PCI Root Bridge for bus enumeration process. + +Arguments: + This -- The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance + RootBridgeHandle -- The PCI Root Bridge to be set up + Configuration -- Pointer to the pointer to the PCI bus resource descriptor + +Returns: + EFI_SUCCESS - Success + EFI_INVALID_PARAMETER - RootBridgeHandle is invalid + EFI_DEVICE_ERROR - Request failed due to hardware error + EFI_OUT_OF_RESOURCES - Request failed due to lack of resources +--*/ + + +typedef +EFI_STATUS +(EFIAPI *EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SET_BUS_NUMBERS) ( + IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, + IN EFI_HANDLE RootBridgeHandle, + IN VOID *Configuration + ); +/*++ + +Routine Description: + This function programs the PCI Root Bridge hardware so that + it decodes the specified PCI bus range + +Arguments: + This -- The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance + RootBridgeHandle -- The PCI Root Bridge whose bus range is to be programmed + Configuration -- The pointer to the PCI bus resource descriptor + +Returns: + EFI_SUCCESS - Success + EFI_INVALID_PARAMETER - RootBridgeHandle is invalid + EFI_INVALID_PARAMETER - Configuration is NULL + EFI_INVALID_PARAMETER - Configuration does not point to a valid ACPI resource descriptor + EFI_INVALID_PARAMETER - Configuration contains one or more memory or IO ACPI resource descriptor + EFI_INVALID_PARAMETER - Address Range Minimum or Address Range Length fields in Configuration + are invalid for this Root Bridge. + EFI_INVALID_PARAMETER - Configuration contains one or more invalid ACPI resource descriptor + EFI_DEVICE_ERROR - Request failed due to hardware error + EFI_OUT_OF_RESOURCES - Request failed due to lack of resources + +--*/ + + +typedef +EFI_STATUS +(EFIAPI * EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SUBMIT_RESOURCES) ( + IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, + IN EFI_HANDLE RootBridgeHandle, + IN VOID *Configuration + ); +/*++ + +Routine Description: + Submits the I/O and memory resource requirements for the specified PCI Root Bridge + +Arguments: + This -- The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance + RootBridgeHandle -- The PCI Root Bridge whose I/O and memory resource requirements + are being submitted + Configuration -- The pointer to the PCI I/O and PCI memory resource descriptor +Returns: + EFI_SUCCESS - Success + EFI_INVALID_PARAMETER - RootBridgeHandle is invalid + EFI_INVALID_PARAMETER - Configuration is NULL + EFI_INVALID_PARAMETER - Configuration does not point to a valid ACPI resource descriptor + EFI_INVALID_PARAMETER - Configuration includes a resource descriptor of unsupported type + +--*/ + + +typedef +EFI_STATUS +(EFIAPI * EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_PROPOSED_RESOURCES) ( + IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, + IN EFI_HANDLE RootBridgeHandle, + OUT VOID **Configuration + ); +/*++ + +Routine Description: + This function returns the proposed resource settings for the specified + PCI Root Bridge + +Arguments: + This -- The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance + RootBridgeHandle -- The PCI Root Bridge handle + Configuration -- The pointer to the pointer to the PCI I/O + and memory resource descriptor + +Returns: + EFI_SUCCESS - Success + EFI_INVALID_PARAMETER - RootBridgeHandle is invalid + EFI_DEVICE_ERROR - Request failed due to hardware error + EFI_OUT_OF_RESOURCES - Request failed due to lack of resources + +--*/ + + + +typedef +EFI_STATUS +(EFIAPI * EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_PREPROCESS_CONTROLLER) ( + IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL *This, + IN EFI_HANDLE RootBridgeHandle, + IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS PciAddress, + IN EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE Phase + ); +/*++ + +Routine Description: + This function is called for all the PCI controllers that the PCI + bus driver finds. Can be used to Preprogram the controller. + +Arguments: + This -- The EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_ PROTOCOL instance + RootBridgeHandle -- The PCI Root Bridge handle + PciBusAddress -- Address of the controller on the PCI bus + Phase -- The Phase during resource allocation + +Returns: + EFI_SUCCESS - Success + EFI_INVALID_PARAMETER - RootBridgeHandle is invalid + EFI_DEVICE_ERROR - Device pre-initialization failed due to hardware error. +--*/ + + + +typedef struct _EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL { + EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_NOTIFY_PHASE NotifyPhase; + EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_NEXT_ROOT_BRIDGE GetNextRootBridge; + EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_ATTRIBUTES GetAllocAttributes; + EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_START_BUS_ENUMERATION StartBusEnumeration; + EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SET_BUS_NUMBERS SetBusNumbers; + EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_SUBMIT_RESOURCES SubmitResources; + EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_GET_PROPOSED_RESOURCES GetProposedResources; + EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL_PREPROCESS_CONTROLLER PreprocessController; +} EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PROTOCOL; + +extern EFI_GUID gEfiPciHostBridgeResourceAllocationProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/PciHotPlugInit/PciHotPlugInit.c b/EDK/Foundation/Framework/Protocol/PciHotPlugInit/PciHotPlugInit.c new file mode 100644 index 0000000..6f30668 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/PciHotPlugInit/PciHotPlugInit.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + PciHotPlugInit.c + +Abstract: + + EFI PCI Hot Plug Init Protocol + +Revision History + +--*/ + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (PciHotPlugInit) + +EFI_GUID gEfiPciHotPlugInitProtocolGuid = EFI_PCI_HOT_PLUG_INIT_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiPciHotPlugInitProtocolGuid, "PCI Hot Plug Init Protocol", "PCI Hot Plug Init Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/PciHotPlugInit/PciHotPlugInit.h b/EDK/Foundation/Framework/Protocol/PciHotPlugInit/PciHotPlugInit.h new file mode 100644 index 0000000..732b658 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/PciHotPlugInit/PciHotPlugInit.h @@ -0,0 +1,97 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + PciHotPlugInit.h + +Abstract: + + EFI PCI Hot Plug Init Protocol + +Revision History + +--*/ + +#ifndef _EFI_PCI_HOT_PLUG_INIT_H +#define _EFI_PCI_HOT_PLUG_INIT_H + +// +// Global ID for the PCI Hot Plug Protocol +// +#define EFI_PCI_HOT_PLUG_INIT_PROTOCOL_GUID \ + { 0xaa0e8bc1, 0xdabc, 0x46b0, 0xa8, 0x44, 0x37, 0xb8, 0x16, 0x9b, 0x2b, 0xea } + + +EFI_FORWARD_DECLARATION (EFI_PCI_HOT_PLUG_INIT_PROTOCOL); + +#define EFI_HPC_STATE_INITIALIZED 0x01 +#define EFI_HPC_STATE_ENABLED 0x02 + +typedef UINT16 EFI_HPC_STATE; + + +typedef struct{ + EFI_DEVICE_PATH_PROTOCOL *HpcDevicePath; + EFI_DEVICE_PATH_PROTOCOL *HpbDevicePath; +} EFI_HPC_LOCATION; + + +typedef enum{ + EfiPaddingPciBus, + EfiPaddingPciRootBridge +} EFI_HPC_PADDING_ATTRIBUTES; + +typedef +EFI_STATUS +(EFIAPI *EFI_GET_ROOT_HPC_LIST) ( + IN EFI_PCI_HOT_PLUG_INIT_PROTOCOL *This, + OUT UINTN *HpcCount, + OUT EFI_HPC_LOCATION **HpcList +); + +typedef +EFI_STATUS +(EFIAPI *EFI_INITIALIZE_ROOT_HPC) ( + IN EFI_PCI_HOT_PLUG_INIT_PROTOCOL *This, + IN EFI_DEVICE_PATH_PROTOCOL *HpcDevicePath, + IN UINT64 HpcPciAddress, + IN EFI_EVENT Event, OPTIONAL + OUT EFI_HPC_STATE *HpcState +); + +typedef +EFI_STATUS +(EFIAPI *EFI_GET_PCI_HOT_PLUG_PADDING) ( + IN EFI_PCI_HOT_PLUG_INIT_PROTOCOL *This, + IN EFI_DEVICE_PATH_PROTOCOL *HpcDevicePath, + IN UINT64 HpcPciAddress, + OUT EFI_HPC_STATE *HpcState, + OUT VOID **Padding, + OUT EFI_HPC_PADDING_ATTRIBUTES *Attributes +); + + +// +// Prototypes for the PCI Hot Plug Init Protocol +// + + +typedef struct _EFI_PCI_HOT_PLUG_INIT_PROTOCOL { + EFI_GET_ROOT_HPC_LIST GetRootHpcList; + EFI_INITIALIZE_ROOT_HPC InitializeRootHpc; + EFI_GET_PCI_HOT_PLUG_PADDING GetResourcePadding; +} EFI_PCI_HOT_PLUG_INIT_PROTOCOL; + + +extern EFI_GUID gEfiPciHotPlugInitProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/PciPlatform/PciPlatform.c b/EDK/Foundation/Framework/Protocol/PciPlatform/PciPlatform.c new file mode 100644 index 0000000..d1d417d --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/PciPlatform/PciPlatform.c @@ -0,0 +1,26 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + PciPlatform.c + +Abstract: + This file defines global GUID variables for PlatformOpRom protocols. + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_PRODUCER (PciPlatform) + + +EFI_GUID gEfiPciPlatformProtocolGuid = EFI_PCI_PLATFORM_PROTOCOL_GUID; + +EFI_GUID_STRING (&gEfiPciPlatformProtocolGuid, "Pci Platform Protocol", "Pci Platform Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/PciPlatform/PciPlatform.h b/EDK/Foundation/Framework/Protocol/PciPlatform/PciPlatform.h new file mode 100644 index 0000000..8beebfd --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/PciPlatform/PciPlatform.h @@ -0,0 +1,211 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + PciPlatform.h + +Abstract: + This file declares PlatfromOpRom protocols. + +--*/ + +#ifndef _PCI_PLATFORM_H_ +#define _PCI_PLATFORM_H_ + + +#include "Tiano.h" +#include "TianoTypes.h" + +#include EFI_PROTOCOL_DEFINITION (PciHostBridgeResourceAllocation) +#include EFI_PROTOCOL_DEFINITION (PciRootBridgeIo) + +// +// Protocol for GUID. +// + +#define EFI_PCI_PLATFORM_PROTOCOL_GUID \ +{ 0x7d75280, 0x27d4, 0x4d69, 0x90, 0xd0, 0x56, 0x43, 0xe2, 0x38, 0xb3, 0x41} + + +EFI_FORWARD_DECLARATION (EFI_PCI_PLATFORM_PROTOCOL); + +typedef UINT32 EFI_PCI_PLATFORM_POLICY; + + +#define EFI_RESERVE_NONE_IO_ALIAS 0x0000 +#define EFI_RESERVE_ISA_IO_ALIAS 0x0001 +#define EFI_RESERVE_ISA_IO_NO_ALIAS 0x0002 +#define EFI_RESERVE_VGA_IO_ALIAS 0x0004 +#define EFI_RESERVE_VGA_IO_NO_ALIAS 0x0008 + + +typedef enum { + ChipsetEntry, + ChipsetExit, + MaximumChipsetPhase +} EFI_PCI_CHIPSET_EXECUTION_PHASE; + + +typedef +EFI_STATUS +(EFIAPI * EFI_PCI_PLATFORM_PHASE_NOTIFY) ( + IN EFI_PCI_PLATFORM_PROTOCOL *This, + IN EFI_HANDLE HostBridge, + IN EFI_PCI_HOST_BRIDGE_RESOURCE_ALLOCATION_PHASE Phase, + IN EFI_PCI_CHIPSET_EXECUTION_PHASE ChipsetPhase +) +/*++ + + Routine Description: + The PlatformNotify() function can be used to notify the platform driver so that + it can perform platform-specific actions. No specific actions are required. + Eight notification points are defined at this time. More synchronization points + may be added as required in the future. The PCI bus driver calls the platform driver + twice for every Phase-once before the PCI Host Bridge Resource Allocation Protocol + driver is notified, and once after the PCI Host Bridge Resource Allocation Protocol + driver has been notified. + This member function may not perform any error checking on the input parameters. It + also does not return any error codes. If this member function detects any error condition, + it needs to handle those errors on its own because there is no way to surface any + errors to the caller. + + Arguments: + This - Pointer to the EFI_PCI_PLATFORM_PROTOCOL instance. + HostBridge - The handle of the host bridge controller. + Phase - The phase of the PCI bus enumeration. + ChipsetPhase - Defines the execution phase of the PCI chipset driver. + + Returns: + EFI_SUCCESS - The function completed successfully. + +--*/ +; + + +typedef +EFI_STATUS +(EFIAPI * EFI_PCI_PLATFORM_PREPROCESS_CONTROLLER) ( + IN EFI_PCI_PLATFORM_PROTOCOL *This, + IN EFI_HANDLE HostBridge, + IN EFI_HANDLE RootBridge, + IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL_PCI_ADDRESS PciAddress, + IN EFI_PCI_CONTROLLER_RESOURCE_ALLOCATION_PHASE Phase, + IN EFI_PCI_CHIPSET_EXECUTION_PHASE ChipsetPhase +) +/*++ + + Routine Description: + The PlatformPrepController() function can be used to notify the platform driver so that + it can perform platform-specific actions. No specific actions are required. + Several notification points are defined at this time. More synchronization points may be + added as required in the future. The PCI bus driver calls the platform driver twice for + every PCI controller-once before the PCI Host Bridge Resource Allocation Protocol driver + is notified, and once after the PCI Host Bridge Resource Allocation Protocol driver has + been notified. + This member function may not perform any error checking on the input parameters. It also + does not return any error codes. If this member function detects any error condition, it + needs to handle those errors on its own because there is no way to surface any errors to + the caller. + + Arguments: + This - Pointer to the EFI_PCI_PLATFORM_PROTOCOL instance. + HostBridge - The associated PCI host bridge handle. + RootBridge - The associated PCI root bridge handle. + PciAddress - The address of the PCI device on the PCI bus. + Phase - The phase of the PCI controller enumeration. + ChipsetPhase - Defines the execution phase of the PCI chipset driver. + + Returns: + EFI_SUCCESS - The function completed successfully. + +--*/ +; + + +typedef +EFI_STATUS +(EFIAPI * EFI_PCI_PLATFORM_GET_PLATFORM_POLICY) ( + IN EFI_PCI_PLATFORM_PROTOCOL *This, + OUT EFI_PCI_PLATFORM_POLICY *PciPolicy +) +/*++ + + Routine Description: + The GetPlatformPolicy() function retrieves the platform policy regarding PCI + enumeration. The PCI bus driver and the PCI Host Bridge Resource Allocation Protocol + driver can call this member function to retrieve the policy. + + Arguments: + This - Pointer to the EFI_PCI_PLATFORM_PROTOCOL instance. + PciPolicy - The platform policy with respect to VGA and ISA aliasing. + + Returns: + EFI_SUCCESS - The function completed successfully. + EFI_INVALID_PARAMETER - PciPolicy is NULL. + +--*/ +; + + +typedef +EFI_STATUS +(EFIAPI *EFI_PCI_PLATFORM_GET_PCI_ROM) ( + IN EFI_PCI_PLATFORM_PROTOCOL *This, + IN EFI_HANDLE PciHandle, + OUT VOID **RomImage, + OUT UINTN *RomSize +) +/*++ + + Routine Description: + The GetPciRom() function gets the PCI device's option ROM from a platform-specific location. + The option ROM will be loaded into memory. This member function is used to return an image + that is packaged as a PCI 2.2 option ROM. The image may contain both legacy and EFI option + ROMs. See the EFI 1.10 Specification for details. This member function can be used to return + option ROM images for embedded controllers. Option ROMs for embedded controllers are typically + stored in platform-specific storage, and this member function can retrieve it from that storage + and return it to the PCI bus driver. The PCI bus driver will call this member function before + scanning the ROM that is attached to any controller, which allows a platform to specify a ROM + image that is different from the ROM image on a PCI card. + + Arguments: + This - Pointer to the EFI_PCI_PLATFORM_PROTOCOL instance. + PciHandle - The handle of the PCI device. + RomImage - If the call succeeds, the pointer to the pointer to the option ROM image. + Otherwise, this field is undefined. The memory for RomImage is allocated + by EFI_PCI_PLATFORM_PROTOCOL.GetPciRom() using the EFI Boot Service AllocatePool(). + It is the caller's responsibility to free the memory using the EFI Boot Service + FreePool(), when the caller is done with the option ROM. + RomSize - If the call succeeds, a pointer to the size of the option ROM size. Otherwise, + this field is undefined. + + Returns: + EFI_SUCCESS - The option ROM was available for this device and loaded into memory. + EFI_NOT_FOUND - No option ROM was available for this device. + EFI_OUT_OF_RESOURCES - No memory was available to load the option ROM. + EFI_DEVICE_ERROR - An error occurred in getting the option ROM. + +--*/ +; + + +typedef struct _EFI_PCI_PLATFORM_PROTOCOL { + EFI_PCI_PLATFORM_PHASE_NOTIFY PhaseNotify; + EFI_PCI_PLATFORM_PREPROCESS_CONTROLLER PlatformPrepController; + EFI_PCI_PLATFORM_GET_PLATFORM_POLICY GetPlatformPolicy; + EFI_PCI_PLATFORM_GET_PCI_ROM GetPciRom; +} EFI_PCI_PLATFORM_PROTOCOL; + +extern EFI_GUID gEfiPciPlatformProtocolGuid; + + + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SectionExtraction/SectionExtraction.c b/EDK/Foundation/Framework/Protocol/SectionExtraction/SectionExtraction.c new file mode 100644 index 0000000..aaad016 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SectionExtraction/SectionExtraction.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + SectionExtraction.c + +Abstract: + + Section Extraction protocol as defined in the Tiano File Image Format + specification. + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SectionExtraction) + +EFI_GUID gEfiSectionExtractionProtocolGuid = EFI_SECTION_EXTRACTION_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiSectionExtractionProtocolGuid, "Section Extraction Protocol", "Tiano Section Extraction Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/SectionExtraction/SectionExtraction.h b/EDK/Foundation/Framework/Protocol/SectionExtraction/SectionExtraction.h new file mode 100644 index 0000000..9d46b86 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SectionExtraction/SectionExtraction.h @@ -0,0 +1,83 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + SectionExtraction.h + +Abstract: + + Section extraction protocol as defined in the Tiano File Image Format specification. + + This interface provides a means of decoding a set of sections into a linked list of + leaf sections. This provides for an extensible and flexible file format. + +--*/ + +#ifndef _SECTION_EXTRACTION_PROTOCOL_H +#define _SECTION_EXTRACTION_PROTOCOL_H + +#include "EfiFirmwareFileSystem.h" + +// +// Protocol GUID definition +// +#define EFI_SECTION_EXTRACTION_PROTOCOL_GUID \ + { \ + 0x448F5DA4, 0x6DD7, 0x4FE1, 0x93, 0x07, 0x69, 0x22, 0x41, 0x92, 0x21, 0x5D \ + } + +EFI_FORWARD_DECLARATION (EFI_SECTION_EXTRACTION_PROTOCOL); + +// +// Protocol member functions +// +typedef +EFI_STATUS +(EFIAPI *EFI_OPEN_SECTION_STREAM) ( + IN EFI_SECTION_EXTRACTION_PROTOCOL * This, + IN UINTN SectionStreamLength, + IN VOID *SectionStream, + OUT UINTN *SectionStreamHandle + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_GET_SECTION) ( + IN EFI_SECTION_EXTRACTION_PROTOCOL * This, + IN UINTN SectionStreamHandle, + IN EFI_SECTION_TYPE * SectionType, + IN EFI_GUID * SectionDefinitionGuid, + IN UINTN SectionInstance, + IN VOID **Buffer, + IN OUT UINTN *BufferSize, + OUT UINT32 *AuthenticationStatus + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_CLOSE_SECTION_STREAM) ( + IN EFI_SECTION_EXTRACTION_PROTOCOL * This, + IN UINTN SectionStreamHandle + ); + +// +// Protocol definition +// +typedef struct _EFI_SECTION_EXTRACTION_PROTOCOL { + EFI_OPEN_SECTION_STREAM OpenSectionStream; + EFI_GET_SECTION GetSection; + EFI_CLOSE_SECTION_STREAM CloseSectionStream; +} EFI_SECTION_EXTRACTION_PROTOCOL; + +extern EFI_GUID gEfiSectionExtractionProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SecurityPolicy/SecurityPolicy.c b/EDK/Foundation/Framework/Protocol/SecurityPolicy/SecurityPolicy.c new file mode 100644 index 0000000..e2c38af --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SecurityPolicy/SecurityPolicy.c @@ -0,0 +1,28 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + SecurityPolicy.c + +Abstract: + + Security Policy protocol as defined in the DXE CIS + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SecurityPolicy) + +EFI_GUID gEfiSecurityPolicyProtocolGuid = EFI_SECURITY_POLICY_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiSecurityPolicyProtocolGuid, "Security Policy protocol", "Security Policy protocol"); + diff --git a/EDK/Foundation/Framework/Protocol/SecurityPolicy/SecurityPolicy.h b/EDK/Foundation/Framework/Protocol/SecurityPolicy/SecurityPolicy.h new file mode 100644 index 0000000..56feac9 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SecurityPolicy/SecurityPolicy.h @@ -0,0 +1,33 @@ +/*++ + +Copyright (c) 2004, 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. + +Module Name: + + SecurityPolicy.h + +Abstract: + + Security Policy protocol as defined in the DXE CIS + +--*/ + +#ifndef _SECURITY_POLICY_H_ +#define _SECURITY_POLICY_H_ + +// +// Security policy protocol GUID definition +// +#define EFI_SECURITY_POLICY_PROTOCOL_GUID \ + {0x78E4D245, 0xCD4D, 0x4a05, 0xA2, 0xBA, 0x47, 0x43, 0xE8, 0x6C, 0xFC, 0xAB} + +extern EFI_GUID gEfiSecurityPolicyProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/Smbus/Smbus.c b/EDK/Foundation/Framework/Protocol/Smbus/Smbus.c new file mode 100644 index 0000000..ecdbe14 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/Smbus/Smbus.c @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmBus.c + +Abstract: + + EFI SMBUS Protocol + +Revision History + +--*/ + +#include "Tiano.h" + +#include EFI_PROTOCOL_DEFINITION (Smbus) + +EFI_GUID gEfiSmbusProtocolGuid = EFI_SMBUS_HC_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiSmbusProtocolGuid, "SMBUS Protocol", "EFI 2.0 SMBUS Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/Smbus/Smbus.h b/EDK/Foundation/Framework/Protocol/Smbus/Smbus.h new file mode 100644 index 0000000..067823f --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/Smbus/Smbus.h @@ -0,0 +1,108 @@ +/*++ + +Copyright (c) 1999 - 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. + + +Module Name: + + Smbus.h + +Abstract: + + EFI SMBUS Protocol + +--*/ + +#ifndef _EFI_SMBUS_H +#define _EFI_SMBUS_H + +#include "EfiSmbus.h" + +#define EFI_SMBUS_HC_PROTOCOL_GUID \ + { \ + 0xe49d33ed, 0x513d, 0x4634, 0xb6, 0x98, 0x6f, 0x55, 0xaa, 0x75, 0x1c, 0x1b \ + } + +EFI_FORWARD_DECLARATION (EFI_SMBUS_HC_PROTOCOL); + +typedef +EFI_STATUS +(EFIAPI *EFI_SMBUS_HC_EXECUTE_OPERATION) ( + IN EFI_SMBUS_HC_PROTOCOL * This, + IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress, + IN EFI_SMBUS_DEVICE_COMMAND Command, + IN EFI_SMBUS_OPERATION Operation, + IN BOOLEAN PecCheck, + IN OUT UINTN *Length, + IN OUT VOID *Buffer + ); + +//;;## ...AMI_OVERRIDE... Support PI1.x typedef struct { +//;;## ...AMI_OVERRIDE... Support PI1.x UINT32 VendorSpecificId; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT16 SubsystemDeviceId; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT16 SubsystemVendorId; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT16 Interface; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT16 DeviceId; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT16 VendorId; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT8 VendorRevision; +//;;## ...AMI_OVERRIDE... Support PI1.x UINT8 DeviceCapabilities; +//;;## ...AMI_OVERRIDE... Support PI1.x } EFI_SMBUS_UDID; + +typedef +EFI_STATUS +(EFIAPI *EFI_SMBUS_NOTIFY_FUNCTION) ( + IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress, + IN UINTN Data + ); + +// +// If ArpAll is TRUE, SmbusUdid/SlaveAddress is Optional. +// If FALSE, ArpDevice will enum SmbusUdid and the address will be at SlaveAddress +// +typedef +EFI_STATUS +(EFIAPI *EFI_SMBUS_HC_PROTOCOL_ARP_DEVICE) ( + IN EFI_SMBUS_HC_PROTOCOL * This, + IN BOOLEAN ArpAll, + IN EFI_SMBUS_UDID * SmbusUdid, OPTIONAL + IN OUT EFI_SMBUS_DEVICE_ADDRESS * SlaveAddress OPTIONAL + ); + +//;;## ...AMI_OVERRIDE... Support PI1.x typedef struct { +//;;## ...AMI_OVERRIDE... Support PI1.x EFI_SMBUS_DEVICE_ADDRESS SmbusDeviceAddress; +//;;## ...AMI_OVERRIDE... Support PI1.x EFI_SMBUS_UDID SmbusDeviceUdid; +//;;## ...AMI_OVERRIDE... Support PI1.x } EFI_SMBUS_DEVICE_MAP; + +typedef +EFI_STATUS +(EFIAPI *EFI_SMBUS_HC_PROTOCOL_GET_ARP_MAP) ( + IN EFI_SMBUS_HC_PROTOCOL * This, + IN OUT UINTN *Length, + IN OUT EFI_SMBUS_DEVICE_MAP **SmbusDeviceMap + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_SMBUS_HC_PROTOCOL_NOTIFY) ( + IN EFI_SMBUS_HC_PROTOCOL * This, + IN EFI_SMBUS_DEVICE_ADDRESS SlaveAddress, + IN UINTN Data, + IN EFI_SMBUS_NOTIFY_FUNCTION NotifyFunction + ); + +typedef struct _EFI_SMBUS_HC_PROTOCOL { + EFI_SMBUS_HC_EXECUTE_OPERATION Execute; + EFI_SMBUS_HC_PROTOCOL_ARP_DEVICE ArpDevice; + EFI_SMBUS_HC_PROTOCOL_GET_ARP_MAP GetArpMap; + EFI_SMBUS_HC_PROTOCOL_NOTIFY Notify; +} EFI_SMBUS_HC_PROTOCOL; + +extern EFI_GUID gEfiSmbusProtocolGuid; +#endif diff --git a/EDK/Foundation/Framework/Protocol/SmmAccess/SmmAccess.c b/EDK/Foundation/Framework/Protocol/SmmAccess/SmmAccess.c new file mode 100644 index 0000000..6a84d40 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmAccess/SmmAccess.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmAccess.c + +Abstract: + + This file defines SMM SMRAM abstraction protocol defined by the + SMM Component Interface Specification + + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SmmAccess) + +EFI_GUID gEfiSmmAccessProtocolGuid = EFI_SMM_ACCESS_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiSmmAccessProtocolGuid, "SMM Access Protocol", "SMM Access protocol"); diff --git a/EDK/Foundation/Framework/Protocol/SmmAccess/SmmAccess.h b/EDK/Foundation/Framework/Protocol/SmmAccess/SmmAccess.h new file mode 100644 index 0000000..9dddaca --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmAccess/SmmAccess.h @@ -0,0 +1,92 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmAccess.h + +Abstract: + + This file defines SMM SMRAM Access abstraction protocol defined + by the SMM CIS. + +--*/ + +#ifndef _SMM_ACCESS_H_ +#define _SMM_ACCESS_H_ + +#include EFI_GUID_DEFINITION (SmramMemoryReserve) + +EFI_FORWARD_DECLARATION (EFI_SMM_ACCESS_PROTOCOL); + +#define EFI_SMM_ACCESS_PROTOCOL_GUID \ + { \ + 0x3792095a, 0xe309, 0x4c1e, 0xaa, 0x01, 0x85, 0xf5, 0x65, 0x5a, 0x17, 0xf1 \ + } + +// +// SMM Access specification constant and types +// +// ******************************************************* +// EFI_SMRAM_STATE +// ******************************************************* +// +#define EFI_SMRAM_OPEN 0x00000001 +#define EFI_SMRAM_CLOSED 0x00000002 +#define EFI_SMRAM_LOCKED 0x00000004 +#define EFI_CACHEABLE 0x00000008 +#define EFI_ALLOCATED 0x00000010 + +// +// SMM Access specification Data Structures +// +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_OPEN) ( + IN EFI_SMM_ACCESS_PROTOCOL * This, + UINTN DescriptorIndex + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_CLOSE) ( + IN EFI_SMM_ACCESS_PROTOCOL * This, + UINTN DescriptorIndex + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_LOCK) ( + IN EFI_SMM_ACCESS_PROTOCOL * This, + UINTN DescriptorIndex + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_CAPABILITIES) ( + IN EFI_SMM_ACCESS_PROTOCOL * This, + IN OUT UINTN *SmramMapSize, + IN OUT EFI_SMRAM_DESCRIPTOR * SmramMap + ); + +typedef struct _EFI_SMM_ACCESS_PROTOCOL { + EFI_SMM_OPEN Open; + EFI_SMM_CLOSE Close; + EFI_SMM_LOCK Lock; + EFI_SMM_CAPABILITIES GetCapabilities; + BOOLEAN LockState; + BOOLEAN OpenState; +} EFI_SMM_ACCESS_PROTOCOL; + +extern EFI_GUID gEfiSmmAccessProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SmmBase/SmmBase.c b/EDK/Foundation/Framework/Protocol/SmmBase/SmmBase.c new file mode 100644 index 0000000..0a3fd01 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmBase/SmmBase.c @@ -0,0 +1,38 @@ +/*++ + +Copyright (c) 1999 - 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. + + +Module Name: + + SmmBase.c + +Abstract: + + This file defines SMM Base abstraction protocol defined by the + SMM Component Interface Specification + + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SmmBase) + +EFI_GUID gEfiSmmBaseProtocolGuid = EFI_SMM_BASE_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiSmmBaseProtocolGuid, "SMM Base Protocol", "SMM Base protocol"); + +EFI_GUID gEfiSmmCpuIoGuid = EFI_SMM_CPU_IO_GUID; + +EFI_GUID_STRING(&gEfiSmmCpuIoGuid, "SMM CPU IO", "SMM CPU IO"); + +EFI_GUID gEfiSmmCommunicateHeaderGuid = SMM_COMMUNICATE_HEADER_GUID; + +EFI_GUID_STRING(&gEfiSmmCommunicateHeaderGuid, "SMM Communicate Header Guid", "SMM Communicate Header Guid"); diff --git a/EDK/Foundation/Framework/Protocol/SmmBase/SmmBase.h b/EDK/Foundation/Framework/Protocol/SmmBase/SmmBase.h new file mode 100644 index 0000000..19193be --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmBase/SmmBase.h @@ -0,0 +1,797 @@ +/*++ + +Copyright (c) 1999 - 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. + + +Module Name: + + SmmBase.h + +Abstract: + + This file defines SMM Base abstraction protocol defined by the SMM Architecture + Specification. This is the base level of compatiblity for SMM drivers. + +--*/ + +#ifndef _SMM_BASE_H_ +#define _SMM_BASE_H_ + +#include EFI_PROTOCOL_DEFINITION (DevicePath) + +#define EFI_SMM_BASE_PROTOCOL_GUID \ + { \ + 0x1390954D, 0xda95, 0x4227, 0x93, 0x28, 0x72, 0x82, 0xc2, 0x17, 0xda, 0xa8 \ + } + +#define EFI_SMM_CPU_IO_GUID \ + { \ + 0x5f439a0b, 0x45d8, 0x4682, 0xa4, 0xf4, 0xf0, 0x57, 0x6b, 0x51, 0x34, 0x41 \ + } + +#define SMM_COMMUNICATE_HEADER_GUID \ + { \ + 0xF328E36C, 0x23B6, 0x4a95, 0x85, 0x4B, 0x32, 0xE1, 0x95, 0x34, 0xCD, 0x75 \ + } + +// +// SMM Base specification constant and types +// +#define SMM_SMST_SIGNATURE EFI_SIGNATURE_32 ('S', 'M', 'S', 'T') +#define EFI_SMM_SYSTEM_TABLE_REVISION (0 << 16) | (0x09) + +EFI_FORWARD_DECLARATION (EFI_SMM_BASE_PROTOCOL); +EFI_FORWARD_DECLARATION (EFI_SMM_CPU_IO_INTERFACE); +EFI_FORWARD_DECLARATION (EFI_SMM_CPU_SAVE_STATE); +EFI_FORWARD_DECLARATION (EFI_SMM_OPTIONAL_FP_SAVE_STATE); +EFI_FORWARD_DECLARATION (EFI_SMM_SYSTEM_TABLE); + +// +// ******************************************************* +// EFI_SMM_IO_WIDTH +// ******************************************************* +// +typedef enum { + SMM_IO_UINT8 = 0, + SMM_IO_UINT16 = 1, + SMM_IO_UINT32 = 2, + SMM_IO_UINT64 = 3 +} EFI_SMM_IO_WIDTH; + +// +// ******************************************************* +// EFI_SMM_IO_ACCESS +// ******************************************************* +// +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_CPU_IO) ( + IN EFI_SMM_CPU_IO_INTERFACE * This, + IN EFI_SMM_IO_WIDTH Width, + IN UINT64 Address, + IN UINTN Count, + IN OUT VOID *Buffer + ); + +typedef struct { + EFI_SMM_CPU_IO Read; + EFI_SMM_CPU_IO Write; +} EFI_SMM_IO_ACCESS; + +typedef struct _EFI_SMM_CPU_IO_INTERFACE { + EFI_SMM_IO_ACCESS Mem; + EFI_SMM_IO_ACCESS Io; +} EFI_SMM_CPU_IO_INTERFACE; + +typedef +EFI_STATUS +(EFIAPI *EFI_SMMCORE_ALLOCATE_POOL) ( + IN EFI_MEMORY_TYPE PoolType, + IN UINTN Size, + OUT VOID **Buffer + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_SMMCORE_FREE_POOL) ( + IN VOID *Buffer + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_SMMCORE_ALLOCATE_PAGES) ( + IN EFI_ALLOCATE_TYPE Type, + IN EFI_MEMORY_TYPE MemoryType, + IN UINTN NumberOfPages, + OUT EFI_PHYSICAL_ADDRESS * Memory + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_SMMCORE_FREE_PAGES) ( + IN EFI_PHYSICAL_ADDRESS Memory, + IN UINTN NumberOfPages + ); + +typedef +VOID +(EFIAPI *EFI_AP_PROCEDURE) ( + IN VOID *Buffer + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_STARTUP_THIS_AP) ( + IN EFI_AP_PROCEDURE Procedure, + IN UINTN CpuNumber, + IN OUT VOID *ProcArguments OPTIONAL + ); + +typedef struct _EFI_SMM_CPU_SAVE_STATE { + UINT8 Reserved1[248]; + UINT32 SMBASE; + UINT32 SMMRevId; + UINT16 IORestart; + UINT16 AutoHALTRestart; + UINT8 Reserved2[164]; + UINT32 ES; + UINT32 CS; + UINT32 SS; + UINT32 DS; + UINT32 FS; + UINT32 GS; + UINT32 LDTBase; + UINT32 TR; + UINT32 DR7; + UINT32 DR6; + UINT32 EAX; + UINT32 ECX; + UINT32 EDX; + UINT32 EBX; + UINT32 ESP; + UINT32 EBP; + UINT32 ESI; + UINT32 EDI; + UINT32 EIP; + UINT32 EFLAGS; + UINT32 CR3; + UINT32 CR0; +} EFI_SMM_CPU_SAVE_STATE; + +typedef struct { + UINT8 Reserved19[760]; // FC00 + UINT32 SMBASE; // FEF8 + UINT32 REVID; // FEFC + UINT16 HALT_RESTART; // FF00 + UINT16 IO_RESTART; // FF02 + UINT32 Reserved17[22]; // FF58, 54, 50, 4c, 48, 44, 40, 3c, 38, 34, 30, 2c, 28, 24, 20, 1c, 18, 14, 10, 0c, 08, 04 + UINT32 EAX; // FF5C + UINT32 Reserved16; // FF60 + UINT32 ECX; // FF64 + UINT32 Reserved15; // FF68 + UINT32 EDX; // FF6C + UINT32 Reserved14; // FF70 + UINT32 EBX; // FF74 + UINT32 Reserved13; // FF78 + UINT32 ESP; // FF7C + UINT32 Reserved12; // FF80 + UINT32 EBP; // FF84 + UINT32 Reserved11; // FF88 + UINT32 ESI; // FF8C + UINT32 Reserved9; // FF90 + UINT32 EDI; // FF94 + UINT32 Reserved8; // FF98 + UINT32 IO_MEM_ADDR; // FF9C + UINT32 Reserved7; // FFA0 + UINT32 IO_MISC; // FFA4 + UINT32 ES_SEL; // FFA8 + UINT32 CS_SEL; // FFAC + UINT32 SS_SEL; // FFB0 + UINT32 DS_SEL; // FFB4 + UINT32 FS_SEL; // FFB8 + UINT32 GS_SEL; // FFBC + UINT32 LDTR_SEL; // FFC0 + UINT32 TR_SEL; // FFC4 + UINT32 DR7; // FFC8 + UINT32 Reserved6; // FFCC + UINT32 DR6; // FFD0 + UINT32 Reserved5; // FFD4 + UINT32 EIP; // FFD8 + UINT32 Reserved4; // FFDC + UINT32 EFER; // FFE0 + UINT32 Reserved3; // FFE4 + UINT32 EFLAGS; // FFE8 + UINT32 Reserved2; // FFEC + UINT32 CR3; // FFF0 + UINT32 Reserved1; // FFF4 + UINT32 CR0; // FFF8 + UINT32 Reserved0; // FFFC +} EFI_SMM_CPU_CT_SAVE_STATE; + +typedef struct { + UINT8 Reserved26[464]; // FC00 - FDCF + UINT32 GdtrUpperBase; // FDD0 + UINT32 LdtrUpperBase; // FDD4 + UINT32 IdtrUpperBase; // FDD8 + UINT32 Reserved25; // FDDC - FDDF + UINT64 IoRdi; // FDE0 + UINT64 IoRip; // FDE8 + UINT64 IoRcx; // FDF0 + UINT64 IoRsi; // FDF8 + UINT8 Reserved24[64]; // FE00 - FE3F + UINT64 Cr4; // FE40 + UINT8 Reserved23[68]; // FE48 - FE8B + UINT32 GdtrBase; // FE8C + UINT32 Reserved22; // FE90 + UINT32 IdtrBase; // FE94 + UINT32 Reserved21; // FE98 + UINT32 LdtrBase; // FE9C + UINT32 Reserved20; // FEA0 + UINT8 Reserved19[84]; // FEA4 - FEF7 + UINT32 Smbase; // FEF8 + UINT32 RevId; // FEFC + UINT16 IoRestart; // FF00 + UINT16 HaltRestart; // FF02 + UINT8 Reserved18[24]; // FF04 - FF1B + UINT32 R15; // FF1C + UINT32 Reserved17; // FE20 + UINT32 R14; // FF24 + UINT32 Reserved16; // FE28 + UINT32 R13; // FF2C + UINT32 Reserved15; // FE30 + UINT32 R12; // FF34 + UINT32 Reserved14; // FE38 + UINT32 R11; // FF3C + UINT32 Reserved13; // FE40 + UINT32 R10; // FF44 + UINT32 Reserved12; // FE48 + UINT32 R9; // FF4C + UINT32 Reserved11; // FE50 + UINT32 R8; // FF54 + UINT32 Reserved10; // FE58 + UINT32 Rax; // FF5C + UINT32 Reserved9; // FE60 + UINT32 Rcx; // FF64 + UINT32 Reserved8; // FE68 + UINT32 Rdx; // FF6C + UINT32 Reserved7; // FE70 + UINT32 Rbx; // FF74 + UINT32 Reserved6; // FE78 + UINT32 Rsp; // FF7C + UINT32 Reserved5; // FE80 + UINT32 Rbp; // FF84 + UINT32 Reserved4; // FE88 + UINT32 Rsi; // FF8C + UINT32 Reserved3; // FE90 + UINT32 Rdi; // FF94 + UINT32 Reserved2; // FE98 + UINT32 IoMemAddr; // FF9C + UINT32 Reserved1; // FEA0 + UINT32 IoMiscInfo; // FFA4 + UINT32 EsSel; // FFA8 + UINT32 CsSel; // FFAC + UINT32 SsSel; // FFB0 + UINT32 DsSel; // FFB4 + UINT32 FsSel; // FFB8 + UINT32 GsSel; // FFBC + UINT32 LdtrSel; // FFC0 + UINT32 TrSel; // FFC4 + UINT64 Dr7; // FFC8 + UINT64 Dr6; // FFD0 + UINT32 Rip; // FFD8 + UINT32 Reserved0; // FFDC + UINT64 Efr; // FFE0 + UINT64 RFlags; // FFE8 + UINT64 Cr3; // FFF0 + UINT64 Cr0; // FFF8 +} EFI_SMM_CPU_MEROM_SAVE_STATE; + + +typedef struct { + UINT8 Reserved14[0x228]; // FC00-FE28 + UINT32 IO_EIP; // FE28 + UINT8 Reserved13[0x14]; // FE2C-FE40 + UINT32 CR4; // FE40 + UINT8 Reserved12[0x48]; // FE44-FE8C + UINT32 GDT_BASE; // FE8C + UINT8 Reserved11[0xC]; // FE90-FE9C + UINT32 LDT_BASE; // FE9C + UINT8 Reserved10[0x58]; // FEA0-FEF8 + UINT32 SMBASE; + UINT32 REVID; + UINT16 IO_RESTART; + UINT16 HALT_RESTART; + UINT8 Reserved9[0xA4]; + + UINT16 ES; + UINT16 Reserved8; + UINT16 CS; + UINT16 Reserved7; + UINT16 SS; + UINT16 Reserved6; + UINT16 DS; + UINT16 Reserved5; + UINT16 FS; + UINT16 Reserved4; + UINT16 GS; + UINT16 Reserved3; + UINT32 Reserved2; + UINT16 TR; + UINT16 Reserved1; + UINT32 DR7; + UINT32 DR6; + UINT32 EAX; + UINT32 ECX; + UINT32 EDX; + UINT32 EBX; + UINT32 ESP; + UINT32 EBP; + UINT32 ESI; + UINT32 EDI; + UINT32 EIP; + UINT32 EFLAGS; + UINT32 CR3; + UINT32 CR0; +} EFI_SMM_CPU_CT_NOT_ENABLED_SAVE_STATE; + +typedef struct _EFI_SMM_OPTIONAL_FP_SAVE_STATE { + UINT16 Fcw; + UINT16 Fsw; + UINT16 Ftw; + UINT16 Opcode; + UINT32 Eip; + UINT16 Cs; + UINT16 Rsvd1; + UINT32 DataOffset; + UINT16 Ds; + UINT8 Rsvd2[10]; + UINT8 St0Mm0[10], Rsvd3[6]; + UINT8 St0Mm1[10], Rsvd4[6]; + UINT8 St0Mm2[10], Rsvd5[6]; + UINT8 St0Mm3[10], Rsvd6[6]; + UINT8 St0Mm4[10], Rsvd7[6]; + UINT8 St0Mm5[10], Rsvd8[6]; + UINT8 St0Mm6[10], Rsvd9[6]; + UINT8 St0Mm7[10], Rsvd10[6]; + UINT8 Rsvd11[22 * 16]; +} EFI_SMM_OPTIONAL_FP_SAVE_STATE; + +typedef struct _EFI_SMM_OPTIONAL_FP_SAVE_STATE32 { + UINT16 Fcw; + UINT16 Fsw; + UINT16 Ftw; + UINT16 Opcode; + UINT32 Eip; + UINT16 Cs; + UINT16 Rsvd1; + UINT32 DataOffset; + UINT16 Ds; + UINT8 Reserved2[10]; + UINT8 St0Mm0[10], Rsvd3[6]; + UINT8 St1Mm1[10], Rsvd4[6]; + UINT8 St2Mm2[10], Rsvd5[6]; + UINT8 St3Mm3[10], Rsvd6[6]; + UINT8 St4Mm4[10], Rsvd7[6]; + UINT8 St5Mm5[10], Rsvd8[6]; + UINT8 St6Mm6[10], Rsvd9[6]; + UINT8 St7Mm7[10], Rsvd10[6]; + UINT8 Xmm0[16]; + UINT8 Xmm1[16]; + UINT8 Xmm2[16]; + UINT8 Xmm3[16]; + UINT8 Xmm4[16]; + UINT8 Xmm5[16]; + UINT8 Xmm6[16]; + UINT8 Xmm7[16]; + UINT8 Rsvd11[14 * 16]; +} EFI_SMM_OPTIONAL_FP_SAVE_STATE32; + +typedef struct _EFI_SMM_OPTIONAL_FP_SAVE_STATE64 { + UINT16 Fcw; + UINT16 Fsw; + UINT16 Ftw; + UINT16 Opcode; + UINT64 Rip; + UINT64 DataOffset; + UINT8 Rsvd1[8]; + UINT8 St0Mm0[10], Rsvd2[6]; + UINT8 St1Mm1[10], Rsvd3[6]; + UINT8 St2Mm2[10], Rsvd4[6]; + UINT8 St3Mm3[10], Rsvd5[6]; + UINT8 St4Mm4[10], Rsvd6[6]; + UINT8 St5Mm5[10], Rsvd7[6]; + UINT8 St6Mm6[10], Rsvd8[6]; + UINT8 St7Mm7[10], Rsvd9[6]; + UINT8 Xmm0[16]; + UINT8 Xmm1[16]; + UINT8 Xmm2[16]; + UINT8 Xmm3[16]; + UINT8 Xmm4[16]; + UINT8 Xmm5[16]; + UINT8 Xmm6[16]; + UINT8 Xmm7[16]; + UINT8 Xmm8[16]; + UINT8 Xmm9[16]; + UINT8 Xmm10[16]; + UINT8 Xmm11[16]; + UINT8 Xmm12[16]; + UINT8 Xmm13[16]; + UINT8 Xmm14[16]; + UINT8 Xmm15[16]; + UINT8 Rsvd10[6 * 16]; +} EFI_SMM_OPTIONAL_FP_SAVE_STATE64; + +struct _EFI_SMM_SYSTEM_TABLE; + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_INSTALL_CONFIGURATION_TABLE) ( + IN EFI_SMM_SYSTEM_TABLE * SystemTable, + IN EFI_GUID * Guid, + IN VOID *Table, + IN UINTN TableSize + ) +/*++ + + Routine Description: + The SmmInstallConfigurationTable() function is used to maintain the list + of configuration tables that are stored in the System Management System + Table. The list is stored as an array of (GUID, Pointer) pairs. The list + must be allocated from pool memory with PoolType set to EfiRuntimeServicesData. + + Arguments: + SystemTable - A pointer to the SMM System Table. + Guid - A pointer to the GUID for the entry to add, update, or remove. + Table - A pointer to the buffer of the table to add. + TableSize - The size of the table to install. + + Returns: + EFI_SUCCESS - The (Guid, Table) pair was added, updated, or removed. + EFI_INVALID_PARAMETER - Guid is not valid. + EFI_NOT_FOUND - An attempt was made to delete a non-existent entry. + EFI_OUT_OF_RESOURCES - There is not enough memory available to complete the operation. + +--*/ +; + +// +// System Management System Table (SMST) +// +typedef struct _EFI_SMM_SYSTEM_TABLE { + EFI_TABLE_HEADER Hdr; + + CHAR16 *SmmFirmwareVendor; + UINT32 SmmFirmwareRevision; + + EFI_SMM_INSTALL_CONFIGURATION_TABLE SmmInstallConfigurationTable; + + // + // I/O Services + // + EFI_GUID EfiSmmCpuIoGuid; + EFI_SMM_CPU_IO_INTERFACE SmmIo; + + // + // Runtime memory service + // + EFI_SMMCORE_ALLOCATE_POOL SmmAllocatePool; + EFI_SMMCORE_FREE_POOL SmmFreePool; + EFI_SMMCORE_ALLOCATE_PAGES SmmAllocatePages; + EFI_SMMCORE_FREE_PAGES SmmFreePages; + + // + // MP service + // + EFI_SMM_STARTUP_THIS_AP SmmStartupThisAp; + + // + // CPU information records + // + UINTN CurrentlyExecutingCpu; + UINTN NumberOfCpus; + EFI_SMM_CPU_SAVE_STATE *CpuSaveState; + EFI_SMM_OPTIONAL_FP_SAVE_STATE *CpuOptionalFloatingPointState; + + // + // Extensibility table + // + UINTN NumberOfTableEntries; + EFI_CONFIGURATION_TABLE *SmmConfigurationTable; + +} EFI_SMM_SYSTEM_TABLE; + +// +// SMM Handler Definition +// +#define EFI_HANDLER_SUCCESS 0x0000 +#define EFI_HANDLER_CRITICAL_EXIT 0x0001 +#define EFI_HANDLER_SOURCE_QUIESCED 0x0002 +#define EFI_HANDLER_SOURCE_PENDING 0x0003 + +// +// Structure of Communicate Buffer +// +typedef struct { + EFI_GUID HeaderGuid; + UINTN MessageLength; + UINT8 Data[1]; +} EFI_SMM_COMMUNICATE_HEADER; + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_HANDLER_ENTRY_POINT) ( + IN EFI_HANDLE SmmImageHandle, + IN OUT VOID *CommunicationBuffer OPTIONAL, + IN OUT UINTN *SourceSize OPTIONAL + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_CALLBACK_ENTRY_POINT) ( + IN EFI_HANDLE SmmImageHandle, + IN OUT VOID *CommunicationBuffer OPTIONAL, + IN OUT UINTN *SourceSize OPTIONAL + ); + +typedef struct { + EFI_HANDLE SmmHandler; + EFI_DEVICE_PATH_PROTOCOL *HandlerDevicePath; +} EFI_HANDLER_DESCRIPTOR; + +// +// SMM Base Protocol Definition +// +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_REGISTER_HANDLER) ( + IN EFI_SMM_BASE_PROTOCOL * This, + IN EFI_DEVICE_PATH_PROTOCOL * FilePath, + IN VOID *SourceBuffer OPTIONAL, + IN UINTN SourceSize, + OUT EFI_HANDLE * ImageHandle, + IN BOOLEAN LegacyIA32Binary OPTIONAL + ) +/*++ + + Routine Description: + Register a given driver into SMRAM. This is the equivalent of performing + the LoadImage/StartImage into System Management Mode. + + Arguments: + This - Protocol instance pointer. + SourceBuffer - Optional source buffer in case of the image file + being in memory. + SourceSize - Size of the source image file, if in memory. + ImageHandle - Pointer to the handle that reflects the driver + loaded into SMM. + LegacyIA32Binary - The binary image to load is legacy 16 bit code. + + Returns: + EFI_SUCCESS - The operation was successful. + EFI_OUT_OF_RESOURCES - There were no additional SMRAM resources to load the handler + EFI_UNSUPPORTED - This platform does not support 16-bit handlers. + EFI_UNSUPPORTED - In runtime. + EFI_INVALID_PARAMETER - The handlers was not the correct image type + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_UNREGISTER_HANDLER) ( + IN EFI_SMM_BASE_PROTOCOL * This, + IN EFI_HANDLE ImageHandle + ) +/*++ + + Routine Description: + Remove a given driver SMRAM. This is the equivalent of performing + the UnloadImage System Management Mode. + + Arguments: + This - Protocol instance pointer. + ImageHandle - Pointer to the handle that reflects the driver + loaded into SMM. + + Returns: + EFI_SUCCESS - The operation was successful + EFI_INVALID_PARAMETER - The handler did not exist + EFI_UNSUPPORTED - In runtime. + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_COMMUNICATE) ( + IN EFI_SMM_BASE_PROTOCOL * This, + IN EFI_HANDLE ImageHandle, + IN OUT VOID *CommunicationBuffer, + IN OUT UINTN *SourceSize + ) +/*++ + + Routine Description: + The SMM Inter-module Communicate Service Communicate() function + provides a services to send/received messages from a registered + EFI service. The BASE protocol driver is responsible for doing + any of the copies such that the data lives in boot-service accessible RAM. + + Arguments: + This - Protocol instance pointer. + ImageHandle - Pointer to the handle that reflects the driver + loaded into SMM. + CommunicationBuffer - Pointer to the buffer to convey into SMRAM. + SourceSize - Size of the contents of buffer.. + + Returns: + EFI_SUCCESS - The message was successfully posted + EFI_INVALID_PARAMETER - The buffer was NULL + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_CALLBACK_SERVICE) ( + IN EFI_SMM_BASE_PROTOCOL * This, + IN EFI_HANDLE SmmImageHandle, + IN EFI_SMM_CALLBACK_ENTRY_POINT CallbackAddress, + IN BOOLEAN MakeLast OPTIONAL, + IN BOOLEAN FloatingPointSave OPTIONAL + ) +/*++ + + Routine Description: + Register a callback to execute within SMM. + This allows receipt of messages created with the Boot Service COMMUNICATE. + + Arguments: + This - Protocol instance pointer. + CallbackAddress - Address of the callback service + MakeFirst - If present, will stipulate that the handler is posted + to be the first module executed in the dispatch table. + MakeLast - If present, will stipulate that the handler is posted + to be last executed in the dispatch table. + FloatingPointSave - This is an optional parameter which informs the + EFI_SMM_ACCESS_PROTOCOL Driver core if it needs to save + the floating point register state. If any of the handlers + require this, then the state will be saved for all of the handlers. + + Returns: + EFI_SUCCESS - The operation was successful + EFI_OUT_OF_RESOURCES - Not enough space in the dispatch queue + EFI_UNSUPPORTED - In runtime. + EFI_UNSUPPORTED - Not in SMM. + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_ALLOCATE_POOL) ( + IN EFI_SMM_BASE_PROTOCOL * This, + IN EFI_MEMORY_TYPE PoolType, + IN UINTN Size, + OUT VOID **Buffer + ) +/*++ + + Routine Description: + The SmmAllocatePool() function allocates a memory region of Size bytes from memory of + type PoolType and returns the address of the allocated memory in the location referenced + by Buffer. This function allocates pages from EFI SMRAM Memory as needed to grow the + requested pool type. All allocations are eight-byte aligned. + + Arguments: + This - Protocol instance pointer. + PoolType - The type of pool to allocate. + The only supported type is EfiRuntimeServicesData; + the interface will internally map this runtime request to SMRAM. + Size - The number of bytes to allocate from the pool. + Buffer - A pointer to a pointer to the allocated buffer if the call + succeeds; undefined otherwise. + + Returns: + EFI_SUCCESS - The requested number of bytes was allocated. + EFI_OUT_OF_RESOURCES - The pool requested could not be allocated. + EFI_INVALID_PARAMETER - PoolType was invalid. + EFI_UNSUPPORTED - In runtime. + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_FREE_POOL) ( + IN EFI_SMM_BASE_PROTOCOL * This, + IN VOID *Buffer + ) +/*++ + + Routine Description: + The SmmFreePool() function returns the memory specified by Buffer to the system. + On return, the memory's type is EFI SMRAM Memory. The Buffer that is freed must + have been allocated by SmmAllocatePool(). + + Arguments: + This - Protocol instance pointer. + Buffer - Pointer to the buffer allocation. + + Returns: + EFI_SUCCESS - The memory was returned to the system. + EFI_INVALID_PARAMETER - Buffer was invalid. + EFI_UNSUPPORTED - In runtime. + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_INSIDE_OUT) ( + IN EFI_SMM_BASE_PROTOCOL * This, + OUT BOOLEAN *InSmm + ) +/*++ + + Routine Description: + This routine tells caller if execution context is SMM or not. + + Arguments: + This - Protocol instance pointer. + + Returns: + EFI_SUCCESS - The operation was successful + +--*/ +; + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_GET_SMST_LOCATION) ( + IN EFI_SMM_BASE_PROTOCOL * This, + IN OUT EFI_SMM_SYSTEM_TABLE **Smst + ) +/*++ + + Routine Description: + The GetSmstLocation() function returns the locatin of the System Management + Service Table. The use of the API is such that a driver can discover the + location of the SMST in its entry point and then cache it in some driver + global variable so that the SMST can be invoked in subsequent callbacks. + + Arguments: + This - Protocol instance pointer. + Smst - Pointer to the SMST. + + Returns: + EFI_SUCCESS - The operation was successful + EFI_INVALID_PARAMETER - Smst was invalid. + EFI_UNSUPPORTED - Not in SMM. + +--*/ +; + +typedef struct _EFI_SMM_BASE_PROTOCOL { + EFI_SMM_REGISTER_HANDLER Register; + EFI_SMM_UNREGISTER_HANDLER UnRegister; + EFI_SMM_COMMUNICATE Communicate; + EFI_SMM_CALLBACK_SERVICE RegisterCallback; + EFI_SMM_INSIDE_OUT InSmm; + EFI_SMM_ALLOCATE_POOL SmmAllocatePool; + EFI_SMM_FREE_POOL SmmFreePool; + EFI_SMM_GET_SMST_LOCATION GetSmstLocation; +} EFI_SMM_BASE_PROTOCOL; + +extern EFI_GUID gEfiSmmBaseProtocolGuid; +extern EFI_GUID gEfiSmmCpuIoGuid; +extern EFI_GUID gEfiSmmCommunicateHeaderGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SmmControl/SmmControl.c b/EDK/Foundation/Framework/Protocol/SmmControl/SmmControl.c new file mode 100644 index 0000000..78e1f61 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmControl/SmmControl.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmControl.c + +Abstract: + + This file defines SMM Control abstraction protocol defined by the + SMM Component Interface Specification + + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SmmControl) + +EFI_GUID gEfiSmmControlProtocolGuid = EFI_SMM_CONTROL_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiSmmControlProtocolGuid, "SMM Control Protocol", "SMM Control protocol"); diff --git a/EDK/Foundation/Framework/Protocol/SmmControl/SmmControl.h b/EDK/Foundation/Framework/Protocol/SmmControl/SmmControl.h new file mode 100644 index 0000000..ae7d691 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmControl/SmmControl.h @@ -0,0 +1,79 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmControl.h + +Abstract: + + This file defines SMM Control abstraction protocol defined + by the SMM CIS. + +--*/ + +#ifndef _SMM_CONTROL_H_ +#define _SMM_CONTROL_H_ + +EFI_FORWARD_DECLARATION (EFI_SMM_CONTROL_PROTOCOL); + +#define EFI_SMM_CONTROL_PROTOCOL_GUID \ + { \ + 0x8d12e231, 0xc667, 0x4fd1, 0x98, 0xf2, 0x24, 0x49, 0xa7, 0xe7, 0xb2, 0xe5 \ + } + +// +// SMM Control specification constant and types +// +// typedef EFI_SMM_PERIOD UINTN +// +// SMM Access specification Data Structures +// +typedef struct { + UINT8 SmiTriggerRegister; + UINT8 SmiDataRegister; +} EFI_SMM_CONTROL_REGISTER; + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_ACTIVATE) ( + IN EFI_SMM_CONTROL_PROTOCOL * This, + IN OUT INT8 *ArgumentBuffer OPTIONAL, + IN OUT UINTN *ArgumentBufferSize OPTIONAL, + IN BOOLEAN Periodic OPTIONAL, + IN UINTN ActivationInterval OPTIONAL + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_DEACTIVATE) ( + IN EFI_SMM_CONTROL_PROTOCOL * This, + IN BOOLEAN Periodic OPTIONAL + ); + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_GET_REGISTER_INFO) ( + IN EFI_SMM_CONTROL_PROTOCOL * This, + IN OUT EFI_SMM_CONTROL_REGISTER * SmiRegister + ); + +typedef struct _EFI_SMM_CONTROL_PROTOCOL { + EFI_SMM_ACTIVATE Trigger; + EFI_SMM_DEACTIVATE Clear; + EFI_SMM_GET_REGISTER_INFO GetRegisterInfo; + UINTN MinimumTriggerPeriod; +} EFI_SMM_CONTROL_PROTOCOL; + +extern EFI_GUID gEfiSmmControlProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SmmCpuState/CpuSaveState.h b/EDK/Foundation/Framework/Protocol/SmmCpuState/CpuSaveState.h new file mode 100644 index 0000000..1b5c774 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmCpuState/CpuSaveState.h @@ -0,0 +1,150 @@ +/*++ + +Copyright (c) 2005, 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. + + +Module Name: + + CpuSaveState.h + +Abstract: + + Define data structures used by EFI_SMM_CPU_SAVE_STATE protocol. + +Revision History + +++*/ + +#ifndef _CPUSAVESTATE_H_ +#define _CPUSAVESTATE_H_ + +typedef unsigned char ASM_UINT8; +typedef ASM_UINT8 ASM_BOOL; +typedef unsigned short ASM_UINT16; +typedef unsigned long ASM_UINT32; + +#ifdef _H2INC +typedef double ASM_UINT64; +#else +typedef unsigned __int64 ASM_UINT64; +#endif + +#pragma pack (push) +#pragma pack (1) + +typedef struct _EFI_SMM_CPU_STATE32 { + ASM_UINT8 Reserved1[0xf8]; // fe00h + ASM_UINT32 SMBASE; // fef8h + ASM_UINT32 SMMRevId; // fefch + ASM_UINT16 IORestart; // ff00h + ASM_UINT16 AutoHALTRestart; // ff02h + ASM_UINT32 IEDBASE; // ff04h + ASM_UINT8 Reserved2[0x98]; // ff08h + ASM_UINT32 IOMemAddr; // ffa0h + ASM_UINT32 IOMisc; // ffa4h + ASM_UINT32 _ES; + ASM_UINT32 _CS; + ASM_UINT32 _SS; + ASM_UINT32 _DS; + ASM_UINT32 _FS; + ASM_UINT32 _GS; + ASM_UINT32 _LDTBase; + ASM_UINT32 _TR; + ASM_UINT32 _DR7; + ASM_UINT32 _DR6; + ASM_UINT32 _EAX; + ASM_UINT32 _ECX; + ASM_UINT32 _EDX; + ASM_UINT32 _EBX; + ASM_UINT32 _ESP; + ASM_UINT32 _EBP; + ASM_UINT32 _ESI; + ASM_UINT32 _EDI; + ASM_UINT32 _EIP; + ASM_UINT32 _EFLAGS; + ASM_UINT32 _CR3; + ASM_UINT32 _CR0; +} EFI_SMM_CPU_STATE32; + +typedef struct _EFI_SMM_CPU_STATE64 { + ASM_UINT8 Reserved1[0x1d0]; // fc00h + ASM_UINT32 GdtBaseHiDword; // fdd0h + ASM_UINT32 LdtBaseHiDword; // fdd4h + ASM_UINT32 IdtBaseHiDword; // fdd8h + ASM_UINT8 Reserved2[0xc]; // fddch + ASM_UINT64 IO_EIP; // fde8h + ASM_UINT8 Reserved3[0x50]; // fdf0h + ASM_UINT32 _CR4; // fe40h + ASM_UINT8 Reserved4[0x48]; // fe44h + ASM_UINT32 GdtBaseLoDword; // fe8ch + ASM_UINT32 GdtLimit; // fe90h + ASM_UINT32 IdtBaseLoDword; // fe94h + ASM_UINT32 IdtLimit; // fe98h + ASM_UINT32 LdtBaseLoDword; // fe9ch + ASM_UINT32 LdtLimit; // fea0h + ASM_UINT32 LdtInfo; // fea4h + ASM_UINT8 Reserved5[0x50]; // fea8h + ASM_UINT32 SMBASE; // fef8h + ASM_UINT32 SMMRevId; // fefch + ASM_UINT16 IORestart; // ff00h + ASM_UINT16 AutoHALTRestart; // ff02h + ASM_UINT32 IEDBASE; // ff04h + ASM_UINT8 Reserved6[0x14]; // ff08h + ASM_UINT64 _R15; // ff1ch + ASM_UINT64 _R14; + ASM_UINT64 _R13; + ASM_UINT64 _R12; + ASM_UINT64 _R11; + ASM_UINT64 _R10; + ASM_UINT64 _R9; + ASM_UINT64 _R8; + ASM_UINT64 _RAX; // ff5ch + ASM_UINT64 _RCX; + ASM_UINT64 _RDX; + ASM_UINT64 _RBX; + ASM_UINT64 _RSP; + ASM_UINT64 _RBP; + ASM_UINT64 _RSI; + ASM_UINT64 _RDI; + ASM_UINT64 IOMemAddr; // ff9ch + ASM_UINT32 IOMisc; // ffa4h + ASM_UINT32 _ES; // ffa8h + ASM_UINT32 _CS; + ASM_UINT32 _SS; + ASM_UINT32 _DS; + ASM_UINT32 _FS; + ASM_UINT32 _GS; + ASM_UINT32 _LDTR; // ffc0h + ASM_UINT32 _TR; + ASM_UINT64 _DR7; // ffc8h + ASM_UINT64 _DR6; + ASM_UINT64 _RIP; // ffd8h + ASM_UINT64 IA32_EFER; // ffe0h + ASM_UINT64 _RFLAGS; // ffe8h + ASM_UINT64 _CR3; // fff0h + ASM_UINT64 _CR0; // fff8h +} EFI_SMM_CPU_STATE64; + +#pragma warning (push) +#pragma warning (disable: 4201) +typedef union _EFI_SMM_CPU_STATE { + struct { + ASM_UINT8 Reserved[0x200]; + EFI_SMM_CPU_STATE32 x86; + }; + EFI_SMM_CPU_STATE64 x64; +} EFI_SMM_CPU_STATE; +#pragma warning (pop) + +#pragma pack (pop) + +#define EFI_SMM_MIN_REV_ID_x64 0x30006 + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SmmCpuState/SmmCpuState.c b/EDK/Foundation/Framework/Protocol/SmmCpuState/SmmCpuState.c new file mode 100644 index 0000000..6057a43 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmCpuState/SmmCpuState.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 2005, 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. + + +Module Name: + + SmmCpuState.c + +Abstract: + + Protocol definition for EFI_SMM_CPU_SAVE_STATE protocol + +Revision History + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SmmCpuState) + +EFI_GUID gEfiSmmCpuSaveStateProtocolGuid = EFI_SMM_CPU_SAVE_STATE_PROTOCOL_GUID; + +EFI_GUID_STRING (&gEfiSmmCpuSaveStateProtocolGuid, "SMM CPU Save State Protocol", "SMM CPU Save State Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/SmmCpuState/SmmCpuState.h b/EDK/Foundation/Framework/Protocol/SmmCpuState/SmmCpuState.h new file mode 100644 index 0000000..a5f0324 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmCpuState/SmmCpuState.h @@ -0,0 +1,43 @@ +/*++ + +Copyright (c) 2005, 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. + + +Module Name: + + SmmCpuState.h + +Abstract: + + Protocol definition for EFI_SMM_CPU_SAVE_STATE protocol + +Revision History + +--*/ + +#ifndef _SMMSAVESTATE_H_ +#define _SMMSAVESTATE_H_ + +#include "CpuSaveState.h" + +// +// Global ID for the Sx SMI Protocol +// +// {21F302AD-6E94-471b-84BC-B14800403A1D} +#define EFI_SMM_CPU_SAVE_STATE_PROTOCOL_GUID \ + { 0x21f302ad, 0x6e94, 0x471b, 0x84, 0xbc, 0xb1, 0x48, 0x0, 0x40, 0x3a, 0x1d } + +typedef struct _EFI_SMM_CPU_SAVE_STATE_PROTOCOL { + EFI_SMM_CPU_STATE **CpuSaveState; +} EFI_SMM_CPU_SAVE_STATE_PROTOCOL; + +extern EFI_GUID gEfiSmmCpuSaveStateProtocolGuid; + +#endif // _SMMSAVESTATE_H_
\ No newline at end of file diff --git a/EDK/Foundation/Framework/Protocol/SmmGpiDispatch/SmmGpiDispatch.c b/EDK/Foundation/Framework/Protocol/SmmGpiDispatch/SmmGpiDispatch.c new file mode 100644 index 0000000..03700e4 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmGpiDispatch/SmmGpiDispatch.c @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmGpiDispatch.c + +Abstract: + + EFI Smm Gpi Smi Child Protocol + +Revision History + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SmmGpiDispatch) + +EFI_GUID gEfiSmmGpiDispatchProtocolGuid = EFI_SMM_GPI_DISPATCH_PROTOCOL_GUID; + +EFI_GUID_STRING + (&gEfiSmmGpiDispatchProtocolGuid, "SMM GPI SMI Dispatch Protocol", "EFI 2.0 SMM GPI SMI Dispatch Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/SmmGpiDispatch/SmmGpiDispatch.h b/EDK/Foundation/Framework/Protocol/SmmGpiDispatch/SmmGpiDispatch.h new file mode 100644 index 0000000..3eba7b2 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmGpiDispatch/SmmGpiDispatch.h @@ -0,0 +1,152 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmGpiDispatch.h + +Abstract: + + EFI Smm Gpi Smi Child Protocol + +Revision History + +--*/ + +#ifndef _EFI_SMM_GPI_DISPATCH_H_ +#define _EFI_SMM_GPI_DISPATCH_H_ + +// +// Global ID for the GPI SMI Protocol +// +#define EFI_SMM_GPI_DISPATCH_PROTOCOL_GUID \ + { \ + 0xe0744b81, 0x9513, 0x49cd, 0x8c, 0xea, 0xe9, 0x24, 0x5e, 0x70, 0x39, 0xda \ + } + +EFI_FORWARD_DECLARATION (EFI_SMM_GPI_DISPATCH_PROTOCOL); + +// +// Related Definitions +// +// +// GpiMask is a bit mask of 32 possible general purpose inputs that can generate a +// a SMI. Bit 0 corresponds to logical GPI[0], 1 corresponds to logical GPI[1], etc. +// +// The logical GPI index to physical pin on device is described by the GPI device name +// found on the same handle as the GpiSmi child dispatch protocol. The GPI device name +// is defined as protocol with a GUID name and NULL protocol pointer. +// +typedef struct { + UINTN GpiNum; +} EFI_SMM_GPI_DISPATCH_CONTEXT; + +// +// Member functions +// +typedef +VOID +(EFIAPI *EFI_SMM_GPI_DISPATCH) ( + IN EFI_HANDLE DispatchHandle, + IN EFI_SMM_GPI_DISPATCH_CONTEXT * DispatchContext + ); + +/*++ + + Routine Description: + Dispatch function for a GPI SMI handler. + + Arguments: + DispatchHandle - Handle of this dispatch function. + DispatchContext - Pointer to the dispatch function's context. + The DispatchContext fields are filled in + by the dispatching driver prior to + invoking this dispatch function. + + Returns: + Nothing + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_GPI_REGISTER) ( + IN EFI_SMM_GPI_DISPATCH_PROTOCOL * This, + IN EFI_SMM_GPI_DISPATCH DispatchFunction, + IN EFI_SMM_GPI_DISPATCH_CONTEXT * DispatchContext, + OUT EFI_HANDLE * DispatchHandle + ); + +/*++ + + Routine Description: + Register a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchFunction - Pointer to dispatch function to be invoked for + this SMI source + DispatchContext - Pointer to the dispatch function's context. + The caller fills this context in before calling + the register function to indicate to the register + function the GPI(s) for which the dispatch function + should be invoked. + DispatchHandle - Handle of dispatch function, for when interfacing + with the parent Sx state SMM driver. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + registered and the SMI source has been enabled. + EFI_DEVICE_ERROR - The driver was unable to enable the SMI source. + EFI_OUT_OF_RESOURCES - Not enough memory (system or SMM) to manage this + child. + EFI_INVALID_PARAMETER - DispatchContext is invalid. The GPI input value + is not within valid range. + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_GPI_UNREGISTER) ( + IN EFI_SMM_GPI_DISPATCH_PROTOCOL * This, + IN EFI_HANDLE DispatchHandle + ); + +/*++ + + Routine Description: + Unregister a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchHandle - Handle of dispatch function to deregister. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + unregistered and the SMI source has been disabled + if there are no other registered child dispatch + functions for this SMI source. + EFI_INVALID_PARAMETER - Handle is invalid. + other - TBD + +--*/ + +// +// Interface structure for the SMM GPI SMI Dispatch Protocol +// +typedef struct _EFI_SMM_GPI_DISPATCH_PROTOCOL { + EFI_SMM_GPI_REGISTER Register; + EFI_SMM_GPI_UNREGISTER UnRegister; + UINTN NumSupportedGpis; +} EFI_SMM_GPI_DISPATCH_PROTOCOL; + +extern EFI_GUID gEfiSmmGpiDispatchProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SmmIchnDispatch/SmmIchnDispatch.c b/EDK/Foundation/Framework/Protocol/SmmIchnDispatch/SmmIchnDispatch.c new file mode 100644 index 0000000..0b2120c --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmIchnDispatch/SmmIchnDispatch.c @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmIchnDispatch.c + +Abstract: + + EFI Smm ICH N Smi Child Protocol + +Revision History + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SmmIchnDispatch) + +EFI_GUID gEfiSmmIchnDispatchProtocolGuid = EFI_SMM_ICHN_DISPATCH_PROTOCOL_GUID; + +EFI_GUID_STRING + (&gEfiSmmIchnDispatchProtocolGuid, "SMM ICHn SMI Dispatch Protocol", "EFI 2.0 SMM ICHn SMI Dispatch Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/SmmIchnDispatch/SmmIchnDispatch.h b/EDK/Foundation/Framework/Protocol/SmmIchnDispatch/SmmIchnDispatch.h new file mode 100644 index 0000000..b02a00b --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmIchnDispatch/SmmIchnDispatch.h @@ -0,0 +1,199 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmIchnDispatch.h + +Abstract: + + EFI Smm ICH [N] Specific Smi Child Protocol + +Revision History + +--*/ + +#ifndef _EFI_SMM_ICHN_DISPATCH_H_ +#define _EFI_SMM_ICHN_DISPATCH_H_ + +// +// Global ID for the ICH SMI Protocol +// +#define EFI_SMM_ICHN_DISPATCH_PROTOCOL_GUID \ + { \ + 0xc50b323e, 0x9075, 0x4f2a, 0xac, 0x8e, 0xd2, 0x59, 0x6a, 0x10, 0x85, 0xcc \ + } + +EFI_FORWARD_DECLARATION (EFI_SMM_ICHN_DISPATCH_PROTOCOL); + +// +// Related Definitions +// +// +// ICHN Specific SMIs. These are miscellaneous SMI sources that are supported by the +// ICHN specific SMI implementation. These may change over time. TrapNumber is only +// valid if the Type is Trap. +// +typedef enum { + // + // NOTE: NEVER delete items from this list/enumeration! Doing so will prevent other versions + // of the code from compiling. If the ICH version your driver is written for doesn't support + // some of these SMIs, then simply return EFI_UNSUPPORTED when a child/client tries to register + // for them. + // + IchnMch, + IchnPme, + IchnRtcAlarm, + IchnRingIndicate, + IchnAc97Wake, + IchnSerialIrq, + IchnY2KRollover, + IchnTcoTimeout, + IchnOsTco, + IchnNmi, + IchnIntruderDetect, + IchnBiosWp, + IchnMcSmi, + IchnPmeB0, + IchnThrmSts, + IchnSmBus, + IchnIntelUsb2, + IchnMonSmi7, + IchnMonSmi6, + IchnMonSmi5, + IchnMonSmi4, + IchnDevTrap13, + IchnDevTrap12, + IchnDevTrap11, + IchnDevTrap10, + IchnDevTrap9, + IchnDevTrap8, + IchnDevTrap7, + IchnDevTrap6, + IchnDevTrap5, + IchnDevTrap3, + IchnDevTrap2, + IchnDevTrap1, + IchnDevTrap0, + IchnIoTrap3, + IchnIoTrap2, + IchnIoTrap1, + IchnIoTrap0, + // + // INSERT NEW ITEMS JUST BEFORE THIS LINE + // + NUM_ICHN_TYPES // the number of items in this enumeration +} EFI_SMM_ICHN_SMI_TYPE; + +typedef struct { + EFI_SMM_ICHN_SMI_TYPE Type; +} EFI_SMM_ICHN_DISPATCH_CONTEXT; + +// +// Member functions +// +typedef +VOID +(EFIAPI *EFI_SMM_ICHN_DISPATCH) ( + IN EFI_HANDLE DispatchHandle, + IN EFI_SMM_ICHN_DISPATCH_CONTEXT * DispatchContext + ); + +/*++ + + Routine Description: + Dispatch function for a ICH n specific SMI handler. + + Arguments: + DispatchHandle - Handle of this dispatch function. + DispatchContext - Pointer to the dispatch function's context. + The DispatchContext fields are filled in + by the dispatching driver prior to + invoking this dispatch function. + + Returns: + Nothing + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_ICHN_REGISTER) ( + IN EFI_SMM_ICHN_DISPATCH_PROTOCOL * This, + IN EFI_SMM_ICHN_DISPATCH DispatchFunction, + IN EFI_SMM_ICHN_DISPATCH_CONTEXT * DispatchContext, + OUT EFI_HANDLE * DispatchHandle + ); + +/*++ + + Routine Description: + Register a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchFunction - Pointer to dispatch function to be invoked for + this SMI source + DispatchContext - Pointer to the dispatch function's context. + The caller fills this context in before calling + the register function to indicate to the register + function the ICHN SMI source for which the dispatch + function should be invoked. + DispatchHandle - Handle of dispatch function, for when interfacing + with the parent Sx state SMM driver. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + registered and the SMI source has been enabled. + EFI_DEVICE_ERROR - The driver was unable to enable the SMI source. + EFI_OUT_OF_RESOURCES - Not enough memory (system or SMM) to manage this + child. + EFI_INVALID_PARAMETER - DispatchContext is invalid. The ICHN input value + is not within valid range. + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_ICHN_UNREGISTER) ( + IN EFI_SMM_ICHN_DISPATCH_PROTOCOL * This, + IN EFI_HANDLE DispatchHandle + ); + +/*++ + + Routine Description: + Unregister a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchHandle - Handle of dispatch function to deregister. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + unregistered and the SMI source has been disabled + if there are no other registered child dispatch + functions for this SMI source. + EFI_INVALID_PARAMETER - Handle is invalid. + other - TBD + +--*/ + +// +// Interface structure for the SMM Ich n specific SMI Dispatch Protocol +// +typedef struct _EFI_SMM_ICHN_DISPATCH_PROTOCOL { + EFI_SMM_ICHN_REGISTER Register; + EFI_SMM_ICHN_UNREGISTER UnRegister; +} EFI_SMM_ICHN_DISPATCH_PROTOCOL; + +extern EFI_GUID gEfiSmmIchnDispatchProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SmmPeriodicTimerDispatch/SmmPeriodicTimerDispatch.c b/EDK/Foundation/Framework/Protocol/SmmPeriodicTimerDispatch/SmmPeriodicTimerDispatch.c new file mode 100644 index 0000000..17afa7e --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmPeriodicTimerDispatch/SmmPeriodicTimerDispatch.c @@ -0,0 +1,34 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmPeriodicTimerDispatch.c + +Abstract: + + EFI Smm Periodic Timer Smi Child Protocol + +Revision History + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SmmPeriodicTimerDispatch) + +EFI_GUID gEfiSmmPeriodicTimerDispatchProtocolGuid = EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL_GUID; + +EFI_GUID_STRING + ( + &gEfiSmmPeriodicTimerDispatchProtocolGuid, "SMM Periodic Timer SMI Dispatch Protocol", + "EFI 2.0 SMM Periodic Timer SMI Dispatch Protocol" + ); diff --git a/EDK/Foundation/Framework/Protocol/SmmPeriodicTimerDispatch/SmmPeriodicTimerDispatch.h b/EDK/Foundation/Framework/Protocol/SmmPeriodicTimerDispatch/SmmPeriodicTimerDispatch.h new file mode 100644 index 0000000..e7a12a2 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmPeriodicTimerDispatch/SmmPeriodicTimerDispatch.h @@ -0,0 +1,224 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmPeriodicTimerDispatch.h + +Abstract: + + EFI Smm Periodic Timer Smi Child Protocol + +Revision History + +--*/ + +#ifndef _EFI_SMM_PERIODIC_TIMER_DISPATCH_H_ +#define _EFI_SMM_PERIODIC_TIMER_DISPATCH_H_ + +// +// Global ID for the Periodic Timer SMI Protocol +// +#define EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL_GUID \ + { \ + 0x9cca03fc, 0x4c9e, 0x4a19, 0x9b, 0x6, 0xed, 0x7b, 0x47, 0x9b, 0xde, 0x55 \ + } + +EFI_FORWARD_DECLARATION (EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL); + +// +// Related Definitions +// +// +// Period is the minimum period of time in 100 nanosecond units that child gets called. +// The child will be called back after a time greater than the time Period. +// +// SmiTickInterval is the period of time interval between SMIs. Children of this interface +// should use this field when registering for periodic timer intervals when a finer +// granularity periodic SMI is desired. Valid values for this field are those returned +// by GetNextInterval. A value of 0 indicates the parent is allowed to use any SMI +// interval period to satisfy the requested period. +// Example: A chipset supports periodic SMIs on every 64ms or 2 seconds. +// A child wishes schedule a period SMI to fire on a period of 3 seconds, there +// are several ways to approach the problem: +// 1. The child may accept a 4 second periodic rate, in which case it registers with +// Period = 40000 +// SmiTickInterval = 20000 +// The resulting SMI will occur every 2 seconds with the child called back on +// every 2nd SMI. +// NOTE: the same result would occur if the child set SmiTickInterval = 0. +// 2. The child may choose the finer granularity SMI (64ms): +// Period = 30000 +// SmiTickInterval = 640 +// The resulting SMI will occur every 64ms with the child called back on +// every 47th SMI. +// NOTE: the child driver should be aware that this will result in more +// SMIs occuring during system runtime which can negatively impact system +// performance. +// +// ElapsedTime is the actual time in 100 nanosecond units elapsed since last called, a +// value of 0 indicates an unknown amount of time. +// +typedef struct { + UINT64 Period; + UINT64 SmiTickInterval; + UINT64 ElapsedTime; +//*** AMI PORTING BEGIN ***// + BOOLEAN TimerEnabled; +//*** AMI PORTING END ***// +} EFI_SMM_PERIODIC_TIMER_DISPATCH_CONTEXT; + +// +// Member functions +// +typedef +VOID +(EFIAPI *EFI_SMM_PERIODIC_TIMER_DISPATCH) ( + IN EFI_HANDLE DispatchHandle, + IN EFI_SMM_PERIODIC_TIMER_DISPATCH_CONTEXT * DispatchContext + ); + +/*++ + + Routine Description: + Dispatch function for a Periodic Timer SMI handler. + + Arguments: + DispatchHandle - Handle of this dispatch function. + DispatchContext - Pointer to the dispatch function's context. + The DispatchContext fields are filled in + by the dispatching driver prior to + invoking this dispatch function. + + Returns: + Nothing + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_PERIODIC_TIMER_INTERVAL) ( + IN EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL * This, + IN OUT UINT64 **SmiTickInterval + ); + +/*++ + + Routine Description: + Returns the next SMI tick period supported by the chipset. The order + returned is from longest to shortest interval period. + + Arguments: + This - Protocol instance pointer. + SmiTickInterval - Pointer to pointer of next shorter SMI interval + period supported by the child. This parameter + works as a get-first, get-next field. The first + time this function is called, *SmiTickInterval + should be set to NULL to get the longest SMI + interval. The returned *SmiTickInterval should + be passed in on subsequent calls to get + the next shorter interval period until + *SmiTickInterval = NULL. + + Returns: + EFI_SUCCESS + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_PERIODIC_TIMER_REGISTER) ( + IN EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL * This, + IN EFI_SMM_PERIODIC_TIMER_DISPATCH DispatchFunction, + IN EFI_SMM_PERIODIC_TIMER_DISPATCH_CONTEXT * DispatchContext, + OUT EFI_HANDLE * DispatchHandle + ); + +/*++ + + Routine Description: + Register a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchFunction - Pointer to dispatch function to be invoked for + this SMI source + DispatchContext - Pointer to the dispatch function's context. + The caller fills this context in before calling + the register function to indicate to the register + function the period at which the dispatch function + should be invoked. + DispatchHandle - Handle of dispatch function, for when interfacing + with the parent Sx state SMM driver. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + registered and the SMI source has been enabled. + EFI_DEVICE_ERROR - The driver was unable to enable the SMI source. + EFI_OUT_OF_RESOURCES - Not enough memory (system or SMM) to manage this + child. + EFI_INVALID_PARAMETER - DispatchContext is invalid. The period input value + is not within valid range. + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_PERIODIC_TIMER_UNREGISTER) ( + IN EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL * This, + IN EFI_HANDLE DispatchHandle + ); + +/*++ + + Routine Description: + Unregister a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchHandle - Handle of dispatch function to deregister. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + unregistered and the SMI source has been disabled + if there are no other registered child dispatch + functions for this SMI source. + EFI_INVALID_PARAMETER - Handle is invalid. + other - TBD + +--*/ + +//*** AMI PORTING BEGIN ***// +typedef EFI_STATUS (EFIAPI *EFI_SMM_PERIODIC_ENABLE) ( + IN EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL *This, + IN EFI_HANDLE DispatchHandle +); + +typedef EFI_STATUS (EFIAPI *EFI_SMM_PERIODIC_DISABLE) ( + IN EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL *This, + IN EFI_HANDLE DispatchHandle +); +//*** AMI PORTING END ***// + +// +// Interface structure for the SMM Periodic Timer Dispatch Protocol +// +typedef struct _EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL { + EFI_SMM_PERIODIC_TIMER_REGISTER Register; + EFI_SMM_PERIODIC_TIMER_UNREGISTER UnRegister; + EFI_SMM_PERIODIC_TIMER_INTERVAL GetNextShorterInterval; +//*** AMI PORTING BEGIN ***// + EFI_SMM_PERIODIC_ENABLE SmmPeriodicSmiEnable; + EFI_SMM_PERIODIC_DISABLE SmmPeriodicSmiDisable; +//*** AMI PORTING END ***// +} EFI_SMM_PERIODIC_TIMER_DISPATCH_PROTOCOL; + +extern EFI_GUID gEfiSmmPeriodicTimerDispatchProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SmmPowerButtonDispatch/SmmPowerButtonDispatch.c b/EDK/Foundation/Framework/Protocol/SmmPowerButtonDispatch/SmmPowerButtonDispatch.c new file mode 100644 index 0000000..13000e7 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmPowerButtonDispatch/SmmPowerButtonDispatch.c @@ -0,0 +1,34 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmPowerButtonDispatch.c + +Abstract: + + EFI Smm Power Button Smi Child Protocol + +Revision History + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SmmPowerButtonDispatch) + +EFI_GUID gEfiSmmPowerButtonDispatchProtocolGuid = EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL_GUID; + +EFI_GUID_STRING + ( + &gEfiSmmPowerButtonDispatchProtocolGuid, "SMM Power Button SMI Dispatch Protocol", + "EFI 2.0 SMM Power Button SMI Dispatch Protocol" + ); diff --git a/EDK/Foundation/Framework/Protocol/SmmPowerButtonDispatch/SmmPowerButtonDispatch.h b/EDK/Foundation/Framework/Protocol/SmmPowerButtonDispatch/SmmPowerButtonDispatch.h new file mode 100644 index 0000000..b4e3673 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmPowerButtonDispatch/SmmPowerButtonDispatch.h @@ -0,0 +1,153 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmPowerButtonDispatch.h + +Abstract: + + EFI Smm Power Button Smi Child Protocol + +Revision History + +--*/ + +#ifndef _EFI_SMM_POWER_BUTTON_DISPATCH_H_ +#define _EFI_SMM_POWER_BUTTON_DISPATCH_H_ + +// +// Global ID for the Power Button SMI Protocol +// +#define EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL_GUID \ + { \ + 0xb709efa0, 0x47a6, 0x4b41, 0xb9, 0x31, 0x12, 0xec, 0xe7, 0xa8, 0xee, 0x56 \ + } + +EFI_FORWARD_DECLARATION (EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL); + +// +// Related Definitions +// +// +// Power Button. Example, Use for changing LEDs before ACPI OS is on. +// - DXE/BDS Phase +// - OS Install Phase +// +typedef enum { + PowerButtonEntry, + PowerButtonExit +} EFI_POWER_BUTTON_PHASE; + +typedef struct { + EFI_POWER_BUTTON_PHASE Phase; +} EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT; + +// +// Member functions +// +typedef +VOID +(EFIAPI *EFI_SMM_POWER_BUTTON_DISPATCH) ( + IN EFI_HANDLE DispatchHandle, + IN EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT * DispatchContext + ); + +/*++ + + Routine Description: + Dispatch function for a Power Button SMI handler. + + Arguments: + DispatchHandle - Handle of this dispatch function. + DispatchContext - Pointer to the dispatch function's context. + The DispatchContext fields are filled in + by the dispatching driver prior to + invoking this dispatch function. + + Returns: + Nothing + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_POWER_BUTTON_REGISTER) ( + IN EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL * This, + IN EFI_SMM_POWER_BUTTON_DISPATCH DispatchFunction, + IN EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT * DispatchContext, + OUT EFI_HANDLE * DispatchHandle + ); + +/*++ + + Routine Description: + Register a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchFunction - Pointer to dispatch function to be invoked for + this SMI source + DispatchContext - Pointer to the dispatch function's context. + The caller fills this context in before calling + the register function to indicate to the register + function the Power Button SMI phase for which the dispatch + function should be invoked. + DispatchHandle - Handle of dispatch function, for when interfacing + with the parent Sx state SMM driver. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + registered and the SMI source has been enabled. + EFI_DEVICE_ERROR - The driver was unable to enable the SMI source. + EFI_OUT_OF_RESOURCES - Not enough memory (system or SMM) to manage this + child. + EFI_INVALID_PARAMETER - DispatchContext is invalid. The Power Button SMI + phase is not within valid range. + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_POWER_BUTTON_UNREGISTER) ( + IN EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL * This, + IN EFI_HANDLE DispatchHandle + ); + +/*++ + + Routine Description: + Unregister a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchHandle - Handle of dispatch function to deregister. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + unregistered and the SMI source has been disabled + if there are no other registered child dispatch + functions for this SMI source. + EFI_INVALID_PARAMETER - Handle is invalid. + other - TBD + +--*/ + +// +// Interface structure for the SMM Power Button SMI Dispatch Protocol +// +typedef struct _EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL { + EFI_SMM_POWER_BUTTON_REGISTER Register; + EFI_SMM_POWER_BUTTON_UNREGISTER UnRegister; +} EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL; + +extern EFI_GUID gEfiSmmPowerButtonDispatchProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SmmStandbyButtonDispatch/SmmStandbyButtonDispatch.c b/EDK/Foundation/Framework/Protocol/SmmStandbyButtonDispatch/SmmStandbyButtonDispatch.c new file mode 100644 index 0000000..d362f8e --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmStandbyButtonDispatch/SmmStandbyButtonDispatch.c @@ -0,0 +1,34 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmStandbyButtonDispatch.c + +Abstract: + + EFI Smm Standby Button Smi Child Protocol + +Revision History + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SmmStandbyButtonDispatch) + +EFI_GUID gEfiSmmStandbyButtonDispatchProtocolGuid = EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL_GUID; + +EFI_GUID_STRING + ( + &gEfiSmmStandbyButtonDispatchProtocolGuid, "SMM Standby Button SMI Dispatch Protocol", + "EFI 2.0 SMM Standby Button SMI Dispatch Protocol" + ); diff --git a/EDK/Foundation/Framework/Protocol/SmmStandbyButtonDispatch/SmmStandbyButtonDispatch.h b/EDK/Foundation/Framework/Protocol/SmmStandbyButtonDispatch/SmmStandbyButtonDispatch.h new file mode 100644 index 0000000..4ec47c0 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmStandbyButtonDispatch/SmmStandbyButtonDispatch.h @@ -0,0 +1,153 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmStandbyButtonDispatch.h + +Abstract: + + EFI Smm Standby Button Smi Child Protocol + +Revision History + +--*/ + +#ifndef _EFI_SMM_STANDBY_BUTTON_DISPATCH_H_ +#define _EFI_SMM_STANDBY_BUTTON_DISPATCH_H_ + +// +// Global ID for the Standby Button SMI Protocol +// +#define EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL_GUID \ + { \ + 0x78965b98, 0xb0bf, 0x449e, 0x8b, 0x22, 0xd2, 0x91, 0x4e, 0x49, 0x8a, 0x98 \ + } + +EFI_FORWARD_DECLARATION (EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL); + +// +// Related Definitions +// +// +// Standby Button. Example, Use for changing LEDs before ACPI OS is on. +// - DXE/BDS Phase +// - OS Install Phase +// +typedef enum { + Entry, + Exit +} EFI_STANDBY_BUTTON_PHASE; + +typedef struct { + EFI_STANDBY_BUTTON_PHASE Phase; +} EFI_SMM_STANDBY_BUTTON_DISPATCH_CONTEXT; + +// +// Member functions +// +typedef +VOID +(EFIAPI *EFI_SMM_STANDBY_BUTTON_DISPATCH) ( + IN EFI_HANDLE DispatchHandle, + IN EFI_SMM_STANDBY_BUTTON_DISPATCH_CONTEXT * DispatchContext + ); + +/*++ + + Routine Description: + Dispatch function for a Standby Button SMI handler. + + Arguments: + DispatchHandle - Handle of this dispatch function. + DispatchContext - Pointer to the dispatch function's context. + The DispatchContext fields are filled in + by the dispatching driver prior to + invoking this dispatch function. + + Returns: + Nothing + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_STANDBY_BUTTON_REGISTER) ( + IN EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL * This, + IN EFI_SMM_STANDBY_BUTTON_DISPATCH DispatchFunction, + IN EFI_SMM_STANDBY_BUTTON_DISPATCH_CONTEXT * DispatchContext, + OUT EFI_HANDLE * DispatchHandle + ); + +/*++ + + Routine Description: + Register a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchFunction - Pointer to dispatch function to be invoked for + this SMI source + DispatchContext - Pointer to the dispatch function's context. + The caller fills this context in before calling + the register function to indicate to the register + function the Standby Button SMI phase for which the dispatch + function should be invoked. + DispatchHandle - Handle of dispatch function, for when interfacing + with the parent Sx state SMM driver. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + registered and the SMI source has been enabled. + EFI_DEVICE_ERROR - The driver was unable to enable the SMI source. + EFI_OUT_OF_RESOURCES - Not enough memory (system or SMM) to manage this + child. + EFI_INVALID_PARAMETER - DispatchContext is invalid. The Standby Button SMI + phase is not within valid range. + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_STANDBY_BUTTON_UNREGISTER) ( + IN EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL * This, + IN EFI_HANDLE DispatchHandle + ); + +/*++ + + Routine Description: + Unregister a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchHandle - Handle of dispatch function to deregister. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + unregistered and the SMI source has been disabled + if there are no other registered child dispatch + functions for this SMI source. + EFI_INVALID_PARAMETER - Handle is invalid. + other - TBD + +--*/ + +// +// Interface structure for the SMM Standby Button SMI Dispatch Protocol +// +typedef struct _EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL { + EFI_SMM_STANDBY_BUTTON_REGISTER Register; + EFI_SMM_STANDBY_BUTTON_UNREGISTER UnRegister; +} EFI_SMM_STANDBY_BUTTON_DISPATCH_PROTOCOL; + +extern EFI_GUID gEfiSmmStandbyButtonDispatchProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SmmStatusCode/SmmStatusCode.c b/EDK/Foundation/Framework/Protocol/SmmStatusCode/SmmStatusCode.c new file mode 100644 index 0000000..2592da7 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmStatusCode/SmmStatusCode.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmStatusCode.c + +Abstract: + + SMM Status code Protocol as defined in EFI 2.0 (for Status Code Architectural Protocol) + + This code abstracts Status Code reporting. + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SmmStatusCode) + +EFI_GUID gEfiSmmStatusCodeProtocolGuid = EFI_SMM_STATUS_CODE_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiSmmStatusCodeProtocolGuid, "SMM Status Code", "SMM Status Code Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/SmmStatusCode/SmmStatusCode.h b/EDK/Foundation/Framework/Protocol/SmmStatusCode/SmmStatusCode.h new file mode 100644 index 0000000..db1c23f --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmStatusCode/SmmStatusCode.h @@ -0,0 +1,58 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmStatusCode.h + +Abstract: + + SMM Status code Protocol as defined in the DXE CIS (Status Code Architectural Protocol) + + This code abstracts SMM Status Code reporting. + +--*/ + +#ifndef _PROTOCOL_SMM_STATUS_CODE_H__ +#define _PROTOCOL_SMM_STATUS_CODE_H__ + +// +// Global ID for the Smm Status Code Protocol +// +#define EFI_SMM_STATUS_CODE_PROTOCOL_GUID \ + { \ + 0x6afd2b77, 0x98c1, 0x4acd, 0xa6, 0xf9, 0x8a, 0x94, 0x39, 0xde, 0xf, 0xb1 \ + } + +extern EFI_GUID gEfiSmmStatusCodeProtocolGuid; + +// +// Forward reference for pure ANSI compatability +// +EFI_FORWARD_DECLARATION (EFI_SMM_STATUS_CODE_PROTOCOL); + +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_REPORT_STATUS_CODE) ( + IN EFI_SMM_STATUS_CODE_PROTOCOL * This, + IN EFI_STATUS_CODE_TYPE CodeType, + IN EFI_STATUS_CODE_VALUE Value, + IN UINT32 Instance, + IN EFI_GUID * CallerId, + IN EFI_STATUS_CODE_DATA * Data OPTIONAL + ); + +typedef struct _EFI_SMM_STATUS_CODE_PROTOCOL { + EFI_SMM_REPORT_STATUS_CODE ReportStatusCode; +} EFI_SMM_STATUS_CODE_PROTOCOL; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SmmSwDispatch/SmmSwDispatch.c b/EDK/Foundation/Framework/Protocol/SmmSwDispatch/SmmSwDispatch.c new file mode 100644 index 0000000..bee21fa --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmSwDispatch/SmmSwDispatch.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmSwDispatch.c + +Abstract: + + EFI Smm Software Smi Child Protocol + +Revision History + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SmmSwDispatch) + +EFI_GUID gEfiSmmSwDispatchProtocolGuid = EFI_SMM_SW_DISPATCH_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiSmmSwDispatchProtocolGuid, "SMM Sw SMI Dispatch Protocol", "EFI 2.0 SMM Sw SMI Dispatch Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/SmmSwDispatch/SmmSwDispatch.h b/EDK/Foundation/Framework/Protocol/SmmSwDispatch/SmmSwDispatch.h new file mode 100644 index 0000000..63b6c68 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmSwDispatch/SmmSwDispatch.h @@ -0,0 +1,151 @@ +/*++ + +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. + + +Module Name: + + SmmSwDispatch.h + +Abstract: + + EFI Smm Software Smi Child Protocol + +Revision History + +--*/ + +#ifndef _EFI_SMM_SW_DISPATCH_H_ +#define _EFI_SMM_SW_DISPATCH_H_ + +// +// Global ID for the SW SMI Protocol +// +#define EFI_SMM_SW_DISPATCH_PROTOCOL_GUID \ + { \ + 0xe541b773, 0xdd11, 0x420c, 0xb0, 0x26, 0xdf, 0x99, 0x36, 0x53, 0xf8, 0xbf \ + } + +EFI_FORWARD_DECLARATION (EFI_SMM_SW_DISPATCH_PROTOCOL); + +// +// Related Definitions +// +// +// A particular chipset may not support all possible software SMI input values. +// For example, the ICH supports only values 00h to 0FFh. The parent only allows a single +// child registration for each SwSmiInputValue. +// +typedef struct { + UINTN SwSmiInputValue; +} EFI_SMM_SW_DISPATCH_CONTEXT; + +// +// Member functions +// +typedef +VOID +(EFIAPI *EFI_SMM_SW_DISPATCH) ( + IN EFI_HANDLE DispatchHandle, + IN EFI_SMM_SW_DISPATCH_CONTEXT * DispatchContext + ); + +/*++ + + Routine Description: + Dispatch function for a Software SMI handler. + + Arguments: + DispatchHandle - Handle of this dispatch function. + DispatchContext - Pointer to the dispatch function's context. + The SwSmiInputValue field is filled in + by the software dispatch driver prior to + invoking this dispatch function. + The dispatch function will only be called + for input values for which it is registered. + + Returns: + Nothing + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_SW_REGISTER) ( + IN EFI_SMM_SW_DISPATCH_PROTOCOL * This, + IN EFI_SMM_SW_DISPATCH DispatchFunction, + IN EFI_SMM_SW_DISPATCH_CONTEXT * DispatchContext, + OUT EFI_HANDLE * DispatchHandle + ); + +/*++ + + Routine Description: + Register a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchFunction - Pointer to dispatch function to be invoked for + this SMI source + DispatchContext - Pointer to the dispatch function's context. + The caller fills this context in before calling + the register function to indicate to the register + function which Software SMI input value the + dispatch function should be invoked for. + DispatchHandle - Handle of dispatch function, for when interfacing + with the parent Sx state SMM driver. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + registered and the SMI source has been enabled. + EFI_DEVICE_ERROR - The SW driver was unable to enable the SMI source. + EFI_OUT_OF_RESOURCES - Not enough memory (system or SMM) to manage this + child. + EFI_INVALID_PARAMETER - DispatchContext is invalid. The SW SMI input value + is not within valid range. + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_SW_UNREGISTER) ( + IN EFI_SMM_SW_DISPATCH_PROTOCOL * This, + IN EFI_HANDLE DispatchHandle + ); + +/*++ + + Routine Description: + Unregister a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchHandle - Handle of dispatch function to deregister. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + unregistered and the SMI source has been disabled + if there are no other registered child dispatch + functions for this SMI source. + EFI_INVALID_PARAMETER - Handle is invalid. + other - TBD + +--*/ + +// +// Interface structure for the SMM Software SMI Dispatch Protocol +// +typedef struct _EFI_SMM_SW_DISPATCH_PROTOCOL { + EFI_SMM_SW_REGISTER Register; + EFI_SMM_SW_UNREGISTER UnRegister; + UINTN MaximumSwiValue; +} EFI_SMM_SW_DISPATCH_PROTOCOL; + +extern EFI_GUID gEfiSmmSwDispatchProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SmmSxDispatch/SmmSxDispatch.c b/EDK/Foundation/Framework/Protocol/SmmSxDispatch/SmmSxDispatch.c new file mode 100644 index 0000000..cc27979 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmSxDispatch/SmmSxDispatch.c @@ -0,0 +1,30 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmSxDispatch.c + +Abstract: + + EFI Smm Sx Smi Child Protocol + +Revision History + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SmmSxDispatch) + +EFI_GUID gEfiSmmSxDispatchProtocolGuid = EFI_SMM_SX_DISPATCH_PROTOCOL_GUID; + +EFI_GUID_STRING(&gEfiSmmSxDispatchProtocolGuid, "SMM Sx Dispatch Protocol", "EFI 2.0 SMM Sx Dispatch Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/SmmSxDispatch/SmmSxDispatch.h b/EDK/Foundation/Framework/Protocol/SmmSxDispatch/SmmSxDispatch.h new file mode 100644 index 0000000..7e0b196 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmSxDispatch/SmmSxDispatch.h @@ -0,0 +1,170 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmSxDispatch.h + +Abstract: + + EFI Smm Sx Smi Child Protocol + +Revision History + +--*/ + +#ifndef _EFI_SMM_SX_DISPATCH_H_ +#define _EFI_SMM_SX_DISPATCH_H_ + +// +// Global ID for the Sx SMI Protocol +// +#define EFI_SMM_SX_DISPATCH_PROTOCOL_GUID \ + { \ + 0x14fc52be, 0x1dc, 0x426c, 0x91, 0xae, 0xa2, 0x3c, 0x3e, 0x22, 0xa, 0xe8 \ + } + +EFI_FORWARD_DECLARATION (EFI_SMM_SX_DISPATCH_PROTOCOL); + +// +// Related Definitions +// +typedef enum { + SxS0, + SxS1, + SxS2, + SxS3, + SxS4, + SxS5, + EfiMaximumSleepType +} EFI_SLEEP_TYPE; + +typedef enum { + SxEntry, + SxExit, + EfiMaximumPhase +} EFI_SLEEP_PHASE; + +typedef struct { + EFI_SLEEP_TYPE Type; + EFI_SLEEP_PHASE Phase; +} EFI_SMM_SX_DISPATCH_CONTEXT; + +// +// Member functions +// +typedef +VOID +(EFIAPI *EFI_SMM_SX_DISPATCH) ( + IN EFI_HANDLE DispatchHandle, + IN EFI_SMM_SX_DISPATCH_CONTEXT * DispatchContext + ); + +/*++ + + Routine Description: + Dispatch function for a Sx state SMI handler. + + Arguments: + DispatchHandle - Handle of this dispatch function. + DispatchContext - Pointer to the dispatch function's context. + The Type and Phase fields are filled in + by the Sx dispatch driver prior to invoking + this dispatch function. + For this intertace, the Sx driver will call the + dispatch function for all Sx type and phases, + so the Sx state handler(s) must check the Type + and Phase field of the Dispatch context and act + accordingly. + + Returns: + Nothing + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_SX_REGISTER) ( + IN EFI_SMM_SX_DISPATCH_PROTOCOL * This, + IN EFI_SMM_SX_DISPATCH DispatchFunction, + IN EFI_SMM_SX_DISPATCH_CONTEXT * DispatchContext, + OUT EFI_HANDLE * DispatchHandle + ); + +/*++ + + Routine Description: + Register a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchFunction - Pointer to dispatch function to be invoked for + this SMI source + DispatchContext - Pointer to the dispatch function's context. + The caller fills this context in before calling + the register function to indicate to the register + function which Sx state type and phase the caller + wishes to be called back on. For this intertace, + the Sx driver will call the registered handlers for + all Sx type and phases, so the Sx state handler(s) + must check the Type and Phase field of the Dispatch + context and act accordingly. + DispatchHandle - Handle of dispatch function, for when interfacing + with the parent Sx state SMM driver. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + registered and the SMI source has been enabled. + EFI_UNSUPPORTED - The Sx driver or hardware does not support that + Sx Type/Phase. + EFI_DEVICE_ERROR - The Sx driver was unable to enable the SMI source. + EFI_OUT_OF_RESOURCES - Not enough memory (system or SMM) to manage this + child. + EFI_INVALID_PARAMETER - DispatchContext is invalid. Type & Phase are not + within valid range. + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_SX_UNREGISTER) ( + IN EFI_SMM_SX_DISPATCH_PROTOCOL * This, + IN EFI_HANDLE DispatchHandle + ); + +/*++ + + Routine Description: + Unregister a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchHandle - Handle of dispatch function to deregister. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully unregistered and the + SMI source has been disabled if there are no other registered child + dispatch functions for this SMI source. + EFI_INVALID_PARAMETER - Handle is invalid. + other - TBD + +--*/ + +// +// Interface structure for the SMM Child Dispatch Protocol +// +typedef struct _EFI_SMM_SX_DISPATCH_PROTOCOL { + EFI_SMM_SX_REGISTER Register; + EFI_SMM_SX_UNREGISTER UnRegister; +} EFI_SMM_SX_DISPATCH_PROTOCOL; + +extern EFI_GUID gEfiSmmSxDispatchProtocolGuid; + +#endif diff --git a/EDK/Foundation/Framework/Protocol/SmmUsbDispatch/SmmUsbDispatch.c b/EDK/Foundation/Framework/Protocol/SmmUsbDispatch/SmmUsbDispatch.c new file mode 100644 index 0000000..6668c7d --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmUsbDispatch/SmmUsbDispatch.c @@ -0,0 +1,31 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmUsbDispatch.c + +Abstract: + + EFI Smm USB Smi Child Protocol + +Revision History + +--*/ + +#include "Tiano.h" +#include EFI_PROTOCOL_DEFINITION (SmmUsbDispatch) + +EFI_GUID gEfiSmmUsbDispatchProtocolGuid = EFI_SMM_USB_DISPATCH_PROTOCOL_GUID; + +EFI_GUID_STRING + (&gEfiSmmUsbDispatchProtocolGuid, "SMM USB SMI Dispatch Protocol", "EFI 2.0 SMM USB SMI Dispatch Protocol"); diff --git a/EDK/Foundation/Framework/Protocol/SmmUsbDispatch/SmmUsbDispatch.h b/EDK/Foundation/Framework/Protocol/SmmUsbDispatch/SmmUsbDispatch.h new file mode 100644 index 0000000..b2d89e1 --- /dev/null +++ b/EDK/Foundation/Framework/Protocol/SmmUsbDispatch/SmmUsbDispatch.h @@ -0,0 +1,149 @@ +/*++ + +Copyright (c) 1999 - 2002, 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. + + +Module Name: + + SmmUsbDispatch.h + +Abstract: + + EFI Smm USB Smi Child Protocol + +Revision History + +--*/ + +#ifndef _EFI_SMM_USB_DISPATCH_H_ +#define _EFI_SMM_USB_DISPATCH_H_ + +// +// Global ID for the USB Protocol +// +#define EFI_SMM_USB_DISPATCH_PROTOCOL_GUID \ + { \ + 0xa05b6ffd, 0x87af, 0x4e42, 0x95, 0xc9, 0x62, 0x28, 0xb6, 0x3c, 0xf3, 0xf3 \ + } + +EFI_FORWARD_DECLARATION (EFI_SMM_USB_DISPATCH_PROTOCOL); + +// +// Related Definitions +// +typedef enum { + UsbLegacy, + UsbWake +} EFI_USB_SMI_TYPE; + +typedef struct { + EFI_USB_SMI_TYPE Type; + EFI_DEVICE_PATH_PROTOCOL *Device; +} EFI_SMM_USB_DISPATCH_CONTEXT; + +// +// Member functions +// +typedef +VOID +(EFIAPI *EFI_SMM_USB_DISPATCH) ( + IN EFI_HANDLE DispatchHandle, + IN EFI_SMM_USB_DISPATCH_CONTEXT * DispatchContext + ); + +/*++ + + Routine Description: + Dispatch function for a USB SMI handler. + + Arguments: + DispatchHandle - Handle of this dispatch function. + DispatchContext - Pointer to the dispatch function's context. + The DispatchContext fields are filled in + by the dispatching driver prior to + invoking this dispatch function. + + Returns: + Nothing + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_USB_REGISTER) ( + IN EFI_SMM_USB_DISPATCH_PROTOCOL * This, + IN EFI_SMM_USB_DISPATCH DispatchFunction, + IN EFI_SMM_USB_DISPATCH_CONTEXT * DispatchContext, + OUT EFI_HANDLE * DispatchHandle + ); + +/*++ + + Routine Description: + Register a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchFunction - Pointer to dispatch function to be invoked for + this SMI source + DispatchContext - Pointer to the dispatch function's context. + The caller fills this context in before calling + the register function to indicate to the register + function the USB SMI types for which the dispatch + function should be invoked. + DispatchHandle - Handle of dispatch function, for when interfacing + with the parent Sx state SMM driver. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + registered and the SMI source has been enabled. + EFI_DEVICE_ERROR - The driver was unable to enable the SMI source. + EFI_OUT_OF_RESOURCES - Not enough memory (system or SMM) to manage this + child. + EFI_INVALID_PARAMETER - DispatchContext is invalid. The USB SMI type + is not within valid range. + +--*/ +typedef +EFI_STATUS +(EFIAPI *EFI_SMM_USB_UNREGISTER) ( + IN EFI_SMM_USB_DISPATCH_PROTOCOL * This, + IN EFI_HANDLE DispatchHandle + ); + +/*++ + + Routine Description: + Unregister a child SMI source dispatch function with a parent SMM driver + + Arguments: + This - Protocol instance pointer. + DispatchHandle - Handle of dispatch function to deregister. + + Returns: + EFI_SUCCESS - The dispatch function has been successfully + unregistered and the SMI source has been disabled + if there are no other registered child dispatch + functions for this SMI source. + EFI_INVALID_PARAMETER - Handle is invalid. + other - TBD + +--*/ + +// +// Interface structure for the SMM USB SMI Dispatch Protocol +// +typedef struct _EFI_SMM_USB_DISPATCH_PROTOCOL { + EFI_SMM_USB_REGISTER Register; + EFI_SMM_USB_UNREGISTER UnRegister; +} EFI_SMM_USB_DISPATCH_PROTOCOL; + +extern EFI_GUID gEfiSmmUsbDispatchProtocolGuid; + +#endif |