diff --git a/src/vendorcode/intel/Kconfig b/src/vendorcode/intel/Kconfig index b57a296e7b..b821286737 100644 --- a/src/vendorcode/intel/Kconfig +++ b/src/vendorcode/intel/Kconfig @@ -7,10 +7,6 @@ config UEFI_2_4_BINDING def_bool n select UDK_BASE -config UDK_2015_BINDING - def_bool n - select UDK_BASE - config UDK_2017_BINDING def_bool n select UDK_BASE @@ -28,10 +24,6 @@ config UDK_2013_VERSION int default 2013 -config UDK_2015_VERSION - int - default 2015 - config UDK_2017_VERSION int default 2017 @@ -49,7 +41,6 @@ config UDK_VERSION default UDK_202111_VERSION if UDK_202111_BINDING default UDK_202005_VERSION if UDK_202005_BINDING default UDK_2017_VERSION if UDK_2017_BINDING - default UDK_2015_VERSION if UDK_2015_BINDING default UDK_2013_VERSION help UEFI Development Kit version for Platform diff --git a/src/vendorcode/intel/Makefile.inc b/src/vendorcode/intel/Makefile.inc index e307400a56..a1705308d7 100644 --- a/src/vendorcode/intel/Makefile.inc +++ b/src/vendorcode/intel/Makefile.inc @@ -9,11 +9,6 @@ ifeq ($(CONFIG_UEFI_2_4_BINDING),y) CPPFLAGS_x86_32 += -I$(src)/vendorcode/intel/edk2/uefi_2.4/MdePkg/Include/Ia32 CPPFLAGS_x86_64 += -I$(src)/vendorcode/intel/edk2/uefi_2.4/MdePkg/Include/X64 CPPFLAGS_common += -I$(src)/vendorcode/intel/edk2/uefi_2.4/MdePkg/Include -else ifeq ($(CONFIG_UDK_2015_BINDING),y) -CPPFLAGS_x86_32 += -I$(src)/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Ia32 -CPPFLAGS_x86_64 += -I$(src)/vendorcode/intel/edk2/UDK2015/MdePkg/Include/X64 -CPPFLAGS_common += -I$(src)/vendorcode/intel/edk2/UDK2015/MdePkg/Include -CPPFLAGS_common += -I$(src)/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include else ifeq ($(CONFIG_UDK_2017_BINDING),y) CPPFLAGS_x86_32 += -I$(src)/vendorcode/intel/edk2/UDK2017/MdePkg/Include/Ia32 CPPFLAGS_x86_64 += -I$(src)/vendorcode/intel/edk2/UDK2017/MdePkg/Include/X64 diff --git a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspDataTable.h b/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspDataTable.h deleted file mode 100644 index 09fc8471db..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspDataTable.h +++ /dev/null @@ -1,32 +0,0 @@ -/** @file - The header file of FSP data table - - Copyright (c) 2016, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php. - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef _FSP_DATA_TABLE_H_ -#define _FSP_DATA_TABLE_H_ - -#pragma pack(1) - -#define FSP_DATA_SIGNATURE SIGNATURE_32 ('F', 'S', 'P', 'D') - -typedef struct { - UINT32 Signature; - UINT32 Length; - UINT32 FsptBase; - UINT32 FspmBase; - UINT32 FspsBase; -} FSP_DATA_TABLE; - -#pragma pack() - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspEas.h b/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspEas.h deleted file mode 100644 index 21b84a3069..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspEas.h +++ /dev/null @@ -1,24 +0,0 @@ -/** @file - Intel FSP definition from Intel Firmware Support Package External - Architecture Specification v2.0. - - Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php. - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef _FSP_EAS_H_ -#define _FSP_EAS_H_ - -#include -#include -#include -#include - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspEas/FspApi.h b/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspEas/FspApi.h deleted file mode 100644 index df2b7dcd73..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspEas/FspApi.h +++ /dev/null @@ -1,296 +0,0 @@ -/** @file - Intel FSP API definition from Intel Firmware Support Package External - Architecture Specification v2.0. - - Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php. - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef _FSP_API_H_ -#define _FSP_API_H_ - -/// -/// FSP Reset Status code -/// These are defined in FSP EAS v2.0 section 11.2.2 - OEM Status Code -/// @{ -#define FSP_STATUS_RESET_REQUIRED_COLD 0x40000001 -#define FSP_STATUS_RESET_REQUIRED_WARM 0x40000002 -#define FSP_STATUS_RESET_REQUIRED_3 0x40000003 -#define FSP_STATUS_RESET_REQUIRED_4 0x40000004 -#define FSP_STATUS_RESET_REQUIRED_5 0x40000005 -#define FSP_STATUS_RESET_REQUIRED_6 0x40000006 -#define FSP_STATUS_RESET_REQUIRED_7 0x40000007 -#define FSP_STATUS_RESET_REQUIRED_8 0x40000008 -/// @} - -#pragma pack(1) -/// -/// FSP_UPD_HEADER Configuration. -/// -typedef struct { - /// - /// UPD Region Signature. This signature will be - /// "XXXXXX_T" for FSP-T - /// "XXXXXX_M" for FSP-M - /// "XXXXXX_S" for FSP-S - /// Where XXXXXX is an unique signature - /// - UINT64 Signature; - /// - /// Revision of the Data structure. For FSP v2.0 value is 1. - /// - UINT8 Revision; - UINT8 Reserved[23]; -} FSP_UPD_HEADER; - -#if CONFIG(PLATFORM_USES_FSP2_X86_32) -/// -/// FSPM_ARCH_UPD Configuration. -/// -typedef struct { - /// - /// Revision of the structure. For FSP v2.0 value is 1. - /// - UINT8 Revision; - UINT8 Reserved[3]; - /// - /// Pointer to the non-volatile storage (NVS) data buffer. - /// If it is NULL it indicates the NVS data is not available. - /// - /// Note: This ought to be VOID*, but that won't allow calling this binary on x86_64. - /// - UINT32 NvsBufferPtr; - /// - /// Pointer to the temporary stack base address to be - /// consumed inside FspMemoryInit() API. - /// - /// Note: This ought to be VOID*, but that won't allow calling this binary on x86_64. - /// - UINT32 StackBase; - /// - /// Temporary stack size to be consumed inside - /// FspMemoryInit() API. - /// - UINT32 StackSize; - /// - /// Size of memory to be reserved by FSP below "top - /// of low usable memory" for bootloader usage. - /// - UINT32 BootLoaderTolumSize; - /// - /// Current boot mode. - /// - UINT32 BootMode; - UINT8 Reserved1[8]; -} FSPM_ARCH_UPD; -#else -#error You need to implement this struct for x86_64 FSP -#endif - -/// -/// FSPT_UPD_COMMON Configuration. -/// -typedef struct { - /// - /// FSP_UPD_HEADER Configuration. - /// - FSP_UPD_HEADER FspUpdHeader; -} FSPT_UPD_COMMON; - -/// -/// FSPM_UPD_COMMON Configuration. -/// -typedef struct { - /// - /// FSP_UPD_HEADER Configuration. - /// - FSP_UPD_HEADER FspUpdHeader; - /// - /// FSPM_ARCH_UPD Configuration. - /// - FSPM_ARCH_UPD FspmArchUpd; -} FSPM_UPD_COMMON; - -/// -/// FSPS_UPD_COMMON Configuration. -/// -typedef struct { - /// - /// FSP_UPD_HEADER Configuration. - /// - FSP_UPD_HEADER FspUpdHeader; -} FSPS_UPD_COMMON; - -/// -/// Enumeration of FSP_INIT_PHASE for NOTIFY_PHASE. -/// -typedef enum { - /// - /// This stage is notified when the bootloader completes the - /// PCI enumeration and the resource allocation for the - /// PCI devices is complete. - /// - EnumInitPhaseAfterPciEnumeration = 0x20, - /// - /// This stage is notified just before the bootloader hand-off - /// to the OS loader. - /// - EnumInitPhaseReadyToBoot = 0x40, - /// - /// This stage is notified just before the firmware/Preboot - /// environment transfers management of all system resources - /// to the OS or next level execution environment. - /// - EnumInitPhaseEndOfFirmware = 0xF0 -} FSP_INIT_PHASE; - -/// -/// Definition of NOTIFY_PHASE_PARAMS. -/// -typedef struct { - /// - /// Notification phase used for NotifyPhase API - /// - FSP_INIT_PHASE Phase; -} NOTIFY_PHASE_PARAMS; - -#pragma pack() - -/** - This FSP API is called soon after coming out of reset and before memory and stack is - available. This FSP API will load the microcode update, enable code caching for the - region specified by the boot loader and also setup a temporary stack to be used until - main memory is initialized. - - A hardcoded stack can be set up with the following values, and the "esp" register - initialized to point to this hardcoded stack. - 1. The return address where the FSP will return control after setting up a temporary - stack. - 2. A pointer to the input parameter structure - - However, since the stack is in ROM and not writeable, this FSP API cannot be called - using the "call" instruction, but needs to be jumped to. - - @param[in] FsptUpdDataPtr Pointer to the FSPT_UPD data structure. - - @retval EFI_SUCCESS Temporary RAM was initialized successfully. - @retval EFI_INVALID_PARAMETER Input parameters are invalid. - @retval EFI_UNSUPPORTED The FSP calling conditions were not met. - @retval EFI_DEVICE_ERROR Temp RAM initialization failed. - - If this function is successful, the FSP initializes the ECX and EDX registers to point to - a temporary but writeable memory range available to the boot loader and returns with - FSP_SUCCESS in register EAX. Register ECX points to the start of this temporary - memory range and EDX points to the end of the range. Boot loader is free to use the - whole range described. Typically the boot loader can reload the ESP register to point - to the end of this returned range so that it can be used as a standard stack. -**/ -typedef -EFI_STATUS -(EFIAPI *FSP_TEMP_RAM_INIT) ( - IN VOID *FsptUpdDataPtr - ); - -/** - This FSP API is used to notify the FSP about the different phases in the boot process. - This allows the FSP to take appropriate actions as needed during different initialization - phases. The phases will be platform dependent and will be documented with the FSP - release. The current FSP supports two notify phases: - Post PCI enumeration - Ready To Boot - - @param[in] NotifyPhaseParamPtr Address pointer to the NOTIFY_PHASE_PRAMS - - @retval EFI_SUCCESS The notification was handled successfully. - @retval EFI_UNSUPPORTED The notification was not called in the proper order. - @retval EFI_INVALID_PARAMETER The notification code is invalid. -**/ -typedef -EFI_STATUS -(EFIAPI *FSP_NOTIFY_PHASE) ( - IN NOTIFY_PHASE_PARAMS *NotifyPhaseParamPtr - ); - -/** - This FSP API is called after TempRamInit and initializes the memory. - This FSP API accepts a pointer to a data structure that will be platform dependent - and defined for each FSP binary. This will be documented in Integration guide with - each FSP release. - After FspMemInit completes its execution, it passes the pointer to the HobList and - returns to the boot loader from where it was called. BootLoader is responsible to - migrate it's stack and data to Memory. - FspMemoryInit, TempRamExit and FspSiliconInit APIs provide an alternate method to - complete the silicon initialization and provides bootloader an opportunity to get - control after system memory is available and before the temporary RAM is torn down. - - @param[in] FspmUpdDataPtr Pointer to the FSPM_UPD data sructure. - @param[out] HobListPtr Pointer to receive the address of the HOB list. - - @retval EFI_SUCCESS FSP execution environment was initialized successfully. - @retval EFI_INVALID_PARAMETER Input parameters are invalid. - @retval EFI_UNSUPPORTED The FSP calling conditions were not met. - @retval EFI_DEVICE_ERROR FSP initialization failed. - @retval EFI_OUT_OF_RESOURCES Stack range requested by FSP is not met. - @retval FSP_STATUS_RESET_REQUIREDx A reset is reuired. These status codes will not be returned during S3. -**/ -typedef -EFI_STATUS -(EFIAPI *FSP_MEMORY_INIT) ( - IN VOID *FspmUpdDataPtr, - OUT VOID **HobListPtr - ); - - -/** - This FSP API is called after FspMemoryInit API. This FSP API tears down the temporary - memory setup by TempRamInit API. This FSP API accepts a pointer to a data structure - that will be platform dependent and defined for each FSP binary. This will be - documented in Integration Guide. - FspMemoryInit, TempRamExit and FspSiliconInit APIs provide an alternate method to - complete the silicon initialization and provides bootloader an opportunity to get - control after system memory is available and before the temporary RAM is torn down. - - @param[in] TempRamExitParamPtr Pointer to the Temp Ram Exit parameters structure. - This structure is normally defined in the Integration Guide. - And if it is not defined in the Integration Guide, pass NULL. - - @retval EFI_SUCCESS FSP execution environment was initialized successfully. - @retval EFI_INVALID_PARAMETER Input parameters are invalid. - @retval EFI_UNSUPPORTED The FSP calling conditions were not met. - @retval EFI_DEVICE_ERROR FSP initialization failed. -**/ -typedef -EFI_STATUS -(EFIAPI *FSP_TEMP_RAM_EXIT) ( - IN VOID *TempRamExitParamPtr - ); - - -/** - This FSP API is called after TempRamExit API. - FspMemoryInit, TempRamExit and FspSiliconInit APIs provide an alternate method to complete the - silicon initialization. - - @param[in] FspsUpdDataPtr Pointer to the FSPS_UPD data structure. - If NULL, FSP will use the default parameters. - - @retval EFI_SUCCESS FSP execution environment was initialized successfully. - @retval EFI_INVALID_PARAMETER Input parameters are invalid. - @retval EFI_UNSUPPORTED The FSP calling conditions were not met. - @retval EFI_DEVICE_ERROR FSP initialization failed. - @retval FSP_STATUS_RESET_REQUIREDx A reset is reuired. These status codes will not be returned during S3. -**/ -typedef -EFI_STATUS -(EFIAPI *FSP_SILICON_INIT) ( - IN VOID *FspsUpdDataPtr - ); - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspGlobalData.h b/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspGlobalData.h deleted file mode 100644 index 687d4a86db..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspGlobalData.h +++ /dev/null @@ -1,68 +0,0 @@ -/** @file - - Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php. - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef _FSP_GLOBAL_DATA_H_ -#define _FSP_GLOBAL_DATA_H_ - -#include - -#pragma pack(1) - -typedef enum { - TempRamInitApiIndex, - FspInitApiIndex, - NotifyPhaseApiIndex, - FspMemoryInitApiIndex, - TempRamExitApiIndex, - FspSiliconInitApiIndex, - FspApiIndexMax -} FSP_API_INDEX; - -typedef struct { - VOID *DataPtr; - UINT32 MicrocodeRegionBase; - UINT32 MicrocodeRegionSize; - UINT32 CodeRegionBase; - UINT32 CodeRegionSize; - UINT32 CarBase; - UINT32 CarSize; -} FSP_PLAT_DATA; - -#define FSP_GLOBAL_DATA_SIGNATURE SIGNATURE_32 ('F', 'S', 'P', 'D') -#define FSP_PERFORMANCE_DATA_SIGNATURE SIGNATURE_32 ('P', 'E', 'R', 'F') - -typedef struct { - UINT32 Signature; - UINT8 Version; - UINT8 Reserved1[3]; - UINT32 CoreStack; - UINT32 StatusCode; - UINT32 Reserved2[8]; - FSP_PLAT_DATA PlatformData; - FSP_INFO_HEADER *FspInfoHeader; - VOID *UpdDataPtr; - VOID *TempRamInitUpdPtr; - VOID *MemoryInitUpdPtr; - VOID *SiliconInitUpdPtr; - UINT8 ApiIdx; - UINT8 Reserved3[31]; - UINT32 PerfSig; - UINT16 PerfLen; - UINT16 Reserved4; - UINT32 PerfIdx; - UINT64 PerfData[32]; -} FSP_GLOBAL_DATA; - -#pragma pack() - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspMeasurePointId.h b/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspMeasurePointId.h deleted file mode 100644 index d6de4fbb18..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspMeasurePointId.h +++ /dev/null @@ -1,62 +0,0 @@ -/** @file - - Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php. - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef _FSP_MEASURE_POINT_ID_H_ -#define _FSP_MEASURE_POINT_ID_H_ - -// -// 0xD0 - 0xEF are reserved for FSP common measure point -// -#define FSP_PERF_ID_MRC_INIT_ENTRY 0xD0 -#define FSP_PERF_ID_MRC_INIT_EXIT (FSP_PERF_ID_MRC_INIT_ENTRY + 1) - -#define FSP_PERF_ID_SYSTEM_AGENT_INIT_ENTRY 0xD8 -#define FSP_PERF_ID_SYSTEM_AGENT_INIT_EXIT (FSP_PERF_ID_SYSTEM_AGENT_INIT_ENTRY + 1) - -#define FSP_PERF_ID_PCH_INIT_ENTRY 0xDA -#define FSP_PERF_ID_PCH_INIT_EXIT (FSP_PERF_ID_PCH_INIT_ENTRY + 1) - -#define FSP_PERF_ID_CPU_INIT_ENTRY 0xE0 -#define FSP_PERF_ID_CPU_INIT_EXIT (FSP_PERF_ID_CPU_INIT_ENTRY + 1) - -#define FSP_PERF_ID_GFX_INIT_ENTRY 0xE8 -#define FSP_PERF_ID_GFX_INIT_EXIT (FSP_PERF_ID_GFX_INIT_ENTRY + 1) - -#define FSP_PERF_ID_ME_INIT_ENTRY 0xEA -#define FSP_PERF_ID_ME_INIT_EXIT (FSP_PERF_ID_ME_INIT_ENTRY + 1) - -// -// 0xF0 - 0xFF are reserved for FSP API -// -#define FSP_PERF_ID_API_TEMP_RAM_INIT_ENTRY 0xF0 -#define FSP_PERF_ID_API_TEMP_RAM_INIT_EXIT (FSP_PERF_ID_API_TEMP_RAM_INIT_ENTRY + 1) - -#define FSP_PERF_ID_API_FSP_MEMORY_INIT_ENTRY 0xF2 -#define FSP_PERF_ID_API_FSP_MEMORY_INIT_EXIT (FSP_PERF_ID_API_FSP_MEMORY_INIT_ENTRY + 1) - -#define FSP_PERF_ID_API_TEMP_RAM_EXIT_ENTRY 0xF4 -#define FSP_PERF_ID_API_TEMP_RAM_EXIT_EXIT (FSP_PERF_ID_API_TEMP_RAM_EXIT_ENTRY + 1) - -#define FSP_PERF_ID_API_FSP_SILICON_INIT_ENTRY 0xF6 -#define FSP_PERF_ID_API_FSP_SILICON_INIT_EXIT (FSP_PERF_ID_API_FSP_SILICON_INIT_ENTRY + 1) - -#define FSP_PERF_ID_API_NOTIFY_POST_PCI_ENTRY 0xF8 -#define FSP_PERF_ID_API_NOTIFY_POST_PCI_EXIT (FSP_PERF_ID_API_NOTIFY_POST_PCI_ENTRY + 1) - -#define FSP_PERF_ID_API_NOTIFY_READY_TO_BOOT_ENTRY 0xFA -#define FSP_PERF_ID_API_NOTIFY_READY_TO_BOOT_EXIT (FSP_PERF_ID_API_NOTIFY_READY_TO_BOOT_ENTRY + 1) - -#define FSP_PERF_ID_API_NOTIFY_END_OF_FIRMWARE_ENTRY 0xFC -#define FSP_PERF_ID_API_NOTIFY_END_OF_FIRMWARE_EXIT (FSP_PERF_ID_API_NOTIFY_END_OF_FIRMWARE_ENTRY + 1) - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspStatusCode.h b/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspStatusCode.h deleted file mode 100644 index 1baaf71188..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/FspStatusCode.h +++ /dev/null @@ -1,46 +0,0 @@ -/** @file - Intel FSP status code definition - - Copyright (c) 2016, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php. - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef _FSP_STATUS_CODE_H_ -#define _FSP_STATUS_CODE_H_ - -// -// FSP API - 4 BITS -// -#define FSP_STATUS_CODE_TEMP_RAM_INIT 0xF000 -#define FSP_STATUS_CODE_MEMORY_INIT 0xD000 -#define FSP_STATUS_CODE_TEMP_RAM_EXIT 0xB000 -#define FSP_STATUS_CODE_SILICON_INIT 0x9000 -#define FSP_STATUS_CODE_POST_PCIE_ENUM_NOTIFICATION 0x6000 -#define FSP_STATUS_CODE_READY_TO_BOOT_NOTIFICATION 0x4000 -#define FSP_STATUS_CODE_END_OF_FIRMWARE_NOTIFICATION 0x2000 - -// -// MODULE - 4 BITS -// -#define FSP_STATUS_CODE_GFX_PEIM 0x0700 -#define FSP_STATUS_CODE_COMMON_CODE 0x0800 -#define FSP_STATUS_CODE_SILICON_COMMON_CODE 0x0900 -#define FSP_STATUS_CODE_SYSTEM_AGENT 0x0A00 -#define FSP_STATUS_CODE_PCH 0x0B00 -#define FSP_STATUS_CODE_CPU 0x0C00 -#define FSP_STATUS_CODE_MRC 0x0D00 -#define FSP_STATUS_CODE_ME_BIOS 0x0E00 -// -// Individual Codes - 1 BYTE -// -#define FSP_STATUS_CODE_API_ENTRY 0x0000 -#define FSP_STATUS_CODE_API_EXIT 0x007F - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/Guid/FspHeaderFile.h b/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/Guid/FspHeaderFile.h deleted file mode 100644 index f43471dc88..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/Guid/FspHeaderFile.h +++ /dev/null @@ -1,204 +0,0 @@ -/** @file - Intel FSP Header File definition from Intel Firmware Support Package External - Architecture Specification v2.0. - - Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php. - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __FSP_HEADER_FILE_H__ -#define __FSP_HEADER_FILE_H__ - -#define FSP_HEADER_REVISION_3 3 - -#define FSPE_HEADER_REVISION_1 1 -#define FSPP_HEADER_REVISION_1 1 - -/// -/// Fixed FSP header offset in the FSP image -/// -#define FSP_INFO_HEADER_OFF 0x94 - -#define OFFSET_IN_FSP_INFO_HEADER(x) (UINT32)&((FSP_INFO_HEADER *)(UINTN)0)->x - -#define FSP_INFO_HEADER_SIGNATURE SIGNATURE_32 ('F', 'S', 'P', 'H') - -#pragma pack(1) - -/// -/// FSP Information Header as described in FSP v2.0 Spec section 5.1.1. -/// -typedef struct { - /// - /// Byte 0x00: Signature ('FSPH') for the FSP Information Header. - /// - UINT32 Signature; - /// - /// Byte 0x04: Length of the FSP Information Header. - /// - UINT32 HeaderLength; - /// - /// Byte 0x08: Reserved. - /// - UINT8 Reserved1[2]; - /// - /// Byte 0x0A: Indicates compliance with a revision of this specification in the BCD format. - /// - UINT8 SpecVersion; - /// - /// Byte 0x0B: Revision of the FSP Information Header. - /// - UINT8 HeaderRevision; - /// - /// Byte 0x0C: Revision of the FSP binary. - /// - UINT32 ImageRevision; - /// - /// Byte 0x10: Signature string that will help match the FSP Binary to a supported HW configuration. - /// - CHAR8 ImageId[8]; - /// - /// Byte 0x18: Size of the entire FSP binary. - /// - UINT32 ImageSize; - /// - /// Byte 0x1C: FSP binary preferred base address. - /// - UINT32 ImageBase; - /// - /// Byte 0x20: Attribute for the FSP binary. - /// - UINT16 ImageAttribute; - /// - /// Byte 0x22: Attributes of the FSP Component. - /// - UINT16 ComponentAttribute; - /// - /// Byte 0x24: Offset of the FSP configuration region. - /// - UINT32 CfgRegionOffset; - /// - /// Byte 0x28: Size of the FSP configuration region. - /// - UINT32 CfgRegionSize; - /// - /// Byte 0x2C: Reserved2. - /// - UINT32 Reserved2; - /// - /// Byte 0x30: The offset for the API to setup a temporary stack till the memory is initialized. - /// - UINT32 TempRamInitEntryOffset; - /// - /// Byte 0x34: Reserved3. - /// - UINT32 Reserved3; - /// - /// Byte 0x38: The offset for the API to inform the FSP about the different stages in the boot process. - /// - UINT32 NotifyPhaseEntryOffset; - /// - /// Byte 0x3C: The offset for the API to initialize the memory. - /// - UINT32 FspMemoryInitEntryOffset; - /// - /// Byte 0x40: The offset for the API to tear down temporary RAM. - /// - UINT32 TempRamExitEntryOffset; - /// - /// Byte 0x44: The offset for the API to initialize the CPU and chipset. - /// - UINT32 FspSiliconInitEntryOffset; -} FSP_INFO_HEADER; - -/// -/// Signature of the FSP Extended Header -/// -#define FSP_INFO_EXTENDED_HEADER_SIGNATURE SIGNATURE_32 ('F', 'S', 'P', 'E') - -/// -/// FSP Information Extended Header as described in FSP v2.0 Spec section 5.1.2. -/// -typedef struct { - /// - /// Byte 0x00: Signature ('FSPE') for the FSP Extended Information Header. - /// - UINT32 Signature; - /// - /// Byte 0x04: Length of the table in bytes, including all additional FSP producer defined data. - /// - UINT32 Length; - /// - /// Byte 0x08: FSP producer defined revision of the table. - /// - UINT8 Revision; - /// - /// Byte 0x09: Reserved for future use. - /// - UINT8 Reserved; - /// - /// Byte 0x0A: FSP producer identification string - /// - CHAR8 FspProducerId[6]; - /// - /// Byte 0x10: FSP producer implementation revision number. Larger numbers are assumed to be newer revisions. - /// - UINT32 FspProducerRevision; - /// - /// Byte 0x14: Size of the FSP producer defined data (n) in bytes. - /// - UINT32 FspProducerDataSize; - /// - /// Byte 0x18: FSP producer defined data of size (n) defined by FspProducerDataSize. - /// -} FSP_INFO_EXTENDED_HEADER; - -// -// A generic table search algorithm for additional tables can be implemented with a -// signature search algorithm until a terminator signature 'FSPP' is found. -// -#define FSP_FSPP_SIGNATURE SIGNATURE_32 ('F', 'S', 'P', 'P') -#define FSP_PATCH_TABLE_SIGNATURE FSP_FSPP_SIGNATURE - -/// -/// FSP Patch Table as described in FSP v2.0 Spec section 5.1.5. -/// -typedef struct { - /// - /// Byte 0x00: FSP Patch Table Signature "FSPP". - /// - UINT32 Signature; - /// - /// Byte 0x04: Size including the PatchData. - /// - UINT16 HeaderLength; - /// - /// Byte 0x06: Revision is set to 0x01. - /// - UINT8 HeaderRevision; - /// - /// Byte 0x07: Reserved for future use. - /// - UINT8 Reserved; - /// - /// Byte 0x08: Number of entries to Patch. - /// - UINT32 PatchEntryNum; - /// - /// Byte 0x0C: Patch Data. - /// -//UINT32 PatchData[]; -} FSP_PATCH_TABLE; - -#pragma pack() - -extern EFI_GUID gFspHeaderFileGuid; - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/Guid/GuidHobFspEas.h b/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/Guid/GuidHobFspEas.h deleted file mode 100644 index 0713c6e019..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/IntelFsp2Pkg/Include/Guid/GuidHobFspEas.h +++ /dev/null @@ -1,23 +0,0 @@ -/** @file - Intel FSP Hob Guid definition from Intel Firmware Support Package External - Architecture Specification v2.0. - - Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php. - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __GUID_HOB_FSP_EAS_GUID__ -#define __GUID_HOB_FSP_EAS_GUID__ - -extern EFI_GUID gFspBootLoaderTolumHobGuid; -extern EFI_GUID gFspReservedMemoryResourceHobGuid; -extern EFI_GUID gFspNonVolatileStorageHobGuid; - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Base.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Base.h deleted file mode 100644 index d0dd4c9e46..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Base.h +++ /dev/null @@ -1,1076 +0,0 @@ -/** @file - Root include file for Mde Package Base type modules - - This is the include file for any module of type base. Base modules only use - types defined via this include file and can be ported easily to any - environment. There are a set of base libraries in the Mde Package that can - be used to implement base modules. - -Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
-Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
-This file and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - - -#ifndef __BASE_H__ -#define __BASE_H__ - -// -// Include processor specific binding -// -#include - -#if defined(_MSC_EXTENSIONS) -// -// Disable warning when last field of data structure is a zero sized array. -// -#pragma warning ( disable : 4200 ) -#endif - -/** - Verifies the storage size of a given data type. - - This macro generates a divide by zero error or a zero size array declaration in - the preprocessor if the size is incorrect. These are declared as "extern" so - the space for these arrays will not be in the modules. - - @param TYPE The date type to determine the size of. - @param Size The expected size for the TYPE. - -**/ -#define VERIFY_SIZE_OF(TYPE, Size) extern UINT8 _VerifySizeof##TYPE[(sizeof(TYPE) == (Size)) / (sizeof(TYPE) == (Size))] - -// -// Verify that ProcessorBind.h produced UEFI Data Types that are compliant with -// Section 2.3.1 of the UEFI 2.3 Specification. -// -VERIFY_SIZE_OF (BOOLEAN, 1); -VERIFY_SIZE_OF (INT8, 1); -VERIFY_SIZE_OF (UINT8, 1); -VERIFY_SIZE_OF (INT16, 2); -VERIFY_SIZE_OF (UINT16, 2); -VERIFY_SIZE_OF (INT32, 4); -VERIFY_SIZE_OF (UINT32, 4); -VERIFY_SIZE_OF (INT64, 8); -VERIFY_SIZE_OF (UINT64, 8); -VERIFY_SIZE_OF (CHAR8, 1); -VERIFY_SIZE_OF (CHAR16, 2); - -// -// The Microsoft* C compiler can removed references to unreferenced data items -// if the /OPT:REF linker option is used. We defined a macro as this is a -// a non standard extension -// -#if defined(_MSC_EXTENSIONS) && !defined (MDE_CPU_EBC) - /// - /// Remove global variable from the linked image if there are no references to - /// it after all compiler and linker optimizations have been performed. - /// - /// - #define GLOBAL_REMOVE_IF_UNREFERENCED __declspec(selectany) -#else - /// - /// Remove the global variable from the linked image if there are no references - /// to it after all compiler and linker optimizations have been performed. - /// - /// - #define GLOBAL_REMOVE_IF_UNREFERENCED -#endif - -// -// For symbol name in assembly code, an extra "_" is sometimes necessary -// - -/// -/// Private worker functions for ASM_PFX() -/// -#define _CONCATENATE(a, b) __CONCATENATE(a, b) -#define __CONCATENATE(a, b) a ## b - -/// -/// The __USER_LABEL_PREFIX__ macro predefined by GNUC represents the prefix -/// on symbols in assembly language. -/// -#define ASM_PFX(name) _CONCATENATE (__USER_LABEL_PREFIX__, name) - -#ifdef __APPLE__ - // - // Apple extension that is used by the linker to optimize code size - // with assembly functions. Put at the end of your .S files - // - #define ASM_FUNCTION_REMOVE_IF_UNREFERENCED .subsections_via_symbols -#else - #define ASM_FUNCTION_REMOVE_IF_UNREFERENCED -#endif - -#ifdef __CC_ARM - // - // Older RVCT ARM compilers don't fully support #pragma pack and require __packed - // as a prefix for the structure. - // - #define PACKED __packed -#else - #define PACKED -#endif - -/// -/// 128 bit buffer containing a unique identifier value. -/// Unless otherwise specified, aligned on a 64 bit boundary. -/// -typedef struct { - UINT32 Data1; - UINT16 Data2; - UINT16 Data3; - UINT8 Data4[8]; -} GUID; - -// -// 8-bytes unsigned value that represents a physical system address. -// -typedef UINT64 PHYSICAL_ADDRESS; - -/// -/// LIST_ENTRY structure definition. -/// -typedef struct _LIST_ENTRY LIST_ENTRY; - -/// -/// _LIST_ENTRY structure definition. -/// -struct _LIST_ENTRY { - LIST_ENTRY *ForwardLink; - LIST_ENTRY *BackLink; -}; - -// -// Modifiers to abstract standard types to aid in debug of problems -// - -/// -/// Datum is read-only. -/// -#define CONST const - -/// -/// Datum is scoped to the current file or function. -/// -#define STATIC static - -/// -/// Undeclared type. -/// -#define VOID void - -// -// Modifiers for Data Types used to self document code. -// This concept is borrowed for UEFI specification. -// - -/// -/// Datum is passed to the function. -/// -#define IN - -/// -/// Datum is returned from the function. -/// -#define OUT - -/// -/// Passing the datum to the function is optional, and a NULL -/// is passed if the value is not supplied. -/// -#define OPTIONAL - -// -// UEFI specification claims 1 and 0. We are concerned about the -// complier portability so we did it this way. -// - -/// -/// Boolean true value. UEFI Specification defines this value to be 1, -/// but this form is more portable. -/// -#define TRUE ((BOOLEAN)(1==1)) - -/// -/// Boolean false value. UEFI Specification defines this value to be 0, -/// but this form is more portable. -/// -#define FALSE ((BOOLEAN)(0==1)) - -/// -/// NULL pointer (VOID *) -/// -#ifndef NULL -#define NULL ((VOID *) 0) -#endif - -/// -/// Maximum values for common UEFI Data Types -/// -#define MAX_INT8 ((INT8)0x7F) -#define MAX_UINT8 ((UINT8)0xFF) -#define MAX_INT16 ((INT16)0x7FFF) -#define MAX_UINT16 ((UINT16)0xFFFF) -#define MAX_INT32 ((INT32)0x7FFFFFFF) -#define MAX_UINT32 ((UINT32)0xFFFFFFFF) -#define MAX_INT64 ((INT64)0x7FFFFFFFFFFFFFFFULL) -#define MAX_UINT64 ((UINT64)0xFFFFFFFFFFFFFFFFULL) - -#define BIT0 0x00000001 -#define BIT1 0x00000002 -#define BIT2 0x00000004 -#define BIT3 0x00000008 -#define BIT4 0x00000010 -#define BIT5 0x00000020 -#define BIT6 0x00000040 -#define BIT7 0x00000080 -#define BIT8 0x00000100 -#define BIT9 0x00000200 -#define BIT10 0x00000400 -#define BIT11 0x00000800 -#define BIT12 0x00001000 -#define BIT13 0x00002000 -#define BIT14 0x00004000 -#define BIT15 0x00008000 -#define BIT16 0x00010000 -#define BIT17 0x00020000 -#define BIT18 0x00040000 -#define BIT19 0x00080000 -#define BIT20 0x00100000 -#define BIT21 0x00200000 -#define BIT22 0x00400000 -#define BIT23 0x00800000 -#define BIT24 0x01000000 -#define BIT25 0x02000000 -#define BIT26 0x04000000 -#define BIT27 0x08000000 -#define BIT28 0x10000000 -#define BIT29 0x20000000 -#define BIT30 0x40000000 -#define BIT31 0x80000000 -#define BIT32 0x0000000100000000ULL -#define BIT33 0x0000000200000000ULL -#define BIT34 0x0000000400000000ULL -#define BIT35 0x0000000800000000ULL -#define BIT36 0x0000001000000000ULL -#define BIT37 0x0000002000000000ULL -#define BIT38 0x0000004000000000ULL -#define BIT39 0x0000008000000000ULL -#define BIT40 0x0000010000000000ULL -#define BIT41 0x0000020000000000ULL -#define BIT42 0x0000040000000000ULL -#define BIT43 0x0000080000000000ULL -#define BIT44 0x0000100000000000ULL -#define BIT45 0x0000200000000000ULL -#define BIT46 0x0000400000000000ULL -#define BIT47 0x0000800000000000ULL -#define BIT48 0x0001000000000000ULL -#define BIT49 0x0002000000000000ULL -#define BIT50 0x0004000000000000ULL -#define BIT51 0x0008000000000000ULL -#define BIT52 0x0010000000000000ULL -#define BIT53 0x0020000000000000ULL -#define BIT54 0x0040000000000000ULL -#define BIT55 0x0080000000000000ULL -#define BIT56 0x0100000000000000ULL -#define BIT57 0x0200000000000000ULL -#define BIT58 0x0400000000000000ULL -#define BIT59 0x0800000000000000ULL -#define BIT60 0x1000000000000000ULL -#define BIT61 0x2000000000000000ULL -#define BIT62 0x4000000000000000ULL -#define BIT63 0x8000000000000000ULL - -#define SIZE_1KB 0x00000400 -#define SIZE_2KB 0x00000800 -#define SIZE_4KB 0x00001000 -#define SIZE_8KB 0x00002000 -#define SIZE_16KB 0x00004000 -#define SIZE_32KB 0x00008000 -#define SIZE_64KB 0x00010000 -#define SIZE_128KB 0x00020000 -#define SIZE_256KB 0x00040000 -#define SIZE_512KB 0x00080000 -#define SIZE_1MB 0x00100000 -#define SIZE_2MB 0x00200000 -#define SIZE_4MB 0x00400000 -#define SIZE_8MB 0x00800000 -#define SIZE_16MB 0x01000000 -#define SIZE_32MB 0x02000000 -#define SIZE_64MB 0x04000000 -#define SIZE_128MB 0x08000000 -#define SIZE_256MB 0x10000000 -#define SIZE_512MB 0x20000000 -#define SIZE_1GB 0x40000000 -#define SIZE_2GB 0x80000000 -#define SIZE_4GB 0x0000000100000000ULL -#define SIZE_8GB 0x0000000200000000ULL -#define SIZE_16GB 0x0000000400000000ULL -#define SIZE_32GB 0x0000000800000000ULL -#define SIZE_64GB 0x0000001000000000ULL -#define SIZE_128GB 0x0000002000000000ULL -#define SIZE_256GB 0x0000004000000000ULL -#define SIZE_512GB 0x0000008000000000ULL -#define SIZE_1TB 0x0000010000000000ULL -#define SIZE_2TB 0x0000020000000000ULL -#define SIZE_4TB 0x0000040000000000ULL -#define SIZE_8TB 0x0000080000000000ULL -#define SIZE_16TB 0x0000100000000000ULL -#define SIZE_32TB 0x0000200000000000ULL -#define SIZE_64TB 0x0000400000000000ULL -#define SIZE_128TB 0x0000800000000000ULL -#define SIZE_256TB 0x0001000000000000ULL -#define SIZE_512TB 0x0002000000000000ULL -#define SIZE_1PB 0x0004000000000000ULL -#define SIZE_2PB 0x0008000000000000ULL -#define SIZE_4PB 0x0010000000000000ULL -#define SIZE_8PB 0x0020000000000000ULL -#define SIZE_16PB 0x0040000000000000ULL -#define SIZE_32PB 0x0080000000000000ULL -#define SIZE_64PB 0x0100000000000000ULL -#define SIZE_128PB 0x0200000000000000ULL -#define SIZE_256PB 0x0400000000000000ULL -#define SIZE_512PB 0x0800000000000000ULL -#define SIZE_1EB 0x1000000000000000ULL -#define SIZE_2EB 0x2000000000000000ULL -#define SIZE_4EB 0x4000000000000000ULL -#define SIZE_8EB 0x8000000000000000ULL - -#define BASE_1KB 0x00000400 -#define BASE_2KB 0x00000800 -#define BASE_4KB 0x00001000 -#define BASE_8KB 0x00002000 -#define BASE_16KB 0x00004000 -#define BASE_32KB 0x00008000 -#define BASE_64KB 0x00010000 -#define BASE_128KB 0x00020000 -#define BASE_256KB 0x00040000 -#define BASE_512KB 0x00080000 -#define BASE_1MB 0x00100000 -#define BASE_2MB 0x00200000 -#define BASE_4MB 0x00400000 -#define BASE_8MB 0x00800000 -#define BASE_16MB 0x01000000 -#define BASE_32MB 0x02000000 -#define BASE_64MB 0x04000000 -#define BASE_128MB 0x08000000 -#define BASE_256MB 0x10000000 -#define BASE_512MB 0x20000000 -#define BASE_1GB 0x40000000 -#define BASE_2GB 0x80000000 -#define BASE_4GB 0x0000000100000000ULL -#define BASE_8GB 0x0000000200000000ULL -#define BASE_16GB 0x0000000400000000ULL -#define BASE_32GB 0x0000000800000000ULL -#define BASE_64GB 0x0000001000000000ULL -#define BASE_128GB 0x0000002000000000ULL -#define BASE_256GB 0x0000004000000000ULL -#define BASE_512GB 0x0000008000000000ULL -#define BASE_1TB 0x0000010000000000ULL -#define BASE_2TB 0x0000020000000000ULL -#define BASE_4TB 0x0000040000000000ULL -#define BASE_8TB 0x0000080000000000ULL -#define BASE_16TB 0x0000100000000000ULL -#define BASE_32TB 0x0000200000000000ULL -#define BASE_64TB 0x0000400000000000ULL -#define BASE_128TB 0x0000800000000000ULL -#define BASE_256TB 0x0001000000000000ULL -#define BASE_512TB 0x0002000000000000ULL -#define BASE_1PB 0x0004000000000000ULL -#define BASE_2PB 0x0008000000000000ULL -#define BASE_4PB 0x0010000000000000ULL -#define BASE_8PB 0x0020000000000000ULL -#define BASE_16PB 0x0040000000000000ULL -#define BASE_32PB 0x0080000000000000ULL -#define BASE_64PB 0x0100000000000000ULL -#define BASE_128PB 0x0200000000000000ULL -#define BASE_256PB 0x0400000000000000ULL -#define BASE_512PB 0x0800000000000000ULL -#define BASE_1EB 0x1000000000000000ULL -#define BASE_2EB 0x2000000000000000ULL -#define BASE_4EB 0x4000000000000000ULL -#define BASE_8EB 0x8000000000000000ULL - -// -// Support for variable length argument lists using the ANSI standard. -// -// Since we are using the ANSI standard we used the standard naming and -// did not follow the coding convention -// -// VA_LIST - typedef for argument list. -// VA_START (VA_LIST Marker, argument before the ...) - Init Marker for use. -// VA_END (VA_LIST Marker) - Clear Marker -// VA_ARG (VA_LIST Marker, var arg size) - Use Marker to get an argument from -// the ... list. You must know the size and pass it in this macro. -// VA_COPY (VA_LIST Dest, VA_LIST Start) - Initialize Dest as a copy of Start. -// -// example: -// -// UINTN -// ExampleVarArg ( -// IN UINTN NumberOfArgs, -// ... -// ) -// { -// VA_LIST Marker; -// UINTN Index; -// UINTN Result; -// -// // -// // Initialize the Marker -// // -// VA_START (Marker, NumberOfArgs); -// for (Index = 0, Result = 0; Index < NumberOfArgs; Index++) { -// // -// // The ... list is a series of UINTN values, so average them up. -// // -// Result += VA_ARG (Marker, UINTN); -// } -// -// VA_END (Marker); -// return Result -// } -// - -/** - Return the size of argument that has been aligned to sizeof (UINTN). - - @param n The parameter size to be aligned. - - @return The aligned size. -**/ -#define _INT_SIZE_OF(n) ((sizeof (n) + sizeof (UINTN) - 1) &~(sizeof (UINTN) - 1)) - -#if defined(__CC_ARM) -// -// RVCT ARM variable argument list support. -// - -/// -/// Variable used to traverse the list of arguments. This type can vary by -/// implementation and could be an array or structure. -/// -#ifdef __APCS_ADSABI - typedef int *va_list[1]; - #define VA_LIST va_list -#else - typedef struct __va_list { void *__ap; } va_list; - #define VA_LIST va_list -#endif - -#define VA_START(Marker, Parameter) __va_start(Marker, Parameter) - -#define VA_ARG(Marker, TYPE) __va_arg(Marker, TYPE) - -#define VA_END(Marker) ((void)0) - -// For some ARM RVCT compilers, __va_copy is not defined -#ifndef __va_copy - #define __va_copy(dest, src) ((void)((dest) = (src))) -#endif - -#define VA_COPY(Dest, Start) __va_copy (Dest, Start) - -#elif defined(__GNUC__) && !defined(NO_BUILTIN_VA_FUNCS) -// -// Use GCC built-in macros for variable argument lists. -// - -/// -/// Variable used to traverse the list of arguments. This type can vary by -/// implementation and could be an array or structure. -/// -typedef __builtin_va_list VA_LIST; - -#define VA_START(Marker, Parameter) __builtin_va_start (Marker, Parameter) - -#define VA_ARG(Marker, TYPE) ((sizeof (TYPE) < sizeof (UINTN)) ? (TYPE)(__builtin_va_arg (Marker, UINTN)) : (TYPE)(__builtin_va_arg (Marker, TYPE))) - -#define VA_END(Marker) __builtin_va_end (Marker) - -#define VA_COPY(Dest, Start) __builtin_va_copy (Dest, Start) - -#else -/// -/// Variable used to traverse the list of arguments. This type can vary by -/// implementation and could be an array or structure. -/// -typedef CHAR8 *VA_LIST; - -/** - Retrieves a pointer to the beginning of a variable argument list, based on - the name of the parameter that immediately precedes the variable argument list. - - This function initializes Marker to point to the beginning of the variable - argument list that immediately follows Parameter. The method for computing the - pointer to the next argument in the argument list is CPU-specific following the - EFIAPI ABI. - - @param Marker The VA_LIST used to traverse the list of arguments. - @param Parameter The name of the parameter that immediately precedes - the variable argument list. - - @return A pointer to the beginning of a variable argument list. - -**/ -#define VA_START(Marker, Parameter) (Marker = (VA_LIST) ((UINTN) & (Parameter) + _INT_SIZE_OF (Parameter))) - -/** - Returns an argument of a specified type from a variable argument list and updates - the pointer to the variable argument list to point to the next argument. - - This function returns an argument of the type specified by TYPE from the beginning - of the variable argument list specified by Marker. Marker is then updated to point - to the next argument in the variable argument list. The method for computing the - pointer to the next argument in the argument list is CPU-specific following the EFIAPI ABI. - - @param Marker VA_LIST used to traverse the list of arguments. - @param TYPE The type of argument to retrieve from the beginning - of the variable argument list. - - @return An argument of the type specified by TYPE. - -**/ -#define VA_ARG(Marker, TYPE) (*(TYPE *) ((Marker += _INT_SIZE_OF (TYPE)) - _INT_SIZE_OF (TYPE))) - -/** - Terminates the use of a variable argument list. - - This function initializes Marker so it can no longer be used with VA_ARG(). - After this macro is used, the only way to access the variable argument list is - by using VA_START() again. - - @param Marker VA_LIST used to traverse the list of arguments. - -**/ -#define VA_END(Marker) (Marker = (VA_LIST) 0) - -/** - Initializes a VA_LIST as a copy of an existing VA_LIST. - - This macro initializes Dest as a copy of Start, as if the VA_START macro had been applied to Dest - followed by the same sequence of uses of the VA_ARG macro as had previously been used to reach - the present state of Start. - - @param Dest VA_LIST used to traverse the list of arguments. - @param Start VA_LIST used to traverse the list of arguments. - -**/ -#define VA_COPY(Dest, Start) ((void)((Dest) = (Start))) - -#endif - -/// -/// Pointer to the start of a variable argument list stored in a memory buffer. Same as UINT8 *. -/// -typedef UINTN *BASE_LIST; - -/** - Returns the size of a data type in sizeof(UINTN) units rounded up to the nearest UINTN boundary. - - @param TYPE The date type to determine the size of. - - @return The size of TYPE in sizeof (UINTN) units rounded up to the nearest UINTN boundary. -**/ -#define _BASE_INT_SIZE_OF(TYPE) ((sizeof (TYPE) + sizeof (UINTN) - 1) / sizeof (UINTN)) - -/** - Returns an argument of a specified type from a variable argument list and updates - the pointer to the variable argument list to point to the next argument. - - This function returns an argument of the type specified by TYPE from the beginning - of the variable argument list specified by Marker. Marker is then updated to point - to the next argument in the variable argument list. The method for computing the - pointer to the next argument in the argument list is CPU specific following the EFIAPI ABI. - - @param Marker The pointer to the beginning of a variable argument list. - @param TYPE The type of argument to retrieve from the beginning - of the variable argument list. - - @return An argument of the type specified by TYPE. - -**/ -#define BASE_ARG(Marker, TYPE) (*(TYPE *) ((Marker += _BASE_INT_SIZE_OF (TYPE)) - _BASE_INT_SIZE_OF (TYPE))) - -/** - The macro that returns the byte offset of a field in a data structure. - - This function returns the offset, in bytes, of field specified by Field from the - beginning of the data structure specified by TYPE. If TYPE does not contain Field, - the module will not compile. - - @param TYPE The name of the data structure that contains the field specified by Field. - @param Field The name of the field in the data structure. - - @return Offset, in bytes, of field. - -**/ -#ifdef __GNUC__ -#if __GNUC__ >= 4 -#define OFFSET_OF(TYPE, Field) ((UINTN) __builtin_offsetof(TYPE, Field)) -#endif -#endif - -#ifndef OFFSET_OF -#define OFFSET_OF(TYPE, Field) ((UINTN) &(((TYPE *)0)->Field)) -#endif - -/** - Macro that returns a pointer to the data structure that contains a specified field of - that data structure. This is a lightweight method to hide information by placing a - public data structure inside a larger private data structure and using a pointer to - the public data structure to retrieve a pointer to the private data structure. - - This function computes the offset, in bytes, of field specified by Field from the beginning - of the data structure specified by TYPE. This offset is subtracted from Record, and is - used to return a pointer to a data structure of the type specified by TYPE. If the data type - specified by TYPE does not contain the field specified by Field, then the module will not compile. - - @param Record Pointer to the field specified by Field within a data structure of type TYPE. - @param TYPE The name of the data structure type to return. This data structure must - contain the field specified by Field. - @param Field The name of the field in the data structure specified by TYPE to which Record points. - - @return A pointer to the structure from one of it's elements. - -**/ -#define BASE_CR(Record, TYPE, Field) ((TYPE *) ((CHAR8 *) (Record) - (CHAR8 *) &(((TYPE *) 0)->Field))) - -/** - Rounds a value up to the next boundary using a specified alignment. - - This function rounds Value up to the next boundary using the specified Alignment. - This aligned value is returned. - - @param Value The value to round up. - @param Alignment The alignment boundary used to return the aligned value. - - @return A value up to the next boundary. - -**/ -#define ALIGN_VALUE(Value, Alignment) ((Value) + (((Alignment) - (Value)) & ((Alignment) - 1))) - -/** - Adjust a pointer by adding the minimum offset required for it to be aligned on - a specified alignment boundary. - - This function rounds the pointer specified by Pointer to the next alignment boundary - specified by Alignment. The pointer to the aligned address is returned. - - @param Pointer The pointer to round up. - @param Alignment The alignment boundary to use to return an aligned pointer. - - @return Pointer to the aligned address. - -**/ -#define ALIGN_POINTER(Pointer, Alignment) ((VOID *) (ALIGN_VALUE ((UINTN)(Pointer), (Alignment)))) - -/** - Rounds a value up to the next natural boundary for the current CPU. - This is 4-bytes for 32-bit CPUs and 8-bytes for 64-bit CPUs. - - This function rounds the value specified by Value up to the next natural boundary for the - current CPU. This rounded value is returned. - - @param Value The value to round up. - - @return Rounded value specified by Value. - -**/ -#define ALIGN_VARIABLE(Value) ALIGN_VALUE ((Value), sizeof (UINTN)) - - -/** - Return the maximum of two operands. - - This macro returns the maximum of two operand specified by a and b. - Both a and b must be the same numerical types, signed or unsigned. - - @param a The first operand with any numerical type. - @param b The second operand. Can be any numerical type as long as is - the same type as a. - - @return Maximum of two operands. - -**/ -#ifndef MAX -#define MAX(a, b) \ - (((a) > (b)) ? (a) : (b)) -#endif - -/** - Return the minimum of two operands. - - - This macro returns the minimal of two operand specified by a and b. - Both a and b must be the same numerical types, signed or unsigned. - - @param a The first operand with any numerical type. - @param b The second operand. It should be the same any numerical type with a. - - @return Minimum of two operands. - -**/ -#ifndef MIN -#define MIN(a, b) \ - (((a) < (b)) ? (a) : (b)) -#endif - -/** - Return the absolute value of a signed operand. - - This macro returns the absolute value of the signed operand specified by a. - - @param a The signed operand. - - @return The absolute value of the signed operand. - -**/ -#ifndef ABS -#define ABS(a) \ - (((a) < 0) ? (-(a)) : (a)) -#endif - -// -// Status codes common to all execution phases -// -typedef UINTN RETURN_STATUS; - -/** - Produces a RETURN_STATUS code with the highest bit set. - - @param StatusCode The status code value to convert into a warning code. - StatusCode must be in the range 0x00000000..0x7FFFFFFF. - - @return The value specified by StatusCode with the highest bit set. - -**/ -#define ENCODE_ERROR(StatusCode) ((RETURN_STATUS)(MAX_BIT | (StatusCode))) - -/** - Produces a RETURN_STATUS code with the highest bit clear. - - @param StatusCode The status code value to convert into a warning code. - StatusCode must be in the range 0x00000000..0x7FFFFFFF. - - @return The value specified by StatusCode with the highest bit clear. - -**/ -#define ENCODE_WARNING(StatusCode) ((RETURN_STATUS)(StatusCode)) - -/** - Returns TRUE if a specified RETURN_STATUS code is an error code. - - This function returns TRUE if StatusCode has the high bit set. Otherwise, FALSE is returned. - - @param StatusCode The status code value to evaluate. - - @retval TRUE The high bit of StatusCode is set. - @retval FALSE The high bit of StatusCode is clear. - -**/ -#define RETURN_ERROR(StatusCode) (((INTN)(RETURN_STATUS)(StatusCode)) < 0) - -/// -/// The operation completed successfully. -/// -#define RETURN_SUCCESS 0 - -/// -/// The image failed to load. -/// -#define RETURN_LOAD_ERROR ENCODE_ERROR (1) - -/// -/// The parameter was incorrect. -/// -#define RETURN_INVALID_PARAMETER ENCODE_ERROR (2) - -/// -/// The operation is not supported. -/// -#define RETURN_UNSUPPORTED ENCODE_ERROR (3) - -/// -/// The buffer was not the proper size for the request. -/// -#define RETURN_BAD_BUFFER_SIZE ENCODE_ERROR (4) - -/// -/// The buffer was not large enough to hold the requested data. -/// The required buffer size is returned in the appropriate -/// parameter when this error occurs. -/// -#define RETURN_BUFFER_TOO_SMALL ENCODE_ERROR (5) - -/// -/// There is no data pending upon return. -/// -#define RETURN_NOT_READY ENCODE_ERROR (6) - -/// -/// The physical device reported an error while attempting the -/// operation. -/// -#define RETURN_DEVICE_ERROR ENCODE_ERROR (7) - -/// -/// The device can not be written to. -/// -#define RETURN_WRITE_PROTECTED ENCODE_ERROR (8) - -/// -/// The resource has run out. -/// -#define RETURN_OUT_OF_RESOURCES ENCODE_ERROR (9) - -/// -/// An inconsistency was detected on the file system causing the -/// operation to fail. -/// -#define RETURN_VOLUME_CORRUPTED ENCODE_ERROR (10) - -/// -/// There is no more space on the file system. -/// -#define RETURN_VOLUME_FULL ENCODE_ERROR (11) - -/// -/// The device does not contain any medium to perform the -/// operation. -/// -#define RETURN_NO_MEDIA ENCODE_ERROR (12) - -/// -/// The medium in the device has changed since the last -/// access. -/// -#define RETURN_MEDIA_CHANGED ENCODE_ERROR (13) - -/// -/// The item was not found. -/// -#define RETURN_NOT_FOUND ENCODE_ERROR (14) - -/// -/// Access was denied. -/// -#define RETURN_ACCESS_DENIED ENCODE_ERROR (15) - -/// -/// The server was not found or did not respond to the request. -/// -#define RETURN_NO_RESPONSE ENCODE_ERROR (16) - -/// -/// A mapping to the device does not exist. -/// -#define RETURN_NO_MAPPING ENCODE_ERROR (17) - -/// -/// A timeout time expired. -/// -#define RETURN_TIMEOUT ENCODE_ERROR (18) - -/// -/// The protocol has not been started. -/// -#define RETURN_NOT_STARTED ENCODE_ERROR (19) - -/// -/// The protocol has already been started. -/// -#define RETURN_ALREADY_STARTED ENCODE_ERROR (20) - -/// -/// The operation was aborted. -/// -#define RETURN_ABORTED ENCODE_ERROR (21) - -/// -/// An ICMP error occurred during the network operation. -/// -#define RETURN_ICMP_ERROR ENCODE_ERROR (22) - -/// -/// A TFTP error occurred during the network operation. -/// -#define RETURN_TFTP_ERROR ENCODE_ERROR (23) - -/// -/// A protocol error occurred during the network operation. -/// -#define RETURN_PROTOCOL_ERROR ENCODE_ERROR (24) - -/// -/// A function encountered an internal version that was -/// incompatible with a version requested by the caller. -/// -#define RETURN_INCOMPATIBLE_VERSION ENCODE_ERROR (25) - -/// -/// The function was not performed due to a security violation. -/// -#define RETURN_SECURITY_VIOLATION ENCODE_ERROR (26) - -/// -/// A CRC error was detected. -/// -#define RETURN_CRC_ERROR ENCODE_ERROR (27) - -/// -/// The beginning or end of media was reached. -/// -#define RETURN_END_OF_MEDIA ENCODE_ERROR (28) - -/// -/// The end of the file was reached. -/// -#define RETURN_END_OF_FILE ENCODE_ERROR (31) - -/// -/// The language specified was invalid. -/// -#define RETURN_INVALID_LANGUAGE ENCODE_ERROR (32) - -/// -/// The security status of the data is unknown or compromised -/// and the data must be updated or replaced to restore a valid -/// security status. -/// -#define RETURN_COMPROMISED_DATA ENCODE_ERROR (33) - -/// -/// The string contained one or more characters that -/// the device could not render and were skipped. -/// -#define RETURN_WARN_UNKNOWN_GLYPH ENCODE_WARNING (1) - -/// -/// The handle was closed, but the file was not deleted. -/// -#define RETURN_WARN_DELETE_FAILURE ENCODE_WARNING (2) - -/// -/// The handle was closed, but the data to the file was not -/// flushed properly. -/// -#define RETURN_WARN_WRITE_FAILURE ENCODE_WARNING (3) - -/// -/// The resulting buffer was too small, and the data was -/// truncated to the buffer size. -/// -#define RETURN_WARN_BUFFER_TOO_SMALL ENCODE_WARNING (4) - -/// -/// The data has not been updated within the timeframe set by -/// local policy for this type of data. -/// -#define RETURN_WARN_STALE_DATA ENCODE_WARNING (5) - -/** - Returns a 16-bit signature built from 2 ASCII characters. - - This macro returns a 16-bit value built from the two ASCII characters specified - by A and B. - - @param A The first ASCII character. - @param B The second ASCII character. - - @return A 16-bit value built from the two ASCII characters specified by A and B. - -**/ -#define SIGNATURE_16(A, B) ((A) | (B << 8)) - -/** - Returns a 32-bit signature built from 4 ASCII characters. - - This macro returns a 32-bit value built from the four ASCII characters specified - by A, B, C, and D. - - @param A The first ASCII character. - @param B The second ASCII character. - @param C The third ASCII character. - @param D The fourth ASCII character. - - @return A 32-bit value built from the two ASCII characters specified by A, B, - C and D. - -**/ -#define SIGNATURE_32(A, B, C, D) (SIGNATURE_16 (A, B) | (SIGNATURE_16 (C, D) << 16)) - -/** - Returns a 64-bit signature built from 8 ASCII characters. - - This macro returns a 64-bit value built from the eight ASCII characters specified - by A, B, C, D, E, F, G,and H. - - @param A The first ASCII character. - @param B The second ASCII character. - @param C The third ASCII character. - @param D The fourth ASCII character. - @param E The fifth ASCII character. - @param F The sixth ASCII character. - @param G The seventh ASCII character. - @param H The eighth ASCII character. - - @return A 64-bit value built from the two ASCII characters specified by A, B, - C, D, E, F, G and H. - -**/ -#define SIGNATURE_64(A, B, C, D, E, F, G, H) \ - (SIGNATURE_32 (A, B, C, D) | ((UINT64) (SIGNATURE_32 (E, F, G, H)) << 32)) - -#if defined(_MSC_EXTENSIONS) && !defined (MDE_CPU_EBC) - #pragma intrinsic(_ReturnAddress) - /** - Get the return address of the calling funcation. - - Based on intrinsic function _ReturnAddress that provides the address of - the instruction in the calling function that will be executed after - control returns to the caller. - - @param L Return Level. - - @return The return address of the calling funcation or 0 if L != 0. - - **/ - #define RETURN_ADDRESS(L) ((L == 0) ? _ReturnAddress() : (VOID *) 0) -#elif defined(__GNUC__) - void * __builtin_return_address (unsigned int level); - /** - Get the return address of the calling funcation. - - Based on built-in Function __builtin_return_address that returns - the return address of the current function, or of one of its callers. - - @param L Return Level. - - @return The return address of the calling funcation. - - **/ - #define RETURN_ADDRESS(L) __builtin_return_address (L) -#else - /** - Get the return address of the calling funcation. - - @param L Return Level. - - @return 0 as compilers don't support this feature. - - **/ - #define RETURN_ADDRESS(L) ((VOID *) 0) -#endif - -#endif - diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Guid/FirmwareFileSystem2.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Guid/FirmwareFileSystem2.h deleted file mode 100644 index 308ffb14c4..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Guid/FirmwareFileSystem2.h +++ /dev/null @@ -1,40 +0,0 @@ -/** @file - Guid used to define the Firmware File System 2. - - Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - @par Revision Reference: - GUIDs introduced in PI Version 1.0. - -**/ - -#ifndef __FIRMWARE_FILE_SYSTEM2_GUID_H__ -#define __FIRMWARE_FILE_SYSTEM2_GUID_H__ - -/// -/// The firmware volume header contains a data field for -/// the file system GUID -/// -#define EFI_FIRMWARE_FILE_SYSTEM2_GUID \ - { 0x8c8ce578, 0x8a3d, 0x4f1c, { 0x99, 0x35, 0x89, 0x61, 0x85, 0xc3, 0x2d, 0xd3 } } - -/// -/// A Volume Top File (VTF) is a file that must be -/// located such that the last byte of the file is -/// also the last byte of the firmware volume -/// -#define EFI_FFS_VOLUME_TOP_FILE_GUID \ - { 0x1BA0062E, 0xC779, 0x4582, { 0x85, 0x66, 0x33, 0x6A, 0xE8, 0xF7, 0x8F, 0x9 } } - - -extern EFI_GUID gEfiFirmwareFileSystem2Guid; -extern EFI_GUID gEfiFirmwareVolumeTopFileGuid; - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Guid/HiiFormMapMethodGuid.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Guid/HiiFormMapMethodGuid.h deleted file mode 100644 index 16b400b15e..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Guid/HiiFormMapMethodGuid.h +++ /dev/null @@ -1,25 +0,0 @@ -/** @file - Guid used to identify HII FormMap configuration method. - - Copyright (c) 2009, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - @par Revision Reference: - GUID defined in UEFI 2.2 spec. -**/ - -#ifndef __EFI_HII_FORMMAP_GUID_H__ -#define __EFI_HII_FORMMAP_GUID_H__ - -#define EFI_HII_STANDARD_FORM_GUID \ - { 0x3bd2f4ec, 0xe524, 0x46e4, { 0xa9, 0xd8, 0x51, 0x1, 0x17, 0x42, 0x55, 0x62 } } - -extern EFI_GUID gEfiHiiStandardFormGuid; - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Guid/PcAnsi.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Guid/PcAnsi.h deleted file mode 100644 index 905dfd1188..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Guid/PcAnsi.h +++ /dev/null @@ -1,58 +0,0 @@ -/** @file - Terminal Device Path Vendor Guid. - - Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - @par Revision Reference: - GUIDs defined in UEFI 2.0 spec. - -**/ - -#ifndef __PC_ANSI_H__ -#define __PC_ANSI_H__ - -#define EFI_PC_ANSI_GUID \ - { \ - 0xe0c14753, 0xf9be, 0x11d2, {0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \ - } - -#define EFI_VT_100_GUID \ - { \ - 0xdfa66065, 0xb419, 0x11d3, {0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d } \ - } - -#define EFI_VT_100_PLUS_GUID \ - { \ - 0x7baec70b, 0x57e0, 0x4c76, {0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43 } \ - } - -#define EFI_VT_UTF8_GUID \ - { \ - 0xad15a0d6, 0x8bec, 0x4acf, {0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88 } \ - } - -#define DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL \ - { \ - 0x37499a9d, 0x542f, 0x4c89, {0xa0, 0x26, 0x35, 0xda, 0x14, 0x20, 0x94, 0xe4 } \ - } - -#define EFI_SAS_DEVICE_PATH_GUID \ - { \ - 0xd487ddb4, 0x008b, 0x11d9, {0xaf, 0xdc, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d } \ - } - -extern EFI_GUID gEfiPcAnsiGuid; -extern EFI_GUID gEfiVT100Guid; -extern EFI_GUID gEfiVT100PlusGuid; -extern EFI_GUID gEfiVTUTF8Guid; -extern EFI_GUID gEfiUartDevicePathGuid; -extern EFI_GUID gEfiSasDevicePathGuid; - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Guid/WinCertificate.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Guid/WinCertificate.h deleted file mode 100644 index d5b7d78d7c..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Guid/WinCertificate.h +++ /dev/null @@ -1,128 +0,0 @@ -/** @file - GUID for UEFI WIN_CERTIFICATE structure. - - Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - @par Revision Reference: - GUID defined in UEFI 2.0 spec. -**/ - -#ifndef __EFI_WIN_CERTIFICATE_H__ -#define __EFI_WIN_CERTIFICATE_H__ - -// -// _WIN_CERTIFICATE.wCertificateType -// -#define WIN_CERT_TYPE_PKCS_SIGNED_DATA 0x0002 -#define WIN_CERT_TYPE_EFI_PKCS115 0x0EF0 -#define WIN_CERT_TYPE_EFI_GUID 0x0EF1 - -/// -/// The WIN_CERTIFICATE structure is part of the PE/COFF specification. -/// -typedef struct { - /// - /// The length of the entire certificate, - /// including the length of the header, in bytes. - /// - UINT32 dwLength; - /// - /// The revision level of the WIN_CERTIFICATE - /// structure. The current revision level is 0x0200. - /// - UINT16 wRevision; - /// - /// The certificate type. See WIN_CERT_TYPE_xxx for the UEFI - /// certificate types. The UEFI specification reserves the range of - /// certificate type values from 0x0EF0 to 0x0EFF. - /// - UINT16 wCertificateType; - /// - /// The following is the actual certificate. The format of - /// the certificate depends on wCertificateType. - /// - /// UINT8 bCertificate[ANYSIZE_ARRAY]; - /// -} WIN_CERTIFICATE; - -/// -/// WIN_CERTIFICATE_UEFI_GUID.CertType -/// -#define EFI_CERT_TYPE_RSA2048_SHA256_GUID \ - {0xa7717414, 0xc616, 0x4977, {0x94, 0x20, 0x84, 0x47, 0x12, 0xa7, 0x35, 0xbf } } - -/// -/// WIN_CERTIFICATE_UEFI_GUID.CertData -/// -typedef struct { - EFI_GUID HashType; - UINT8 PublicKey[256]; - UINT8 Signature[256]; -} EFI_CERT_BLOCK_RSA_2048_SHA256; - - -/// -/// Certificate which encapsulates a GUID-specific digital signature -/// -typedef struct { - /// - /// This is the standard WIN_CERTIFICATE header, where - /// wCertificateType is set to WIN_CERT_TYPE_EFI_GUID. - /// - WIN_CERTIFICATE Hdr; - /// - /// This is the unique id which determines the - /// format of the CertData. . - /// - EFI_GUID CertType; - /// - /// The following is the certificate data. The format of - /// the data is determined by the CertType. - /// If CertType is EFI_CERT_TYPE_RSA2048_SHA256_GUID, - /// the CertData will be EFI_CERT_BLOCK_RSA_2048_SHA256 structure. - /// - UINT8 CertData[1]; -} WIN_CERTIFICATE_UEFI_GUID; - - -/// -/// Certificate which encapsulates the RSASSA_PKCS1-v1_5 digital signature. -/// -/// The WIN_CERTIFICATE_UEFI_PKCS1_15 structure is derived from -/// WIN_CERTIFICATE and encapsulate the information needed to -/// implement the RSASSA-PKCS1-v1_5 digital signature algorithm as -/// specified in RFC2437. -/// -typedef struct { - /// - /// This is the standard WIN_CERTIFICATE header, where - /// wCertificateType is set to WIN_CERT_TYPE_UEFI_PKCS1_15. - /// - WIN_CERTIFICATE Hdr; - /// - /// This is the hashing algorithm which was performed on the - /// UEFI executable when creating the digital signature. - /// - EFI_GUID HashAlgorithm; - /// - /// The following is the actual digital signature. The - /// size of the signature is the same size as the key - /// (1024-bit key is 128 bytes) and can be determined by - /// subtracting the length of the other parts of this header - /// from the total length of the certificate as found in - /// Hdr.dwLength. - /// - /// UINT8 Signature[]; - /// -} WIN_CERTIFICATE_EFI_PKCS1_15; - -extern EFI_GUID gEfiCertTypeRsa2048Sha256Guid; - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Ia32/ProcessorBind.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Ia32/ProcessorBind.h deleted file mode 100644 index 2f770420cf..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Ia32/ProcessorBind.h +++ /dev/null @@ -1,312 +0,0 @@ -/** @file - Processor or Compiler specific defines and types for IA-32 architecture. - -Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
-This file and the accompanying materials are licensed and made available under are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __PROCESSOR_BIND_H__ -#define __PROCESSOR_BIND_H__ - -/// -/// Define the processor type so other code can make processor based choices. -/// -#define MDE_CPU_IA32 - -// -// Make sure we are using the correct packing rules per EFI specification -// -#if !defined(__GNUC__) -#pragma pack() -#endif - -#if defined(__INTEL_COMPILER) -// -// Disable ICC's remark #869: "Parameter" was never referenced warning. -// This is legal ANSI C code so we disable the remark that is turned on with -Wall -// -#pragma warning ( disable : 869 ) - -// -// Disable ICC's remark #1418: external function definition with no prior declaration. -// This is legal ANSI C code so we disable the remark that is turned on with /W4 -// -#pragma warning ( disable : 1418 ) - -// -// Disable ICC's remark #1419: external declaration in primary source file -// This is legal ANSI C code so we disable the remark that is turned on with /W4 -// -#pragma warning ( disable : 1419 ) - -// -// Disable ICC's remark #593: "Variable" was set but never used. -// This is legal ANSI C code so we disable the remark that is turned on with /W4 -// -#pragma warning ( disable : 593 ) - -#endif - - -#if defined(_MSC_EXTENSIONS) - -// -// Disable warning that make it impossible to compile at /W4 -// This only works for Microsoft* tools -// - -// -// Disabling bitfield type checking warnings. -// -#pragma warning ( disable : 4214 ) - -// -// Disabling the unreferenced formal parameter warnings. -// -#pragma warning ( disable : 4100 ) - -// -// Disable slightly different base types warning as CHAR8 * can not be set -// to a constant string. -// -#pragma warning ( disable : 4057 ) - -// -// ASSERT(FALSE) or while (TRUE) are legal constructes so supress this warning -// -#pragma warning ( disable : 4127 ) - -// -// This warning is caused by functions defined but not used. For precompiled header only. -// -#pragma warning ( disable : 4505 ) - -// -// This warning is caused by empty (after preprocessing) source file. For precompiled header only. -// -#pragma warning ( disable : 4206 ) - -#if _MSC_VER == 1800 || _MSC_VER == 1900 - -// -// Disable these warnings for VS2013. -// - -// -// This warning is for potentially uninitialized local variable, and it may cause false -// positive issues in VS2013 and VS2015 build -// -#pragma warning ( disable : 4701 ) - -// -// This warning is for potentially uninitialized local pointer variable, and it may cause -// false positive issues in VS2013 and VS2015 build -// -#pragma warning ( disable : 4703 ) - -#endif - -#endif - - -#if defined(_MSC_EXTENSIONS) - - // - // use Microsoft C complier dependent integer width types - // - - /// - /// 8-byte unsigned value. - /// - typedef unsigned __int64 UINT64; - /// - /// 8-byte signed value. - /// - typedef __int64 INT64; - /// - /// 4-byte unsigned value. - /// - typedef unsigned __int32 UINT32; - /// - /// 4-byte signed value. - /// - typedef __int32 INT32; - /// - /// 2-byte unsigned value. - /// - typedef unsigned short UINT16; - /// - /// 2-byte Character. Unless otherwise specified all strings are stored in the - /// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards. - /// - typedef unsigned short CHAR16; - /// - /// 2-byte signed value. - /// - typedef short INT16; - /// - /// Logical Boolean. 1-byte value containing 0 for FALSE or a 1 for TRUE. Other - /// values are undefined. - /// - typedef unsigned char BOOLEAN; - /// - /// 1-byte unsigned value. - /// - typedef unsigned char UINT8; - /// - /// 1-byte Character. - /// - typedef char CHAR8; - /// - /// 1-byte signed value. - /// - typedef signed char INT8; -#else - /// - /// 8-byte unsigned value. - /// - typedef unsigned long long UINT64; - /// - /// 8-byte signed value. - /// - typedef long long INT64; - /// - /// 4-byte unsigned value. - /// - typedef unsigned int UINT32; - /// - /// 4-byte signed value. - /// - typedef int INT32; - /// - /// 2-byte unsigned value. - /// - typedef unsigned short UINT16; - /// - /// 2-byte Character. Unless otherwise specified all strings are stored in the - /// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards. - /// - typedef unsigned short CHAR16; - /// - /// 2-byte signed value. - /// - typedef short INT16; - /// - /// Logical Boolean. 1-byte value containing 0 for FALSE or a 1 for TRUE. Other - /// values are undefined. - /// - typedef unsigned char BOOLEAN; - /// - /// 1-byte unsigned value. - /// - typedef unsigned char UINT8; - /// - /// 1-byte Character - /// - typedef char CHAR8; - /// - /// 1-byte signed value - /// - typedef signed char INT8; -#endif - -/// -/// Unsigned value of native width. (4 bytes on supported 32-bit processor instructions; -/// 8 bytes on supported 64-bit processor instructions.) -/// -typedef UINT32 UINTN; -/// -/// Signed value of native width. (4 bytes on supported 32-bit processor instructions; -/// 8 bytes on supported 64-bit processor instructions.) -/// -typedef INT32 INTN; - -// -// Processor specific defines -// - -/// -/// A value of native width with the highest bit set. -/// -#define MAX_BIT 0x80000000 -/// -/// A value of native width with the two highest bits set. -/// -#define MAX_2_BITS 0xC0000000 - -/// -/// Maximum legal IA-32 address. -/// -#define MAX_ADDRESS 0xFFFFFFFF - -/// -/// Maximum legal IA-32 INTN and UINTN values. -/// -#define MAX_INTN ((INTN)0x7FFFFFFF) -#define MAX_UINTN ((UINTN)0xFFFFFFFF) - -/// -/// The stack alignment required for IA-32. -/// -#define CPU_STACK_ALIGNMENT sizeof(UINTN) - -// -// Modifier to ensure that all protocol member functions and EFI intrinsics -// use the correct C calling convention. All protocol member functions and -// EFI intrinsics are required to modify their member functions with EFIAPI. -// -#ifdef EFIAPI - /// - /// If EFIAPI is already defined, then we use that definition. - /// -#elif defined(_MSC_EXTENSIONS) - /// - /// Microsoft* compiler specific method for EFIAPI calling convention. - /// - #define EFIAPI __cdecl -#elif defined(__GNUC__) - /// - /// GCC specific method for EFIAPI calling convention. - /// - #define EFIAPI __attribute__((cdecl)) -#else - /// - /// The default for a non Microsoft* or GCC compiler is to assume the EFI ABI - /// is the standard. - /// - #define EFIAPI -#endif - -#if defined(__GNUC__) - /// - /// For GNU assembly code, .global or .globl can declare global symbols. - /// Define this macro to unify the usage. - /// - #define ASM_GLOBAL .globl -#endif - -/** - Return the pointer to the first instruction of a function given a function pointer. - On IA-32 CPU architectures, these two pointer values are the same, - so the implementation of this macro is very simple. - - @param FunctionPointer A pointer to a function. - - @return The pointer to the first instruction of a function given a function pointer. - -**/ -#define FUNCTION_ENTRY_POINT(FunctionPointer) (VOID *)(UINTN)(FunctionPointer) - -#ifndef __USER_LABEL_PREFIX__ -#define __USER_LABEL_PREFIX__ _ -#endif - -#endif - diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi.h deleted file mode 100644 index fe993fb94a..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi.h +++ /dev/null @@ -1,21 +0,0 @@ -/** @file - This file contains the latest ACPI definitions that are - consumed by drivers that do not care about ACPI versions. - - Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef _ACPI_H_ -#define _ACPI_H_ - -#include - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi10.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi10.h deleted file mode 100644 index d5d9042c4e..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi10.h +++ /dev/null @@ -1,661 +0,0 @@ -/** @file - ACPI 1.0b definitions from the ACPI Specification, revision 1.0b - -Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
-This file and the accompanying materials are licensed and made available under are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -**/ - -#ifndef _ACPI_1_0_H_ -#define _ACPI_1_0_H_ - -#include - -/// -/// Common table header, this prefaces all ACPI tables, including FACS, but -/// excluding the RSD PTR structure. -/// -typedef struct { - UINT32 Signature; - UINT32 Length; -} EFI_ACPI_COMMON_HEADER; - -#pragma pack(1) -/// -/// The common ACPI description table header. This structure prefaces most ACPI tables. -/// -typedef struct { - UINT32 Signature; - UINT32 Length; - UINT8 Revision; - UINT8 Checksum; - UINT8 OemId[6]; - UINT64 OemTableId; - UINT32 OemRevision; - UINT32 CreatorId; - UINT32 CreatorRevision; -} EFI_ACPI_DESCRIPTION_HEADER; -#pragma pack() - -// -// Define for Desriptor -// -#define ACPI_SMALL_ITEM_FLAG 0x00 -#define ACPI_LARGE_ITEM_FLAG 0x01 - -// -// Small Item Descriptor Name -// -#define ACPI_SMALL_IRQ_DESCRIPTOR_NAME 0x04 -#define ACPI_SMALL_DMA_DESCRIPTOR_NAME 0x05 -#define ACPI_SMALL_START_DEPENDENT_DESCRIPTOR_NAME 0x06 -#define ACPI_SMALL_END_DEPENDENT_DESCRIPTOR_NAME 0x07 -#define ACPI_SMALL_IO_PORT_DESCRIPTOR_NAME 0x08 -#define ACPI_SMALL_FIXED_IO_PORT_DESCRIPTOR_NAME 0x09 -#define ACPI_SMALL_VENDOR_DEFINED_DESCRIPTOR_NAME 0x0E -#define ACPI_SMALL_END_TAG_DESCRIPTOR_NAME 0x0F - -// -// Large Item Descriptor Name -// -#define ACPI_LARGE_24_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x01 -#define ACPI_LARGE_VENDOR_DEFINED_DESCRIPTOR_NAME 0x04 -#define ACPI_LARGE_32_BIT_MEMORY_RANGE_DESCRIPTOR_NAME 0x05 -#define ACPI_LARGE_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR_NAME 0x06 -#define ACPI_LARGE_DWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x07 -#define ACPI_LARGE_WORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x08 -#define ACPI_LARGE_EXTENDED_IRQ_DESCRIPTOR_NAME 0x09 -#define ACPI_LARGE_QWORD_ADDRESS_SPACE_DESCRIPTOR_NAME 0x0A - -// -// Small Item Descriptor Value -// -#define ACPI_IRQ_NOFLAG_DESCRIPTOR 0x22 -#define ACPI_IRQ_DESCRIPTOR 0x23 -#define ACPI_DMA_DESCRIPTOR 0x2A -#define ACPI_START_DEPENDENT_DESCRIPTOR 0x30 -#define ACPI_START_DEPENDENT_EX_DESCRIPTOR 0x31 -#define ACPI_END_DEPENDENT_DESCRIPTOR 0x38 -#define ACPI_IO_PORT_DESCRIPTOR 0x47 -#define ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR 0x4B -#define ACPI_END_TAG_DESCRIPTOR 0x79 - -// -// Large Item Descriptor Value -// -#define ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR 0x81 -#define ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR 0x85 -#define ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR 0x86 -#define ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR 0x87 -#define ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR 0x88 -#define ACPI_EXTENDED_INTERRUPT_DESCRIPTOR 0x89 -#define ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR 0x8A -#define ACPI_ADDRESS_SPACE_DESCRIPTOR 0x8A - -// -// Resource Type -// -#define ACPI_ADDRESS_SPACE_TYPE_MEM 0x00 -#define ACPI_ADDRESS_SPACE_TYPE_IO 0x01 -#define ACPI_ADDRESS_SPACE_TYPE_BUS 0x02 - -/// -/// Power Management Timer frequency is fixed at 3.579545MHz. -/// -#define ACPI_TIMER_FREQUENCY 3579545 - -// -// Ensure proper structure formats -// -#pragma pack(1) - -/// -/// The commond definition of QWORD, DWORD, and WORD -/// Address Space Descriptors. -/// -typedef PACKED struct { - UINT8 Desc; - UINT16 Len; - UINT8 ResType; - UINT8 GenFlag; - UINT8 SpecificFlag; - UINT64 AddrSpaceGranularity; - UINT64 AddrRangeMin; - UINT64 AddrRangeMax; - UINT64 AddrTranslationOffset; - UINT64 AddrLen; -} EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR; - -typedef PACKED union { - UINT8 Byte; - PACKED struct { - UINT8 Length : 3; - UINT8 Name : 4; - UINT8 Type : 1; - } Bits; -} ACPI_SMALL_RESOURCE_HEADER; - -typedef PACKED struct { - PACKED union { - UINT8 Byte; - PACKED struct { - UINT8 Name : 7; - UINT8 Type : 1; - }Bits; - } Header; - UINT16 Length; -} ACPI_LARGE_RESOURCE_HEADER; - -/// -/// IRQ Descriptor. -/// -typedef PACKED struct { - ACPI_SMALL_RESOURCE_HEADER Header; - UINT16 Mask; -} EFI_ACPI_IRQ_NOFLAG_DESCRIPTOR; - -/// -/// IRQ Descriptor. -/// -typedef PACKED struct { - ACPI_SMALL_RESOURCE_HEADER Header; - UINT16 Mask; - UINT8 Information; -} EFI_ACPI_IRQ_DESCRIPTOR; - -/// -/// DMA Descriptor. -/// -typedef PACKED struct { - ACPI_SMALL_RESOURCE_HEADER Header; - UINT8 ChannelMask; - UINT8 Information; -} EFI_ACPI_DMA_DESCRIPTOR; - -/// -/// I/O Port Descriptor -/// -typedef PACKED struct { - ACPI_SMALL_RESOURCE_HEADER Header; - UINT8 Information; - UINT16 BaseAddressMin; - UINT16 BaseAddressMax; - UINT8 Alignment; - UINT8 Length; -} EFI_ACPI_IO_PORT_DESCRIPTOR; - -/// -/// Fixed Location I/O Port Descriptor. -/// -typedef PACKED struct { - ACPI_SMALL_RESOURCE_HEADER Header; - UINT16 BaseAddress; - UINT8 Length; -} EFI_ACPI_FIXED_LOCATION_IO_PORT_DESCRIPTOR; - -/// -/// 24-Bit Memory Range Descriptor -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 Information; - UINT16 BaseAddressMin; - UINT16 BaseAddressMax; - UINT16 Alignment; - UINT16 Length; -} EFI_ACPI_24_BIT_MEMORY_RANGE_DESCRIPTOR; - -/// -/// 32-Bit Memory Range Descriptor -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 Information; - UINT32 BaseAddressMin; - UINT32 BaseAddressMax; - UINT32 Alignment; - UINT32 Length; -} EFI_ACPI_32_BIT_MEMORY_RANGE_DESCRIPTOR; - -/// -/// Fixed 32-Bit Fixed Memory Range Descriptor -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 Information; - UINT32 BaseAddress; - UINT32 Length; -} EFI_ACPI_32_BIT_FIXED_MEMORY_RANGE_DESCRIPTOR; - -/// -/// QWORD Address Space Descriptor -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 ResType; - UINT8 GenFlag; - UINT8 SpecificFlag; - UINT64 AddrSpaceGranularity; - UINT64 AddrRangeMin; - UINT64 AddrRangeMax; - UINT64 AddrTranslationOffset; - UINT64 AddrLen; -} EFI_ACPI_QWORD_ADDRESS_SPACE_DESCRIPTOR; - -/// -/// DWORD Address Space Descriptor -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 ResType; - UINT8 GenFlag; - UINT8 SpecificFlag; - UINT32 AddrSpaceGranularity; - UINT32 AddrRangeMin; - UINT32 AddrRangeMax; - UINT32 AddrTranslationOffset; - UINT32 AddrLen; -} EFI_ACPI_DWORD_ADDRESS_SPACE_DESCRIPTOR; - -/// -/// WORD Address Space Descriptor -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 ResType; - UINT8 GenFlag; - UINT8 SpecificFlag; - UINT16 AddrSpaceGranularity; - UINT16 AddrRangeMin; - UINT16 AddrRangeMax; - UINT16 AddrTranslationOffset; - UINT16 AddrLen; -} EFI_ACPI_WORD_ADDRESS_SPACE_DESCRIPTOR; - -/// -/// Extended Interrupt Descriptor -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 InterruptVectorFlags; - UINT8 InterruptTableLength; - UINT32 InterruptNumber[1]; -} EFI_ACPI_EXTENDED_INTERRUPT_DESCRIPTOR; - -#pragma pack() - -/// -/// The End tag identifies an end of resource data. -/// -typedef struct { - UINT8 Desc; - UINT8 Checksum; -} EFI_ACPI_END_TAG_DESCRIPTOR; - -// -// General use definitions -// -#define EFI_ACPI_RESERVED_BYTE 0x00 -#define EFI_ACPI_RESERVED_WORD 0x0000 -#define EFI_ACPI_RESERVED_DWORD 0x00000000 -#define EFI_ACPI_RESERVED_QWORD 0x0000000000000000 - -// -// Resource Type Specific Flags -// Ref ACPI specification 6.4.3.5.5 -// -// Bit [0] : Write Status, _RW -// -#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_WRITE (1 << 0) -#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_READ_ONLY (0 << 0) -// -// Bit [2:1] : Memory Attributes, _MEM -// -#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_NON_CACHEABLE (0 << 1) -#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE (1 << 1) -#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_WRITE_COMBINING (2 << 1) -#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_CACHEABLE_PREFETCHABLE (3 << 1) -// -// Bit [4:3] : Memory Attributes, _MTP -// -#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_MEMORY (0 << 3) -#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_RESERVED (1 << 3) -#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_ACPI (2 << 3) -#define EFI_APCI_MEMORY_RESOURCE_SPECIFIC_FLAG_ADDRESS_RANGE_NVS (3 << 3) -// -// Bit [5] : Memory to I/O Translation, _TTP -// -#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_TRANSLATION (1 << 5) -#define EFI_ACPI_MEMORY_RESOURCE_SPECIFIC_FLAG_TYPE_STATIC (0 << 5) - -// -// IRQ Information -// Ref ACPI specification 6.4.2.1 -// -#define EFI_ACPI_IRQ_SHARABLE_MASK 0x10 -#define EFI_ACPI_IRQ_SHARABLE 0x10 - -#define EFI_ACPI_IRQ_POLARITY_MASK 0x08 -#define EFI_ACPI_IRQ_HIGH_TRUE 0x00 -#define EFI_ACPI_IRQ_LOW_FALSE 0x08 - -#define EFI_ACPI_IRQ_MODE 0x01 -#define EFI_ACPI_IRQ_LEVEL_TRIGGERED 0x00 -#define EFI_ACPI_IRQ_EDGE_TRIGGERED 0x01 - -// -// DMA Information -// Ref ACPI specification 6.4.2.2 -// -#define EFI_ACPI_DMA_SPEED_TYPE_MASK 0x60 -#define EFI_ACPI_DMA_SPEED_TYPE_COMPATIBILITY 0x00 -#define EFI_ACPI_DMA_SPEED_TYPE_A 0x20 -#define EFI_ACPI_DMA_SPEED_TYPE_B 0x40 -#define EFI_ACPI_DMA_SPEED_TYPE_F 0x60 - -#define EFI_ACPI_DMA_BUS_MASTER_MASK 0x04 -#define EFI_ACPI_DMA_BUS_MASTER 0x04 - -#define EFI_ACPI_DMA_TRANSFER_TYPE_MASK 0x03 -#define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT 0x00 -#define EFI_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT 0x01 -#define EFI_ACPI_DMA_TRANSFER_TYPE_16_BIT 0x10 - -// -// IO Information -// Ref ACPI specification 6.4.2.5 -// -#define EFI_ACPI_IO_DECODE_MASK 0x01 -#define EFI_ACPI_IO_DECODE_16_BIT 0x01 -#define EFI_ACPI_IO_DECODE_10_BIT 0x00 - -// -// Memory Information -// Ref ACPI specification 6.4.3.4 -// -#define EFI_ACPI_MEMORY_WRITE_STATUS_MASK 0x01 -#define EFI_ACPI_MEMORY_WRITABLE 0x01 -#define EFI_ACPI_MEMORY_NON_WRITABLE 0x00 - -// -// Ensure proper structure formats -// -#pragma pack(1) -// -// ACPI 1.0b table structures -// - -/// -/// Root System Description Pointer Structure. -/// -typedef struct { - UINT64 Signature; - UINT8 Checksum; - UINT8 OemId[6]; - UINT8 Reserved; - UINT32 RsdtAddress; -} EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER; - -// -// Root System Description Table -// No definition needed as it is a common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. -// - -/// -/// RSDT Revision (as defined in ACPI 1.0b specification). -/// -#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Fixed ACPI Description Table Structure (FADT). -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 FirmwareCtrl; - UINT32 Dsdt; - UINT8 IntModel; - UINT8 Reserved1; - UINT16 SciInt; - UINT32 SmiCmd; - UINT8 AcpiEnable; - UINT8 AcpiDisable; - UINT8 S4BiosReq; - UINT8 Reserved2; - UINT32 Pm1aEvtBlk; - UINT32 Pm1bEvtBlk; - UINT32 Pm1aCntBlk; - UINT32 Pm1bCntBlk; - UINT32 Pm2CntBlk; - UINT32 PmTmrBlk; - UINT32 Gpe0Blk; - UINT32 Gpe1Blk; - UINT8 Pm1EvtLen; - UINT8 Pm1CntLen; - UINT8 Pm2CntLen; - UINT8 PmTmLen; - UINT8 Gpe0BlkLen; - UINT8 Gpe1BlkLen; - UINT8 Gpe1Base; - UINT8 Reserved3; - UINT16 PLvl2Lat; - UINT16 PLvl3Lat; - UINT16 FlushSize; - UINT16 FlushStride; - UINT8 DutyOffset; - UINT8 DutyWidth; - UINT8 DayAlrm; - UINT8 MonAlrm; - UINT8 Century; - UINT8 Reserved4; - UINT8 Reserved5; - UINT8 Reserved6; - UINT32 Flags; -} EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE; - -/// -/// FADT Version (as defined in ACPI 1.0b specification). -/// -#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x01 - -#define EFI_ACPI_1_0_INT_MODE_DUAL_PIC 0 -#define EFI_ACPI_1_0_INT_MODE_MULTIPLE_APIC 1 - -// -// Fixed ACPI Description Table Fixed Feature Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_1_0_WBINVD BIT0 -#define EFI_ACPI_1_0_WBINVD_FLUSH BIT1 -#define EFI_ACPI_1_0_PROC_C1 BIT2 -#define EFI_ACPI_1_0_P_LVL2_UP BIT3 -#define EFI_ACPI_1_0_PWR_BUTTON BIT4 -#define EFI_ACPI_1_0_SLP_BUTTON BIT5 -#define EFI_ACPI_1_0_FIX_RTC BIT6 -#define EFI_ACPI_1_0_RTC_S4 BIT7 -#define EFI_ACPI_1_0_TMR_VAL_EXT BIT8 -#define EFI_ACPI_1_0_DCK_CAP BIT9 - -/// -/// Firmware ACPI Control Structure. -/// -typedef struct { - UINT32 Signature; - UINT32 Length; - UINT32 HardwareSignature; - UINT32 FirmwareWakingVector; - UINT32 GlobalLock; - UINT32 Flags; - UINT8 Reserved[40]; -} EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE; - -/// -/// Firmware Control Structure Feature Flags. -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_1_0_S4BIOS_F BIT0 - -/// -/// Multiple APIC Description Table header definition. The rest of the table -/// must be defined in a platform-specific manner. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 LocalApicAddress; - UINT32 Flags; -} EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; - -/// -/// MADT Revision (as defined in ACPI 1.0b specification). -/// -#define EFI_ACPI_1_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Multiple APIC Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_1_0_PCAT_COMPAT BIT0 - -// -// Multiple APIC Description Table APIC structure types -// All other values between 0x05 an 0xFF are reserved and -// will be ignored by OSPM. -// -#define EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC 0x00 -#define EFI_ACPI_1_0_IO_APIC 0x01 -#define EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE 0x02 -#define EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03 -#define EFI_ACPI_1_0_LOCAL_APIC_NMI 0x04 - -// -// APIC Structure Definitions -// - -/// -/// Processor Local APIC Structure Definition. -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT8 ApicId; - UINT32 Flags; -} EFI_ACPI_1_0_PROCESSOR_LOCAL_APIC_STRUCTURE; - -/// -/// Local APIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_1_0_LOCAL_APIC_ENABLED BIT0 - -/// -/// IO APIC Structure. -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 IoApicId; - UINT8 Reserved; - UINT32 IoApicAddress; - UINT32 SystemVectorBase; -} EFI_ACPI_1_0_IO_APIC_STRUCTURE; - -/// -/// Interrupt Source Override Structure. -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Bus; - UINT8 Source; - UINT32 GlobalSystemInterruptVector; - UINT16 Flags; -} EFI_ACPI_1_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; - -/// -/// Non-Maskable Interrupt Source Structure. -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT32 GlobalSystemInterruptVector; -} EFI_ACPI_1_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; - -/// -/// Local APIC NMI Structure. -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT16 Flags; - UINT8 LocalApicInti; -} EFI_ACPI_1_0_LOCAL_APIC_NMI_STRUCTURE; - -/// -/// Smart Battery Description Table (SBST) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 WarningEnergyLevel; - UINT32 LowEnergyLevel; - UINT32 CriticalEnergyLevel; -} EFI_ACPI_1_0_SMART_BATTERY_DESCRIPTION_TABLE; - -// -// Known table signatures -// - -/// -/// "RSD PTR " Root System Description Pointer. -/// -#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') - -/// -/// "APIC" Multiple APIC Description Table. -/// -#define EFI_ACPI_1_0_APIC_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') - -/// -/// "DSDT" Differentiated System Description Table. -/// -#define EFI_ACPI_1_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') - -/// -/// "FACS" Firmware ACPI Control Structure. -/// -#define EFI_ACPI_1_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') - -/// -/// "FACP" Fixed ACPI Description Table. -/// -#define EFI_ACPI_1_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') - -/// -/// "PSDT" Persistent System Description Table. -/// -#define EFI_ACPI_1_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') - -/// -/// "RSDT" Root System Description Table. -/// -#define EFI_ACPI_1_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') - -/// -/// "SBST" Smart Battery Specification Table. -/// -#define EFI_ACPI_1_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') - -/// -/// "SSDT" Secondary System Description Table. -/// -#define EFI_ACPI_1_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') - -#pragma pack() - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi20.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi20.h deleted file mode 100644 index 706d2fcf77..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi20.h +++ /dev/null @@ -1,545 +0,0 @@ -/** @file - ACPI 2.0 definitions from the ACPI Specification, revision 2.0 - - Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -**/ - -#ifndef _ACPI_2_0_H_ -#define _ACPI_2_0_H_ - -#include - -// -// Define for Desriptor -// -#define ACPI_LARGE_GENERIC_REGISTER_DESCRIPTOR_NAME 0x02 - -#define ACPI_GENERIC_REGISTER_DESCRIPTOR 0x82 - -// -// Ensure proper structure formats -// -#pragma pack(1) - -/// -/// Generic Register Descriptor -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 AddressSpaceId; - UINT8 RegisterBitWidth; - UINT8 RegisterBitOffset; - UINT8 AddressSize; - UINT64 RegisterAddress; -} EFI_ACPI_GENERIC_REGISTER_DESCRIPTOR; - -#pragma pack() - -// -// Ensure proper structure formats -// -#pragma pack(1) - -/// -/// ACPI 2.0 Generic Address Space definition -/// -typedef struct { - UINT8 AddressSpaceId; - UINT8 RegisterBitWidth; - UINT8 RegisterBitOffset; - UINT8 Reserved; - UINT64 Address; -} EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE; - -// -// Generic Address Space Address IDs -// -#define EFI_ACPI_2_0_SYSTEM_MEMORY 0 -#define EFI_ACPI_2_0_SYSTEM_IO 1 -#define EFI_ACPI_2_0_PCI_CONFIGURATION_SPACE 2 -#define EFI_ACPI_2_0_EMBEDDED_CONTROLLER 3 -#define EFI_ACPI_2_0_SMBUS 4 -#define EFI_ACPI_2_0_FUNCTIONAL_FIXED_HARDWARE 0x7F - -// -// ACPI 2.0 table structures -// - -/// -/// Root System Description Pointer Structure -/// -typedef struct { - UINT64 Signature; - UINT8 Checksum; - UINT8 OemId[6]; - UINT8 Revision; - UINT32 RsdtAddress; - UINT32 Length; - UINT64 XsdtAddress; - UINT8 ExtendedChecksum; - UINT8 Reserved[3]; -} EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER; - -/// -/// RSD_PTR Revision (as defined in ACPI 2.0 spec.) -/// -#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 - -/// -/// Common table header, this prefaces all ACPI tables, including FACS, but -/// excluding the RSD PTR structure -/// -typedef struct { - UINT32 Signature; - UINT32 Length; -} EFI_ACPI_2_0_COMMON_HEADER; - -// -// Root System Description Table -// No definition needed as it is a common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. -// - -/// -/// RSDT Revision (as defined in ACPI 2.0 spec.) -/// -#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 - -// -// Extended System Description Table -// No definition needed as it is a common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers. -// - -/// -/// XSDT Revision (as defined in ACPI 2.0 spec.) -/// -#define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Fixed ACPI Description Table Structure (FADT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 FirmwareCtrl; - UINT32 Dsdt; - UINT8 Reserved0; - UINT8 PreferredPmProfile; - UINT16 SciInt; - UINT32 SmiCmd; - UINT8 AcpiEnable; - UINT8 AcpiDisable; - UINT8 S4BiosReq; - UINT8 PstateCnt; - UINT32 Pm1aEvtBlk; - UINT32 Pm1bEvtBlk; - UINT32 Pm1aCntBlk; - UINT32 Pm1bCntBlk; - UINT32 Pm2CntBlk; - UINT32 PmTmrBlk; - UINT32 Gpe0Blk; - UINT32 Gpe1Blk; - UINT8 Pm1EvtLen; - UINT8 Pm1CntLen; - UINT8 Pm2CntLen; - UINT8 PmTmrLen; - UINT8 Gpe0BlkLen; - UINT8 Gpe1BlkLen; - UINT8 Gpe1Base; - UINT8 CstCnt; - UINT16 PLvl2Lat; - UINT16 PLvl3Lat; - UINT16 FlushSize; - UINT16 FlushStride; - UINT8 DutyOffset; - UINT8 DutyWidth; - UINT8 DayAlrm; - UINT8 MonAlrm; - UINT8 Century; - UINT16 IaPcBootArch; - UINT8 Reserved1; - UINT32 Flags; - EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE ResetReg; - UINT8 ResetValue; - UINT8 Reserved2[3]; - UINT64 XFirmwareCtrl; - UINT64 XDsdt; - EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; - EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; - EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; - EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; - EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; - EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; - EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; - EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; -} EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE; - -/// -/// FADT Version (as defined in ACPI 2.0 spec.) -/// -#define EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x03 - -// -// Fixed ACPI Description Table Preferred Power Management Profile -// -#define EFI_ACPI_2_0_PM_PROFILE_UNSPECIFIED 0 -#define EFI_ACPI_2_0_PM_PROFILE_DESKTOP 1 -#define EFI_ACPI_2_0_PM_PROFILE_MOBILE 2 -#define EFI_ACPI_2_0_PM_PROFILE_WORKSTATION 3 -#define EFI_ACPI_2_0_PM_PROFILE_ENTERPRISE_SERVER 4 -#define EFI_ACPI_2_0_PM_PROFILE_SOHO_SERVER 5 -#define EFI_ACPI_2_0_PM_PROFILE_APPLIANCE_PC 6 - -// -// Fixed ACPI Description Table Boot Architecture Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_2_0_LEGACY_DEVICES BIT0 -#define EFI_ACPI_2_0_8042 BIT1 - -// -// Fixed ACPI Description Table Fixed Feature Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_2_0_WBINVD BIT0 -#define EFI_ACPI_2_0_WBINVD_FLUSH BIT1 -#define EFI_ACPI_2_0_PROC_C1 BIT2 -#define EFI_ACPI_2_0_P_LVL2_UP BIT3 -#define EFI_ACPI_2_0_PWR_BUTTON BIT4 -#define EFI_ACPI_2_0_SLP_BUTTON BIT5 -#define EFI_ACPI_2_0_FIX_RTC BIT6 -#define EFI_ACPI_2_0_RTC_S4 BIT7 -#define EFI_ACPI_2_0_TMR_VAL_EXT BIT8 -#define EFI_ACPI_2_0_DCK_CAP BIT9 -#define EFI_ACPI_2_0_RESET_REG_SUP BIT10 -#define EFI_ACPI_2_0_SEALED_CASE BIT11 -#define EFI_ACPI_2_0_HEADLESS BIT12 -#define EFI_ACPI_2_0_CPU_SW_SLP BIT13 - -/// -/// Firmware ACPI Control Structure -/// -typedef struct { - UINT32 Signature; - UINT32 Length; - UINT32 HardwareSignature; - UINT32 FirmwareWakingVector; - UINT32 GlobalLock; - UINT32 Flags; - UINT64 XFirmwareWakingVector; - UINT8 Version; - UINT8 Reserved[31]; -} EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE; - -/// -/// FACS Version (as defined in ACPI 2.0 spec.) -/// -#define EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x01 - -/// -/// Firmware Control Structure Feature Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_2_0_S4BIOS_F BIT0 - -/// -/// Multiple APIC Description Table header definition. The rest of the table -/// must be defined in a platform specific manner. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 LocalApicAddress; - UINT32 Flags; -} EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; - -/// -/// MADT Revision (as defined in ACPI 2.0 spec.) -/// -#define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Multiple APIC Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_2_0_PCAT_COMPAT BIT0 - -// -// Multiple APIC Description Table APIC structure types -// All other values between 0x09 an 0xFF are reserved and -// will be ignored by OSPM. -// -#define EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC 0x00 -#define EFI_ACPI_2_0_IO_APIC 0x01 -#define EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE 0x02 -#define EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03 -#define EFI_ACPI_2_0_LOCAL_APIC_NMI 0x04 -#define EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 -#define EFI_ACPI_2_0_IO_SAPIC 0x06 -#define EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC 0x07 -#define EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES 0x08 - -// -// APIC Structure Definitions -// - -/// -/// Processor Local APIC Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT8 ApicId; - UINT32 Flags; -} EFI_ACPI_2_0_PROCESSOR_LOCAL_APIC_STRUCTURE; - -/// -/// Local APIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_2_0_LOCAL_APIC_ENABLED BIT0 - -/// -/// IO APIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 IoApicId; - UINT8 Reserved; - UINT32 IoApicAddress; - UINT32 GlobalSystemInterruptBase; -} EFI_ACPI_2_0_IO_APIC_STRUCTURE; - -/// -/// Interrupt Source Override Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Bus; - UINT8 Source; - UINT32 GlobalSystemInterrupt; - UINT16 Flags; -} EFI_ACPI_2_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; - -/// -/// Non-Maskable Interrupt Source Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT32 GlobalSystemInterrupt; -} EFI_ACPI_2_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; - -/// -/// Local APIC NMI Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT16 Flags; - UINT8 LocalApicLint; -} EFI_ACPI_2_0_LOCAL_APIC_NMI_STRUCTURE; - -/// -/// Local APIC Address Override Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT64 LocalApicAddress; -} EFI_ACPI_2_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE; - -/// -/// IO SAPIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 IoApicId; - UINT8 Reserved; - UINT32 GlobalSystemInterruptBase; - UINT64 IoSapicAddress; -} EFI_ACPI_2_0_IO_SAPIC_STRUCTURE; - -/// -/// Local SAPIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT8 LocalSapicId; - UINT8 LocalSapicEid; - UINT8 Reserved[3]; - UINT32 Flags; -} EFI_ACPI_2_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE; - -/// -/// Platform Interrupt Sources Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT8 InterruptType; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT8 IoSapicVector; - UINT32 GlobalSystemInterrupt; - UINT32 Reserved; -} EFI_ACPI_2_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE; - -/// -/// Smart Battery Description Table (SBST) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 WarningEnergyLevel; - UINT32 LowEnergyLevel; - UINT32 CriticalEnergyLevel; -} EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE; - -/// -/// SBST Version (as defined in ACPI 2.0 spec.) -/// -#define EFI_ACPI_2_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Embedded Controller Boot Resources Table (ECDT) -/// The table is followed by a null terminated ASCII string that contains -/// a fully qualified reference to the name space object. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE EcControl; - EFI_ACPI_2_0_GENERIC_ADDRESS_STRUCTURE EcData; - UINT32 Uid; - UINT8 GpeBit; -} EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE; - -/// -/// ECDT Version (as defined in ACPI 2.0 spec.) -/// -#define EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01 - -// -// Known table signatures -// - -/// -/// "RSD PTR " Root System Description Pointer -/// -#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') - -/// -/// "SPIC" Multiple SAPIC Description Table -/// -/// BUGBUG: Don't know where this came from except SR870BN4 uses it. -/// #define EFI_ACPI_2_0_MULTIPLE_SAPIC_DESCRIPTION_TABLE_SIGNATURE 0x43495053 -/// -#define EFI_ACPI_2_0_MULTIPLE_SAPIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') - -/// -/// "BOOT" MS Simple Boot Spec -/// -#define EFI_ACPI_2_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T') - -/// -/// "DBGP" MS Bebug Port Spec -/// -#define EFI_ACPI_2_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P') - -/// -/// "DSDT" Differentiated System Description Table -/// -#define EFI_ACPI_2_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') - -/// -/// "ECDT" Embedded Controller Boot Resources Table -/// -#define EFI_ACPI_2_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T') - -/// -/// "ETDT" Event Timer Description Table -/// -#define EFI_ACPI_2_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T') - -/// -/// "FACS" Firmware ACPI Control Structure -/// -#define EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') - -/// -/// "FACP" Fixed ACPI Description Table -/// -#define EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') - -/// -/// "APIC" Multiple APIC Description Table -/// -#define EFI_ACPI_2_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') - -/// -/// "PSDT" Persistent System Description Table -/// -#define EFI_ACPI_2_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') - -/// -/// "RSDT" Root System Description Table -/// -#define EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') - -/// -/// "SBST" Smart Battery Specification Table -/// -#define EFI_ACPI_2_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') - -/// -/// "SLIT" System Locality Information Table -/// -#define EFI_ACPI_2_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T') - -/// -/// "SPCR" Serial Port Concole Redirection Table -/// -#define EFI_ACPI_2_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R') - -/// -/// "SRAT" Static Resource Affinity Table -/// -#define EFI_ACPI_2_0_STATIC_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T') - -/// -/// "SSDT" Secondary System Description Table -/// -#define EFI_ACPI_2_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') - -/// -/// "SPMI" Server Platform Management Interface Table -/// -#define EFI_ACPI_2_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I') - -/// -/// "XSDT" Extended System Description Table -/// -#define EFI_ACPI_2_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T') - -/// -/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table -/// -#define EFI_ACPI_2_0_MEMORY_MAPPED_CONFIGURATION_BASE_ADDRESS_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G') - -#pragma pack() - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi30.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi30.h deleted file mode 100644 index ebf0a23592..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi30.h +++ /dev/null @@ -1,729 +0,0 @@ -/** @file - ACPI 3.0 definitions from the ACPI Specification Revision 3.0b October 10, 2006 - - Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -**/ - -#ifndef _ACPI_3_0_H_ -#define _ACPI_3_0_H_ - -#include - -// -// Define for Desriptor -// -#define ACPI_LARGE_EXTENDED_ADDRESS_SPACE_DESCRIPTOR_NAME 0x0B - -#define ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR 0x8B - -// -// Ensure proper structure formats -// -#pragma pack(1) - -/// -/// Extended Address Space Descriptor -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 ResType; - UINT8 GenFlag; - UINT8 SpecificFlag; - UINT8 RevisionId; - UINT8 Reserved; - UINT64 AddrSpaceGranularity; - UINT64 AddrRangeMin; - UINT64 AddrRangeMax; - UINT64 AddrTranslationOffset; - UINT64 AddrLen; - UINT64 TypeSpecificAttribute; -} EFI_ACPI_EXTENDED_ADDRESS_SPACE_DESCRIPTOR; - -#pragma pack() - -// -// Memory Type Specific Flags -// -#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UC 0x0000000000000001 -#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WC 0x0000000000000002 -#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WT 0x0000000000000004 -#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_WB 0x0000000000000008 -#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_UCE 0x0000000000000010 -#define EFI_ACPI_MEMORY_TYPE_SPECIFIC_ATTRIBUTES_NV 0x0000000000008000 - -// -// Ensure proper structure formats -// -#pragma pack(1) - -/// -/// ACPI 3.0 Generic Address Space definition -/// -typedef struct { - UINT8 AddressSpaceId; - UINT8 RegisterBitWidth; - UINT8 RegisterBitOffset; - UINT8 AccessSize; - UINT64 Address; -} EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE; - -// -// Generic Address Space Address IDs -// -#define EFI_ACPI_3_0_SYSTEM_MEMORY 0 -#define EFI_ACPI_3_0_SYSTEM_IO 1 -#define EFI_ACPI_3_0_PCI_CONFIGURATION_SPACE 2 -#define EFI_ACPI_3_0_EMBEDDED_CONTROLLER 3 -#define EFI_ACPI_3_0_SMBUS 4 -#define EFI_ACPI_3_0_FUNCTIONAL_FIXED_HARDWARE 0x7F - -// -// Generic Address Space Access Sizes -// -#define EFI_ACPI_3_0_UNDEFINED 0 -#define EFI_ACPI_3_0_BYTE 1 -#define EFI_ACPI_3_0_WORD 2 -#define EFI_ACPI_3_0_DWORD 3 -#define EFI_ACPI_3_0_QWORD 4 - -// -// ACPI 3.0 table structures -// - -/// -/// Root System Description Pointer Structure -/// -typedef struct { - UINT64 Signature; - UINT8 Checksum; - UINT8 OemId[6]; - UINT8 Revision; - UINT32 RsdtAddress; - UINT32 Length; - UINT64 XsdtAddress; - UINT8 ExtendedChecksum; - UINT8 Reserved[3]; -} EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER; - -/// -/// RSD_PTR Revision (as defined in ACPI 3.0b spec.) -/// -#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 3.0b) says current value is 2 - -/// -/// Common table header, this prefaces all ACPI tables, including FACS, but -/// excluding the RSD PTR structure -/// -typedef struct { - UINT32 Signature; - UINT32 Length; -} EFI_ACPI_3_0_COMMON_HEADER; - -// -// Root System Description Table -// No definition needed as it is a common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. -// - -/// -/// RSDT Revision (as defined in ACPI 3.0 spec.) -/// -#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 - -// -// Extended System Description Table -// No definition needed as it is a common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers. -// - -/// -/// XSDT Revision (as defined in ACPI 3.0 spec.) -/// -#define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Fixed ACPI Description Table Structure (FADT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 FirmwareCtrl; - UINT32 Dsdt; - UINT8 Reserved0; - UINT8 PreferredPmProfile; - UINT16 SciInt; - UINT32 SmiCmd; - UINT8 AcpiEnable; - UINT8 AcpiDisable; - UINT8 S4BiosReq; - UINT8 PstateCnt; - UINT32 Pm1aEvtBlk; - UINT32 Pm1bEvtBlk; - UINT32 Pm1aCntBlk; - UINT32 Pm1bCntBlk; - UINT32 Pm2CntBlk; - UINT32 PmTmrBlk; - UINT32 Gpe0Blk; - UINT32 Gpe1Blk; - UINT8 Pm1EvtLen; - UINT8 Pm1CntLen; - UINT8 Pm2CntLen; - UINT8 PmTmrLen; - UINT8 Gpe0BlkLen; - UINT8 Gpe1BlkLen; - UINT8 Gpe1Base; - UINT8 CstCnt; - UINT16 PLvl2Lat; - UINT16 PLvl3Lat; - UINT16 FlushSize; - UINT16 FlushStride; - UINT8 DutyOffset; - UINT8 DutyWidth; - UINT8 DayAlrm; - UINT8 MonAlrm; - UINT8 Century; - UINT16 IaPcBootArch; - UINT8 Reserved1; - UINT32 Flags; - EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE ResetReg; - UINT8 ResetValue; - UINT8 Reserved2[3]; - UINT64 XFirmwareCtrl; - UINT64 XDsdt; - EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; - EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; - EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; - EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; - EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; - EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; - EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; - EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; -} EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE; - -/// -/// FADT Version (as defined in ACPI 3.0 spec.) -/// -#define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x04 - -// -// Fixed ACPI Description Table Preferred Power Management Profile -// -#define EFI_ACPI_3_0_PM_PROFILE_UNSPECIFIED 0 -#define EFI_ACPI_3_0_PM_PROFILE_DESKTOP 1 -#define EFI_ACPI_3_0_PM_PROFILE_MOBILE 2 -#define EFI_ACPI_3_0_PM_PROFILE_WORKSTATION 3 -#define EFI_ACPI_3_0_PM_PROFILE_ENTERPRISE_SERVER 4 -#define EFI_ACPI_3_0_PM_PROFILE_SOHO_SERVER 5 -#define EFI_ACPI_3_0_PM_PROFILE_APPLIANCE_PC 6 -#define EFI_ACPI_3_0_PM_PROFILE_PERFORMANCE_SERVER 7 - -// -// Fixed ACPI Description Table Boot Architecture Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_3_0_LEGACY_DEVICES BIT0 -#define EFI_ACPI_3_0_8042 BIT1 -#define EFI_ACPI_3_0_VGA_NOT_PRESENT BIT2 -#define EFI_ACPI_3_0_MSI_NOT_SUPPORTED BIT3 -#define EFI_ACPI_3_0_PCIE_ASPM_CONTROLS BIT4 - -// -// Fixed ACPI Description Table Fixed Feature Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_3_0_WBINVD BIT0 -#define EFI_ACPI_3_0_WBINVD_FLUSH BIT1 -#define EFI_ACPI_3_0_PROC_C1 BIT2 -#define EFI_ACPI_3_0_P_LVL2_UP BIT3 -#define EFI_ACPI_3_0_PWR_BUTTON BIT4 -#define EFI_ACPI_3_0_SLP_BUTTON BIT5 -#define EFI_ACPI_3_0_FIX_RTC BIT6 -#define EFI_ACPI_3_0_RTC_S4 BIT7 -#define EFI_ACPI_3_0_TMR_VAL_EXT BIT8 -#define EFI_ACPI_3_0_DCK_CAP BIT9 -#define EFI_ACPI_3_0_RESET_REG_SUP BIT10 -#define EFI_ACPI_3_0_SEALED_CASE BIT11 -#define EFI_ACPI_3_0_HEADLESS BIT12 -#define EFI_ACPI_3_0_CPU_SW_SLP BIT13 -#define EFI_ACPI_3_0_PCI_EXP_WAK BIT14 -#define EFI_ACPI_3_0_USE_PLATFORM_CLOCK BIT15 -#define EFI_ACPI_3_0_S4_RTC_STS_VALID BIT16 -#define EFI_ACPI_3_0_REMOTE_POWER_ON_CAPABLE BIT17 -#define EFI_ACPI_3_0_FORCE_APIC_CLUSTER_MODEL BIT18 -#define EFI_ACPI_3_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19 - -/// -/// Firmware ACPI Control Structure -/// -typedef struct { - UINT32 Signature; - UINT32 Length; - UINT32 HardwareSignature; - UINT32 FirmwareWakingVector; - UINT32 GlobalLock; - UINT32 Flags; - UINT64 XFirmwareWakingVector; - UINT8 Version; - UINT8 Reserved[31]; -} EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE; - -/// -/// FACS Version (as defined in ACPI 3.0 spec.) -/// -#define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x01 - -/// -/// Firmware Control Structure Feature Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_3_0_S4BIOS_F BIT0 - -// -// Differentiated System Description Table, -// Secondary System Description Table -// and Persistent System Description Table, -// no definition needed as they are common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block. -// -#define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 -#define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 - -/// -/// Multiple APIC Description Table header definition. The rest of the table -/// must be defined in a platform specific manner. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 LocalApicAddress; - UINT32 Flags; -} EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; - -/// -/// MADT Revision (as defined in ACPI 3.0 spec.) -/// -#define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x02 - -/// -/// Multiple APIC Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_3_0_PCAT_COMPAT BIT0 - -// -// Multiple APIC Description Table APIC structure types -// All other values between 0x09 an 0xFF are reserved and -// will be ignored by OSPM. -// -#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC 0x00 -#define EFI_ACPI_3_0_IO_APIC 0x01 -#define EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE 0x02 -#define EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03 -#define EFI_ACPI_3_0_LOCAL_APIC_NMI 0x04 -#define EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 -#define EFI_ACPI_3_0_IO_SAPIC 0x06 -#define EFI_ACPI_3_0_LOCAL_SAPIC 0x07 -#define EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES 0x08 - -// -// APIC Structure Definitions -// - -/// -/// Processor Local APIC Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT8 ApicId; - UINT32 Flags; -} EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_STRUCTURE; - -/// -/// Local APIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_3_0_LOCAL_APIC_ENABLED BIT0 - -/// -/// IO APIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 IoApicId; - UINT8 Reserved; - UINT32 IoApicAddress; - UINT32 GlobalSystemInterruptBase; -} EFI_ACPI_3_0_IO_APIC_STRUCTURE; - -/// -/// Interrupt Source Override Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Bus; - UINT8 Source; - UINT32 GlobalSystemInterrupt; - UINT16 Flags; -} EFI_ACPI_3_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; - -/// -/// Platform Interrupt Sources Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT8 InterruptType; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT8 IoSapicVector; - UINT32 GlobalSystemInterrupt; - UINT32 PlatformInterruptSourceFlags; - UINT8 CpeiProcessorOverride; - UINT8 Reserved[31]; -} EFI_ACPI_3_0_PLATFORM_INTERRUPT_APIC_STRUCTURE; - -// -// MPS INTI flags. -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_3_0_POLARITY (3 << 0) -#define EFI_ACPI_3_0_TRIGGER_MODE (3 << 2) - -/// -/// Non-Maskable Interrupt Source Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT32 GlobalSystemInterrupt; -} EFI_ACPI_3_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; - -/// -/// Local APIC NMI Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT16 Flags; - UINT8 LocalApicLint; -} EFI_ACPI_3_0_LOCAL_APIC_NMI_STRUCTURE; - -/// -/// Local APIC Address Override Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT64 LocalApicAddress; -} EFI_ACPI_3_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE; - -/// -/// IO SAPIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 IoApicId; - UINT8 Reserved; - UINT32 GlobalSystemInterruptBase; - UINT64 IoSapicAddress; -} EFI_ACPI_3_0_IO_SAPIC_STRUCTURE; - -/// -/// Local SAPIC Structure -/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT8 LocalSapicId; - UINT8 LocalSapicEid; - UINT8 Reserved[3]; - UINT32 Flags; - UINT32 ACPIProcessorUIDValue; -} EFI_ACPI_3_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE; - -/// -/// Platform Interrupt Sources Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT8 InterruptType; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT8 IoSapicVector; - UINT32 GlobalSystemInterrupt; - UINT32 PlatformInterruptSourceFlags; -} EFI_ACPI_3_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE; - -/// -/// Platform Interrupt Source Flags. -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_3_0_CPEI_PROCESSOR_OVERRIDE BIT0 - -/// -/// Smart Battery Description Table (SBST) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 WarningEnergyLevel; - UINT32 LowEnergyLevel; - UINT32 CriticalEnergyLevel; -} EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE; - -/// -/// SBST Version (as defined in ACPI 3.0 spec.) -/// -#define EFI_ACPI_3_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Embedded Controller Boot Resources Table (ECDT) -/// The table is followed by a null terminated ASCII string that contains -/// a fully qualified reference to the name space object. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE EcControl; - EFI_ACPI_3_0_GENERIC_ADDRESS_STRUCTURE EcData; - UINT32 Uid; - UINT8 GpeBit; -} EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE; - -/// -/// ECDT Version (as defined in ACPI 3.0 spec.) -/// -#define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01 - -/// -/// System Resource Affinity Table (SRAT. The rest of the table -/// must be defined in a platform specific manner. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 Reserved1; ///< Must be set to 1 - UINT64 Reserved2; -} EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER; - -/// -/// SRAT Version (as defined in ACPI 3.0 spec.) -/// -#define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x02 - -// -// SRAT structure types. -// All other values between 0x02 an 0xFF are reserved and -// will be ignored by OSPM. -// -#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00 -#define EFI_ACPI_3_0_MEMORY_AFFINITY 0x01 - -/// -/// Processor Local APIC/SAPIC Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 ProximityDomain7To0; - UINT8 ApicId; - UINT32 Flags; - UINT8 LocalSapicEid; - UINT8 ProximityDomain31To8[3]; - UINT8 Reserved[4]; -} EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE; - -/// -/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_3_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0) - -/// -/// Memory Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT32 ProximityDomain; - UINT16 Reserved1; - UINT32 AddressBaseLow; - UINT32 AddressBaseHigh; - UINT32 LengthLow; - UINT32 LengthHigh; - UINT32 Reserved2; - UINT32 Flags; - UINT64 Reserved3; -} EFI_ACPI_3_0_MEMORY_AFFINITY_STRUCTURE; - -// -// Memory Flags. All other bits are reserved and must be 0. -// -#define EFI_ACPI_3_0_MEMORY_ENABLED (1 << 0) -#define EFI_ACPI_3_0_MEMORY_HOT_PLUGGABLE (1 << 1) -#define EFI_ACPI_3_0_MEMORY_NONVOLATILE (1 << 2) - -/// -/// System Locality Distance Information Table (SLIT). -/// The rest of the table is a matrix. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT64 NumberOfSystemLocalities; -} EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER; - -/// -/// SLIT Version (as defined in ACPI 3.0 spec.) -/// -#define EFI_ACPI_3_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01 - -// -// Known table signatures -// - -/// -/// "RSD PTR " Root System Description Pointer -/// -#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') - -/// -/// "APIC" Multiple APIC Description Table -/// -#define EFI_ACPI_3_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') - -/// -/// "DSDT" Differentiated System Description Table -/// -#define EFI_ACPI_3_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') - -/// -/// "ECDT" Embedded Controller Boot Resources Table -/// -#define EFI_ACPI_3_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T') - -/// -/// "FACP" Fixed ACPI Description Table -/// -#define EFI_ACPI_3_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') - -/// -/// "FACS" Firmware ACPI Control Structure -/// -#define EFI_ACPI_3_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') - -/// -/// "PSDT" Persistent System Description Table -/// -#define EFI_ACPI_3_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') - -/// -/// "RSDT" Root System Description Table -/// -#define EFI_ACPI_3_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') - -/// -/// "SBST" Smart Battery Specification Table -/// -#define EFI_ACPI_3_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') - -/// -/// "SLIT" System Locality Information Table -/// -#define EFI_ACPI_3_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T') - -/// -/// "SRAT" System Resource Affinity Table -/// -#define EFI_ACPI_3_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T') - -/// -/// "SSDT" Secondary System Description Table -/// -#define EFI_ACPI_3_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') - -/// -/// "XSDT" Extended System Description Table -/// -#define EFI_ACPI_3_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T') - -/// -/// "BOOT" MS Simple Boot Spec -/// -#define EFI_ACPI_3_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T') - -/// -/// "CPEP" Corrected Platform Error Polling Table -/// -#define EFI_ACPI_3_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P') - -/// -/// "DBGP" MS Debug Port Spec -/// -#define EFI_ACPI_3_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P') - -/// -/// "ETDT" Event Timer Description Table -/// -#define EFI_ACPI_3_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T') - -/// -/// "HPET" IA-PC High Precision Event Timer Table -/// -#define EFI_ACPI_3_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T') - -/// -/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table -/// -#define EFI_ACPI_3_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G') - -/// -/// "SPCR" Serial Port Concole Redirection Table -/// -#define EFI_ACPI_3_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R') - -/// -/// "SPMI" Server Platform Management Interface Table -/// -#define EFI_ACPI_3_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I') - -/// -/// "TCPA" Trusted Computing Platform Alliance Capabilities Table -/// -#define EFI_ACPI_3_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A') - -/// -/// "WDRT" Watchdog Resource Table -/// -#define EFI_ACPI_3_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T') - -/// -/// "WDAT" Watchdog Action Table -/// -#define EFI_ACPI_3_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T') - -/// -/// "WSPT" Windows Specific Properties Table -/// -#define EFI_ACPI_3_0_WINDOWS_SPECIFIC_PROPERTIES_TABLE_SIGNATURE SIGNATURE_32('W', 'S', 'P', 'T') - -/// -/// "iBFT" iSCSI Boot Firmware Table -/// -#define EFI_ACPI_3_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T') - -#pragma pack() - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi40.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi40.h deleted file mode 100644 index 42d288a4cc..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi40.h +++ /dev/null @@ -1,1309 +0,0 @@ -/** @file - ACPI 4.0 definitions from the ACPI Specification Revision 4.0a April 5, 2010 - - Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -**/ - -#ifndef _ACPI_4_0_H_ -#define _ACPI_4_0_H_ - -#include - -// -// Ensure proper structure formats -// -#pragma pack(1) - -/// -/// ACPI 4.0 Generic Address Space definition -/// -typedef struct { - UINT8 AddressSpaceId; - UINT8 RegisterBitWidth; - UINT8 RegisterBitOffset; - UINT8 AccessSize; - UINT64 Address; -} EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE; - -// -// Generic Address Space Address IDs -// -#define EFI_ACPI_4_0_SYSTEM_MEMORY 0 -#define EFI_ACPI_4_0_SYSTEM_IO 1 -#define EFI_ACPI_4_0_PCI_CONFIGURATION_SPACE 2 -#define EFI_ACPI_4_0_EMBEDDED_CONTROLLER 3 -#define EFI_ACPI_4_0_SMBUS 4 -#define EFI_ACPI_4_0_FUNCTIONAL_FIXED_HARDWARE 0x7F - -// -// Generic Address Space Access Sizes -// -#define EFI_ACPI_4_0_UNDEFINED 0 -#define EFI_ACPI_4_0_BYTE 1 -#define EFI_ACPI_4_0_WORD 2 -#define EFI_ACPI_4_0_DWORD 3 -#define EFI_ACPI_4_0_QWORD 4 - -// -// ACPI 4.0 table structures -// - -/// -/// Root System Description Pointer Structure -/// -typedef struct { - UINT64 Signature; - UINT8 Checksum; - UINT8 OemId[6]; - UINT8 Revision; - UINT32 RsdtAddress; - UINT32 Length; - UINT64 XsdtAddress; - UINT8 ExtendedChecksum; - UINT8 Reserved[3]; -} EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER; - -/// -/// RSD_PTR Revision (as defined in ACPI 4.0b spec.) -/// -#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 4.0a) says current value is 2 - -/// -/// Common table header, this prefaces all ACPI tables, including FACS, but -/// excluding the RSD PTR structure -/// -typedef struct { - UINT32 Signature; - UINT32 Length; -} EFI_ACPI_4_0_COMMON_HEADER; - -// -// Root System Description Table -// No definition needed as it is a common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. -// - -/// -/// RSDT Revision (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 - -// -// Extended System Description Table -// No definition needed as it is a common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers. -// - -/// -/// XSDT Revision (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Fixed ACPI Description Table Structure (FADT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 FirmwareCtrl; - UINT32 Dsdt; - UINT8 Reserved0; - UINT8 PreferredPmProfile; - UINT16 SciInt; - UINT32 SmiCmd; - UINT8 AcpiEnable; - UINT8 AcpiDisable; - UINT8 S4BiosReq; - UINT8 PstateCnt; - UINT32 Pm1aEvtBlk; - UINT32 Pm1bEvtBlk; - UINT32 Pm1aCntBlk; - UINT32 Pm1bCntBlk; - UINT32 Pm2CntBlk; - UINT32 PmTmrBlk; - UINT32 Gpe0Blk; - UINT32 Gpe1Blk; - UINT8 Pm1EvtLen; - UINT8 Pm1CntLen; - UINT8 Pm2CntLen; - UINT8 PmTmrLen; - UINT8 Gpe0BlkLen; - UINT8 Gpe1BlkLen; - UINT8 Gpe1Base; - UINT8 CstCnt; - UINT16 PLvl2Lat; - UINT16 PLvl3Lat; - UINT16 FlushSize; - UINT16 FlushStride; - UINT8 DutyOffset; - UINT8 DutyWidth; - UINT8 DayAlrm; - UINT8 MonAlrm; - UINT8 Century; - UINT16 IaPcBootArch; - UINT8 Reserved1; - UINT32 Flags; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE ResetReg; - UINT8 ResetValue; - UINT8 Reserved2[3]; - UINT64 XFirmwareCtrl; - UINT64 XDsdt; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; -} EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE; - -/// -/// FADT Version (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x04 - -// -// Fixed ACPI Description Table Preferred Power Management Profile -// -#define EFI_ACPI_4_0_PM_PROFILE_UNSPECIFIED 0 -#define EFI_ACPI_4_0_PM_PROFILE_DESKTOP 1 -#define EFI_ACPI_4_0_PM_PROFILE_MOBILE 2 -#define EFI_ACPI_4_0_PM_PROFILE_WORKSTATION 3 -#define EFI_ACPI_4_0_PM_PROFILE_ENTERPRISE_SERVER 4 -#define EFI_ACPI_4_0_PM_PROFILE_SOHO_SERVER 5 -#define EFI_ACPI_4_0_PM_PROFILE_APPLIANCE_PC 6 -#define EFI_ACPI_4_0_PM_PROFILE_PERFORMANCE_SERVER 7 - -// -// Fixed ACPI Description Table Boot Architecture Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_4_0_LEGACY_DEVICES BIT0 -#define EFI_ACPI_4_0_8042 BIT1 -#define EFI_ACPI_4_0_VGA_NOT_PRESENT BIT2 -#define EFI_ACPI_4_0_MSI_NOT_SUPPORTED BIT3 -#define EFI_ACPI_4_0_PCIE_ASPM_CONTROLS BIT4 - -// -// Fixed ACPI Description Table Fixed Feature Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_4_0_WBINVD BIT0 -#define EFI_ACPI_4_0_WBINVD_FLUSH BIT1 -#define EFI_ACPI_4_0_PROC_C1 BIT2 -#define EFI_ACPI_4_0_P_LVL2_UP BIT3 -#define EFI_ACPI_4_0_PWR_BUTTON BIT4 -#define EFI_ACPI_4_0_SLP_BUTTON BIT5 -#define EFI_ACPI_4_0_FIX_RTC BIT6 -#define EFI_ACPI_4_0_RTC_S4 BIT7 -#define EFI_ACPI_4_0_TMR_VAL_EXT BIT8 -#define EFI_ACPI_4_0_DCK_CAP BIT9 -#define EFI_ACPI_4_0_RESET_REG_SUP BIT10 -#define EFI_ACPI_4_0_SEALED_CASE BIT11 -#define EFI_ACPI_4_0_HEADLESS BIT12 -#define EFI_ACPI_4_0_CPU_SW_SLP BIT13 -#define EFI_ACPI_4_0_PCI_EXP_WAK BIT14 -#define EFI_ACPI_4_0_USE_PLATFORM_CLOCK BIT15 -#define EFI_ACPI_4_0_S4_RTC_STS_VALID BIT16 -#define EFI_ACPI_4_0_REMOTE_POWER_ON_CAPABLE BIT17 -#define EFI_ACPI_4_0_FORCE_APIC_CLUSTER_MODEL BIT18 -#define EFI_ACPI_4_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19 - -/// -/// Firmware ACPI Control Structure -/// -typedef struct { - UINT32 Signature; - UINT32 Length; - UINT32 HardwareSignature; - UINT32 FirmwareWakingVector; - UINT32 GlobalLock; - UINT32 Flags; - UINT64 XFirmwareWakingVector; - UINT8 Version; - UINT8 Reserved0[3]; - UINT32 OspmFlags; - UINT8 Reserved1[24]; -} EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE; - -/// -/// FACS Version (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02 - -/// -/// Firmware Control Structure Feature Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_4_0_S4BIOS_F BIT0 -#define EFI_ACPI_4_0_64BIT_WAKE_SUPPORTED_F BIT1 - -/// -/// OSPM Enabled Firmware Control Structure Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_4_0_OSPM_64BIT_WAKE__F BIT0 - -// -// Differentiated System Description Table, -// Secondary System Description Table -// and Persistent System Description Table, -// no definition needed as they are common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block. -// -#define EFI_ACPI_4_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 -#define EFI_ACPI_4_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 - -/// -/// Multiple APIC Description Table header definition. The rest of the table -/// must be defined in a platform specific manner. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 LocalApicAddress; - UINT32 Flags; -} EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; - -/// -/// MADT Revision (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03 - -/// -/// Multiple APIC Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_4_0_PCAT_COMPAT BIT0 - -// -// Multiple APIC Description Table APIC structure types -// All other values between 0x0B an 0xFF are reserved and -// will be ignored by OSPM. -// -#define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC 0x00 -#define EFI_ACPI_4_0_IO_APIC 0x01 -#define EFI_ACPI_4_0_INTERRUPT_SOURCE_OVERRIDE 0x02 -#define EFI_ACPI_4_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03 -#define EFI_ACPI_4_0_LOCAL_APIC_NMI 0x04 -#define EFI_ACPI_4_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 -#define EFI_ACPI_4_0_IO_SAPIC 0x06 -#define EFI_ACPI_4_0_LOCAL_SAPIC 0x07 -#define EFI_ACPI_4_0_PLATFORM_INTERRUPT_SOURCES 0x08 -#define EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC 0x09 -#define EFI_ACPI_4_0_LOCAL_X2APIC_NMI 0x0A - -// -// APIC Structure Definitions -// - -/// -/// Processor Local APIC Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT8 ApicId; - UINT32 Flags; -} EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_STRUCTURE; - -/// -/// Local APIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_4_0_LOCAL_APIC_ENABLED BIT0 - -/// -/// IO APIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 IoApicId; - UINT8 Reserved; - UINT32 IoApicAddress; - UINT32 GlobalSystemInterruptBase; -} EFI_ACPI_4_0_IO_APIC_STRUCTURE; - -/// -/// Interrupt Source Override Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Bus; - UINT8 Source; - UINT32 GlobalSystemInterrupt; - UINT16 Flags; -} EFI_ACPI_4_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; - -/// -/// Platform Interrupt Sources Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT8 InterruptType; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT8 IoSapicVector; - UINT32 GlobalSystemInterrupt; - UINT32 PlatformInterruptSourceFlags; - UINT8 CpeiProcessorOverride; - UINT8 Reserved[31]; -} EFI_ACPI_4_0_PLATFORM_INTERRUPT_APIC_STRUCTURE; - -// -// MPS INTI flags. -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_4_0_POLARITY (3 << 0) -#define EFI_ACPI_4_0_TRIGGER_MODE (3 << 2) - -/// -/// Non-Maskable Interrupt Source Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT32 GlobalSystemInterrupt; -} EFI_ACPI_4_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; - -/// -/// Local APIC NMI Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT16 Flags; - UINT8 LocalApicLint; -} EFI_ACPI_4_0_LOCAL_APIC_NMI_STRUCTURE; - -/// -/// Local APIC Address Override Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT64 LocalApicAddress; -} EFI_ACPI_4_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE; - -/// -/// IO SAPIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 IoApicId; - UINT8 Reserved; - UINT32 GlobalSystemInterruptBase; - UINT64 IoSapicAddress; -} EFI_ACPI_4_0_IO_SAPIC_STRUCTURE; - -/// -/// Local SAPIC Structure -/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT8 LocalSapicId; - UINT8 LocalSapicEid; - UINT8 Reserved[3]; - UINT32 Flags; - UINT32 ACPIProcessorUIDValue; -} EFI_ACPI_4_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE; - -/// -/// Platform Interrupt Sources Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT8 InterruptType; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT8 IoSapicVector; - UINT32 GlobalSystemInterrupt; - UINT32 PlatformInterruptSourceFlags; -} EFI_ACPI_4_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE; - -/// -/// Platform Interrupt Source Flags. -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_4_0_CPEI_PROCESSOR_OVERRIDE BIT0 - -/// -/// Processor Local x2APIC Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Reserved[2]; - UINT32 X2ApicId; - UINT32 Flags; - UINT32 AcpiProcessorUid; -} EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE; - -/// -/// Local x2APIC NMI Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT32 AcpiProcessorUid; - UINT8 LocalX2ApicLint; - UINT8 Reserved[3]; -} EFI_ACPI_4_0_LOCAL_X2APIC_NMI_STRUCTURE; - -/// -/// Smart Battery Description Table (SBST) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 WarningEnergyLevel; - UINT32 LowEnergyLevel; - UINT32 CriticalEnergyLevel; -} EFI_ACPI_4_0_SMART_BATTERY_DESCRIPTION_TABLE; - -/// -/// SBST Version (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Embedded Controller Boot Resources Table (ECDT) -/// The table is followed by a null terminated ASCII string that contains -/// a fully qualified reference to the name space object. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE EcControl; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE EcData; - UINT32 Uid; - UINT8 GpeBit; -} EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE; - -/// -/// ECDT Version (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01 - -/// -/// System Resource Affinity Table (SRAT. The rest of the table -/// must be defined in a platform specific manner. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 Reserved1; ///< Must be set to 1 - UINT64 Reserved2; -} EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER; - -/// -/// SRAT Version (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03 - -// -// SRAT structure types. -// All other values between 0x03 an 0xFF are reserved and -// will be ignored by OSPM. -// -#define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00 -#define EFI_ACPI_4_0_MEMORY_AFFINITY 0x01 -#define EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02 - -/// -/// Processor Local APIC/SAPIC Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 ProximityDomain7To0; - UINT8 ApicId; - UINT32 Flags; - UINT8 LocalSapicEid; - UINT8 ProximityDomain31To8[3]; - UINT32 ClockDomain; -} EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE; - -/// -/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_4_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0) - -/// -/// Memory Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT32 ProximityDomain; - UINT16 Reserved1; - UINT32 AddressBaseLow; - UINT32 AddressBaseHigh; - UINT32 LengthLow; - UINT32 LengthHigh; - UINT32 Reserved2; - UINT32 Flags; - UINT64 Reserved3; -} EFI_ACPI_4_0_MEMORY_AFFINITY_STRUCTURE; - -// -// Memory Flags. All other bits are reserved and must be 0. -// -#define EFI_ACPI_4_0_MEMORY_ENABLED (1 << 0) -#define EFI_ACPI_4_0_MEMORY_HOT_PLUGGABLE (1 << 1) -#define EFI_ACPI_4_0_MEMORY_NONVOLATILE (1 << 2) - -/// -/// Processor Local x2APIC Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Reserved1[2]; - UINT32 ProximityDomain; - UINT32 X2ApicId; - UINT32 Flags; - UINT32 ClockDomain; - UINT8 Reserved2[4]; -} EFI_ACPI_4_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE; - -/// -/// System Locality Distance Information Table (SLIT). -/// The rest of the table is a matrix. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT64 NumberOfSystemLocalities; -} EFI_ACPI_4_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER; - -/// -/// SLIT Version (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01 - -/// -/// Corrected Platform Error Polling Table (CPEP) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT8 Reserved[8]; -} EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER; - -/// -/// CPEP Version (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01 - -// -// CPEP processor structure types. -// -#define EFI_ACPI_4_0_CPEP_PROCESSOR_APIC_SAPIC 0x00 - -/// -/// Corrected Platform Error Polling Processor Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT32 PollingInterval; -} EFI_ACPI_4_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE; - -/// -/// Maximum System Characteristics Table (MSCT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 OffsetProxDomInfo; - UINT32 MaximumNumberOfProximityDomains; - UINT32 MaximumNumberOfClockDomains; - UINT64 MaximumPhysicalAddress; -} EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER; - -/// -/// MSCT Version (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01 - -/// -/// Maximum Proximity Domain Information Structure Definition -/// -typedef struct { - UINT8 Revision; - UINT8 Length; - UINT32 ProximityDomainRangeLow; - UINT32 ProximityDomainRangeHigh; - UINT32 MaximumProcessorCapacity; - UINT64 MaximumMemoryCapacity; -} EFI_ACPI_4_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE; - -/// -/// Boot Error Record Table (BERT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 BootErrorRegionLength; - UINT64 BootErrorRegion; -} EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_HEADER; - -/// -/// BERT Version (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01 - -/// -/// Boot Error Region Block Status Definition -/// -typedef struct { - UINT32 UncorrectableErrorValid:1; - UINT32 CorrectableErrorValid:1; - UINT32 MultipleUncorrectableErrors:1; - UINT32 MultipleCorrectableErrors:1; - UINT32 ErrorDataEntryCount:10; - UINT32 Reserved:18; -} EFI_ACPI_4_0_ERROR_BLOCK_STATUS; - -/// -/// Boot Error Region Definition -/// -typedef struct { - EFI_ACPI_4_0_ERROR_BLOCK_STATUS BlockStatus; - UINT32 RawDataOffset; - UINT32 RawDataLength; - UINT32 DataLength; - UINT32 ErrorSeverity; -} EFI_ACPI_4_0_BOOT_ERROR_REGION_STRUCTURE; - -// -// Boot Error Severity types -// -#define EFI_ACPI_4_0_ERROR_SEVERITY_CORRECTABLE 0x00 -#define EFI_ACPI_4_0_ERROR_SEVERITY_FATAL 0x01 -#define EFI_ACPI_4_0_ERROR_SEVERITY_CORRECTED 0x02 -#define EFI_ACPI_4_0_ERROR_SEVERITY_NONE 0x03 - -/// -/// Generic Error Data Entry Definition -/// -typedef struct { - UINT8 SectionType[16]; - UINT32 ErrorSeverity; - UINT16 Revision; - UINT8 ValidationBits; - UINT8 Flags; - UINT32 ErrorDataLength; - UINT8 FruId[16]; - UINT8 FruText[20]; -} EFI_ACPI_4_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE; - -/// -/// Generic Error Data Entry Version (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0201 - -/// -/// HEST - Hardware Error Source Table -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 ErrorSourceCount; -} EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER; - -/// -/// HEST Version (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01 - -// -// Error Source structure types. -// -#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00 -#define EFI_ACPI_4_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01 -#define EFI_ACPI_4_0_IA32_ARCHITECTURE_NMI_ERROR 0x02 -#define EFI_ACPI_4_0_PCI_EXPRESS_ROOT_PORT_AER 0x06 -#define EFI_ACPI_4_0_PCI_EXPRESS_DEVICE_AER 0x07 -#define EFI_ACPI_4_0_PCI_EXPRESS_BRIDGE_AER 0x08 -#define EFI_ACPI_4_0_GENERIC_HARDWARE_ERROR 0x09 - -// -// Error Source structure flags. -// -#define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0) -#define EFI_ACPI_4_0_ERROR_SOURCE_FLAG_GLOBAL (1 << 1) - -/// -/// IA-32 Architecture Machine Check Exception Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT64 GlobalCapabilityInitData; - UINT64 GlobalControlInitData; - UINT8 NumberOfHardwareBanks; - UINT8 Reserved1[7]; -} EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE; - -/// -/// IA-32 Architecture Machine Check Bank Structure Definition -/// -typedef struct { - UINT8 BankNumber; - UINT8 ClearStatusOnInitialization; - UINT8 StatusDataFormat; - UINT8 Reserved0; - UINT32 ControlRegisterMsrAddress; - UINT64 ControlInitData; - UINT32 StatusRegisterMsrAddress; - UINT32 AddressRegisterMsrAddress; - UINT32 MiscRegisterMsrAddress; -} EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE; - -/// -/// IA-32 Architecture Machine Check Bank Structure MCA data format -/// -#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00 -#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01 -#define EFI_ACPI_4_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02 - -// -// Hardware Error Notification types. All other values are reserved -// -#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00 -#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01 -#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02 -#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_SCI 0x03 -#define EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_NMI 0x04 - -/// -/// Hardware Error Notification Configuration Write Enable Structure Definition -/// -typedef struct { - UINT16 Type:1; - UINT16 PollInterval:1; - UINT16 SwitchToPollingThresholdValue:1; - UINT16 SwitchToPollingThresholdWindow:1; - UINT16 ErrorThresholdValue:1; - UINT16 ErrorThresholdWindow:1; - UINT16 Reserved:10; -} EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE; - -/// -/// Hardware Error Notification Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable; - UINT32 PollInterval; - UINT32 Vector; - UINT32 SwitchToPollingThresholdValue; - UINT32 SwitchToPollingThresholdWindow; - UINT32 ErrorThresholdValue; - UINT32 ErrorThresholdWindow; -} EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE; - -/// -/// IA-32 Architecture Corrected Machine Check Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; - UINT8 NumberOfHardwareBanks; - UINT8 Reserved1[3]; -} EFI_ACPI_4_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE; - -/// -/// IA-32 Architecture NMI Error Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 MaxRawDataLength; -} EFI_ACPI_4_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE; - -/// -/// PCI Express Root Port AER Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 Bus; - UINT16 Device; - UINT16 Function; - UINT16 DeviceControl; - UINT8 Reserved1[2]; - UINT32 UncorrectableErrorMask; - UINT32 UncorrectableErrorSeverity; - UINT32 CorrectableErrorMask; - UINT32 AdvancedErrorCapabilitiesAndControl; - UINT32 RootErrorCommand; -} EFI_ACPI_4_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE; - -/// -/// PCI Express Device AER Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 Bus; - UINT16 Device; - UINT16 Function; - UINT16 DeviceControl; - UINT8 Reserved1[2]; - UINT32 UncorrectableErrorMask; - UINT32 UncorrectableErrorSeverity; - UINT32 CorrectableErrorMask; - UINT32 AdvancedErrorCapabilitiesAndControl; -} EFI_ACPI_4_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE; - -/// -/// PCI Express Bridge AER Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 Bus; - UINT16 Device; - UINT16 Function; - UINT16 DeviceControl; - UINT8 Reserved1[2]; - UINT32 UncorrectableErrorMask; - UINT32 UncorrectableErrorSeverity; - UINT32 CorrectableErrorMask; - UINT32 AdvancedErrorCapabilitiesAndControl; - UINT32 SecondaryUncorrectableErrorMask; - UINT32 SecondaryUncorrectableErrorSeverity; - UINT32 SecondaryAdvancedErrorCapabilitiesAndControl; -} EFI_ACPI_4_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE; - -/// -/// Generic Hardware Error Source Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT16 RelatedSourceId; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 MaxRawDataLength; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress; - EFI_ACPI_4_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; - UINT32 ErrorStatusBlockLength; -} EFI_ACPI_4_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE; - -/// -/// Generic Error Status Definition -/// -typedef struct { - EFI_ACPI_4_0_ERROR_BLOCK_STATUS BlockStatus; - UINT32 RawDataOffset; - UINT32 RawDataLength; - UINT32 DataLength; - UINT32 ErrorSeverity; -} EFI_ACPI_4_0_GENERIC_ERROR_STATUS_STRUCTURE; - -/// -/// ERST - Error Record Serialization Table -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 SerializationHeaderSize; - UINT8 Reserved0[4]; - UINT32 InstructionEntryCount; -} EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER; - -/// -/// ERST Version (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01 - -/// -/// ERST Serialization Actions -/// -#define EFI_ACPI_4_0_ERST_BEGIN_WRITE_OPERATION 0x00 -#define EFI_ACPI_4_0_ERST_BEGIN_READ_OPERATION 0x01 -#define EFI_ACPI_4_0_ERST_BEGIN_CLEAR_OPERATION 0x02 -#define EFI_ACPI_4_0_ERST_END_OPERATION 0x03 -#define EFI_ACPI_4_0_ERST_SET_RECORD_OFFSET 0x04 -#define EFI_ACPI_4_0_ERST_EXECUTE_OPERATION 0x05 -#define EFI_ACPI_4_0_ERST_CHECK_BUSY_STATUS 0x06 -#define EFI_ACPI_4_0_ERST_GET_COMMAND_STATUS 0x07 -#define EFI_ACPI_4_0_ERST_GET_RECORD_IDENTIFIER 0x08 -#define EFI_ACPI_4_0_ERST_SET_RECORD_IDENTIFIER 0x09 -#define EFI_ACPI_4_0_ERST_GET_RECORD_COUNT 0x0A -#define EFI_ACPI_4_0_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B -#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D -#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E -#define EFI_ACPI_4_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F - -/// -/// ERST Action Command Status -/// -#define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS 0x00 -#define EFI_ACPI_4_0_EINJ_STATUS_NOT_ENOUGH_SPACE 0x01 -#define EFI_ACPI_4_0_EINJ_STATUS_HARDWARE_NOT_AVAILABLE 0x02 -#define EFI_ACPI_4_0_EINJ_STATUS_FAILED 0x03 -#define EFI_ACPI_4_0_EINJ_STATUS_RECORD_STORE_EMPTY 0x04 -#define EFI_ACPI_4_0_EINJ_STATUS_RECORD_NOT_FOUND 0x05 - -/// -/// ERST Serialization Instructions -/// -#define EFI_ACPI_4_0_ERST_READ_REGISTER 0x00 -#define EFI_ACPI_4_0_ERST_READ_REGISTER_VALUE 0x01 -#define EFI_ACPI_4_0_ERST_WRITE_REGISTER 0x02 -#define EFI_ACPI_4_0_ERST_WRITE_REGISTER_VALUE 0x03 -#define EFI_ACPI_4_0_ERST_NOOP 0x04 -#define EFI_ACPI_4_0_ERST_LOAD_VAR1 0x05 -#define EFI_ACPI_4_0_ERST_LOAD_VAR2 0x06 -#define EFI_ACPI_4_0_ERST_STORE_VAR1 0x07 -#define EFI_ACPI_4_0_ERST_ADD 0x08 -#define EFI_ACPI_4_0_ERST_SUBTRACT 0x09 -#define EFI_ACPI_4_0_ERST_ADD_VALUE 0x0A -#define EFI_ACPI_4_0_ERST_SUBTRACT_VALUE 0x0B -#define EFI_ACPI_4_0_ERST_STALL 0x0C -#define EFI_ACPI_4_0_ERST_STALL_WHILE_TRUE 0x0D -#define EFI_ACPI_4_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E -#define EFI_ACPI_4_0_ERST_GOTO 0x0F -#define EFI_ACPI_4_0_ERST_SET_SRC_ADDRESS_BASE 0x10 -#define EFI_ACPI_4_0_ERST_SET_DST_ADDRESS_BASE 0x11 -#define EFI_ACPI_4_0_ERST_MOVE_DATA 0x12 - -/// -/// ERST Instruction Flags -/// -#define EFI_ACPI_4_0_ERST_PRESERVE_REGISTER 0x01 - -/// -/// ERST Serialization Instruction Entry -/// -typedef struct { - UINT8 SerializationAction; - UINT8 Instruction; - UINT8 Flags; - UINT8 Reserved0; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion; - UINT64 Value; - UINT64 Mask; -} EFI_ACPI_4_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY; - -/// -/// EINJ - Error Injection Table -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 InjectionHeaderSize; - UINT8 InjectionFlags; - UINT8 Reserved0[3]; - UINT32 InjectionEntryCount; -} EFI_ACPI_4_0_ERROR_INJECTION_TABLE_HEADER; - -/// -/// EINJ Version (as defined in ACPI 4.0 spec.) -/// -#define EFI_ACPI_4_0_ERROR_INJECTION_TABLE_REVISION 0x01 - -/// -/// EINJ Error Injection Actions -/// -#define EFI_ACPI_4_0_EINJ_BEGIN_INJECTION_OPERATION 0x00 -#define EFI_ACPI_4_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01 -#define EFI_ACPI_4_0_EINJ_SET_ERROR_TYPE 0x02 -#define EFI_ACPI_4_0_EINJ_GET_ERROR_TYPE 0x03 -#define EFI_ACPI_4_0_EINJ_END_OPERATION 0x04 -#define EFI_ACPI_4_0_EINJ_EXECUTE_OPERATION 0x05 -#define EFI_ACPI_4_0_EINJ_CHECK_BUSY_STATUS 0x06 -#define EFI_ACPI_4_0_EINJ_GET_COMMAND_STATUS 0x07 -#define EFI_ACPI_4_0_EINJ_TRIGGER_ERROR 0xFF - -/// -/// EINJ Action Command Status -/// -#define EFI_ACPI_4_0_EINJ_STATUS_SUCCESS 0x00 -#define EFI_ACPI_4_0_EINJ_STATUS_UNKNOWN_FAILURE 0x01 -#define EFI_ACPI_4_0_EINJ_STATUS_INVALID_ACCESS 0x02 - -/// -/// EINJ Error Type Definition -/// -#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0) -#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1) -#define EFI_ACPI_4_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2) -#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3) -#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4) -#define EFI_ACPI_4_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5) -#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6) -#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7) -#define EFI_ACPI_4_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8) -#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9) -#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10) -#define EFI_ACPI_4_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11) - -/// -/// EINJ Injection Instructions -/// -#define EFI_ACPI_4_0_EINJ_READ_REGISTER 0x00 -#define EFI_ACPI_4_0_EINJ_READ_REGISTER_VALUE 0x01 -#define EFI_ACPI_4_0_EINJ_WRITE_REGISTER 0x02 -#define EFI_ACPI_4_0_EINJ_WRITE_REGISTER_VALUE 0x03 -#define EFI_ACPI_4_0_EINJ_NOOP 0x04 - -/// -/// EINJ Instruction Flags -/// -#define EFI_ACPI_4_0_EINJ_PRESERVE_REGISTER 0x01 - -/// -/// EINJ Injection Instruction Entry -/// -typedef struct { - UINT8 InjectionAction; - UINT8 Instruction; - UINT8 Flags; - UINT8 Reserved0; - EFI_ACPI_4_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion; - UINT64 Value; - UINT64 Mask; -} EFI_ACPI_4_0_EINJ_INJECTION_INSTRUCTION_ENTRY; - -/// -/// EINJ Trigger Action Table -/// -typedef struct { - UINT32 HeaderSize; - UINT32 Revision; - UINT32 TableSize; - UINT32 EntryCount; -} EFI_ACPI_4_0_EINJ_TRIGGER_ACTION_TABLE; - -// -// Known table signatures -// - -/// -/// "RSD PTR " Root System Description Pointer -/// -#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') - -/// -/// "APIC" Multiple APIC Description Table -/// -#define EFI_ACPI_4_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') - -/// -/// "BERT" Boot Error Record Table -/// -#define EFI_ACPI_4_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T') - -/// -/// "CPEP" Corrected Platform Error Polling Table -/// -#define EFI_ACPI_4_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P') - -/// -/// "DSDT" Differentiated System Description Table -/// -#define EFI_ACPI_4_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') - -/// -/// "ECDT" Embedded Controller Boot Resources Table -/// -#define EFI_ACPI_4_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T') - -/// -/// "EINJ" Error Injection Table -/// -#define EFI_ACPI_4_0_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J') - -/// -/// "ERST" Error Record Serialization Table -/// -#define EFI_ACPI_4_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T') - -/// -/// "FACP" Fixed ACPI Description Table -/// -#define EFI_ACPI_4_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') - -/// -/// "FACS" Firmware ACPI Control Structure -/// -#define EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') - -/// -/// "HEST" Hardware Error Source Table -/// -#define EFI_ACPI_4_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T') - -/// -/// "MSCT" Maximum System Characteristics Table -/// -#define EFI_ACPI_4_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T') - -/// -/// "PSDT" Persistent System Description Table -/// -#define EFI_ACPI_4_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') - -/// -/// "RSDT" Root System Description Table -/// -#define EFI_ACPI_4_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') - -/// -/// "SBST" Smart Battery Specification Table -/// -#define EFI_ACPI_4_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') - -/// -/// "SLIT" System Locality Information Table -/// -#define EFI_ACPI_4_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T') - -/// -/// "SRAT" System Resource Affinity Table -/// -#define EFI_ACPI_4_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T') - -/// -/// "SSDT" Secondary System Description Table -/// -#define EFI_ACPI_4_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') - -/// -/// "XSDT" Extended System Description Table -/// -#define EFI_ACPI_4_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T') - -/// -/// "BOOT" MS Simple Boot Spec -/// -#define EFI_ACPI_4_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T') - -/// -/// "DBGP" MS Debug Port Spec -/// -#define EFI_ACPI_4_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P') - -/// -/// "DMAR" DMA Remapping Table -/// -#define EFI_ACPI_4_0_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R') - -/// -/// "ETDT" Event Timer Description Table -/// -#define EFI_ACPI_4_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T') - -/// -/// "HPET" IA-PC High Precision Event Timer Table -/// -#define EFI_ACPI_4_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T') - -/// -/// "iBFT" iSCSI Boot Firmware Table -/// -#define EFI_ACPI_4_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T') - -/// -/// "IVRS" I/O Virtualization Reporting Structure -/// -#define EFI_ACPI_4_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S') - -/// -/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table -/// -#define EFI_ACPI_4_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G') - -/// -/// "MCHI" Management Controller Host Interface Table -/// -#define EFI_ACPI_4_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I') - -/// -/// "SPCR" Serial Port Concole Redirection Table -/// -#define EFI_ACPI_4_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R') - -/// -/// "SPMI" Server Platform Management Interface Table -/// -#define EFI_ACPI_4_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I') - -/// -/// "TCPA" Trusted Computing Platform Alliance Capabilities Table -/// -#define EFI_ACPI_4_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A') - -/// -/// "UEFI" UEFI ACPI Data Table -/// -#define EFI_ACPI_4_0_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I') - -/// -/// "WAET" Windows ACPI Enlightenment Table -/// -#define EFI_ACPI_4_0_WINDOWS_ACPI_ENLIGHTENMENT_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T') - -/// -/// "WDAT" Watchdog Action Table -/// -#define EFI_ACPI_4_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T') - -/// -/// "WDRT" Watchdog Resource Table -/// -#define EFI_ACPI_4_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T') - -#pragma pack() - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi50.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi50.h deleted file mode 100644 index 407cf80de7..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi50.h +++ /dev/null @@ -1,2119 +0,0 @@ -/** @file - ACPI 5.0 definitions from the ACPI Specification Revision 5.0a November 13, 2013. - - Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
- Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -**/ - -#ifndef _ACPI_5_0_H_ -#define _ACPI_5_0_H_ - -#include - -// -// Define for Desriptor -// -#define ACPI_SMALL_FIXED_DMA_DESCRIPTOR_NAME 0x0A -#define ACPI_LARGE_GPIO_CONNECTION_DESCRIPTOR_NAME 0x0C -#define ACPI_LARGE_GENERIC_SERIAL_BUS_CONNECTION_DESCRIPTOR_NAME 0x0E - -#define ACPI_FIXED_DMA_DESCRIPTOR 0x55 -#define ACPI_GPIO_CONNECTION_DESCRIPTOR 0x8C -#define ACPI_GENERIC_SERIAL_BUS_CONNECTION_DESCRIPTOR 0x8E - -#pragma pack(1) - -/// -/// Generic DMA Descriptor. -/// -typedef PACKED struct { - ACPI_SMALL_RESOURCE_HEADER Header; - UINT16 DmaRequestLine; - UINT16 DmaChannel; - UINT8 DmaTransferWidth; -} EFI_ACPI_FIXED_DMA_DESCRIPTOR; - -/// -/// GPIO Connection Descriptor -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 RevisionId; - UINT8 ConnectionType; - UINT16 GeneralFlags; - UINT16 InterruptFlags; - UINT8 PinConfiguration; - UINT16 OutputDriveStrength; - UINT16 DebounceTimeout; - UINT16 PinTableOffset; - UINT8 ResourceSourceIndex; - UINT16 ResourceSourceNameOffset; - UINT16 VendorDataOffset; - UINT16 VendorDataLength; -} EFI_ACPI_GPIO_CONNECTION_DESCRIPTOR; - -#define EFI_ACPI_GPIO_CONNECTION_TYPE_INTERRUPT 0x0 -#define EFI_ACPI_GPIO_CONNECTION_TYPE_IO 0x1 - -/// -/// Serial Bus Resource Descriptor (Generic) -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 RevisionId; - UINT8 ResourceSourceIndex; - UINT8 SerialBusType; - UINT8 GeneralFlags; - UINT16 TypeSpecificFlags; - UINT8 TypeSpecificRevisionId; - UINT16 TypeDataLength; -// Type specific data -} EFI_ACPI_SERIAL_BUS_RESOURCE_DESCRIPTOR; - -#define EFI_ACPI_SERIAL_BUS_RESOURCE_TYPE_I2C 0x1 -#define EFI_ACPI_SERIAL_BUS_RESOURCE_TYPE_SPI 0x2 -#define EFI_ACPI_SERIAL_BUS_RESOURCE_TYPE_UART 0x3 - -/// -/// Serial Bus Resource Descriptor (I2C) -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 RevisionId; - UINT8 ResourceSourceIndex; - UINT8 SerialBusType; - UINT8 GeneralFlags; - UINT16 TypeSpecificFlags; - UINT8 TypeSpecificRevisionId; - UINT16 TypeDataLength; - UINT32 ConnectionSpeed; - UINT16 SlaveAddress; -} EFI_ACPI_SERIAL_BUS_RESOURCE_I2C_DESCRIPTOR; - -/// -/// Serial Bus Resource Descriptor (SPI) -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 RevisionId; - UINT8 ResourceSourceIndex; - UINT8 SerialBusType; - UINT8 GeneralFlags; - UINT16 TypeSpecificFlags; - UINT8 TypeSpecificRevisionId; - UINT16 TypeDataLength; - UINT32 ConnectionSpeed; - UINT8 DataBitLength; - UINT8 Phase; - UINT8 Polarity; - UINT16 DeviceSelection; -} EFI_ACPI_SERIAL_BUS_RESOURCE_SPI_DESCRIPTOR; - -/// -/// Serial Bus Resource Descriptor (UART) -/// -typedef PACKED struct { - ACPI_LARGE_RESOURCE_HEADER Header; - UINT8 RevisionId; - UINT8 ResourceSourceIndex; - UINT8 SerialBusType; - UINT8 GeneralFlags; - UINT16 TypeSpecificFlags; - UINT8 TypeSpecificRevisionId; - UINT16 TypeDataLength; - UINT32 DefaultBaudRate; - UINT16 RxFIFO; - UINT16 TxFIFO; - UINT8 Parity; - UINT8 SerialLinesEnabled; -} EFI_ACPI_SERIAL_BUS_RESOURCE_UART_DESCRIPTOR; - -#pragma pack() - -// -// Ensure proper structure formats -// -#pragma pack(1) - -/// -/// ACPI 5.0 Generic Address Space definition -/// -typedef struct { - UINT8 AddressSpaceId; - UINT8 RegisterBitWidth; - UINT8 RegisterBitOffset; - UINT8 AccessSize; - UINT64 Address; -} EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE; - -// -// Generic Address Space Address IDs -// -#define EFI_ACPI_5_0_SYSTEM_MEMORY 0 -#define EFI_ACPI_5_0_SYSTEM_IO 1 -#define EFI_ACPI_5_0_PCI_CONFIGURATION_SPACE 2 -#define EFI_ACPI_5_0_EMBEDDED_CONTROLLER 3 -#define EFI_ACPI_5_0_SMBUS 4 -#define EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL 0x0A -#define EFI_ACPI_5_0_FUNCTIONAL_FIXED_HARDWARE 0x7F - -// -// Generic Address Space Access Sizes -// -#define EFI_ACPI_5_0_UNDEFINED 0 -#define EFI_ACPI_5_0_BYTE 1 -#define EFI_ACPI_5_0_WORD 2 -#define EFI_ACPI_5_0_DWORD 3 -#define EFI_ACPI_5_0_QWORD 4 - -// -// ACPI 5.0 table structures -// - -/// -/// Root System Description Pointer Structure -/// -typedef struct { - UINT64 Signature; - UINT8 Checksum; - UINT8 OemId[6]; - UINT8 Revision; - UINT32 RsdtAddress; - UINT32 Length; - UINT64 XsdtAddress; - UINT8 ExtendedChecksum; - UINT8 Reserved[3]; -} EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER; - -/// -/// RSD_PTR Revision (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 5.0) says current value is 2 - -/// -/// Common table header, this prefaces all ACPI tables, including FACS, but -/// excluding the RSD PTR structure -/// -typedef struct { - UINT32 Signature; - UINT32 Length; -} EFI_ACPI_5_0_COMMON_HEADER; - -// -// Root System Description Table -// No definition needed as it is a common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. -// - -/// -/// RSDT Revision (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 - -// -// Extended System Description Table -// No definition needed as it is a common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers. -// - -/// -/// XSDT Revision (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Fixed ACPI Description Table Structure (FADT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 FirmwareCtrl; - UINT32 Dsdt; - UINT8 Reserved0; - UINT8 PreferredPmProfile; - UINT16 SciInt; - UINT32 SmiCmd; - UINT8 AcpiEnable; - UINT8 AcpiDisable; - UINT8 S4BiosReq; - UINT8 PstateCnt; - UINT32 Pm1aEvtBlk; - UINT32 Pm1bEvtBlk; - UINT32 Pm1aCntBlk; - UINT32 Pm1bCntBlk; - UINT32 Pm2CntBlk; - UINT32 PmTmrBlk; - UINT32 Gpe0Blk; - UINT32 Gpe1Blk; - UINT8 Pm1EvtLen; - UINT8 Pm1CntLen; - UINT8 Pm2CntLen; - UINT8 PmTmrLen; - UINT8 Gpe0BlkLen; - UINT8 Gpe1BlkLen; - UINT8 Gpe1Base; - UINT8 CstCnt; - UINT16 PLvl2Lat; - UINT16 PLvl3Lat; - UINT16 FlushSize; - UINT16 FlushStride; - UINT8 DutyOffset; - UINT8 DutyWidth; - UINT8 DayAlrm; - UINT8 MonAlrm; - UINT8 Century; - UINT16 IaPcBootArch; - UINT8 Reserved1; - UINT32 Flags; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE ResetReg; - UINT8 ResetValue; - UINT8 Reserved2[3]; - UINT64 XFirmwareCtrl; - UINT64 XDsdt; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepControlReg; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE SleepStatusReg; -} EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE; - -/// -/// FADT Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x05 - -// -// Fixed ACPI Description Table Preferred Power Management Profile -// -#define EFI_ACPI_5_0_PM_PROFILE_UNSPECIFIED 0 -#define EFI_ACPI_5_0_PM_PROFILE_DESKTOP 1 -#define EFI_ACPI_5_0_PM_PROFILE_MOBILE 2 -#define EFI_ACPI_5_0_PM_PROFILE_WORKSTATION 3 -#define EFI_ACPI_5_0_PM_PROFILE_ENTERPRISE_SERVER 4 -#define EFI_ACPI_5_0_PM_PROFILE_SOHO_SERVER 5 -#define EFI_ACPI_5_0_PM_PROFILE_APPLIANCE_PC 6 -#define EFI_ACPI_5_0_PM_PROFILE_PERFORMANCE_SERVER 7 -#define EFI_ACPI_5_0_PM_PROFILE_TABLET 8 - -// -// Fixed ACPI Description Table Boot Architecture Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_5_0_LEGACY_DEVICES BIT0 -#define EFI_ACPI_5_0_8042 BIT1 -#define EFI_ACPI_5_0_VGA_NOT_PRESENT BIT2 -#define EFI_ACPI_5_0_MSI_NOT_SUPPORTED BIT3 -#define EFI_ACPI_5_0_PCIE_ASPM_CONTROLS BIT4 -#define EFI_ACPI_5_0_CMOS_RTC_NOT_PRESENT BIT5 - -// -// Fixed ACPI Description Table Fixed Feature Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_5_0_WBINVD BIT0 -#define EFI_ACPI_5_0_WBINVD_FLUSH BIT1 -#define EFI_ACPI_5_0_PROC_C1 BIT2 -#define EFI_ACPI_5_0_P_LVL2_UP BIT3 -#define EFI_ACPI_5_0_PWR_BUTTON BIT4 -#define EFI_ACPI_5_0_SLP_BUTTON BIT5 -#define EFI_ACPI_5_0_FIX_RTC BIT6 -#define EFI_ACPI_5_0_RTC_S4 BIT7 -#define EFI_ACPI_5_0_TMR_VAL_EXT BIT8 -#define EFI_ACPI_5_0_DCK_CAP BIT9 -#define EFI_ACPI_5_0_RESET_REG_SUP BIT10 -#define EFI_ACPI_5_0_SEALED_CASE BIT11 -#define EFI_ACPI_5_0_HEADLESS BIT12 -#define EFI_ACPI_5_0_CPU_SW_SLP BIT13 -#define EFI_ACPI_5_0_PCI_EXP_WAK BIT14 -#define EFI_ACPI_5_0_USE_PLATFORM_CLOCK BIT15 -#define EFI_ACPI_5_0_S4_RTC_STS_VALID BIT16 -#define EFI_ACPI_5_0_REMOTE_POWER_ON_CAPABLE BIT17 -#define EFI_ACPI_5_0_FORCE_APIC_CLUSTER_MODEL BIT18 -#define EFI_ACPI_5_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19 -#define EFI_ACPI_5_0_HW_REDUCED_ACPI BIT20 -#define EFI_ACPI_5_0_LOW_POWER_S0_IDLE_CAPABLE BIT21 - -/// -/// Firmware ACPI Control Structure -/// -typedef struct { - UINT32 Signature; - UINT32 Length; - UINT32 HardwareSignature; - UINT32 FirmwareWakingVector; - UINT32 GlobalLock; - UINT32 Flags; - UINT64 XFirmwareWakingVector; - UINT8 Version; - UINT8 Reserved0[3]; - UINT32 OspmFlags; - UINT8 Reserved1[24]; -} EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE; - -/// -/// FACS Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02 - -/// -/// Firmware Control Structure Feature Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_5_0_S4BIOS_F BIT0 -#define EFI_ACPI_5_0_64BIT_WAKE_SUPPORTED_F BIT1 - -/// -/// OSPM Enabled Firmware Control Structure Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_5_0_OSPM_64BIT_WAKE_F BIT0 - -// -// Differentiated System Description Table, -// Secondary System Description Table -// and Persistent System Description Table, -// no definition needed as they are common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block. -// -#define EFI_ACPI_5_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 -#define EFI_ACPI_5_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 - -/// -/// Multiple APIC Description Table header definition. The rest of the table -/// must be defined in a platform specific manner. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 LocalApicAddress; - UINT32 Flags; -} EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; - -/// -/// MADT Revision (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03 - -/// -/// Multiple APIC Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_5_0_PCAT_COMPAT BIT0 - -// -// Multiple APIC Description Table APIC structure types -// All other values between 0x0D and 0x7F are reserved and -// will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM. -// -#define EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC 0x00 -#define EFI_ACPI_5_0_IO_APIC 0x01 -#define EFI_ACPI_5_0_INTERRUPT_SOURCE_OVERRIDE 0x02 -#define EFI_ACPI_5_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03 -#define EFI_ACPI_5_0_LOCAL_APIC_NMI 0x04 -#define EFI_ACPI_5_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 -#define EFI_ACPI_5_0_IO_SAPIC 0x06 -#define EFI_ACPI_5_0_LOCAL_SAPIC 0x07 -#define EFI_ACPI_5_0_PLATFORM_INTERRUPT_SOURCES 0x08 -#define EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC 0x09 -#define EFI_ACPI_5_0_LOCAL_X2APIC_NMI 0x0A -#define EFI_ACPI_5_0_GIC 0x0B -#define EFI_ACPI_5_0_GICD 0x0C - -// -// APIC Structure Definitions -// - -/// -/// Processor Local APIC Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT8 ApicId; - UINT32 Flags; -} EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_STRUCTURE; - -/// -/// Local APIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_0_LOCAL_APIC_ENABLED BIT0 - -/// -/// IO APIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 IoApicId; - UINT8 Reserved; - UINT32 IoApicAddress; - UINT32 GlobalSystemInterruptBase; -} EFI_ACPI_5_0_IO_APIC_STRUCTURE; - -/// -/// Interrupt Source Override Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Bus; - UINT8 Source; - UINT32 GlobalSystemInterrupt; - UINT16 Flags; -} EFI_ACPI_5_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; - -/// -/// Platform Interrupt Sources Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT8 InterruptType; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT8 IoSapicVector; - UINT32 GlobalSystemInterrupt; - UINT32 PlatformInterruptSourceFlags; - UINT8 CpeiProcessorOverride; - UINT8 Reserved[31]; -} EFI_ACPI_5_0_PLATFORM_INTERRUPT_APIC_STRUCTURE; - -// -// MPS INTI flags. -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_5_0_POLARITY (3 << 0) -#define EFI_ACPI_5_0_TRIGGER_MODE (3 << 2) - -/// -/// Non-Maskable Interrupt Source Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT32 GlobalSystemInterrupt; -} EFI_ACPI_5_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; - -/// -/// Local APIC NMI Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT16 Flags; - UINT8 LocalApicLint; -} EFI_ACPI_5_0_LOCAL_APIC_NMI_STRUCTURE; - -/// -/// Local APIC Address Override Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT64 LocalApicAddress; -} EFI_ACPI_5_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE; - -/// -/// IO SAPIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 IoApicId; - UINT8 Reserved; - UINT32 GlobalSystemInterruptBase; - UINT64 IoSapicAddress; -} EFI_ACPI_5_0_IO_SAPIC_STRUCTURE; - -/// -/// Local SAPIC Structure -/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT8 LocalSapicId; - UINT8 LocalSapicEid; - UINT8 Reserved[3]; - UINT32 Flags; - UINT32 ACPIProcessorUIDValue; -} EFI_ACPI_5_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE; - -/// -/// Platform Interrupt Sources Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT8 InterruptType; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT8 IoSapicVector; - UINT32 GlobalSystemInterrupt; - UINT32 PlatformInterruptSourceFlags; -} EFI_ACPI_5_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE; - -/// -/// Platform Interrupt Source Flags. -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_5_0_CPEI_PROCESSOR_OVERRIDE BIT0 - -/// -/// Processor Local x2APIC Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Reserved[2]; - UINT32 X2ApicId; - UINT32 Flags; - UINT32 AcpiProcessorUid; -} EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE; - -/// -/// Local x2APIC NMI Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT32 AcpiProcessorUid; - UINT8 LocalX2ApicLint; - UINT8 Reserved[3]; -} EFI_ACPI_5_0_LOCAL_X2APIC_NMI_STRUCTURE; - -/// -/// GIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT32 GicId; - UINT32 AcpiProcessorUid; - UINT32 Flags; - UINT32 ParkingProtocolVersion; - UINT32 PerformanceInterruptGsiv; - UINT64 ParkedAddress; - UINT64 PhysicalBaseAddress; -} EFI_ACPI_5_0_GIC_STRUCTURE; - -/// -/// GIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_0_GIC_ENABLED BIT0 -#define EFI_ACPI_5_0_PERFORMANCE_INTERRUPT_MODEL BIT1 - -/// -/// GIC Distributor Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved1; - UINT32 GicId; - UINT64 PhysicalBaseAddress; - UINT32 SystemVectorBase; - UINT32 Reserved2; -} EFI_ACPI_5_0_GIC_DISTRIBUTOR_STRUCTURE; - -/// -/// Smart Battery Description Table (SBST) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 WarningEnergyLevel; - UINT32 LowEnergyLevel; - UINT32 CriticalEnergyLevel; -} EFI_ACPI_5_0_SMART_BATTERY_DESCRIPTION_TABLE; - -/// -/// SBST Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Embedded Controller Boot Resources Table (ECDT) -/// The table is followed by a null terminated ASCII string that contains -/// a fully qualified reference to the name space object. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE EcControl; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE EcData; - UINT32 Uid; - UINT8 GpeBit; -} EFI_ACPI_5_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE; - -/// -/// ECDT Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01 - -/// -/// System Resource Affinity Table (SRAT). The rest of the table -/// must be defined in a platform specific manner. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 Reserved1; ///< Must be set to 1 - UINT64 Reserved2; -} EFI_ACPI_5_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER; - -/// -/// SRAT Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03 - -// -// SRAT structure types. -// All other values between 0x03 an 0xFF are reserved and -// will be ignored by OSPM. -// -#define EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00 -#define EFI_ACPI_5_0_MEMORY_AFFINITY 0x01 -#define EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02 - -/// -/// Processor Local APIC/SAPIC Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 ProximityDomain7To0; - UINT8 ApicId; - UINT32 Flags; - UINT8 LocalSapicEid; - UINT8 ProximityDomain31To8[3]; - UINT32 ClockDomain; -} EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE; - -/// -/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0) - -/// -/// Memory Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT32 ProximityDomain; - UINT16 Reserved1; - UINT32 AddressBaseLow; - UINT32 AddressBaseHigh; - UINT32 LengthLow; - UINT32 LengthHigh; - UINT32 Reserved2; - UINT32 Flags; - UINT64 Reserved3; -} EFI_ACPI_5_0_MEMORY_AFFINITY_STRUCTURE; - -// -// Memory Flags. All other bits are reserved and must be 0. -// -#define EFI_ACPI_5_0_MEMORY_ENABLED (1 << 0) -#define EFI_ACPI_5_0_MEMORY_HOT_PLUGGABLE (1 << 1) -#define EFI_ACPI_5_0_MEMORY_NONVOLATILE (1 << 2) - -/// -/// Processor Local x2APIC Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Reserved1[2]; - UINT32 ProximityDomain; - UINT32 X2ApicId; - UINT32 Flags; - UINT32 ClockDomain; - UINT8 Reserved2[4]; -} EFI_ACPI_5_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE; - -/// -/// System Locality Distance Information Table (SLIT). -/// The rest of the table is a matrix. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT64 NumberOfSystemLocalities; -} EFI_ACPI_5_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER; - -/// -/// SLIT Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01 - -/// -/// Corrected Platform Error Polling Table (CPEP) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT8 Reserved[8]; -} EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER; - -/// -/// CPEP Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01 - -// -// CPEP processor structure types. -// -#define EFI_ACPI_5_0_CPEP_PROCESSOR_APIC_SAPIC 0x00 - -/// -/// Corrected Platform Error Polling Processor Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT32 PollingInterval; -} EFI_ACPI_5_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE; - -/// -/// Maximum System Characteristics Table (MSCT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 OffsetProxDomInfo; - UINT32 MaximumNumberOfProximityDomains; - UINT32 MaximumNumberOfClockDomains; - UINT64 MaximumPhysicalAddress; -} EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER; - -/// -/// MSCT Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01 - -/// -/// Maximum Proximity Domain Information Structure Definition -/// -typedef struct { - UINT8 Revision; - UINT8 Length; - UINT32 ProximityDomainRangeLow; - UINT32 ProximityDomainRangeHigh; - UINT32 MaximumProcessorCapacity; - UINT64 MaximumMemoryCapacity; -} EFI_ACPI_5_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE; - -/// -/// ACPI RAS Feature Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT8 PlatformCommunicationChannelIdentifier[12]; -} EFI_ACPI_5_0_RAS_FEATURE_TABLE; - -/// -/// RASF Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_RAS_FEATURE_TABLE_REVISION 0x01 - -/// -/// ACPI RASF Platform Communication Channel Shared Memory Region definition. -/// -typedef struct { - UINT32 Signature; - UINT16 Command; - UINT16 Status; - UINT16 Version; - UINT8 RASCapabilities[16]; - UINT8 SetRASCapabilities[16]; - UINT16 NumberOfRASFParameterBlocks; - UINT32 SetRASCapabilitiesStatus; -} EFI_ACPI_5_0_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION; - -/// -/// ACPI RASF PCC command code -/// -#define EFI_ACPI_5_0_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01 - -/// -/// ACPI RASF Platform RAS Capabilities -/// -#define EFI_ACPI_5_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED 0x01 -#define EFI_ACPI_5_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE 0x02 - -/// -/// ACPI RASF Parameter Block structure for PATROL_SCRUB -/// -typedef struct { - UINT16 Type; - UINT16 Version; - UINT16 Length; - UINT16 PatrolScrubCommand; - UINT64 RequestedAddressRange[2]; - UINT64 ActualAddressRange[2]; - UINT16 Flags; - UINT8 RequestedSpeed; -} EFI_ACPI_5_0_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE; - -/// -/// ACPI RASF Patrol Scrub command -/// -#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01 -#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02 -#define EFI_ACPI_5_0_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03 - -/// -/// Memory Power State Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT8 PlatformCommunicationChannelIdentifier; - UINT8 Reserved[3]; -// Memory Power Node Structure -// Memory Power State Characteristics -} EFI_ACPI_5_0_MEMORY_POWER_STATUS_TABLE; - -/// -/// MPST Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_MEMORY_POWER_STATE_TABLE_REVISION 0x01 - -/// -/// MPST Platform Communication Channel Shared Memory Region definition. -/// -typedef struct { - UINT32 Signature; - UINT16 Command; - UINT16 Status; - UINT32 MemoryPowerCommandRegister; - UINT32 MemoryPowerStatusRegister; - UINT32 PowerStateId; - UINT32 MemoryPowerNodeId; - UINT64 MemoryEnergyConsumed; - UINT64 ExpectedAveragePowerComsuned; -} EFI_ACPI_5_0_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION; - -/// -/// ACPI MPST PCC command code -/// -#define EFI_ACPI_5_0_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03 - -/// -/// ACPI MPST Memory Power command -/// -#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01 -#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02 -#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03 -#define EFI_ACPI_5_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04 - -/// -/// MPST Memory Power Node Table -/// -typedef struct { - UINT8 PowerStateValue; - UINT8 PowerStateInformationIndex; -} EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE; - -typedef struct { - UINT8 Flag; - UINT8 Reserved; - UINT16 MemoryPowerNodeId; - UINT32 Length; - UINT64 AddressBase; - UINT64 AddressLength; - UINT32 NumberOfPowerStates; - UINT32 NumberOfPhysicalComponents; -//EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates]; -//UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents]; -} EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE; - -#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01 -#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02 -#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04 - -typedef struct { - UINT16 MemoryPowerNodeCount; - UINT8 Reserved[2]; -} EFI_ACPI_5_0_MPST_MEMORY_POWER_NODE_TABLE; - -/// -/// MPST Memory Power State Characteristics Table -/// -typedef struct { - UINT8 PowerStateStructureID; - UINT8 Flag; - UINT16 Reserved; - UINT32 AveragePowerConsumedInMPS0; - UINT32 RelativePowerSavingToMPS0; - UINT64 ExitLatencyToMPS0; -} EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE; - -#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01 -#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02 -#define EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04 - -typedef struct { - UINT16 MemoryPowerStateCharacteristicsCount; - UINT8 Reserved[2]; -} EFI_ACPI_5_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE; - -/// -/// Memory Topology Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 Reserved; -} EFI_ACPI_5_0_MEMORY_TOPOLOGY_TABLE; - -/// -/// PMTT Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_MEMORY_TOPOLOGY_TABLE_REVISION 0x01 - -/// -/// Common Memory Aggregator Device Structure. -/// -typedef struct { - UINT8 Type; - UINT8 Reserved; - UINT16 Length; - UINT16 Flags; - UINT16 Reserved1; -} EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; - -/// -/// Memory Aggregator Device Type -/// -#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET 0x1 -#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2 -#define EFI_ACPI_5_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM 0x3 - -/// -/// Socket Memory Aggregator Device Structure. -/// -typedef struct { - EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; - UINT16 SocketIdentifier; - UINT16 Reserved; -//EFI_ACPI_5_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE MemoryController[]; -} EFI_ACPI_5_0_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; - -/// -/// MemoryController Memory Aggregator Device Structure. -/// -typedef struct { - EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; - UINT32 ReadLatency; - UINT32 WriteLatency; - UINT32 ReadBandwidth; - UINT32 WriteBandwidth; - UINT16 OptimalAccessUnit; - UINT16 OptimalAccessAlignment; - UINT16 Reserved; - UINT16 NumberOfProximityDomains; -//UINT32 ProximityDomain[NumberOfProximityDomains]; -//EFI_ACPI_5_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE PhysicalComponent[]; -} EFI_ACPI_5_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; - -/// -/// DIMM Memory Aggregator Device Structure. -/// -typedef struct { - EFI_ACPI_5_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; - UINT16 PhysicalComponentIdentifier; - UINT16 Reserved; - UINT32 SizeOfDimm; - UINT32 SmbiosHandle; -} EFI_ACPI_5_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; - -/// -/// Boot Graphics Resource Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - /// - /// 2-bytes (16 bit) version ID. This value must be 1. - /// - UINT16 Version; - /// - /// 1-byte status field indicating current status about the table. - /// Bits[7:1] = Reserved (must be zero) - /// Bit [0] = Valid. A one indicates the boot image graphic is valid. - /// - UINT8 Status; - /// - /// 1-byte enumerated type field indicating format of the image. - /// 0 = Bitmap - /// 1 - 255 Reserved (for future use) - /// - UINT8 ImageType; - /// - /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy - /// of the image bitmap. - /// - UINT64 ImageAddress; - /// - /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image. - /// (X, Y) display offset of the top left corner of the boot image. - /// The top left corner of the display is at offset (0, 0). - /// - UINT32 ImageOffsetX; - /// - /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image. - /// (X, Y) display offset of the top left corner of the boot image. - /// The top left corner of the display is at offset (0, 0). - /// - UINT32 ImageOffsetY; -} EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE; - -/// -/// BGRT Revision -/// -#define EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1 - -/// -/// BGRT Version -/// -#define EFI_ACPI_5_0_BGRT_VERSION 0x01 - -/// -/// BGRT Status -/// -#define EFI_ACPI_5_0_BGRT_STATUS_NOT_DISPLAYED 0x00 -#define EFI_ACPI_5_0_BGRT_STATUS_DISPLAYED 0x01 -#define EFI_ACPI_5_0_BGRT_STATUS_INVALID EFI_ACPI_5_0_BGRT_STATUS_NOT_DISPLAYED -#define EFI_ACPI_5_0_BGRT_STATUS_VALID EFI_ACPI_5_0_BGRT_STATUS_DISPLAYED - -/// -/// BGRT Image Type -/// -#define EFI_ACPI_5_0_BGRT_IMAGE_TYPE_BMP 0x00 - -/// -/// FPDT Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01 - -/// -/// FPDT Performance Record Types -/// -#define EFI_ACPI_5_0_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x0000 -#define EFI_ACPI_5_0_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x0001 - -/// -/// FPDT Performance Record Revision -/// -#define EFI_ACPI_5_0_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x01 -#define EFI_ACPI_5_0_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01 - -/// -/// FPDT Runtime Performance Record Types -/// -#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x0000 -#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x0001 -#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x0002 - -/// -/// FPDT Runtime Performance Record Revision -/// -#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x01 -#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x01 -#define EFI_ACPI_5_0_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x02 - -/// -/// FPDT Performance Record header -/// -typedef struct { - UINT16 Type; - UINT8 Length; - UINT8 Revision; -} EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER; - -/// -/// FPDT Performance Table header -/// -typedef struct { - UINT32 Signature; - UINT32 Length; -} EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER; - -/// -/// FPDT Firmware Basic Boot Performance Pointer Record Structure -/// -typedef struct { - EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header; - UINT32 Reserved; - /// - /// 64-bit processor-relative physical address of the Basic Boot Performance Table. - /// - UINT64 BootPerformanceTablePointer; -} EFI_ACPI_5_0_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD; - -/// -/// FPDT S3 Performance Table Pointer Record Structure -/// -typedef struct { - EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header; - UINT32 Reserved; - /// - /// 64-bit processor-relative physical address of the S3 Performance Table. - /// - UINT64 S3PerformanceTablePointer; -} EFI_ACPI_5_0_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD; - -/// -/// FPDT Firmware Basic Boot Performance Record Structure -/// -typedef struct { - EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header; - UINT32 Reserved; - /// - /// Timer value logged at the beginning of firmware image execution. - /// This may not always be zero or near zero. - /// - UINT64 ResetEnd; - /// - /// Timer value logged just prior to loading the OS boot loader into memory. - /// For non-UEFI compatible boots, this field must be zero. - /// - UINT64 OsLoaderLoadImageStart; - /// - /// Timer value logged just prior to launching the previously loaded OS boot loader image. - /// For non-UEFI compatible boots, the timer value logged will be just prior - /// to the INT 19h handler invocation. - /// - UINT64 OsLoaderStartImageStart; - /// - /// Timer value logged at the point when the OS loader calls the - /// ExitBootServices function for UEFI compatible firmware. - /// For non-UEFI compatible boots, this field must be zero. - /// - UINT64 ExitBootServicesEntry; - /// - /// Timer value logged at the point just prior towhen the OS loader gaining - /// control back from calls the ExitBootServices function for UEFI compatible firmware. - /// For non-UEFI compatible boots, this field must be zero. - /// - UINT64 ExitBootServicesExit; -} EFI_ACPI_5_0_FPDT_FIRMWARE_BASIC_BOOT_RECORD; - -/// -/// FPDT Firmware Basic Boot Performance Table signature -/// -#define EFI_ACPI_5_0_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T') - -// -// FPDT Firmware Basic Boot Performance Table -// -typedef struct { - EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER Header; - // - // one or more Performance Records. - // -} EFI_ACPI_5_0_FPDT_FIRMWARE_BASIC_BOOT_TABLE; - -/// -/// FPDT "S3PT" S3 Performance Table -/// -#define EFI_ACPI_5_0_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T') - -// -// FPDT Firmware S3 Boot Performance Table -// -typedef struct { - EFI_ACPI_5_0_FPDT_PERFORMANCE_TABLE_HEADER Header; - // - // one or more Performance Records. - // -} EFI_ACPI_5_0_FPDT_FIRMWARE_S3_BOOT_TABLE; - -/// -/// FPDT Basic S3 Resume Performance Record -/// -typedef struct { - EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header; - /// - /// A count of the number of S3 resume cycles since the last full boot sequence. - /// - UINT32 ResumeCount; - /// - /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the - /// OS waking vector. Only the most recent resume cycle's time is retained. - /// - UINT64 FullResume; - /// - /// Average timer value of all resume cycles logged since the last full boot - /// sequence, including the most recent resume. Note that the entire log of - /// timer values does not need to be retained in order to calculate this average. - /// - UINT64 AverageResume; -} EFI_ACPI_5_0_FPDT_S3_RESUME_RECORD; - -/// -/// FPDT Basic S3 Suspend Performance Record -/// -typedef struct { - EFI_ACPI_5_0_FPDT_PERFORMANCE_RECORD_HEADER Header; - /// - /// Timer value recorded at the OS write to SLP_TYP upon entry to S3. - /// Only the most recent suspend cycle's timer value is retained. - /// - UINT64 SuspendStart; - /// - /// Timer value recorded at the final firmware write to SLP_TYP (or other - /// mechanism) used to trigger hardware entry to S3. - /// Only the most recent suspend cycle's timer value is retained. - /// - UINT64 SuspendEnd; -} EFI_ACPI_5_0_FPDT_S3_SUSPEND_RECORD; - -/// -/// Firmware Performance Record Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; -} EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_RECORD_TABLE; - -/// -/// Generic Timer Description Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT64 PhysicalAddress; - UINT32 GlobalFlags; - UINT32 SecurePL1TimerGSIV; - UINT32 SecurePL1TimerFlags; - UINT32 NonSecurePL1TimerGSIV; - UINT32 NonSecurePL1TimerFlags; - UINT32 VirtualTimerGSIV; - UINT32 VirtualTimerFlags; - UINT32 NonSecurePL2TimerGSIV; - UINT32 NonSecurePL2TimerFlags; -} EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE; - -/// -/// GTDT Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Global Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_MEMORY_MAPPED_BLOCK_PRESENT BIT0 -#define EFI_ACPI_5_0_GTDT_GLOBAL_FLAG_INTERRUPT_MODE BIT1 - -/// -/// Timer Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0 -#define EFI_ACPI_5_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1 - -/// -/// Boot Error Record Table (BERT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 BootErrorRegionLength; - UINT64 BootErrorRegion; -} EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_HEADER; - -/// -/// BERT Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01 - -/// -/// Boot Error Region Block Status Definition -/// -typedef struct { - UINT32 UncorrectableErrorValid:1; - UINT32 CorrectableErrorValid:1; - UINT32 MultipleUncorrectableErrors:1; - UINT32 MultipleCorrectableErrors:1; - UINT32 ErrorDataEntryCount:10; - UINT32 Reserved:18; -} EFI_ACPI_5_0_ERROR_BLOCK_STATUS; - -/// -/// Boot Error Region Definition -/// -typedef struct { - EFI_ACPI_5_0_ERROR_BLOCK_STATUS BlockStatus; - UINT32 RawDataOffset; - UINT32 RawDataLength; - UINT32 DataLength; - UINT32 ErrorSeverity; -} EFI_ACPI_5_0_BOOT_ERROR_REGION_STRUCTURE; - -// -// Boot Error Severity types -// -#define EFI_ACPI_5_0_ERROR_SEVERITY_CORRECTABLE 0x00 -#define EFI_ACPI_5_0_ERROR_SEVERITY_FATAL 0x01 -#define EFI_ACPI_5_0_ERROR_SEVERITY_CORRECTED 0x02 -#define EFI_ACPI_5_0_ERROR_SEVERITY_NONE 0x03 - -/// -/// Generic Error Data Entry Definition -/// -typedef struct { - UINT8 SectionType[16]; - UINT32 ErrorSeverity; - UINT16 Revision; - UINT8 ValidationBits; - UINT8 Flags; - UINT32 ErrorDataLength; - UINT8 FruId[16]; - UINT8 FruText[20]; -} EFI_ACPI_5_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE; - -/// -/// Generic Error Data Entry Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0201 - -/// -/// HEST - Hardware Error Source Table -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 ErrorSourceCount; -} EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER; - -/// -/// HEST Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01 - -// -// Error Source structure types. -// -#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00 -#define EFI_ACPI_5_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01 -#define EFI_ACPI_5_0_IA32_ARCHITECTURE_NMI_ERROR 0x02 -#define EFI_ACPI_5_0_PCI_EXPRESS_ROOT_PORT_AER 0x06 -#define EFI_ACPI_5_0_PCI_EXPRESS_DEVICE_AER 0x07 -#define EFI_ACPI_5_0_PCI_EXPRESS_BRIDGE_AER 0x08 -#define EFI_ACPI_5_0_GENERIC_HARDWARE_ERROR 0x09 - -// -// Error Source structure flags. -// -#define EFI_ACPI_5_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0) -#define EFI_ACPI_5_0_ERROR_SOURCE_FLAG_GLOBAL (1 << 1) - -/// -/// IA-32 Architecture Machine Check Exception Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT64 GlobalCapabilityInitData; - UINT64 GlobalControlInitData; - UINT8 NumberOfHardwareBanks; - UINT8 Reserved1[7]; -} EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE; - -/// -/// IA-32 Architecture Machine Check Bank Structure Definition -/// -typedef struct { - UINT8 BankNumber; - UINT8 ClearStatusOnInitialization; - UINT8 StatusDataFormat; - UINT8 Reserved0; - UINT32 ControlRegisterMsrAddress; - UINT64 ControlInitData; - UINT32 StatusRegisterMsrAddress; - UINT32 AddressRegisterMsrAddress; - UINT32 MiscRegisterMsrAddress; -} EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE; - -/// -/// IA-32 Architecture Machine Check Bank Structure MCA data format -/// -#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00 -#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01 -#define EFI_ACPI_5_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02 - -// -// Hardware Error Notification types. All other values are reserved -// -#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00 -#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01 -#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02 -#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_SCI 0x03 -#define EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_NMI 0x04 - -/// -/// Hardware Error Notification Configuration Write Enable Structure Definition -/// -typedef struct { - UINT16 Type:1; - UINT16 PollInterval:1; - UINT16 SwitchToPollingThresholdValue:1; - UINT16 SwitchToPollingThresholdWindow:1; - UINT16 ErrorThresholdValue:1; - UINT16 ErrorThresholdWindow:1; - UINT16 Reserved:10; -} EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE; - -/// -/// Hardware Error Notification Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable; - UINT32 PollInterval; - UINT32 Vector; - UINT32 SwitchToPollingThresholdValue; - UINT32 SwitchToPollingThresholdWindow; - UINT32 ErrorThresholdValue; - UINT32 ErrorThresholdWindow; -} EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE; - -/// -/// IA-32 Architecture Corrected Machine Check Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; - UINT8 NumberOfHardwareBanks; - UINT8 Reserved1[3]; -} EFI_ACPI_5_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE; - -/// -/// IA-32 Architecture NMI Error Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 MaxRawDataLength; -} EFI_ACPI_5_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE; - -/// -/// PCI Express Root Port AER Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 Bus; - UINT16 Device; - UINT16 Function; - UINT16 DeviceControl; - UINT8 Reserved1[2]; - UINT32 UncorrectableErrorMask; - UINT32 UncorrectableErrorSeverity; - UINT32 CorrectableErrorMask; - UINT32 AdvancedErrorCapabilitiesAndControl; - UINT32 RootErrorCommand; -} EFI_ACPI_5_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE; - -/// -/// PCI Express Device AER Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 Bus; - UINT16 Device; - UINT16 Function; - UINT16 DeviceControl; - UINT8 Reserved1[2]; - UINT32 UncorrectableErrorMask; - UINT32 UncorrectableErrorSeverity; - UINT32 CorrectableErrorMask; - UINT32 AdvancedErrorCapabilitiesAndControl; -} EFI_ACPI_5_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE; - -/// -/// PCI Express Bridge AER Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 Bus; - UINT16 Device; - UINT16 Function; - UINT16 DeviceControl; - UINT8 Reserved1[2]; - UINT32 UncorrectableErrorMask; - UINT32 UncorrectableErrorSeverity; - UINT32 CorrectableErrorMask; - UINT32 AdvancedErrorCapabilitiesAndControl; - UINT32 SecondaryUncorrectableErrorMask; - UINT32 SecondaryUncorrectableErrorSeverity; - UINT32 SecondaryAdvancedErrorCapabilitiesAndControl; -} EFI_ACPI_5_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE; - -/// -/// Generic Hardware Error Source Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT16 RelatedSourceId; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 MaxRawDataLength; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress; - EFI_ACPI_5_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; - UINT32 ErrorStatusBlockLength; -} EFI_ACPI_5_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE; - -/// -/// Generic Error Status Definition -/// -typedef struct { - EFI_ACPI_5_0_ERROR_BLOCK_STATUS BlockStatus; - UINT32 RawDataOffset; - UINT32 RawDataLength; - UINT32 DataLength; - UINT32 ErrorSeverity; -} EFI_ACPI_5_0_GENERIC_ERROR_STATUS_STRUCTURE; - -/// -/// ERST - Error Record Serialization Table -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 SerializationHeaderSize; - UINT8 Reserved0[4]; - UINT32 InstructionEntryCount; -} EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER; - -/// -/// ERST Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01 - -/// -/// ERST Serialization Actions -/// -#define EFI_ACPI_5_0_ERST_BEGIN_WRITE_OPERATION 0x00 -#define EFI_ACPI_5_0_ERST_BEGIN_READ_OPERATION 0x01 -#define EFI_ACPI_5_0_ERST_BEGIN_CLEAR_OPERATION 0x02 -#define EFI_ACPI_5_0_ERST_END_OPERATION 0x03 -#define EFI_ACPI_5_0_ERST_SET_RECORD_OFFSET 0x04 -#define EFI_ACPI_5_0_ERST_EXECUTE_OPERATION 0x05 -#define EFI_ACPI_5_0_ERST_CHECK_BUSY_STATUS 0x06 -#define EFI_ACPI_5_0_ERST_GET_COMMAND_STATUS 0x07 -#define EFI_ACPI_5_0_ERST_GET_RECORD_IDENTIFIER 0x08 -#define EFI_ACPI_5_0_ERST_SET_RECORD_IDENTIFIER 0x09 -#define EFI_ACPI_5_0_ERST_GET_RECORD_COUNT 0x0A -#define EFI_ACPI_5_0_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B -#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D -#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E -#define EFI_ACPI_5_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F - -/// -/// ERST Action Command Status -/// -#define EFI_ACPI_5_0_ERST_STATUS_SUCCESS 0x00 -#define EFI_ACPI_5_0_ERST_STATUS_NOT_ENOUGH_SPACE 0x01 -#define EFI_ACPI_5_0_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x02 -#define EFI_ACPI_5_0_ERST_STATUS_FAILED 0x03 -#define EFI_ACPI_5_0_ERST_STATUS_RECORD_STORE_EMPTY 0x04 -#define EFI_ACPI_5_0_ERST_STATUS_RECORD_NOT_FOUND 0x05 - -/// -/// ERST Serialization Instructions -/// -#define EFI_ACPI_5_0_ERST_READ_REGISTER 0x00 -#define EFI_ACPI_5_0_ERST_READ_REGISTER_VALUE 0x01 -#define EFI_ACPI_5_0_ERST_WRITE_REGISTER 0x02 -#define EFI_ACPI_5_0_ERST_WRITE_REGISTER_VALUE 0x03 -#define EFI_ACPI_5_0_ERST_NOOP 0x04 -#define EFI_ACPI_5_0_ERST_LOAD_VAR1 0x05 -#define EFI_ACPI_5_0_ERST_LOAD_VAR2 0x06 -#define EFI_ACPI_5_0_ERST_STORE_VAR1 0x07 -#define EFI_ACPI_5_0_ERST_ADD 0x08 -#define EFI_ACPI_5_0_ERST_SUBTRACT 0x09 -#define EFI_ACPI_5_0_ERST_ADD_VALUE 0x0A -#define EFI_ACPI_5_0_ERST_SUBTRACT_VALUE 0x0B -#define EFI_ACPI_5_0_ERST_STALL 0x0C -#define EFI_ACPI_5_0_ERST_STALL_WHILE_TRUE 0x0D -#define EFI_ACPI_5_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E -#define EFI_ACPI_5_0_ERST_GOTO 0x0F -#define EFI_ACPI_5_0_ERST_SET_SRC_ADDRESS_BASE 0x10 -#define EFI_ACPI_5_0_ERST_SET_DST_ADDRESS_BASE 0x11 -#define EFI_ACPI_5_0_ERST_MOVE_DATA 0x12 - -/// -/// ERST Instruction Flags -/// -#define EFI_ACPI_5_0_ERST_PRESERVE_REGISTER 0x01 - -/// -/// ERST Serialization Instruction Entry -/// -typedef struct { - UINT8 SerializationAction; - UINT8 Instruction; - UINT8 Flags; - UINT8 Reserved0; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion; - UINT64 Value; - UINT64 Mask; -} EFI_ACPI_5_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY; - -/// -/// EINJ - Error Injection Table -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 InjectionHeaderSize; - UINT8 InjectionFlags; - UINT8 Reserved0[3]; - UINT32 InjectionEntryCount; -} EFI_ACPI_5_0_ERROR_INJECTION_TABLE_HEADER; - -/// -/// EINJ Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_ERROR_INJECTION_TABLE_REVISION 0x01 - -/// -/// EINJ Error Injection Actions -/// -#define EFI_ACPI_5_0_EINJ_BEGIN_INJECTION_OPERATION 0x00 -#define EFI_ACPI_5_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01 -#define EFI_ACPI_5_0_EINJ_SET_ERROR_TYPE 0x02 -#define EFI_ACPI_5_0_EINJ_GET_ERROR_TYPE 0x03 -#define EFI_ACPI_5_0_EINJ_END_OPERATION 0x04 -#define EFI_ACPI_5_0_EINJ_EXECUTE_OPERATION 0x05 -#define EFI_ACPI_5_0_EINJ_CHECK_BUSY_STATUS 0x06 -#define EFI_ACPI_5_0_EINJ_GET_COMMAND_STATUS 0x07 -#define EFI_ACPI_5_0_EINJ_TRIGGER_ERROR 0xFF - -/// -/// EINJ Action Command Status -/// -#define EFI_ACPI_5_0_EINJ_STATUS_SUCCESS 0x00 -#define EFI_ACPI_5_0_EINJ_STATUS_UNKNOWN_FAILURE 0x01 -#define EFI_ACPI_5_0_EINJ_STATUS_INVALID_ACCESS 0x02 - -/// -/// EINJ Error Type Definition -/// -#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0) -#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1) -#define EFI_ACPI_5_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2) -#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3) -#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4) -#define EFI_ACPI_5_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5) -#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6) -#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7) -#define EFI_ACPI_5_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8) -#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9) -#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10) -#define EFI_ACPI_5_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11) - -/// -/// EINJ Injection Instructions -/// -#define EFI_ACPI_5_0_EINJ_READ_REGISTER 0x00 -#define EFI_ACPI_5_0_EINJ_READ_REGISTER_VALUE 0x01 -#define EFI_ACPI_5_0_EINJ_WRITE_REGISTER 0x02 -#define EFI_ACPI_5_0_EINJ_WRITE_REGISTER_VALUE 0x03 -#define EFI_ACPI_5_0_EINJ_NOOP 0x04 - -/// -/// EINJ Instruction Flags -/// -#define EFI_ACPI_5_0_EINJ_PRESERVE_REGISTER 0x01 - -/// -/// EINJ Injection Instruction Entry -/// -typedef struct { - UINT8 InjectionAction; - UINT8 Instruction; - UINT8 Flags; - UINT8 Reserved0; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion; - UINT64 Value; - UINT64 Mask; -} EFI_ACPI_5_0_EINJ_INJECTION_INSTRUCTION_ENTRY; - -/// -/// EINJ Trigger Action Table -/// -typedef struct { - UINT32 HeaderSize; - UINT32 Revision; - UINT32 TableSize; - UINT32 EntryCount; -} EFI_ACPI_5_0_EINJ_TRIGGER_ACTION_TABLE; - -/// -/// Platform Communications Channel Table (PCCT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 Flags; - UINT64 Reserved; -} EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER; - -/// -/// PCCT Version (as defined in ACPI 5.0 spec.) -/// -#define EFI_ACPI_5_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01 - -/// -/// PCCT Global Flags -/// -#define EFI_ACPI_5_0_PCCT_FLAGS_SCI_DOORBELL BIT0 - -// -// PCCT Subspace type -// -#define EFI_ACPI_5_0_PCCT_SUBSPACE_TYPE_GENERIC 0x00 - -/// -/// PCC Subspace Structure Header -/// -typedef struct { - UINT8 Type; - UINT8 Length; -} EFI_ACPI_5_0_PCCT_SUBSPACE_HEADER; - -/// -/// Generic Communications Subspace Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Reserved[6]; - UINT64 BaseAddress; - UINT64 AddressLength; - EFI_ACPI_5_0_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; - UINT64 DoorbellPreserve; - UINT64 DoorbellWrite; - UINT32 NominalLatency; - UINT32 MaximumPeriodicAccessRate; - UINT16 MinimumRequestTurnaroundTime; -} EFI_ACPI_5_0_PCCT_SUBSPACE_GENERIC; - -/// -/// Generic Communications Channel Shared Memory Region -/// - -typedef struct { - UINT8 Command; - UINT8 Reserved:7; - UINT8 GenerateSci:1; -} EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND; - -typedef struct { - UINT8 CommandComplete:1; - UINT8 SciDoorbell:1; - UINT8 Error:1; - UINT8 PlatformNotification:1; - UINT8 Reserved:4; - UINT8 Reserved1; -} EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS; - -typedef struct { - UINT32 Signature; - EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command; - EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status; -} EFI_ACPI_5_0_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER; - -// -// Known table signatures -// - -/// -/// "RSD PTR " Root System Description Pointer -/// -#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') - -/// -/// "APIC" Multiple APIC Description Table -/// -#define EFI_ACPI_5_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') - -/// -/// "BERT" Boot Error Record Table -/// -#define EFI_ACPI_5_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T') - -/// -/// "BGRT" Boot Graphics Resource Table -/// -#define EFI_ACPI_5_0_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T') - -/// -/// "CPEP" Corrected Platform Error Polling Table -/// -#define EFI_ACPI_5_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P') - -/// -/// "DSDT" Differentiated System Description Table -/// -#define EFI_ACPI_5_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') - -/// -/// "ECDT" Embedded Controller Boot Resources Table -/// -#define EFI_ACPI_5_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T') - -/// -/// "EINJ" Error Injection Table -/// -#define EFI_ACPI_5_0_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J') - -/// -/// "ERST" Error Record Serialization Table -/// -#define EFI_ACPI_5_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T') - -/// -/// "FACP" Fixed ACPI Description Table -/// -#define EFI_ACPI_5_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') - -/// -/// "FACS" Firmware ACPI Control Structure -/// -#define EFI_ACPI_5_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') - -/// -/// "FPDT" Firmware Performance Data Table -/// -#define EFI_ACPI_5_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T') - -/// -/// "GTDT" Generic Timer Description Table -/// -#define EFI_ACPI_5_0_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T') - -/// -/// "HEST" Hardware Error Source Table -/// -#define EFI_ACPI_5_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T') - -/// -/// "MPST" Memory Power State Table -/// -#define EFI_ACPI_5_0_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T') - -/// -/// "MSCT" Maximum System Characteristics Table -/// -#define EFI_ACPI_5_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T') - -/// -/// "PMTT" Platform Memory Topology Table -/// -#define EFI_ACPI_5_0_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T') - -/// -/// "PSDT" Persistent System Description Table -/// -#define EFI_ACPI_5_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') - -/// -/// "RASF" ACPI RAS Feature Table -/// -#define EFI_ACPI_5_0_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F') - -/// -/// "RSDT" Root System Description Table -/// -#define EFI_ACPI_5_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') - -/// -/// "SBST" Smart Battery Specification Table -/// -#define EFI_ACPI_5_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') - -/// -/// "SLIT" System Locality Information Table -/// -#define EFI_ACPI_5_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T') - -/// -/// "SRAT" System Resource Affinity Table -/// -#define EFI_ACPI_5_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T') - -/// -/// "SSDT" Secondary System Description Table -/// -#define EFI_ACPI_5_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') - -/// -/// "XSDT" Extended System Description Table -/// -#define EFI_ACPI_5_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T') - -/// -/// "BOOT" MS Simple Boot Spec -/// -#define EFI_ACPI_5_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T') - -/// -/// "CSRT" MS Core System Resource Table -/// -#define EFI_ACPI_5_0_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T') - -/// -/// "DBG2" MS Debug Port 2 Spec -/// -#define EFI_ACPI_5_0_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2') - -/// -/// "DBGP" MS Debug Port Spec -/// -#define EFI_ACPI_5_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P') - -/// -/// "DMAR" DMA Remapping Table -/// -#define EFI_ACPI_5_0_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R') - -/// -/// "DRTM" Dynamic Root of Trust for Measurement Table -/// -#define EFI_ACPI_5_0_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M') - -/// -/// "ETDT" Event Timer Description Table -/// -#define EFI_ACPI_5_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T') - -/// -/// "HPET" IA-PC High Precision Event Timer Table -/// -#define EFI_ACPI_5_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T') - -/// -/// "iBFT" iSCSI Boot Firmware Table -/// -#define EFI_ACPI_5_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T') - -/// -/// "IVRS" I/O Virtualization Reporting Structure -/// -#define EFI_ACPI_5_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S') - -/// -/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table -/// -#define EFI_ACPI_5_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G') - -/// -/// "MCHI" Management Controller Host Interface Table -/// -#define EFI_ACPI_5_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I') - -/// -/// "MSDM" MS Data Management Table -/// -#define EFI_ACPI_5_0_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M') - -/// -/// "SLIC" MS Software Licensing Table Specification -/// -#define EFI_ACPI_5_0_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C') - -/// -/// "SPCR" Serial Port Concole Redirection Table -/// -#define EFI_ACPI_5_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R') - -/// -/// "SPMI" Server Platform Management Interface Table -/// -#define EFI_ACPI_5_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I') - -/// -/// "TCPA" Trusted Computing Platform Alliance Capabilities Table -/// -#define EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A') - -/// -/// "TPM2" Trusted Computing Platform 1 Table -/// -#define EFI_ACPI_5_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2') - -/// -/// "UEFI" UEFI ACPI Data Table -/// -#define EFI_ACPI_5_0_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I') - -/// -/// "WAET" Windows ACPI Emulated Devices Table -/// -#define EFI_ACPI_5_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T') -#define EFI_ACPI_5_0_WINDOWS_ACPI_ENLIGHTENMENT_TABLE_SIGNATURE EFI_ACPI_5_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE - -/// -/// "WDAT" Watchdog Action Table -/// -#define EFI_ACPI_5_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T') - -/// -/// "WDRT" Watchdog Resource Table -/// -#define EFI_ACPI_5_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T') - -/// -/// "WPBT" MS Platform Binary Table -/// -#define EFI_ACPI_5_0_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T') - -#pragma pack() - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi51.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi51.h deleted file mode 100644 index 19cb3c53df..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi51.h +++ /dev/null @@ -1,2129 +0,0 @@ -/** @file - ACPI 5.1 definitions from the ACPI Specification Revision 5.1 July, 2014. - - Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
- Copyright (c) 2014 - 2016, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -**/ - -#ifndef _ACPI_5_1_H_ -#define _ACPI_5_1_H_ - -#include - -// -// Ensure proper structure formats -// -#pragma pack(1) - -/// -/// ACPI 5.1 Generic Address Space definition -/// -typedef struct { - UINT8 AddressSpaceId; - UINT8 RegisterBitWidth; - UINT8 RegisterBitOffset; - UINT8 AccessSize; - UINT64 Address; -} EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE; - -// -// Generic Address Space Address IDs -// -#define EFI_ACPI_5_1_SYSTEM_MEMORY 0 -#define EFI_ACPI_5_1_SYSTEM_IO 1 -#define EFI_ACPI_5_1_PCI_CONFIGURATION_SPACE 2 -#define EFI_ACPI_5_1_EMBEDDED_CONTROLLER 3 -#define EFI_ACPI_5_1_SMBUS 4 -#define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL 0x0A -#define EFI_ACPI_5_1_FUNCTIONAL_FIXED_HARDWARE 0x7F - -// -// Generic Address Space Access Sizes -// -#define EFI_ACPI_5_1_UNDEFINED 0 -#define EFI_ACPI_5_1_BYTE 1 -#define EFI_ACPI_5_1_WORD 2 -#define EFI_ACPI_5_1_DWORD 3 -#define EFI_ACPI_5_1_QWORD 4 - -// -// ACPI 5.1 table structures -// - -/// -/// Root System Description Pointer Structure -/// -typedef struct { - UINT64 Signature; - UINT8 Checksum; - UINT8 OemId[6]; - UINT8 Revision; - UINT32 RsdtAddress; - UINT32 Length; - UINT64 XsdtAddress; - UINT8 ExtendedChecksum; - UINT8 Reserved[3]; -} EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER; - -/// -/// RSD_PTR Revision (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 5.1) says current value is 2 - -/// -/// Common table header, this prefaces all ACPI tables, including FACS, but -/// excluding the RSD PTR structure -/// -typedef struct { - UINT32 Signature; - UINT32 Length; -} EFI_ACPI_5_1_COMMON_HEADER; - -// -// Root System Description Table -// No definition needed as it is a common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. -// - -/// -/// RSDT Revision (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 - -// -// Extended System Description Table -// No definition needed as it is a common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers. -// - -/// -/// XSDT Revision (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Fixed ACPI Description Table Structure (FADT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 FirmwareCtrl; - UINT32 Dsdt; - UINT8 Reserved0; - UINT8 PreferredPmProfile; - UINT16 SciInt; - UINT32 SmiCmd; - UINT8 AcpiEnable; - UINT8 AcpiDisable; - UINT8 S4BiosReq; - UINT8 PstateCnt; - UINT32 Pm1aEvtBlk; - UINT32 Pm1bEvtBlk; - UINT32 Pm1aCntBlk; - UINT32 Pm1bCntBlk; - UINT32 Pm2CntBlk; - UINT32 PmTmrBlk; - UINT32 Gpe0Blk; - UINT32 Gpe1Blk; - UINT8 Pm1EvtLen; - UINT8 Pm1CntLen; - UINT8 Pm2CntLen; - UINT8 PmTmrLen; - UINT8 Gpe0BlkLen; - UINT8 Gpe1BlkLen; - UINT8 Gpe1Base; - UINT8 CstCnt; - UINT16 PLvl2Lat; - UINT16 PLvl3Lat; - UINT16 FlushSize; - UINT16 FlushStride; - UINT8 DutyOffset; - UINT8 DutyWidth; - UINT8 DayAlrm; - UINT8 MonAlrm; - UINT8 Century; - UINT16 IaPcBootArch; - UINT8 Reserved1; - UINT32 Flags; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE ResetReg; - UINT8 ResetValue; - UINT16 ArmBootArch; - UINT8 MinorVersion; - UINT64 XFirmwareCtrl; - UINT64 XDsdt; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE SleepControlReg; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE SleepStatusReg; -} EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE; - -/// -/// FADT Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x05 -#define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION 0x01 - -// -// Fixed ACPI Description Table Preferred Power Management Profile -// -#define EFI_ACPI_5_1_PM_PROFILE_UNSPECIFIED 0 -#define EFI_ACPI_5_1_PM_PROFILE_DESKTOP 1 -#define EFI_ACPI_5_1_PM_PROFILE_MOBILE 2 -#define EFI_ACPI_5_1_PM_PROFILE_WORKSTATION 3 -#define EFI_ACPI_5_1_PM_PROFILE_ENTERPRISE_SERVER 4 -#define EFI_ACPI_5_1_PM_PROFILE_SOHO_SERVER 5 -#define EFI_ACPI_5_1_PM_PROFILE_APPLIANCE_PC 6 -#define EFI_ACPI_5_1_PM_PROFILE_PERFORMANCE_SERVER 7 -#define EFI_ACPI_5_1_PM_PROFILE_TABLET 8 - -// -// Fixed ACPI Description Table Boot Architecture Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_5_1_LEGACY_DEVICES BIT0 -#define EFI_ACPI_5_1_8042 BIT1 -#define EFI_ACPI_5_1_VGA_NOT_PRESENT BIT2 -#define EFI_ACPI_5_1_MSI_NOT_SUPPORTED BIT3 -#define EFI_ACPI_5_1_PCIE_ASPM_CONTROLS BIT4 -#define EFI_ACPI_5_1_CMOS_RTC_NOT_PRESENT BIT5 - -// -// Fixed ACPI Description Table Arm Boot Architecture Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_5_1_ARM_PSCI_COMPLIANT BIT0 -#define EFI_ACPI_5_1_ARM_PSCI_USE_HVC BIT1 - -// -// Fixed ACPI Description Table Fixed Feature Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_5_1_WBINVD BIT0 -#define EFI_ACPI_5_1_WBINVD_FLUSH BIT1 -#define EFI_ACPI_5_1_PROC_C1 BIT2 -#define EFI_ACPI_5_1_P_LVL2_UP BIT3 -#define EFI_ACPI_5_1_PWR_BUTTON BIT4 -#define EFI_ACPI_5_1_SLP_BUTTON BIT5 -#define EFI_ACPI_5_1_FIX_RTC BIT6 -#define EFI_ACPI_5_1_RTC_S4 BIT7 -#define EFI_ACPI_5_1_TMR_VAL_EXT BIT8 -#define EFI_ACPI_5_1_DCK_CAP BIT9 -#define EFI_ACPI_5_1_RESET_REG_SUP BIT10 -#define EFI_ACPI_5_1_SEALED_CASE BIT11 -#define EFI_ACPI_5_1_HEADLESS BIT12 -#define EFI_ACPI_5_1_CPU_SW_SLP BIT13 -#define EFI_ACPI_5_1_PCI_EXP_WAK BIT14 -#define EFI_ACPI_5_1_USE_PLATFORM_CLOCK BIT15 -#define EFI_ACPI_5_1_S4_RTC_STS_VALID BIT16 -#define EFI_ACPI_5_1_REMOTE_POWER_ON_CAPABLE BIT17 -#define EFI_ACPI_5_1_FORCE_APIC_CLUSTER_MODEL BIT18 -#define EFI_ACPI_5_1_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19 -#define EFI_ACPI_5_1_HW_REDUCED_ACPI BIT20 -#define EFI_ACPI_5_1_LOW_POWER_S0_IDLE_CAPABLE BIT21 - -/// -/// Firmware ACPI Control Structure -/// -typedef struct { - UINT32 Signature; - UINT32 Length; - UINT32 HardwareSignature; - UINT32 FirmwareWakingVector; - UINT32 GlobalLock; - UINT32 Flags; - UINT64 XFirmwareWakingVector; - UINT8 Version; - UINT8 Reserved0[3]; - UINT32 OspmFlags; - UINT8 Reserved1[24]; -} EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE; - -/// -/// FACS Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02 - -/// -/// Firmware Control Structure Feature Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_5_1_S4BIOS_F BIT0 -#define EFI_ACPI_5_1_64BIT_WAKE_SUPPORTED_F BIT1 - -/// -/// OSPM Enabled Firmware Control Structure Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_5_1_OSPM_64BIT_WAKE_F BIT0 - -// -// Differentiated System Description Table, -// Secondary System Description Table -// and Persistent System Description Table, -// no definition needed as they are common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block. -// -#define EFI_ACPI_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 -#define EFI_ACPI_5_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 - -/// -/// Multiple APIC Description Table header definition. The rest of the table -/// must be defined in a platform specific manner. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 LocalApicAddress; - UINT32 Flags; -} EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; - -/// -/// MADT Revision (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03 - -/// -/// Multiple APIC Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_5_1_PCAT_COMPAT BIT0 - -// -// Multiple APIC Description Table APIC structure types -// All other values between 0x0D and 0x7F are reserved and -// will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM. -// -#define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC 0x00 -#define EFI_ACPI_5_1_IO_APIC 0x01 -#define EFI_ACPI_5_1_INTERRUPT_SOURCE_OVERRIDE 0x02 -#define EFI_ACPI_5_1_NON_MASKABLE_INTERRUPT_SOURCE 0x03 -#define EFI_ACPI_5_1_LOCAL_APIC_NMI 0x04 -#define EFI_ACPI_5_1_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 -#define EFI_ACPI_5_1_IO_SAPIC 0x06 -#define EFI_ACPI_5_1_LOCAL_SAPIC 0x07 -#define EFI_ACPI_5_1_PLATFORM_INTERRUPT_SOURCES 0x08 -#define EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC 0x09 -#define EFI_ACPI_5_1_LOCAL_X2APIC_NMI 0x0A -#define EFI_ACPI_5_1_GIC 0x0B -#define EFI_ACPI_5_1_GICD 0x0C -#define EFI_ACPI_5_1_GIC_MSI_FRAME 0x0D -#define EFI_ACPI_5_1_GICR 0x0E - -// -// APIC Structure Definitions -// - -/// -/// Processor Local APIC Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT8 ApicId; - UINT32 Flags; -} EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_STRUCTURE; - -/// -/// Local APIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_1_LOCAL_APIC_ENABLED BIT0 - -/// -/// IO APIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 IoApicId; - UINT8 Reserved; - UINT32 IoApicAddress; - UINT32 GlobalSystemInterruptBase; -} EFI_ACPI_5_1_IO_APIC_STRUCTURE; - -/// -/// Interrupt Source Override Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Bus; - UINT8 Source; - UINT32 GlobalSystemInterrupt; - UINT16 Flags; -} EFI_ACPI_5_1_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; - -/// -/// Platform Interrupt Sources Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT8 InterruptType; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT8 IoSapicVector; - UINT32 GlobalSystemInterrupt; - UINT32 PlatformInterruptSourceFlags; - UINT8 CpeiProcessorOverride; - UINT8 Reserved[31]; -} EFI_ACPI_5_1_PLATFORM_INTERRUPT_APIC_STRUCTURE; - -// -// MPS INTI flags. -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_5_1_POLARITY (3 << 0) -#define EFI_ACPI_5_1_TRIGGER_MODE (3 << 2) - -/// -/// Non-Maskable Interrupt Source Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT32 GlobalSystemInterrupt; -} EFI_ACPI_5_1_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; - -/// -/// Local APIC NMI Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT16 Flags; - UINT8 LocalApicLint; -} EFI_ACPI_5_1_LOCAL_APIC_NMI_STRUCTURE; - -/// -/// Local APIC Address Override Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT64 LocalApicAddress; -} EFI_ACPI_5_1_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE; - -/// -/// IO SAPIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 IoApicId; - UINT8 Reserved; - UINT32 GlobalSystemInterruptBase; - UINT64 IoSapicAddress; -} EFI_ACPI_5_1_IO_SAPIC_STRUCTURE; - -/// -/// Local SAPIC Structure -/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT8 LocalSapicId; - UINT8 LocalSapicEid; - UINT8 Reserved[3]; - UINT32 Flags; - UINT32 ACPIProcessorUIDValue; -} EFI_ACPI_5_1_PROCESSOR_LOCAL_SAPIC_STRUCTURE; - -/// -/// Platform Interrupt Sources Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT8 InterruptType; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT8 IoSapicVector; - UINT32 GlobalSystemInterrupt; - UINT32 PlatformInterruptSourceFlags; -} EFI_ACPI_5_1_PLATFORM_INTERRUPT_SOURCES_STRUCTURE; - -/// -/// Platform Interrupt Source Flags. -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_5_1_CPEI_PROCESSOR_OVERRIDE BIT0 - -/// -/// Processor Local x2APIC Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Reserved[2]; - UINT32 X2ApicId; - UINT32 Flags; - UINT32 AcpiProcessorUid; -} EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_STRUCTURE; - -/// -/// Local x2APIC NMI Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT32 AcpiProcessorUid; - UINT8 LocalX2ApicLint; - UINT8 Reserved[3]; -} EFI_ACPI_5_1_LOCAL_X2APIC_NMI_STRUCTURE; - -/// -/// GIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT32 CPUInterfaceNumber; - UINT32 AcpiProcessorUid; - UINT32 Flags; - UINT32 ParkingProtocolVersion; - UINT32 PerformanceInterruptGsiv; - UINT64 ParkedAddress; - UINT64 PhysicalBaseAddress; - UINT64 GICV; - UINT64 GICH; - UINT32 VGICMaintenanceInterrupt; - UINT64 GICRBaseAddress; - UINT64 MPIDR; -} EFI_ACPI_5_1_GIC_STRUCTURE; - -/// -/// GIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_1_GIC_ENABLED BIT0 -#define EFI_ACPI_5_1_PERFORMANCE_INTERRUPT_MODEL BIT1 -#define EFI_ACPI_5_1_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS BIT2 - -/// -/// GIC Distributor Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved1; - UINT32 GicId; - UINT64 PhysicalBaseAddress; - UINT32 SystemVectorBase; - UINT32 Reserved2; -} EFI_ACPI_5_1_GIC_DISTRIBUTOR_STRUCTURE; - -/// -/// GIC MSI Frame Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved1; - UINT32 GicMsiFrameId; - UINT64 PhysicalBaseAddress; - UINT32 Flags; - UINT16 SPICount; - UINT16 SPIBase; -} EFI_ACPI_5_1_GIC_MSI_FRAME_STRUCTURE; - -/// -/// GIC MSI Frame Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_1_SPI_COUNT_BASE_SELECT BIT0 - -/// -/// GICR Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT64 DiscoveryRangeBaseAddress; - UINT32 DiscoveryRangeLength; -} EFI_ACPI_5_1_GICR_STRUCTURE; - -/// -/// Smart Battery Description Table (SBST) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 WarningEnergyLevel; - UINT32 LowEnergyLevel; - UINT32 CriticalEnergyLevel; -} EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE; - -/// -/// SBST Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Embedded Controller Boot Resources Table (ECDT) -/// The table is followed by a null terminated ASCII string that contains -/// a fully qualified reference to the name space object. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE EcControl; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE EcData; - UINT32 Uid; - UINT8 GpeBit; -} EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE; - -/// -/// ECDT Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01 - -/// -/// System Resource Affinity Table (SRAT). The rest of the table -/// must be defined in a platform specific manner. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 Reserved1; ///< Must be set to 1 - UINT64 Reserved2; -} EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER; - -/// -/// SRAT Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03 - -// -// SRAT structure types. -// All other values between 0x04 an 0xFF are reserved and -// will be ignored by OSPM. -// -#define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00 -#define EFI_ACPI_5_1_MEMORY_AFFINITY 0x01 -#define EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02 -#define EFI_ACPI_5_1_GICC_AFFINITY 0x03 - -/// -/// Processor Local APIC/SAPIC Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 ProximityDomain7To0; - UINT8 ApicId; - UINT32 Flags; - UINT8 LocalSapicEid; - UINT8 ProximityDomain31To8[3]; - UINT32 ClockDomain; -} EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE; - -/// -/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_1_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0) - -/// -/// Memory Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT32 ProximityDomain; - UINT16 Reserved1; - UINT32 AddressBaseLow; - UINT32 AddressBaseHigh; - UINT32 LengthLow; - UINT32 LengthHigh; - UINT32 Reserved2; - UINT32 Flags; - UINT64 Reserved3; -} EFI_ACPI_5_1_MEMORY_AFFINITY_STRUCTURE; - -// -// Memory Flags. All other bits are reserved and must be 0. -// -#define EFI_ACPI_5_1_MEMORY_ENABLED (1 << 0) -#define EFI_ACPI_5_1_MEMORY_HOT_PLUGGABLE (1 << 1) -#define EFI_ACPI_5_1_MEMORY_NONVOLATILE (1 << 2) - -/// -/// Processor Local x2APIC Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Reserved1[2]; - UINT32 ProximityDomain; - UINT32 X2ApicId; - UINT32 Flags; - UINT32 ClockDomain; - UINT8 Reserved2[4]; -} EFI_ACPI_5_1_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE; - -/// -/// GICC Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT32 ProximityDomain; - UINT32 AcpiProcessorUid; - UINT32 Flags; - UINT32 ClockDomain; -} EFI_ACPI_5_1_GICC_AFFINITY_STRUCTURE; - -/// -/// GICC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_1_GICC_ENABLED (1 << 0) - -/// -/// System Locality Distance Information Table (SLIT). -/// The rest of the table is a matrix. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT64 NumberOfSystemLocalities; -} EFI_ACPI_5_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER; - -/// -/// SLIT Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01 - -/// -/// Corrected Platform Error Polling Table (CPEP) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT8 Reserved[8]; -} EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER; - -/// -/// CPEP Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01 - -// -// CPEP processor structure types. -// -#define EFI_ACPI_5_1_CPEP_PROCESSOR_APIC_SAPIC 0x00 - -/// -/// Corrected Platform Error Polling Processor Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT32 PollingInterval; -} EFI_ACPI_5_1_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE; - -/// -/// Maximum System Characteristics Table (MSCT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 OffsetProxDomInfo; - UINT32 MaximumNumberOfProximityDomains; - UINT32 MaximumNumberOfClockDomains; - UINT64 MaximumPhysicalAddress; -} EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER; - -/// -/// MSCT Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01 - -/// -/// Maximum Proximity Domain Information Structure Definition -/// -typedef struct { - UINT8 Revision; - UINT8 Length; - UINT32 ProximityDomainRangeLow; - UINT32 ProximityDomainRangeHigh; - UINT32 MaximumProcessorCapacity; - UINT64 MaximumMemoryCapacity; -} EFI_ACPI_5_1_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE; - -/// -/// ACPI RAS Feature Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT8 PlatformCommunicationChannelIdentifier[12]; -} EFI_ACPI_5_1_RAS_FEATURE_TABLE; - -/// -/// RASF Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_RAS_FEATURE_TABLE_REVISION 0x01 - -/// -/// ACPI RASF Platform Communication Channel Shared Memory Region definition. -/// -typedef struct { - UINT32 Signature; - UINT16 Command; - UINT16 Status; - UINT16 Version; - UINT8 RASCapabilities[16]; - UINT8 SetRASCapabilities[16]; - UINT16 NumberOfRASFParameterBlocks; - UINT32 SetRASCapabilitiesStatus; -} EFI_ACPI_5_1_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION; - -/// -/// ACPI RASF PCC command code -/// -#define EFI_ACPI_5_1_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01 - -/// -/// ACPI RASF Platform RAS Capabilities -/// -#define EFI_ACPI_5_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED 0x01 -#define EFI_ACPI_5_1_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE 0x02 - -/// -/// ACPI RASF Parameter Block structure for PATROL_SCRUB -/// -typedef struct { - UINT16 Type; - UINT16 Version; - UINT16 Length; - UINT16 PatrolScrubCommand; - UINT64 RequestedAddressRange[2]; - UINT64 ActualAddressRange[2]; - UINT16 Flags; - UINT8 RequestedSpeed; -} EFI_ACPI_5_1_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE; - -/// -/// ACPI RASF Patrol Scrub command -/// -#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01 -#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02 -#define EFI_ACPI_5_1_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03 - -/// -/// Memory Power State Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT8 PlatformCommunicationChannelIdentifier; - UINT8 Reserved[3]; -// Memory Power Node Structure -// Memory Power State Characteristics -} EFI_ACPI_5_1_MEMORY_POWER_STATUS_TABLE; - -/// -/// MPST Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_REVISION 0x01 - -/// -/// MPST Platform Communication Channel Shared Memory Region definition. -/// -typedef struct { - UINT32 Signature; - UINT16 Command; - UINT16 Status; - UINT32 MemoryPowerCommandRegister; - UINT32 MemoryPowerStatusRegister; - UINT32 PowerStateId; - UINT32 MemoryPowerNodeId; - UINT64 MemoryEnergyConsumed; - UINT64 ExpectedAveragePowerComsuned; -} EFI_ACPI_5_1_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION; - -/// -/// ACPI MPST PCC command code -/// -#define EFI_ACPI_5_1_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03 - -/// -/// ACPI MPST Memory Power command -/// -#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01 -#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02 -#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03 -#define EFI_ACPI_5_1_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04 - -/// -/// MPST Memory Power Node Table -/// -typedef struct { - UINT8 PowerStateValue; - UINT8 PowerStateInformationIndex; -} EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE; - -typedef struct { - UINT8 Flag; - UINT8 Reserved; - UINT16 MemoryPowerNodeId; - UINT32 Length; - UINT64 AddressBase; - UINT64 AddressLength; - UINT32 NumberOfPowerStates; - UINT32 NumberOfPhysicalComponents; -//EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates]; -//UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents]; -} EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE; - -#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01 -#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02 -#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04 - -typedef struct { - UINT16 MemoryPowerNodeCount; - UINT8 Reserved[2]; -} EFI_ACPI_5_1_MPST_MEMORY_POWER_NODE_TABLE; - -/// -/// MPST Memory Power State Characteristics Table -/// -typedef struct { - UINT8 PowerStateStructureID; - UINT8 Flag; - UINT16 Reserved; - UINT32 AveragePowerConsumedInMPS0; - UINT32 RelativePowerSavingToMPS0; - UINT64 ExitLatencyToMPS0; -} EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE; - -#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01 -#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02 -#define EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04 - -typedef struct { - UINT16 MemoryPowerStateCharacteristicsCount; - UINT8 Reserved[2]; -} EFI_ACPI_5_1_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE; - -/// -/// Memory Topology Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 Reserved; -} EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE; - -/// -/// PMTT Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_MEMORY_TOPOLOGY_TABLE_REVISION 0x01 - -/// -/// Common Memory Aggregator Device Structure. -/// -typedef struct { - UINT8 Type; - UINT8 Reserved; - UINT16 Length; - UINT16 Flags; - UINT16 Reserved1; -} EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; - -/// -/// Memory Aggregator Device Type -/// -#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET 0x1 -#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2 -#define EFI_ACPI_5_1_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM 0x3 - -/// -/// Socket Memory Aggregator Device Structure. -/// -typedef struct { - EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; - UINT16 SocketIdentifier; - UINT16 Reserved; -//EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE MemoryController[]; -} EFI_ACPI_5_1_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; - -/// -/// MemoryController Memory Aggregator Device Structure. -/// -typedef struct { - EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; - UINT32 ReadLatency; - UINT32 WriteLatency; - UINT32 ReadBandwidth; - UINT32 WriteBandwidth; - UINT16 OptimalAccessUnit; - UINT16 OptimalAccessAlignment; - UINT16 Reserved; - UINT16 NumberOfProximityDomains; -//UINT32 ProximityDomain[NumberOfProximityDomains]; -//EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE PhysicalComponent[]; -} EFI_ACPI_5_1_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; - -/// -/// DIMM Memory Aggregator Device Structure. -/// -typedef struct { - EFI_ACPI_5_1_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; - UINT16 PhysicalComponentIdentifier; - UINT16 Reserved; - UINT32 SizeOfDimm; - UINT32 SmbiosHandle; -} EFI_ACPI_5_1_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; - -/// -/// Boot Graphics Resource Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - /// - /// 2-bytes (16 bit) version ID. This value must be 1. - /// - UINT16 Version; - /// - /// 1-byte status field indicating current status about the table. - /// Bits[7:1] = Reserved (must be zero) - /// Bit [0] = Valid. A one indicates the boot image graphic is valid. - /// - UINT8 Status; - /// - /// 1-byte enumerated type field indicating format of the image. - /// 0 = Bitmap - /// 1 - 255 Reserved (for future use) - /// - UINT8 ImageType; - /// - /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy - /// of the image bitmap. - /// - UINT64 ImageAddress; - /// - /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image. - /// (X, Y) display offset of the top left corner of the boot image. - /// The top left corner of the display is at offset (0, 0). - /// - UINT32 ImageOffsetX; - /// - /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image. - /// (X, Y) display offset of the top left corner of the boot image. - /// The top left corner of the display is at offset (0, 0). - /// - UINT32 ImageOffsetY; -} EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE; - -/// -/// BGRT Revision -/// -#define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1 - -/// -/// BGRT Version -/// -#define EFI_ACPI_5_1_BGRT_VERSION 0x01 - -/// -/// BGRT Status -/// -#define EFI_ACPI_5_1_BGRT_STATUS_NOT_DISPLAYED 0x00 -#define EFI_ACPI_5_1_BGRT_STATUS_DISPLAYED 0x01 - -/// -/// BGRT Image Type -/// -#define EFI_ACPI_5_1_BGRT_IMAGE_TYPE_BMP 0x00 - -/// -/// FPDT Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01 - -/// -/// FPDT Performance Record Types -/// -#define EFI_ACPI_5_1_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x0000 -#define EFI_ACPI_5_1_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x0001 - -/// -/// FPDT Performance Record Revision -/// -#define EFI_ACPI_5_1_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x01 -#define EFI_ACPI_5_1_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01 - -/// -/// FPDT Runtime Performance Record Types -/// -#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x0000 -#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x0001 -#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x0002 - -/// -/// FPDT Runtime Performance Record Revision -/// -#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x01 -#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x01 -#define EFI_ACPI_5_1_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x02 - -/// -/// FPDT Performance Record header -/// -typedef struct { - UINT16 Type; - UINT8 Length; - UINT8 Revision; -} EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER; - -/// -/// FPDT Performance Table header -/// -typedef struct { - UINT32 Signature; - UINT32 Length; -} EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER; - -/// -/// FPDT Firmware Basic Boot Performance Pointer Record Structure -/// -typedef struct { - EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header; - UINT32 Reserved; - /// - /// 64-bit processor-relative physical address of the Basic Boot Performance Table. - /// - UINT64 BootPerformanceTablePointer; -} EFI_ACPI_5_1_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD; - -/// -/// FPDT S3 Performance Table Pointer Record Structure -/// -typedef struct { - EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header; - UINT32 Reserved; - /// - /// 64-bit processor-relative physical address of the S3 Performance Table. - /// - UINT64 S3PerformanceTablePointer; -} EFI_ACPI_5_1_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD; - -/// -/// FPDT Firmware Basic Boot Performance Record Structure -/// -typedef struct { - EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header; - UINT32 Reserved; - /// - /// Timer value logged at the beginning of firmware image execution. - /// This may not always be zero or near zero. - /// - UINT64 ResetEnd; - /// - /// Timer value logged just prior to loading the OS boot loader into memory. - /// For non-UEFI compatible boots, this field must be zero. - /// - UINT64 OsLoaderLoadImageStart; - /// - /// Timer value logged just prior to launching the previously loaded OS boot loader image. - /// For non-UEFI compatible boots, the timer value logged will be just prior - /// to the INT 19h handler invocation. - /// - UINT64 OsLoaderStartImageStart; - /// - /// Timer value logged at the point when the OS loader calls the - /// ExitBootServices function for UEFI compatible firmware. - /// For non-UEFI compatible boots, this field must be zero. - /// - UINT64 ExitBootServicesEntry; - /// - /// Timer value logged at the point just prior towhen the OS loader gaining - /// control back from calls the ExitBootServices function for UEFI compatible firmware. - /// For non-UEFI compatible boots, this field must be zero. - /// - UINT64 ExitBootServicesExit; -} EFI_ACPI_5_1_FPDT_FIRMWARE_BASIC_BOOT_RECORD; - -/// -/// FPDT Firmware Basic Boot Performance Table signature -/// -#define EFI_ACPI_5_1_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T') - -// -// FPDT Firmware Basic Boot Performance Table -// -typedef struct { - EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER Header; - // - // one or more Performance Records. - // -} EFI_ACPI_5_1_FPDT_FIRMWARE_BASIC_BOOT_TABLE; - -/// -/// FPDT "S3PT" S3 Performance Table -/// -#define EFI_ACPI_5_1_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T') - -// -// FPDT Firmware S3 Boot Performance Table -// -typedef struct { - EFI_ACPI_5_1_FPDT_PERFORMANCE_TABLE_HEADER Header; - // - // one or more Performance Records. - // -} EFI_ACPI_5_1_FPDT_FIRMWARE_S3_BOOT_TABLE; - -/// -/// FPDT Basic S3 Resume Performance Record -/// -typedef struct { - EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header; - /// - /// A count of the number of S3 resume cycles since the last full boot sequence. - /// - UINT32 ResumeCount; - /// - /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the - /// OS waking vector. Only the most recent resume cycle's time is retained. - /// - UINT64 FullResume; - /// - /// Average timer value of all resume cycles logged since the last full boot - /// sequence, including the most recent resume. Note that the entire log of - /// timer values does not need to be retained in order to calculate this average. - /// - UINT64 AverageResume; -} EFI_ACPI_5_1_FPDT_S3_RESUME_RECORD; - -/// -/// FPDT Basic S3 Suspend Performance Record -/// -typedef struct { - EFI_ACPI_5_1_FPDT_PERFORMANCE_RECORD_HEADER Header; - /// - /// Timer value recorded at the OS write to SLP_TYP upon entry to S3. - /// Only the most recent suspend cycle's timer value is retained. - /// - UINT64 SuspendStart; - /// - /// Timer value recorded at the final firmware write to SLP_TYP (or other - /// mechanism) used to trigger hardware entry to S3. - /// Only the most recent suspend cycle's timer value is retained. - /// - UINT64 SuspendEnd; -} EFI_ACPI_5_1_FPDT_S3_SUSPEND_RECORD; - -/// -/// Firmware Performance Record Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; -} EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_RECORD_TABLE; - -/// -/// Generic Timer Description Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT64 CntControlBasePhysicalAddress; - UINT32 Reserved; - UINT32 SecurePL1TimerGSIV; - UINT32 SecurePL1TimerFlags; - UINT32 NonSecurePL1TimerGSIV; - UINT32 NonSecurePL1TimerFlags; - UINT32 VirtualTimerGSIV; - UINT32 VirtualTimerFlags; - UINT32 NonSecurePL2TimerGSIV; - UINT32 NonSecurePL2TimerFlags; - UINT64 CntReadBasePhysicalAddress; - UINT32 PlatformTimerCount; - UINT32 PlatformTimerOffset; -} EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE; - -/// -/// GTDT Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x02 - -/// -/// Timer Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0 -#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1 -#define EFI_ACPI_5_1_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY BIT2 - -/// -/// Platform Timer Type -/// -#define EFI_ACPI_5_1_GTDT_GT_BLOCK 0 -#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG 1 - -/// -/// GT Block Structure -/// -typedef struct { - UINT8 Type; - UINT16 Length; - UINT8 Reserved; - UINT64 CntCtlBase; - UINT32 GTBlockTimerCount; - UINT32 GTBlockTimerOffset; -} EFI_ACPI_5_1_GTDT_GT_BLOCK_STRUCTURE; - -/// -/// GT Block Timer Structure -/// -typedef struct { - UINT8 GTFrameNumber; - UINT8 Reserved[3]; - UINT64 CntBaseX; - UINT64 CntEL0BaseX; - UINT32 GTxPhysicalTimerGSIV; - UINT32 GTxPhysicalTimerFlags; - UINT32 GTxVirtualTimerGSIV; - UINT32 GTxVirtualTimerFlags; - UINT32 GTxCommonFlags; -} EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_STRUCTURE; - -/// -/// GT Block Physical Timers and Virtual Timers Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0 -#define EFI_ACPI_5_1_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1 - -/// -/// Common Flags Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER BIT0 -#define EFI_ACPI_5_1_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY BIT1 - -/// -/// SBSA Generic Watchdog Structure -/// -typedef struct { - UINT8 Type; - UINT16 Length; - UINT8 Reserved; - UINT64 RefreshFramePhysicalAddress; - UINT64 WatchdogControlFramePhysicalAddress; - UINT32 WatchdogTimerGSIV; - UINT32 WatchdogTimerFlags; -} EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE; - -/// -/// SBSA Generic Watchdog Timer Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE BIT0 -#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY BIT1 -#define EFI_ACPI_5_1_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER BIT2 - -/// -/// Boot Error Record Table (BERT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 BootErrorRegionLength; - UINT64 BootErrorRegion; -} EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_HEADER; - -/// -/// BERT Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_REVISION 0x01 - -/// -/// Boot Error Region Block Status Definition -/// -typedef struct { - UINT32 UncorrectableErrorValid:1; - UINT32 CorrectableErrorValid:1; - UINT32 MultipleUncorrectableErrors:1; - UINT32 MultipleCorrectableErrors:1; - UINT32 ErrorDataEntryCount:10; - UINT32 Reserved:18; -} EFI_ACPI_5_1_ERROR_BLOCK_STATUS; - -/// -/// Boot Error Region Definition -/// -typedef struct { - EFI_ACPI_5_1_ERROR_BLOCK_STATUS BlockStatus; - UINT32 RawDataOffset; - UINT32 RawDataLength; - UINT32 DataLength; - UINT32 ErrorSeverity; -} EFI_ACPI_5_1_BOOT_ERROR_REGION_STRUCTURE; - -// -// Boot Error Severity types -// -#define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTABLE 0x00 -#define EFI_ACPI_5_1_ERROR_SEVERITY_FATAL 0x01 -#define EFI_ACPI_5_1_ERROR_SEVERITY_CORRECTED 0x02 -#define EFI_ACPI_5_1_ERROR_SEVERITY_NONE 0x03 - -/// -/// Generic Error Data Entry Definition -/// -typedef struct { - UINT8 SectionType[16]; - UINT32 ErrorSeverity; - UINT16 Revision; - UINT8 ValidationBits; - UINT8 Flags; - UINT32 ErrorDataLength; - UINT8 FruId[16]; - UINT8 FruText[20]; -} EFI_ACPI_5_1_GENERIC_ERROR_DATA_ENTRY_STRUCTURE; - -/// -/// Generic Error Data Entry Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0201 - -/// -/// HEST - Hardware Error Source Table -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 ErrorSourceCount; -} EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_HEADER; - -/// -/// HEST Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01 - -// -// Error Source structure types. -// -#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00 -#define EFI_ACPI_5_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01 -#define EFI_ACPI_5_1_IA32_ARCHITECTURE_NMI_ERROR 0x02 -#define EFI_ACPI_5_1_PCI_EXPRESS_ROOT_PORT_AER 0x06 -#define EFI_ACPI_5_1_PCI_EXPRESS_DEVICE_AER 0x07 -#define EFI_ACPI_5_1_PCI_EXPRESS_BRIDGE_AER 0x08 -#define EFI_ACPI_5_1_GENERIC_HARDWARE_ERROR 0x09 - -// -// Error Source structure flags. -// -#define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0) -#define EFI_ACPI_5_1_ERROR_SOURCE_FLAG_GLOBAL (1 << 1) - -/// -/// IA-32 Architecture Machine Check Exception Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT64 GlobalCapabilityInitData; - UINT64 GlobalControlInitData; - UINT8 NumberOfHardwareBanks; - UINT8 Reserved1[7]; -} EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE; - -/// -/// IA-32 Architecture Machine Check Bank Structure Definition -/// -typedef struct { - UINT8 BankNumber; - UINT8 ClearStatusOnInitialization; - UINT8 StatusDataFormat; - UINT8 Reserved0; - UINT32 ControlRegisterMsrAddress; - UINT64 ControlInitData; - UINT32 StatusRegisterMsrAddress; - UINT32 AddressRegisterMsrAddress; - UINT32 MiscRegisterMsrAddress; -} EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE; - -/// -/// IA-32 Architecture Machine Check Bank Structure MCA data format -/// -#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00 -#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01 -#define EFI_ACPI_5_1_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02 - -// -// Hardware Error Notification types. All other values are reserved -// -#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00 -#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01 -#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02 -#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_SCI 0x03 -#define EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_NMI 0x04 - -/// -/// Hardware Error Notification Configuration Write Enable Structure Definition -/// -typedef struct { - UINT16 Type:1; - UINT16 PollInterval:1; - UINT16 SwitchToPollingThresholdValue:1; - UINT16 SwitchToPollingThresholdWindow:1; - UINT16 ErrorThresholdValue:1; - UINT16 ErrorThresholdWindow:1; - UINT16 Reserved:10; -} EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE; - -/// -/// Hardware Error Notification Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable; - UINT32 PollInterval; - UINT32 Vector; - UINT32 SwitchToPollingThresholdValue; - UINT32 SwitchToPollingThresholdWindow; - UINT32 ErrorThresholdValue; - UINT32 ErrorThresholdWindow; -} EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE; - -/// -/// IA-32 Architecture Corrected Machine Check Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; - UINT8 NumberOfHardwareBanks; - UINT8 Reserved1[3]; -} EFI_ACPI_5_1_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE; - -/// -/// IA-32 Architecture NMI Error Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 MaxRawDataLength; -} EFI_ACPI_5_1_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE; - -/// -/// PCI Express Root Port AER Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 Bus; - UINT16 Device; - UINT16 Function; - UINT16 DeviceControl; - UINT8 Reserved1[2]; - UINT32 UncorrectableErrorMask; - UINT32 UncorrectableErrorSeverity; - UINT32 CorrectableErrorMask; - UINT32 AdvancedErrorCapabilitiesAndControl; - UINT32 RootErrorCommand; -} EFI_ACPI_5_1_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE; - -/// -/// PCI Express Device AER Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 Bus; - UINT16 Device; - UINT16 Function; - UINT16 DeviceControl; - UINT8 Reserved1[2]; - UINT32 UncorrectableErrorMask; - UINT32 UncorrectableErrorSeverity; - UINT32 CorrectableErrorMask; - UINT32 AdvancedErrorCapabilitiesAndControl; -} EFI_ACPI_5_1_PCI_EXPRESS_DEVICE_AER_STRUCTURE; - -/// -/// PCI Express Bridge AER Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 Bus; - UINT16 Device; - UINT16 Function; - UINT16 DeviceControl; - UINT8 Reserved1[2]; - UINT32 UncorrectableErrorMask; - UINT32 UncorrectableErrorSeverity; - UINT32 CorrectableErrorMask; - UINT32 AdvancedErrorCapabilitiesAndControl; - UINT32 SecondaryUncorrectableErrorMask; - UINT32 SecondaryUncorrectableErrorSeverity; - UINT32 SecondaryAdvancedErrorCapabilitiesAndControl; -} EFI_ACPI_5_1_PCI_EXPRESS_BRIDGE_AER_STRUCTURE; - -/// -/// Generic Hardware Error Source Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT16 RelatedSourceId; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 MaxRawDataLength; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress; - EFI_ACPI_5_1_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; - UINT32 ErrorStatusBlockLength; -} EFI_ACPI_5_1_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE; - -/// -/// Generic Error Status Definition -/// -typedef struct { - EFI_ACPI_5_1_ERROR_BLOCK_STATUS BlockStatus; - UINT32 RawDataOffset; - UINT32 RawDataLength; - UINT32 DataLength; - UINT32 ErrorSeverity; -} EFI_ACPI_5_1_GENERIC_ERROR_STATUS_STRUCTURE; - -/// -/// ERST - Error Record Serialization Table -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 SerializationHeaderSize; - UINT8 Reserved0[4]; - UINT32 InstructionEntryCount; -} EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_HEADER; - -/// -/// ERST Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01 - -/// -/// ERST Serialization Actions -/// -#define EFI_ACPI_5_1_ERST_BEGIN_WRITE_OPERATION 0x00 -#define EFI_ACPI_5_1_ERST_BEGIN_READ_OPERATION 0x01 -#define EFI_ACPI_5_1_ERST_BEGIN_CLEAR_OPERATION 0x02 -#define EFI_ACPI_5_1_ERST_END_OPERATION 0x03 -#define EFI_ACPI_5_1_ERST_SET_RECORD_OFFSET 0x04 -#define EFI_ACPI_5_1_ERST_EXECUTE_OPERATION 0x05 -#define EFI_ACPI_5_1_ERST_CHECK_BUSY_STATUS 0x06 -#define EFI_ACPI_5_1_ERST_GET_COMMAND_STATUS 0x07 -#define EFI_ACPI_5_1_ERST_GET_RECORD_IDENTIFIER 0x08 -#define EFI_ACPI_5_1_ERST_SET_RECORD_IDENTIFIER 0x09 -#define EFI_ACPI_5_1_ERST_GET_RECORD_COUNT 0x0A -#define EFI_ACPI_5_1_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B -#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D -#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E -#define EFI_ACPI_5_1_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F - -/// -/// ERST Action Command Status -/// -#define EFI_ACPI_5_1_ERST_STATUS_SUCCESS 0x00 -#define EFI_ACPI_5_1_ERST_STATUS_NOT_ENOUGH_SPACE 0x01 -#define EFI_ACPI_5_1_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x02 -#define EFI_ACPI_5_1_ERST_STATUS_FAILED 0x03 -#define EFI_ACPI_5_1_ERST_STATUS_RECORD_STORE_EMPTY 0x04 -#define EFI_ACPI_5_1_ERST_STATUS_RECORD_NOT_FOUND 0x05 - -/// -/// ERST Serialization Instructions -/// -#define EFI_ACPI_5_1_ERST_READ_REGISTER 0x00 -#define EFI_ACPI_5_1_ERST_READ_REGISTER_VALUE 0x01 -#define EFI_ACPI_5_1_ERST_WRITE_REGISTER 0x02 -#define EFI_ACPI_5_1_ERST_WRITE_REGISTER_VALUE 0x03 -#define EFI_ACPI_5_1_ERST_NOOP 0x04 -#define EFI_ACPI_5_1_ERST_LOAD_VAR1 0x05 -#define EFI_ACPI_5_1_ERST_LOAD_VAR2 0x06 -#define EFI_ACPI_5_1_ERST_STORE_VAR1 0x07 -#define EFI_ACPI_5_1_ERST_ADD 0x08 -#define EFI_ACPI_5_1_ERST_SUBTRACT 0x09 -#define EFI_ACPI_5_1_ERST_ADD_VALUE 0x0A -#define EFI_ACPI_5_1_ERST_SUBTRACT_VALUE 0x0B -#define EFI_ACPI_5_1_ERST_STALL 0x0C -#define EFI_ACPI_5_1_ERST_STALL_WHILE_TRUE 0x0D -#define EFI_ACPI_5_1_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E -#define EFI_ACPI_5_1_ERST_GOTO 0x0F -#define EFI_ACPI_5_1_ERST_SET_SRC_ADDRESS_BASE 0x10 -#define EFI_ACPI_5_1_ERST_SET_DST_ADDRESS_BASE 0x11 -#define EFI_ACPI_5_1_ERST_MOVE_DATA 0x12 - -/// -/// ERST Instruction Flags -/// -#define EFI_ACPI_5_1_ERST_PRESERVE_REGISTER 0x01 - -/// -/// ERST Serialization Instruction Entry -/// -typedef struct { - UINT8 SerializationAction; - UINT8 Instruction; - UINT8 Flags; - UINT8 Reserved0; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE RegisterRegion; - UINT64 Value; - UINT64 Mask; -} EFI_ACPI_5_1_ERST_SERIALIZATION_INSTRUCTION_ENTRY; - -/// -/// EINJ - Error Injection Table -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 InjectionHeaderSize; - UINT8 InjectionFlags; - UINT8 Reserved0[3]; - UINT32 InjectionEntryCount; -} EFI_ACPI_5_1_ERROR_INJECTION_TABLE_HEADER; - -/// -/// EINJ Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_REVISION 0x01 - -/// -/// EINJ Error Injection Actions -/// -#define EFI_ACPI_5_1_EINJ_BEGIN_INJECTION_OPERATION 0x00 -#define EFI_ACPI_5_1_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01 -#define EFI_ACPI_5_1_EINJ_SET_ERROR_TYPE 0x02 -#define EFI_ACPI_5_1_EINJ_GET_ERROR_TYPE 0x03 -#define EFI_ACPI_5_1_EINJ_END_OPERATION 0x04 -#define EFI_ACPI_5_1_EINJ_EXECUTE_OPERATION 0x05 -#define EFI_ACPI_5_1_EINJ_CHECK_BUSY_STATUS 0x06 -#define EFI_ACPI_5_1_EINJ_GET_COMMAND_STATUS 0x07 -#define EFI_ACPI_5_1_EINJ_TRIGGER_ERROR 0xFF - -/// -/// EINJ Action Command Status -/// -#define EFI_ACPI_5_1_EINJ_STATUS_SUCCESS 0x00 -#define EFI_ACPI_5_1_EINJ_STATUS_UNKNOWN_FAILURE 0x01 -#define EFI_ACPI_5_1_EINJ_STATUS_INVALID_ACCESS 0x02 - -/// -/// EINJ Error Type Definition -/// -#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0) -#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1) -#define EFI_ACPI_5_1_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2) -#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3) -#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4) -#define EFI_ACPI_5_1_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5) -#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6) -#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7) -#define EFI_ACPI_5_1_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8) -#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9) -#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10) -#define EFI_ACPI_5_1_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11) - -/// -/// EINJ Injection Instructions -/// -#define EFI_ACPI_5_1_EINJ_READ_REGISTER 0x00 -#define EFI_ACPI_5_1_EINJ_READ_REGISTER_VALUE 0x01 -#define EFI_ACPI_5_1_EINJ_WRITE_REGISTER 0x02 -#define EFI_ACPI_5_1_EINJ_WRITE_REGISTER_VALUE 0x03 -#define EFI_ACPI_5_1_EINJ_NOOP 0x04 - -/// -/// EINJ Instruction Flags -/// -#define EFI_ACPI_5_1_EINJ_PRESERVE_REGISTER 0x01 - -/// -/// EINJ Injection Instruction Entry -/// -typedef struct { - UINT8 InjectionAction; - UINT8 Instruction; - UINT8 Flags; - UINT8 Reserved0; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE RegisterRegion; - UINT64 Value; - UINT64 Mask; -} EFI_ACPI_5_1_EINJ_INJECTION_INSTRUCTION_ENTRY; - -/// -/// EINJ Trigger Action Table -/// -typedef struct { - UINT32 HeaderSize; - UINT32 Revision; - UINT32 TableSize; - UINT32 EntryCount; -} EFI_ACPI_5_1_EINJ_TRIGGER_ACTION_TABLE; - -/// -/// Platform Communications Channel Table (PCCT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 Flags; - UINT64 Reserved; -} EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER; - -/// -/// PCCT Version (as defined in ACPI 5.1 spec.) -/// -#define EFI_ACPI_5_1_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01 - -/// -/// PCCT Global Flags -/// -#define EFI_ACPI_5_1_PCCT_FLAGS_SCI_DOORBELL BIT0 - -// -// PCCT Subspace type -// -#define EFI_ACPI_5_1_PCCT_SUBSPACE_TYPE_GENERIC 0x00 - -/// -/// PCC Subspace Structure Header -/// -typedef struct { - UINT8 Type; - UINT8 Length; -} EFI_ACPI_5_1_PCCT_SUBSPACE_HEADER; - -/// -/// Generic Communications Subspace Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Reserved[6]; - UINT64 BaseAddress; - UINT64 AddressLength; - EFI_ACPI_5_1_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; - UINT64 DoorbellPreserve; - UINT64 DoorbellWrite; - UINT32 NominalLatency; - UINT32 MaximumPeriodicAccessRate; - UINT16 MinimumRequestTurnaroundTime; -} EFI_ACPI_5_1_PCCT_SUBSPACE_GENERIC; - -/// -/// Generic Communications Channel Shared Memory Region -/// - -typedef struct { - UINT8 Command; - UINT8 Reserved:7; - UINT8 GenerateSci:1; -} EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND; - -typedef struct { - UINT8 CommandComplete:1; - UINT8 SciDoorbell:1; - UINT8 Error:1; - UINT8 PlatformNotification:1; - UINT8 Reserved:4; - UINT8 Reserved1; -} EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS; - -typedef struct { - UINT32 Signature; - EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command; - EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status; -} EFI_ACPI_5_1_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER; - -// -// Known table signatures -// - -/// -/// "RSD PTR " Root System Description Pointer -/// -#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') - -/// -/// "APIC" Multiple APIC Description Table -/// -#define EFI_ACPI_5_1_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') - -/// -/// "BERT" Boot Error Record Table -/// -#define EFI_ACPI_5_1_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T') - -/// -/// "BGRT" Boot Graphics Resource Table -/// -#define EFI_ACPI_5_1_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T') - -/// -/// "CPEP" Corrected Platform Error Polling Table -/// -#define EFI_ACPI_5_1_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P') - -/// -/// "DSDT" Differentiated System Description Table -/// -#define EFI_ACPI_5_1_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') - -/// -/// "ECDT" Embedded Controller Boot Resources Table -/// -#define EFI_ACPI_5_1_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T') - -/// -/// "EINJ" Error Injection Table -/// -#define EFI_ACPI_5_1_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J') - -/// -/// "ERST" Error Record Serialization Table -/// -#define EFI_ACPI_5_1_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T') - -/// -/// "FACP" Fixed ACPI Description Table -/// -#define EFI_ACPI_5_1_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') - -/// -/// "FACS" Firmware ACPI Control Structure -/// -#define EFI_ACPI_5_1_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') - -/// -/// "FPDT" Firmware Performance Data Table -/// -#define EFI_ACPI_5_1_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T') - -/// -/// "GTDT" Generic Timer Description Table -/// -#define EFI_ACPI_5_1_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T') - -/// -/// "HEST" Hardware Error Source Table -/// -#define EFI_ACPI_5_1_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T') - -/// -/// "MPST" Memory Power State Table -/// -#define EFI_ACPI_5_1_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T') - -/// -/// "MSCT" Maximum System Characteristics Table -/// -#define EFI_ACPI_5_1_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T') - -/// -/// "PMTT" Platform Memory Topology Table -/// -#define EFI_ACPI_5_1_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T') - -/// -/// "PSDT" Persistent System Description Table -/// -#define EFI_ACPI_5_1_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') - -/// -/// "RASF" ACPI RAS Feature Table -/// -#define EFI_ACPI_5_1_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F') - -/// -/// "RSDT" Root System Description Table -/// -#define EFI_ACPI_5_1_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') - -/// -/// "SBST" Smart Battery Specification Table -/// -#define EFI_ACPI_5_1_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') - -/// -/// "SLIT" System Locality Information Table -/// -#define EFI_ACPI_5_1_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T') - -/// -/// "SRAT" System Resource Affinity Table -/// -#define EFI_ACPI_5_1_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T') - -/// -/// "SSDT" Secondary System Description Table -/// -#define EFI_ACPI_5_1_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') - -/// -/// "XSDT" Extended System Description Table -/// -#define EFI_ACPI_5_1_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T') - -/// -/// "BOOT" MS Simple Boot Spec -/// -#define EFI_ACPI_5_1_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T') - -/// -/// "CSRT" MS Core System Resource Table -/// -#define EFI_ACPI_5_1_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T') - -/// -/// "DBG2" MS Debug Port 2 Spec -/// -#define EFI_ACPI_5_1_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2') - -/// -/// "DBGP" MS Debug Port Spec -/// -#define EFI_ACPI_5_1_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P') - -/// -/// "DMAR" DMA Remapping Table -/// -#define EFI_ACPI_5_1_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R') - -/// -/// "DRTM" Dynamic Root of Trust for Measurement Table -/// -#define EFI_ACPI_5_1_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M') - -/// -/// "ETDT" Event Timer Description Table -/// -#define EFI_ACPI_5_1_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T') - -/// -/// "HPET" IA-PC High Precision Event Timer Table -/// -#define EFI_ACPI_5_1_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T') - -/// -/// "iBFT" iSCSI Boot Firmware Table -/// -#define EFI_ACPI_5_1_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T') - -/// -/// "IVRS" I/O Virtualization Reporting Structure -/// -#define EFI_ACPI_5_1_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S') - -/// -/// "LPIT" Low Power Idle Table -/// -#define EFI_ACPI_5_1_IO_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('L', 'P', 'I', 'T') - -/// -/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table -/// -#define EFI_ACPI_5_1_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G') - -/// -/// "MCHI" Management Controller Host Interface Table -/// -#define EFI_ACPI_5_1_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I') - -/// -/// "MSDM" MS Data Management Table -/// -#define EFI_ACPI_5_1_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M') - -/// -/// "SLIC" MS Software Licensing Table Specification -/// -#define EFI_ACPI_5_1_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C') - -/// -/// "SPCR" Serial Port Concole Redirection Table -/// -#define EFI_ACPI_5_1_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R') - -/// -/// "SPMI" Server Platform Management Interface Table -/// -#define EFI_ACPI_5_1_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I') - -/// -/// "TCPA" Trusted Computing Platform Alliance Capabilities Table -/// -#define EFI_ACPI_5_1_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A') - -/// -/// "TPM2" Trusted Computing Platform 1 Table -/// -#define EFI_ACPI_5_1_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2') - -/// -/// "UEFI" UEFI ACPI Data Table -/// -#define EFI_ACPI_5_1_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I') - -/// -/// "WAET" Windows ACPI Emulated Devices Table -/// -#define EFI_ACPI_5_1_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T') - -/// -/// "WDAT" Watchdog Action Table -/// -#define EFI_ACPI_5_1_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T') - -/// -/// "WDRT" Watchdog Resource Table -/// -#define EFI_ACPI_5_1_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T') - -/// -/// "WPBT" MS Platform Binary Table -/// -#define EFI_ACPI_5_1_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T') - -#pragma pack() - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi60.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi60.h deleted file mode 100644 index 70c7ec4c1d..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Acpi60.h +++ /dev/null @@ -1,2333 +0,0 @@ -/** @file - ACPI 6.0 definitions from the ACPI Specification Revision 6.0 April, 2015. - - Copyright (c) 2015, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -**/ - -#ifndef _ACPI_6_0_H_ -#define _ACPI_6_0_H_ - -#include - -// -// Ensure proper structure formats -// -#pragma pack(1) - -/// -/// ACPI 6.0 Generic Address Space definition -/// -typedef struct { - UINT8 AddressSpaceId; - UINT8 RegisterBitWidth; - UINT8 RegisterBitOffset; - UINT8 AccessSize; - UINT64 Address; -} EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE; - -// -// Generic Address Space Address IDs -// -#define EFI_ACPI_6_0_SYSTEM_MEMORY 0 -#define EFI_ACPI_6_0_SYSTEM_IO 1 -#define EFI_ACPI_6_0_PCI_CONFIGURATION_SPACE 2 -#define EFI_ACPI_6_0_EMBEDDED_CONTROLLER 3 -#define EFI_ACPI_6_0_SMBUS 4 -#define EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL 0x0A -#define EFI_ACPI_6_0_FUNCTIONAL_FIXED_HARDWARE 0x7F - -// -// Generic Address Space Access Sizes -// -#define EFI_ACPI_6_0_UNDEFINED 0 -#define EFI_ACPI_6_0_BYTE 1 -#define EFI_ACPI_6_0_WORD 2 -#define EFI_ACPI_6_0_DWORD 3 -#define EFI_ACPI_6_0_QWORD 4 - -// -// ACPI 6.0 table structures -// - -/// -/// Root System Description Pointer Structure -/// -typedef struct { - UINT64 Signature; - UINT8 Checksum; - UINT8 OemId[6]; - UINT8 Revision; - UINT32 RsdtAddress; - UINT32 Length; - UINT64 XsdtAddress; - UINT8 ExtendedChecksum; - UINT8 Reserved[3]; -} EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER; - -/// -/// RSD_PTR Revision (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION 0x02 ///< ACPISpec (Revision 6.0) says current value is 2 - -/// -/// Common table header, this prefaces all ACPI tables, including FACS, but -/// excluding the RSD PTR structure -/// -typedef struct { - UINT32 Signature; - UINT32 Length; -} EFI_ACPI_6_0_COMMON_HEADER; - -// -// Root System Description Table -// No definition needed as it is a common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT32 table pointers. -// - -/// -/// RSDT Revision (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 - -// -// Extended System Description Table -// No definition needed as it is a common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a variable number of UINT64 table pointers. -// - -/// -/// XSDT Revision (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Fixed ACPI Description Table Structure (FADT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 FirmwareCtrl; - UINT32 Dsdt; - UINT8 Reserved0; - UINT8 PreferredPmProfile; - UINT16 SciInt; - UINT32 SmiCmd; - UINT8 AcpiEnable; - UINT8 AcpiDisable; - UINT8 S4BiosReq; - UINT8 PstateCnt; - UINT32 Pm1aEvtBlk; - UINT32 Pm1bEvtBlk; - UINT32 Pm1aCntBlk; - UINT32 Pm1bCntBlk; - UINT32 Pm2CntBlk; - UINT32 PmTmrBlk; - UINT32 Gpe0Blk; - UINT32 Gpe1Blk; - UINT8 Pm1EvtLen; - UINT8 Pm1CntLen; - UINT8 Pm2CntLen; - UINT8 PmTmrLen; - UINT8 Gpe0BlkLen; - UINT8 Gpe1BlkLen; - UINT8 Gpe1Base; - UINT8 CstCnt; - UINT16 PLvl2Lat; - UINT16 PLvl3Lat; - UINT16 FlushSize; - UINT16 FlushStride; - UINT8 DutyOffset; - UINT8 DutyWidth; - UINT8 DayAlrm; - UINT8 MonAlrm; - UINT8 Century; - UINT16 IaPcBootArch; - UINT8 Reserved1; - UINT32 Flags; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE ResetReg; - UINT8 ResetValue; - UINT16 ArmBootArch; - UINT8 MinorVersion; - UINT64 XFirmwareCtrl; - UINT64 XDsdt; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1aEvtBlk; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1bEvtBlk; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1aCntBlk; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm1bCntBlk; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPm2CntBlk; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XPmTmrBlk; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XGpe0Blk; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE XGpe1Blk; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE SleepControlReg; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE SleepStatusReg; - UINT64 HypervisorVendorIdentity; -} EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE; - -/// -/// FADT Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_REVISION 0x06 -#define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION 0x00 - -// -// Fixed ACPI Description Table Preferred Power Management Profile -// -#define EFI_ACPI_6_0_PM_PROFILE_UNSPECIFIED 0 -#define EFI_ACPI_6_0_PM_PROFILE_DESKTOP 1 -#define EFI_ACPI_6_0_PM_PROFILE_MOBILE 2 -#define EFI_ACPI_6_0_PM_PROFILE_WORKSTATION 3 -#define EFI_ACPI_6_0_PM_PROFILE_ENTERPRISE_SERVER 4 -#define EFI_ACPI_6_0_PM_PROFILE_SOHO_SERVER 5 -#define EFI_ACPI_6_0_PM_PROFILE_APPLIANCE_PC 6 -#define EFI_ACPI_6_0_PM_PROFILE_PERFORMANCE_SERVER 7 -#define EFI_ACPI_6_0_PM_PROFILE_TABLET 8 - -// -// Fixed ACPI Description Table Boot Architecture Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_6_0_LEGACY_DEVICES BIT0 -#define EFI_ACPI_6_0_8042 BIT1 -#define EFI_ACPI_6_0_VGA_NOT_PRESENT BIT2 -#define EFI_ACPI_6_0_MSI_NOT_SUPPORTED BIT3 -#define EFI_ACPI_6_0_PCIE_ASPM_CONTROLS BIT4 -#define EFI_ACPI_6_0_CMOS_RTC_NOT_PRESENT BIT5 - -// -// Fixed ACPI Description Table Arm Boot Architecture Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_6_0_ARM_PSCI_COMPLIANT BIT0 -#define EFI_ACPI_6_0_ARM_PSCI_USE_HVC BIT1 - -// -// Fixed ACPI Description Table Fixed Feature Flags -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_6_0_WBINVD BIT0 -#define EFI_ACPI_6_0_WBINVD_FLUSH BIT1 -#define EFI_ACPI_6_0_PROC_C1 BIT2 -#define EFI_ACPI_6_0_P_LVL2_UP BIT3 -#define EFI_ACPI_6_0_PWR_BUTTON BIT4 -#define EFI_ACPI_6_0_SLP_BUTTON BIT5 -#define EFI_ACPI_6_0_FIX_RTC BIT6 -#define EFI_ACPI_6_0_RTC_S4 BIT7 -#define EFI_ACPI_6_0_TMR_VAL_EXT BIT8 -#define EFI_ACPI_6_0_DCK_CAP BIT9 -#define EFI_ACPI_6_0_RESET_REG_SUP BIT10 -#define EFI_ACPI_6_0_SEALED_CASE BIT11 -#define EFI_ACPI_6_0_HEADLESS BIT12 -#define EFI_ACPI_6_0_CPU_SW_SLP BIT13 -#define EFI_ACPI_6_0_PCI_EXP_WAK BIT14 -#define EFI_ACPI_6_0_USE_PLATFORM_CLOCK BIT15 -#define EFI_ACPI_6_0_S4_RTC_STS_VALID BIT16 -#define EFI_ACPI_6_0_REMOTE_POWER_ON_CAPABLE BIT17 -#define EFI_ACPI_6_0_FORCE_APIC_CLUSTER_MODEL BIT18 -#define EFI_ACPI_6_0_FORCE_APIC_PHYSICAL_DESTINATION_MODE BIT19 -#define EFI_ACPI_6_0_HW_REDUCED_ACPI BIT20 -#define EFI_ACPI_6_0_LOW_POWER_S0_IDLE_CAPABLE BIT21 - -/// -/// Firmware ACPI Control Structure -/// -typedef struct { - UINT32 Signature; - UINT32 Length; - UINT32 HardwareSignature; - UINT32 FirmwareWakingVector; - UINT32 GlobalLock; - UINT32 Flags; - UINT64 XFirmwareWakingVector; - UINT8 Version; - UINT8 Reserved0[3]; - UINT32 OspmFlags; - UINT8 Reserved1[24]; -} EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE; - -/// -/// FACS Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION 0x02 - -/// -/// Firmware Control Structure Feature Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_6_0_S4BIOS_F BIT0 -#define EFI_ACPI_6_0_64BIT_WAKE_SUPPORTED_F BIT1 - -/// -/// OSPM Enabled Firmware Control Structure Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_6_0_OSPM_64BIT_WAKE_F BIT0 - -// -// Differentiated System Description Table, -// Secondary System Description Table -// and Persistent System Description Table, -// no definition needed as they are common description table header, the same with -// EFI_ACPI_DESCRIPTION_HEADER, followed by a definition block. -// -#define EFI_ACPI_6_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 -#define EFI_ACPI_6_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_REVISION 0x02 - -/// -/// Multiple APIC Description Table header definition. The rest of the table -/// must be defined in a platform specific manner. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 LocalApicAddress; - UINT32 Flags; -} EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_HEADER; - -/// -/// MADT Revision (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_REVISION 0x03 - -/// -/// Multiple APIC Flags -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_6_0_PCAT_COMPAT BIT0 - -// -// Multiple APIC Description Table APIC structure types -// All other values between 0x0D and 0x7F are reserved and -// will be ignored by OSPM. 0x80 ~ 0xFF are reserved for OEM. -// -#define EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC 0x00 -#define EFI_ACPI_6_0_IO_APIC 0x01 -#define EFI_ACPI_6_0_INTERRUPT_SOURCE_OVERRIDE 0x02 -#define EFI_ACPI_6_0_NON_MASKABLE_INTERRUPT_SOURCE 0x03 -#define EFI_ACPI_6_0_LOCAL_APIC_NMI 0x04 -#define EFI_ACPI_6_0_LOCAL_APIC_ADDRESS_OVERRIDE 0x05 -#define EFI_ACPI_6_0_IO_SAPIC 0x06 -#define EFI_ACPI_6_0_LOCAL_SAPIC 0x07 -#define EFI_ACPI_6_0_PLATFORM_INTERRUPT_SOURCES 0x08 -#define EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC 0x09 -#define EFI_ACPI_6_0_LOCAL_X2APIC_NMI 0x0A -#define EFI_ACPI_6_0_GIC 0x0B -#define EFI_ACPI_6_0_GICD 0x0C -#define EFI_ACPI_6_0_GIC_MSI_FRAME 0x0D -#define EFI_ACPI_6_0_GICR 0x0E -#define EFI_ACPI_6_0_GIC_ITS 0x0F - -// -// APIC Structure Definitions -// - -/// -/// Processor Local APIC Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorUid; - UINT8 ApicId; - UINT32 Flags; -} EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_STRUCTURE; - -/// -/// Local APIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_6_0_LOCAL_APIC_ENABLED BIT0 - -/// -/// IO APIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 IoApicId; - UINT8 Reserved; - UINT32 IoApicAddress; - UINT32 GlobalSystemInterruptBase; -} EFI_ACPI_6_0_IO_APIC_STRUCTURE; - -/// -/// Interrupt Source Override Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Bus; - UINT8 Source; - UINT32 GlobalSystemInterrupt; - UINT16 Flags; -} EFI_ACPI_6_0_INTERRUPT_SOURCE_OVERRIDE_STRUCTURE; - -/// -/// Platform Interrupt Sources Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT8 InterruptType; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT8 IoSapicVector; - UINT32 GlobalSystemInterrupt; - UINT32 PlatformInterruptSourceFlags; - UINT8 CpeiProcessorOverride; - UINT8 Reserved[31]; -} EFI_ACPI_6_0_PLATFORM_INTERRUPT_APIC_STRUCTURE; - -// -// MPS INTI flags. -// All other bits are reserved and must be set to 0. -// -#define EFI_ACPI_6_0_POLARITY (3 << 0) -#define EFI_ACPI_6_0_TRIGGER_MODE (3 << 2) - -/// -/// Non-Maskable Interrupt Source Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT32 GlobalSystemInterrupt; -} EFI_ACPI_6_0_NON_MASKABLE_INTERRUPT_SOURCE_STRUCTURE; - -/// -/// Local APIC NMI Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorUid; - UINT16 Flags; - UINT8 LocalApicLint; -} EFI_ACPI_6_0_LOCAL_APIC_NMI_STRUCTURE; - -/// -/// Local APIC Address Override Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT64 LocalApicAddress; -} EFI_ACPI_6_0_LOCAL_APIC_ADDRESS_OVERRIDE_STRUCTURE; - -/// -/// IO SAPIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 IoApicId; - UINT8 Reserved; - UINT32 GlobalSystemInterruptBase; - UINT64 IoSapicAddress; -} EFI_ACPI_6_0_IO_SAPIC_STRUCTURE; - -/// -/// Local SAPIC Structure -/// This struct followed by a null-terminated ASCII string - ACPI Processor UID String -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 AcpiProcessorId; - UINT8 LocalSapicId; - UINT8 LocalSapicEid; - UINT8 Reserved[3]; - UINT32 Flags; - UINT32 ACPIProcessorUIDValue; -} EFI_ACPI_6_0_PROCESSOR_LOCAL_SAPIC_STRUCTURE; - -/// -/// Platform Interrupt Sources Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT8 InterruptType; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT8 IoSapicVector; - UINT32 GlobalSystemInterrupt; - UINT32 PlatformInterruptSourceFlags; -} EFI_ACPI_6_0_PLATFORM_INTERRUPT_SOURCES_STRUCTURE; - -/// -/// Platform Interrupt Source Flags. -/// All other bits are reserved and must be set to 0. -/// -#define EFI_ACPI_6_0_CPEI_PROCESSOR_OVERRIDE BIT0 - -/// -/// Processor Local x2APIC Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Reserved[2]; - UINT32 X2ApicId; - UINT32 Flags; - UINT32 AcpiProcessorUid; -} EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_STRUCTURE; - -/// -/// Local x2APIC NMI Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Flags; - UINT32 AcpiProcessorUid; - UINT8 LocalX2ApicLint; - UINT8 Reserved[3]; -} EFI_ACPI_6_0_LOCAL_X2APIC_NMI_STRUCTURE; - -/// -/// GIC Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT32 CPUInterfaceNumber; - UINT32 AcpiProcessorUid; - UINT32 Flags; - UINT32 ParkingProtocolVersion; - UINT32 PerformanceInterruptGsiv; - UINT64 ParkedAddress; - UINT64 PhysicalBaseAddress; - UINT64 GICV; - UINT64 GICH; - UINT32 VGICMaintenanceInterrupt; - UINT64 GICRBaseAddress; - UINT64 MPIDR; - UINT8 ProcessorPowerEfficiencyClass; - UINT8 Reserved2[3]; -} EFI_ACPI_6_0_GIC_STRUCTURE; - -/// -/// GIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_6_0_GIC_ENABLED BIT0 -#define EFI_ACPI_6_0_PERFORMANCE_INTERRUPT_MODEL BIT1 -#define EFI_ACPI_6_0_VGIC_MAINTENANCE_INTERRUPT_MODE_FLAGS BIT2 - -/// -/// GIC Distributor Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved1; - UINT32 GicId; - UINT64 PhysicalBaseAddress; - UINT32 SystemVectorBase; - UINT32 Reserved2; -} EFI_ACPI_6_0_GIC_DISTRIBUTOR_STRUCTURE; - -/// -/// GIC MSI Frame Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved1; - UINT32 GicMsiFrameId; - UINT64 PhysicalBaseAddress; - UINT32 Flags; - UINT16 SPICount; - UINT16 SPIBase; -} EFI_ACPI_6_0_GIC_MSI_FRAME_STRUCTURE; - -/// -/// GIC MSI Frame Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_6_0_SPI_COUNT_BASE_SELECT BIT0 - -/// -/// GICR Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT64 DiscoveryRangeBaseAddress; - UINT32 DiscoveryRangeLength; -} EFI_ACPI_6_0_GICR_STRUCTURE; - -/// -/// GIC Interrupt Translation Service Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT16 Reserved; - UINT32 GicItsId; - UINT64 PhysicalBaseAddress; - UINT32 Reserved2; -} EFI_ACPI_6_0_GIC_ITS_STRUCTURE; - -/// -/// Smart Battery Description Table (SBST) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 WarningEnergyLevel; - UINT32 LowEnergyLevel; - UINT32 CriticalEnergyLevel; -} EFI_ACPI_6_0_SMART_BATTERY_DESCRIPTION_TABLE; - -/// -/// SBST Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_SMART_BATTERY_DESCRIPTION_TABLE_REVISION 0x01 - -/// -/// Embedded Controller Boot Resources Table (ECDT) -/// The table is followed by a null terminated ASCII string that contains -/// a fully qualified reference to the name space object. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE EcControl; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE EcData; - UINT32 Uid; - UINT8 GpeBit; -} EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE; - -/// -/// ECDT Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_REVISION 0x01 - -/// -/// System Resource Affinity Table (SRAT). The rest of the table -/// must be defined in a platform specific manner. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 Reserved1; ///< Must be set to 1 - UINT64 Reserved2; -} EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_HEADER; - -/// -/// SRAT Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_REVISION 0x03 - -// -// SRAT structure types. -// All other values between 0x04 an 0xFF are reserved and -// will be ignored by OSPM. -// -#define EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY 0x00 -#define EFI_ACPI_6_0_MEMORY_AFFINITY 0x01 -#define EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_AFFINITY 0x02 -#define EFI_ACPI_6_0_GICC_AFFINITY 0x03 - -/// -/// Processor Local APIC/SAPIC Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 ProximityDomain7To0; - UINT8 ApicId; - UINT32 Flags; - UINT8 LocalSapicEid; - UINT8 ProximityDomain31To8[3]; - UINT32 ClockDomain; -} EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_AFFINITY_STRUCTURE; - -/// -/// Local APIC/SAPIC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_6_0_PROCESSOR_LOCAL_APIC_SAPIC_ENABLED (1 << 0) - -/// -/// Memory Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT32 ProximityDomain; - UINT16 Reserved1; - UINT32 AddressBaseLow; - UINT32 AddressBaseHigh; - UINT32 LengthLow; - UINT32 LengthHigh; - UINT32 Reserved2; - UINT32 Flags; - UINT64 Reserved3; -} EFI_ACPI_6_0_MEMORY_AFFINITY_STRUCTURE; - -// -// Memory Flags. All other bits are reserved and must be 0. -// -#define EFI_ACPI_6_0_MEMORY_ENABLED (1 << 0) -#define EFI_ACPI_6_0_MEMORY_HOT_PLUGGABLE (1 << 1) -#define EFI_ACPI_6_0_MEMORY_NONVOLATILE (1 << 2) - -/// -/// Processor Local x2APIC Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Reserved1[2]; - UINT32 ProximityDomain; - UINT32 X2ApicId; - UINT32 Flags; - UINT32 ClockDomain; - UINT8 Reserved2[4]; -} EFI_ACPI_6_0_PROCESSOR_LOCAL_X2APIC_AFFINITY_STRUCTURE; - -/// -/// GICC Affinity Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT32 ProximityDomain; - UINT32 AcpiProcessorUid; - UINT32 Flags; - UINT32 ClockDomain; -} EFI_ACPI_6_0_GICC_AFFINITY_STRUCTURE; - -/// -/// GICC Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_6_0_GICC_ENABLED (1 << 0) - -/// -/// System Locality Distance Information Table (SLIT). -/// The rest of the table is a matrix. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT64 NumberOfSystemLocalities; -} EFI_ACPI_6_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_HEADER; - -/// -/// SLIT Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_SYSTEM_LOCALITY_DISTANCE_INFORMATION_TABLE_REVISION 0x01 - -/// -/// Corrected Platform Error Polling Table (CPEP) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT8 Reserved[8]; -} EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_HEADER; - -/// -/// CPEP Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_REVISION 0x01 - -// -// CPEP processor structure types. -// -#define EFI_ACPI_6_0_CPEP_PROCESSOR_APIC_SAPIC 0x00 - -/// -/// Corrected Platform Error Polling Processor Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 ProcessorId; - UINT8 ProcessorEid; - UINT32 PollingInterval; -} EFI_ACPI_6_0_CPEP_PROCESSOR_APIC_SAPIC_STRUCTURE; - -/// -/// Maximum System Characteristics Table (MSCT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 OffsetProxDomInfo; - UINT32 MaximumNumberOfProximityDomains; - UINT32 MaximumNumberOfClockDomains; - UINT64 MaximumPhysicalAddress; -} EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_HEADER; - -/// -/// MSCT Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION 0x01 - -/// -/// Maximum Proximity Domain Information Structure Definition -/// -typedef struct { - UINT8 Revision; - UINT8 Length; - UINT32 ProximityDomainRangeLow; - UINT32 ProximityDomainRangeHigh; - UINT32 MaximumProcessorCapacity; - UINT64 MaximumMemoryCapacity; -} EFI_ACPI_6_0_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE; - -/// -/// ACPI RAS Feature Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT8 PlatformCommunicationChannelIdentifier[12]; -} EFI_ACPI_6_0_RAS_FEATURE_TABLE; - -/// -/// RASF Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_RAS_FEATURE_TABLE_REVISION 0x01 - -/// -/// ACPI RASF Platform Communication Channel Shared Memory Region definition. -/// -typedef struct { - UINT32 Signature; - UINT16 Command; - UINT16 Status; - UINT16 Version; - UINT8 RASCapabilities[16]; - UINT8 SetRASCapabilities[16]; - UINT16 NumberOfRASFParameterBlocks; - UINT32 SetRASCapabilitiesStatus; -} EFI_ACPI_6_0_RASF_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION; - -/// -/// ACPI RASF PCC command code -/// -#define EFI_ACPI_6_0_RASF_PCC_COMMAND_CODE_EXECUTE_RASF_COMMAND 0x01 - -/// -/// ACPI RASF Platform RAS Capabilities -/// -#define EFI_ACPI_6_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED 0x01 -#define EFI_ACPI_6_0_RASF_PLATFORM_RAS_CAPABILITY_HARDWARE_BASED_PATROL_SCRUB_SUPPOTED_AND_EXPOSED_TO_SOFTWARE 0x02 - -/// -/// ACPI RASF Parameter Block structure for PATROL_SCRUB -/// -typedef struct { - UINT16 Type; - UINT16 Version; - UINT16 Length; - UINT16 PatrolScrubCommand; - UINT64 RequestedAddressRange[2]; - UINT64 ActualAddressRange[2]; - UINT16 Flags; - UINT8 RequestedSpeed; -} EFI_ACPI_6_0_RASF_PATROL_SCRUB_PLATFORM_BLOCK_STRUCTURE; - -/// -/// ACPI RASF Patrol Scrub command -/// -#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_GET_PATROL_PARAMETERS 0x01 -#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_START_PATROL_SCRUBBER 0x02 -#define EFI_ACPI_6_0_RASF_PATROL_SCRUB_COMMAND_STOP_PATROL_SCRUBBER 0x03 - -/// -/// Memory Power State Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT8 PlatformCommunicationChannelIdentifier; - UINT8 Reserved[3]; -// Memory Power Node Structure -// Memory Power State Characteristics -} EFI_ACPI_6_0_MEMORY_POWER_STATUS_TABLE; - -/// -/// MPST Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_MEMORY_POWER_STATE_TABLE_REVISION 0x01 - -/// -/// MPST Platform Communication Channel Shared Memory Region definition. -/// -typedef struct { - UINT32 Signature; - UINT16 Command; - UINT16 Status; - UINT32 MemoryPowerCommandRegister; - UINT32 MemoryPowerStatusRegister; - UINT32 PowerStateId; - UINT32 MemoryPowerNodeId; - UINT64 MemoryEnergyConsumed; - UINT64 ExpectedAveragePowerComsuned; -} EFI_ACPI_6_0_MPST_PLATFORM_COMMUNICATION_CHANNEL_SHARED_MEMORY_REGION; - -/// -/// ACPI MPST PCC command code -/// -#define EFI_ACPI_6_0_MPST_PCC_COMMAND_CODE_EXECUTE_MPST_COMMAND 0x03 - -/// -/// ACPI MPST Memory Power command -/// -#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_POWER_STATE 0x01 -#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_SET_MEMORY_POWER_STATE 0x02 -#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_AVERAGE_POWER_CONSUMED 0x03 -#define EFI_ACPI_6_0_MPST_MEMORY_POWER_COMMAND_GET_MEMORY_ENERGY_CONSUMED 0x04 - -/// -/// MPST Memory Power Node Table -/// -typedef struct { - UINT8 PowerStateValue; - UINT8 PowerStateInformationIndex; -} EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE; - -typedef struct { - UINT8 Flag; - UINT8 Reserved; - UINT16 MemoryPowerNodeId; - UINT32 Length; - UINT64 AddressBase; - UINT64 AddressLength; - UINT32 NumberOfPowerStates; - UINT32 NumberOfPhysicalComponents; -//EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE MemoryPowerState[NumberOfPowerStates]; -//UINT16 PhysicalComponentIdentifier[NumberOfPhysicalComponents]; -} EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE; - -#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_ENABLE 0x01 -#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_POWER_MANAGED 0x02 -#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STRUCTURE_FLAG_HOT_PLUGGABLE 0x04 - -typedef struct { - UINT16 MemoryPowerNodeCount; - UINT8 Reserved[2]; -} EFI_ACPI_6_0_MPST_MEMORY_POWER_NODE_TABLE; - -/// -/// MPST Memory Power State Characteristics Table -/// -typedef struct { - UINT8 PowerStateStructureID; - UINT8 Flag; - UINT16 Reserved; - UINT32 AveragePowerConsumedInMPS0; - UINT32 RelativePowerSavingToMPS0; - UINT64 ExitLatencyToMPS0; -} EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE; - -#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_MEMORY_CONTENT_PRESERVED 0x01 -#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_ENTRY 0x02 -#define EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_STRUCTURE_FLAG_AUTONOMOUS_MEMORY_POWER_STATE_EXIT 0x04 - -typedef struct { - UINT16 MemoryPowerStateCharacteristicsCount; - UINT8 Reserved[2]; -} EFI_ACPI_6_0_MPST_MEMORY_POWER_STATE_CHARACTERISTICS_TABLE; - -/// -/// Memory Topology Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 Reserved; -} EFI_ACPI_6_0_MEMORY_TOPOLOGY_TABLE; - -/// -/// PMTT Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_MEMORY_TOPOLOGY_TABLE_REVISION 0x01 - -/// -/// Common Memory Aggregator Device Structure. -/// -typedef struct { - UINT8 Type; - UINT8 Reserved; - UINT16 Length; - UINT16 Flags; - UINT16 Reserved1; -} EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; - -/// -/// Memory Aggregator Device Type -/// -#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_SOCKET 0x1 -#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_MEMORY_CONTROLLER 0x2 -#define EFI_ACPI_6_0_PMMT_MEMORY_AGGREGATOR_DEVICE_TYPE_DIMM 0x3 - -/// -/// Socket Memory Aggregator Device Structure. -/// -typedef struct { - EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; - UINT16 SocketIdentifier; - UINT16 Reserved; -//EFI_ACPI_6_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE MemoryController[]; -} EFI_ACPI_6_0_PMMT_SOCKET_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; - -/// -/// MemoryController Memory Aggregator Device Structure. -/// -typedef struct { - EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; - UINT32 ReadLatency; - UINT32 WriteLatency; - UINT32 ReadBandwidth; - UINT32 WriteBandwidth; - UINT16 OptimalAccessUnit; - UINT16 OptimalAccessAlignment; - UINT16 Reserved; - UINT16 NumberOfProximityDomains; -//UINT32 ProximityDomain[NumberOfProximityDomains]; -//EFI_ACPI_6_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE PhysicalComponent[]; -} EFI_ACPI_6_0_PMMT_MEMORY_CONTROLLER_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; - -/// -/// DIMM Memory Aggregator Device Structure. -/// -typedef struct { - EFI_ACPI_6_0_PMMT_COMMON_MEMORY_AGGREGATOR_DEVICE_STRUCTURE Header; - UINT16 PhysicalComponentIdentifier; - UINT16 Reserved; - UINT32 SizeOfDimm; - UINT32 SmbiosHandle; -} EFI_ACPI_6_0_PMMT_DIMM_MEMORY_AGGREGATOR_DEVICE_STRUCTURE; - -/// -/// Boot Graphics Resource Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - /// - /// 2-bytes (16 bit) version ID. This value must be 1. - /// - UINT16 Version; - /// - /// 1-byte status field indicating current status about the table. - /// Bits[7:1] = Reserved (must be zero) - /// Bit [0] = Valid. A one indicates the boot image graphic is valid. - /// - UINT8 Status; - /// - /// 1-byte enumerated type field indicating format of the image. - /// 0 = Bitmap - /// 1 - 255 Reserved (for future use) - /// - UINT8 ImageType; - /// - /// 8-byte (64 bit) physical address pointing to the firmware's in-memory copy - /// of the image bitmap. - /// - UINT64 ImageAddress; - /// - /// A 4-byte (32-bit) unsigned long describing the display X-offset of the boot image. - /// (X, Y) display offset of the top left corner of the boot image. - /// The top left corner of the display is at offset (0, 0). - /// - UINT32 ImageOffsetX; - /// - /// A 4-byte (32-bit) unsigned long describing the display Y-offset of the boot image. - /// (X, Y) display offset of the top left corner of the boot image. - /// The top left corner of the display is at offset (0, 0). - /// - UINT32 ImageOffsetY; -} EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE; - -/// -/// BGRT Revision -/// -#define EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE_REVISION 1 - -/// -/// BGRT Version -/// -#define EFI_ACPI_6_0_BGRT_VERSION 0x01 - -/// -/// BGRT Status -/// -#define EFI_ACPI_6_0_BGRT_STATUS_NOT_DISPLAYED 0x00 -#define EFI_ACPI_6_0_BGRT_STATUS_DISPLAYED 0x01 - -/// -/// BGRT Image Type -/// -#define EFI_ACPI_6_0_BGRT_IMAGE_TYPE_BMP 0x00 - -/// -/// FPDT Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_DATA_TABLE_REVISION 0x01 - -/// -/// FPDT Performance Record Types -/// -#define EFI_ACPI_6_0_FPDT_RECORD_TYPE_FIRMWARE_BASIC_BOOT_POINTER 0x0000 -#define EFI_ACPI_6_0_FPDT_RECORD_TYPE_S3_PERFORMANCE_TABLE_POINTER 0x0001 - -/// -/// FPDT Performance Record Revision -/// -#define EFI_ACPI_6_0_FPDT_RECORD_REVISION_FIRMWARE_BASIC_BOOT_POINTER 0x01 -#define EFI_ACPI_6_0_FPDT_RECORD_REVISION_S3_PERFORMANCE_TABLE_POINTER 0x01 - -/// -/// FPDT Runtime Performance Record Types -/// -#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_RESUME 0x0000 -#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_S3_SUSPEND 0x0001 -#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_TYPE_FIRMWARE_BASIC_BOOT 0x0002 - -/// -/// FPDT Runtime Performance Record Revision -/// -#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_S3_RESUME 0x01 -#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_S3_SUSPEND 0x01 -#define EFI_ACPI_6_0_FPDT_RUNTIME_RECORD_REVISION_FIRMWARE_BASIC_BOOT 0x02 - -/// -/// FPDT Performance Record header -/// -typedef struct { - UINT16 Type; - UINT8 Length; - UINT8 Revision; -} EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER; - -/// -/// FPDT Performance Table header -/// -typedef struct { - UINT32 Signature; - UINT32 Length; -} EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER; - -/// -/// FPDT Firmware Basic Boot Performance Pointer Record Structure -/// -typedef struct { - EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; - UINT32 Reserved; - /// - /// 64-bit processor-relative physical address of the Basic Boot Performance Table. - /// - UINT64 BootPerformanceTablePointer; -} EFI_ACPI_6_0_FPDT_BOOT_PERFORMANCE_TABLE_POINTER_RECORD; - -/// -/// FPDT S3 Performance Table Pointer Record Structure -/// -typedef struct { - EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; - UINT32 Reserved; - /// - /// 64-bit processor-relative physical address of the S3 Performance Table. - /// - UINT64 S3PerformanceTablePointer; -} EFI_ACPI_6_0_FPDT_S3_PERFORMANCE_TABLE_POINTER_RECORD; - -/// -/// FPDT Firmware Basic Boot Performance Record Structure -/// -typedef struct { - EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; - UINT32 Reserved; - /// - /// Timer value logged at the beginning of firmware image execution. - /// This may not always be zero or near zero. - /// - UINT64 ResetEnd; - /// - /// Timer value logged just prior to loading the OS boot loader into memory. - /// For non-UEFI compatible boots, this field must be zero. - /// - UINT64 OsLoaderLoadImageStart; - /// - /// Timer value logged just prior to launching the previously loaded OS boot loader image. - /// For non-UEFI compatible boots, the timer value logged will be just prior - /// to the INT 19h handler invocation. - /// - UINT64 OsLoaderStartImageStart; - /// - /// Timer value logged at the point when the OS loader calls the - /// ExitBootServices function for UEFI compatible firmware. - /// For non-UEFI compatible boots, this field must be zero. - /// - UINT64 ExitBootServicesEntry; - /// - /// Timer value logged at the point just prior towhen the OS loader gaining - /// control back from calls the ExitBootServices function for UEFI compatible firmware. - /// For non-UEFI compatible boots, this field must be zero. - /// - UINT64 ExitBootServicesExit; -} EFI_ACPI_6_0_FPDT_FIRMWARE_BASIC_BOOT_RECORD; - -/// -/// FPDT Firmware Basic Boot Performance Table signature -/// -#define EFI_ACPI_6_0_FPDT_BOOT_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('F', 'B', 'P', 'T') - -// -// FPDT Firmware Basic Boot Performance Table -// -typedef struct { - EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER Header; - // - // one or more Performance Records. - // -} EFI_ACPI_6_0_FPDT_FIRMWARE_BASIC_BOOT_TABLE; - -/// -/// FPDT "S3PT" S3 Performance Table -/// -#define EFI_ACPI_6_0_FPDT_S3_PERFORMANCE_TABLE_SIGNATURE SIGNATURE_32('S', '3', 'P', 'T') - -// -// FPDT Firmware S3 Boot Performance Table -// -typedef struct { - EFI_ACPI_6_0_FPDT_PERFORMANCE_TABLE_HEADER Header; - // - // one or more Performance Records. - // -} EFI_ACPI_6_0_FPDT_FIRMWARE_S3_BOOT_TABLE; - -/// -/// FPDT Basic S3 Resume Performance Record -/// -typedef struct { - EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; - /// - /// A count of the number of S3 resume cycles since the last full boot sequence. - /// - UINT32 ResumeCount; - /// - /// Timer recorded at the end of BIOS S3 resume, just prior to handoff to the - /// OS waking vector. Only the most recent resume cycle's time is retained. - /// - UINT64 FullResume; - /// - /// Average timer value of all resume cycles logged since the last full boot - /// sequence, including the most recent resume. Note that the entire log of - /// timer values does not need to be retained in order to calculate this average. - /// - UINT64 AverageResume; -} EFI_ACPI_6_0_FPDT_S3_RESUME_RECORD; - -/// -/// FPDT Basic S3 Suspend Performance Record -/// -typedef struct { - EFI_ACPI_6_0_FPDT_PERFORMANCE_RECORD_HEADER Header; - /// - /// Timer value recorded at the OS write to SLP_TYP upon entry to S3. - /// Only the most recent suspend cycle's timer value is retained. - /// - UINT64 SuspendStart; - /// - /// Timer value recorded at the final firmware write to SLP_TYP (or other - /// mechanism) used to trigger hardware entry to S3. - /// Only the most recent suspend cycle's timer value is retained. - /// - UINT64 SuspendEnd; -} EFI_ACPI_6_0_FPDT_S3_SUSPEND_RECORD; - -/// -/// Firmware Performance Record Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; -} EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_RECORD_TABLE; - -/// -/// Generic Timer Description Table definition. -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT64 CntControlBasePhysicalAddress; - UINT32 Reserved; - UINT32 SecurePL1TimerGSIV; - UINT32 SecurePL1TimerFlags; - UINT32 NonSecurePL1TimerGSIV; - UINT32 NonSecurePL1TimerFlags; - UINT32 VirtualTimerGSIV; - UINT32 VirtualTimerFlags; - UINT32 NonSecurePL2TimerGSIV; - UINT32 NonSecurePL2TimerFlags; - UINT64 CntReadBasePhysicalAddress; - UINT32 PlatformTimerCount; - UINT32 PlatformTimerOffset; -} EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE; - -/// -/// GTDT Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE_REVISION 0x02 - -/// -/// Timer Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0 -#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1 -#define EFI_ACPI_6_0_GTDT_TIMER_FLAG_ALWAYS_ON_CAPABILITY BIT2 - -/// -/// Platform Timer Type -/// -#define EFI_ACPI_6_0_GTDT_GT_BLOCK 0 -#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG 1 - -/// -/// GT Block Structure -/// -typedef struct { - UINT8 Type; - UINT16 Length; - UINT8 Reserved; - UINT64 CntCtlBase; - UINT32 GTBlockTimerCount; - UINT32 GTBlockTimerOffset; -} EFI_ACPI_6_0_GTDT_GT_BLOCK_STRUCTURE; - -/// -/// GT Block Timer Structure -/// -typedef struct { - UINT8 GTFrameNumber; - UINT8 Reserved[3]; - UINT64 CntBaseX; - UINT64 CntEL0BaseX; - UINT32 GTxPhysicalTimerGSIV; - UINT32 GTxPhysicalTimerFlags; - UINT32 GTxVirtualTimerGSIV; - UINT32 GTxVirtualTimerFlags; - UINT32 GTxCommonFlags; -} EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_STRUCTURE; - -/// -/// GT Block Physical Timers and Virtual Timers Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_MODE BIT0 -#define EFI_ACPI_6_0_GTDT_GT_BLOCK_TIMER_FLAG_TIMER_INTERRUPT_POLARITY BIT1 - -/// -/// Common Flags Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_SECURE_TIMER BIT0 -#define EFI_ACPI_6_0_GTDT_GT_BLOCK_COMMON_FLAG_ALWAYS_ON_CAPABILITY BIT1 - -/// -/// SBSA Generic Watchdog Structure -/// -typedef struct { - UINT8 Type; - UINT16 Length; - UINT8 Reserved; - UINT64 RefreshFramePhysicalAddress; - UINT64 WatchdogControlFramePhysicalAddress; - UINT32 WatchdogTimerGSIV; - UINT32 WatchdogTimerFlags; -} EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_STRUCTURE; - -/// -/// SBSA Generic Watchdog Timer Flags. All other bits are reserved and must be 0. -/// -#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_MODE BIT0 -#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_TIMER_INTERRUPT_POLARITY BIT1 -#define EFI_ACPI_6_0_GTDT_SBSA_GENERIC_WATCHDOG_FLAG_SECURE_TIMER BIT2 - -// -// NVDIMM Firmware Interface Table definition. -// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 Reserved; -} EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE; - -// -// NFIT Version (as defined in ACPI 6.0 spec.) -// -#define EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE_REVISION 0x1 - -// -// Definition for NFIT Table Structure Types -// -#define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE_TYPE 0 -#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_TO_SYSTEM_ADDRESS_RANGE_MAP_STRUCTURE_TYPE 1 -#define EFI_ACPI_6_0_NFIT_INTERLEAVE_STRUCTURE_TYPE 2 -#define EFI_ACPI_6_0_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE_TYPE 3 -#define EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE_TYPE 4 -#define EFI_ACPI_6_0_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE_TYPE 5 -#define EFI_ACPI_6_0_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE_TYPE 6 - -// -// Definition for NFIT Structure Header -// -typedef struct { - UINT16 Type; - UINT16 Length; -} EFI_ACPI_6_0_NFIT_STRUCTURE_HEADER; - -// -// Definition for System Physical Address Range Structure -// -#define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_CONTROL_REGION_FOR_MANAGEMENT BIT0 -#define EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_FLAGS_PROXIMITY_DOMAIN_VALID BIT1 -#define EFI_ACPI_6_0_NFIT_GUID_VOLATILE_MEMORY_REGION { 0x7305944F, 0xFDDA, 0x44E3, 0xB1, 0x6C, 0x3F, 0x22, 0xD2, 0x52, 0xE5, 0xD0 } -#define EFI_ACPI_6_0_NFIT_GUID_BYTE_ADDRESSABLE_PERSISTENT_MEMORY_REGION { 0x66F0D379, 0xB4F3, 0x4074, 0xAC, 0x43, 0x0D, 0x33, 0x18, 0xB7, 0x8C, 0xDB } -#define EFI_ACPI_6_0_NFIT_GUID_NVDIMM_CONTROL_REGION { 0x92F701F6, 0x13B4, 0x405D, 0x91, 0x0B, 0x29, 0x93, 0x67, 0xE8, 0x23, 0x4C } -#define EFI_ACPI_6_0_NFIT_GUID_NVDIMM_BLOCK_DATA_WINDOW_REGION { 0x91AF0530, 0x5D86, 0x470E, 0xA6, 0xB0, 0x0A, 0x2D, 0xB9, 0x40, 0x82, 0x49 } -#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE { 0x77AB535A, 0x45FC, 0x624B, 0x55, 0x60, 0xF7, 0xB2, 0x81, 0xD1, 0xF9, 0x6E } -#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE { 0x3D5ABD30, 0x4175, 0x87CE, 0x6D, 0x64, 0xD2, 0xAD, 0xE5, 0x23, 0xC4, 0xBB } -#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT { 0x5CEA02C9, 0x4D07, 0x69D3, 0x26, 0x9F ,0x44, 0x96, 0xFB, 0xE0, 0x96, 0xF9 } -#define EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT { 0x08018188, 0x42CD, 0xBB48, 0x10, 0x0F, 0x53, 0x87, 0xD5, 0x3D, 0xED, 0x3D } -typedef struct { - UINT16 Type; - UINT16 Length; - UINT16 SPARangeStructureIndex; - UINT16 Flags; - UINT32 Reserved_8; - UINT32 ProximityDomain; - GUID AddressRangeTypeGUID; - UINT64 SystemPhysicalAddressRangeBase; - UINT64 SystemPhysicalAddressRangeLength; - UINT64 AddressRangeMemoryMappingAttribute; -} EFI_ACPI_6_0_NFIT_SYSTEM_PHYSICAL_ADDRESS_RANGE_STRUCTURE; - -// -// Definition for Memory Device to System Physical Address Range Mapping Structure -// -typedef struct { - UINT32 DIMMNumber:4; - UINT32 MemoryChannelNumber:4; - UINT32 MemoryControllerID:4; - UINT32 SocketID:4; - UINT32 NodeControllerID:12; - UINT32 Reserved_28:4; -} EFI_ACPI_6_0_NFIT_DEVICE_HANDLE; - -#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_PREVIOUS_SAVE_FAIL BIT0 -#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_LAST_RESTORE_FAIL BIT1 -#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_PLATFORM_FLUSH_FAIL BIT2 -#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_NOT_ARMED_PRIOR_TO_OSPM_HAND_OFF BIT3 -#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_SMART_HEALTH_EVENTS_PRIOR_OSPM_HAND_OFF BIT4 -#define EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_STATE_FLAGS_FIRMWARE_ENABLED_TO_NOTIFY_OSPM_ON_SMART_HEALTH_EVENTS BIT5 -typedef struct { - UINT16 Type; - UINT16 Length; - EFI_ACPI_6_0_NFIT_DEVICE_HANDLE NFITDeviceHandle; - UINT16 MemoryDevicePhysicalID; - UINT16 MemoryDeviceRegionID; - UINT16 SPARangeStructureIndex ; - UINT16 NVDIMMControlRegionStructureIndex; - UINT64 MemoryDeviceRegionSize; - UINT64 RegionOffset; - UINT64 MemoryDevicePhysicalAddressRegionBase; - UINT16 InterleaveStructureIndex; - UINT16 InterleaveWays; - UINT16 MemoryDeviceStateFlags; - UINT16 Reserved_46; -} EFI_ACPI_6_0_NFIT_MEMORY_DEVICE_TO_SYSTEM_ADDRESS_RANGE_MAP_STRUCTURE; - -// -// Definition for Interleave Structure -// -typedef struct { - UINT16 Type; - UINT16 Length; - UINT16 InterleaveStructureIndex; - UINT16 Reserved_6; - UINT32 NumberOfLines; - UINT32 LineSize; -//UINT32 LineOffset[NumberOfLines]; -} EFI_ACPI_6_0_NFIT_INTERLEAVE_STRUCTURE; - -// -// Definition for SMBIOS Management Information Structure -// -typedef struct { - UINT16 Type; - UINT16 Length; - UINT32 Reserved_4; -//UINT8 Data[]; -} EFI_ACPI_6_0_NFIT_SMBIOS_MANAGEMENT_INFORMATION_STRUCTURE; - -// -// Definition for NVDIMM Control Region Structure -// -#define EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_FLAGS_BLOCK_DATA_WINDOWS_BUFFERED BIT0 -typedef struct { - UINT16 Type; - UINT16 Length; - UINT16 NVDIMMControlRegionStructureIndex; - UINT16 VendorID; - UINT16 DeviceID; - UINT16 RevisionID; - UINT16 SubsystemVendorID; - UINT16 SubsystemDeviceID; - UINT16 SubsystemRevisionID; - UINT8 Reserved_18[6]; - UINT32 SerialNumber; - UINT16 RegionFormatInterfaceCode; - UINT16 NumberOfBlockControlWindows; - UINT64 SizeOfBlockControlWindow; - UINT64 CommandRegisterOffsetInBlockControlWindow; - UINT64 SizeOfCommandRegisterInBlockControlWindows; - UINT64 StatusRegisterOffsetInBlockControlWindow; - UINT64 SizeOfStatusRegisterInBlockControlWindows; - UINT16 NVDIMMControlRegionFlag; - UINT8 Reserved_74[6]; -} EFI_ACPI_6_0_NFIT_NVDIMM_CONTROL_REGION_STRUCTURE; - -// -// Definition for NVDIMM Block Data Window Region Structure -// -typedef struct { - UINT16 Type; - UINT16 Length; - UINT16 NVDIMMControlRegionStructureIndex; - UINT16 NumberOfBlockDataWindows; - UINT64 BlockDataWindowStartOffset; - UINT64 SizeOfBlockDataWindow; - UINT64 BlockAccessibleMemoryCapacity; - UINT64 BeginningAddressOfFirstBlockInBlockAccessibleMemory; -} EFI_ACPI_6_0_NFIT_NVDIMM_BLOCK_DATA_WINDOW_REGION_STRUCTURE; - -// -// Definition for Flush Hint Address Structure -// -typedef struct { - UINT16 Type; - UINT16 Length; - EFI_ACPI_6_0_NFIT_DEVICE_HANDLE NFITDeviceHandle; - UINT16 NumberOfFlushHintAddresses; - UINT8 Reserved_10[6]; -//UINT64 FlushHintAddress[NumberOfFlushHintAddresses]; -} EFI_ACPI_6_0_NFIT_FLUSH_HINT_ADDRESS_STRUCTURE; - -/// -/// Boot Error Record Table (BERT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 BootErrorRegionLength; - UINT64 BootErrorRegion; -} EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_HEADER; - -/// -/// BERT Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_REVISION 0x01 - -/// -/// Boot Error Region Block Status Definition -/// -typedef struct { - UINT32 UncorrectableErrorValid:1; - UINT32 CorrectableErrorValid:1; - UINT32 MultipleUncorrectableErrors:1; - UINT32 MultipleCorrectableErrors:1; - UINT32 ErrorDataEntryCount:10; - UINT32 Reserved:18; -} EFI_ACPI_6_0_ERROR_BLOCK_STATUS; - -/// -/// Boot Error Region Definition -/// -typedef struct { - EFI_ACPI_6_0_ERROR_BLOCK_STATUS BlockStatus; - UINT32 RawDataOffset; - UINT32 RawDataLength; - UINT32 DataLength; - UINT32 ErrorSeverity; -} EFI_ACPI_6_0_BOOT_ERROR_REGION_STRUCTURE; - -// -// Boot Error Severity types -// -#define EFI_ACPI_6_0_ERROR_SEVERITY_CORRECTABLE 0x00 -#define EFI_ACPI_6_0_ERROR_SEVERITY_FATAL 0x01 -#define EFI_ACPI_6_0_ERROR_SEVERITY_CORRECTED 0x02 -#define EFI_ACPI_6_0_ERROR_SEVERITY_NONE 0x03 - -/// -/// Generic Error Data Entry Definition -/// -typedef struct { - UINT8 SectionType[16]; - UINT32 ErrorSeverity; - UINT16 Revision; - UINT8 ValidationBits; - UINT8 Flags; - UINT32 ErrorDataLength; - UINT8 FruId[16]; - UINT8 FruText[20]; -} EFI_ACPI_6_0_GENERIC_ERROR_DATA_ENTRY_STRUCTURE; - -/// -/// Generic Error Data Entry Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_GENERIC_ERROR_DATA_ENTRY_REVISION 0x0201 - -/// -/// HEST - Hardware Error Source Table -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 ErrorSourceCount; -} EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_HEADER; - -/// -/// HEST Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_REVISION 0x01 - -// -// Error Source structure types. -// -#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION 0x00 -#define EFI_ACPI_6_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK 0x01 -#define EFI_ACPI_6_0_IA32_ARCHITECTURE_NMI_ERROR 0x02 -#define EFI_ACPI_6_0_PCI_EXPRESS_ROOT_PORT_AER 0x06 -#define EFI_ACPI_6_0_PCI_EXPRESS_DEVICE_AER 0x07 -#define EFI_ACPI_6_0_PCI_EXPRESS_BRIDGE_AER 0x08 -#define EFI_ACPI_6_0_GENERIC_HARDWARE_ERROR 0x09 - -// -// Error Source structure flags. -// -#define EFI_ACPI_6_0_ERROR_SOURCE_FLAG_FIRMWARE_FIRST (1 << 0) -#define EFI_ACPI_6_0_ERROR_SOURCE_FLAG_GLOBAL (1 << 1) - -/// -/// IA-32 Architecture Machine Check Exception Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT64 GlobalCapabilityInitData; - UINT64 GlobalControlInitData; - UINT8 NumberOfHardwareBanks; - UINT8 Reserved1[7]; -} EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_EXCEPTION_STRUCTURE; - -/// -/// IA-32 Architecture Machine Check Bank Structure Definition -/// -typedef struct { - UINT8 BankNumber; - UINT8 ClearStatusOnInitialization; - UINT8 StatusDataFormat; - UINT8 Reserved0; - UINT32 ControlRegisterMsrAddress; - UINT64 ControlInitData; - UINT32 StatusRegisterMsrAddress; - UINT32 AddressRegisterMsrAddress; - UINT32 MiscRegisterMsrAddress; -} EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_BANK_STRUCTURE; - -/// -/// IA-32 Architecture Machine Check Bank Structure MCA data format -/// -#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_IA32 0x00 -#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_INTEL64 0x01 -#define EFI_ACPI_6_0_IA32_ARCHITECTURE_MACHINE_CHECK_ERROR_DATA_FORMAT_AMD64 0x02 - -// -// Hardware Error Notification types. All other values are reserved -// -#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_POLLED 0x00 -#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_EXTERNAL_INTERRUPT 0x01 -#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_LOCAL_INTERRUPT 0x02 -#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_SCI 0x03 -#define EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_NMI 0x04 - -/// -/// Hardware Error Notification Configuration Write Enable Structure Definition -/// -typedef struct { - UINT16 Type:1; - UINT16 PollInterval:1; - UINT16 SwitchToPollingThresholdValue:1; - UINT16 SwitchToPollingThresholdWindow:1; - UINT16 ErrorThresholdValue:1; - UINT16 ErrorThresholdWindow:1; - UINT16 Reserved:10; -} EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE; - -/// -/// Hardware Error Notification Structure Definition -/// -typedef struct { - UINT8 Type; - UINT8 Length; - EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_CONFIGURATION_WRITE_ENABLE_STRUCTURE ConfigurationWriteEnable; - UINT32 PollInterval; - UINT32 Vector; - UINT32 SwitchToPollingThresholdValue; - UINT32 SwitchToPollingThresholdWindow; - UINT32 ErrorThresholdValue; - UINT32 ErrorThresholdWindow; -} EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE; - -/// -/// IA-32 Architecture Corrected Machine Check Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; - UINT8 NumberOfHardwareBanks; - UINT8 Reserved1[3]; -} EFI_ACPI_6_0_IA32_ARCHITECTURE_CORRECTED_MACHINE_CHECK_STRUCTURE; - -/// -/// IA-32 Architecture NMI Error Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 MaxRawDataLength; -} EFI_ACPI_6_0_IA32_ARCHITECTURE_NMI_ERROR_STRUCTURE; - -/// -/// PCI Express Root Port AER Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 Bus; - UINT16 Device; - UINT16 Function; - UINT16 DeviceControl; - UINT8 Reserved1[2]; - UINT32 UncorrectableErrorMask; - UINT32 UncorrectableErrorSeverity; - UINT32 CorrectableErrorMask; - UINT32 AdvancedErrorCapabilitiesAndControl; - UINT32 RootErrorCommand; -} EFI_ACPI_6_0_PCI_EXPRESS_ROOT_PORT_AER_STRUCTURE; - -/// -/// PCI Express Device AER Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 Bus; - UINT16 Device; - UINT16 Function; - UINT16 DeviceControl; - UINT8 Reserved1[2]; - UINT32 UncorrectableErrorMask; - UINT32 UncorrectableErrorSeverity; - UINT32 CorrectableErrorMask; - UINT32 AdvancedErrorCapabilitiesAndControl; -} EFI_ACPI_6_0_PCI_EXPRESS_DEVICE_AER_STRUCTURE; - -/// -/// PCI Express Bridge AER Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT8 Reserved0[2]; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 Bus; - UINT16 Device; - UINT16 Function; - UINT16 DeviceControl; - UINT8 Reserved1[2]; - UINT32 UncorrectableErrorMask; - UINT32 UncorrectableErrorSeverity; - UINT32 CorrectableErrorMask; - UINT32 AdvancedErrorCapabilitiesAndControl; - UINT32 SecondaryUncorrectableErrorMask; - UINT32 SecondaryUncorrectableErrorSeverity; - UINT32 SecondaryAdvancedErrorCapabilitiesAndControl; -} EFI_ACPI_6_0_PCI_EXPRESS_BRIDGE_AER_STRUCTURE; - -/// -/// Generic Hardware Error Source Structure Definition -/// -typedef struct { - UINT16 Type; - UINT16 SourceId; - UINT16 RelatedSourceId; - UINT8 Flags; - UINT8 Enabled; - UINT32 NumberOfRecordsToPreAllocate; - UINT32 MaxSectionsPerRecord; - UINT32 MaxRawDataLength; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE ErrorStatusAddress; - EFI_ACPI_6_0_HARDWARE_ERROR_NOTIFICATION_STRUCTURE NotificationStructure; - UINT32 ErrorStatusBlockLength; -} EFI_ACPI_6_0_GENERIC_HARDWARE_ERROR_SOURCE_STRUCTURE; - -/// -/// Generic Error Status Definition -/// -typedef struct { - EFI_ACPI_6_0_ERROR_BLOCK_STATUS BlockStatus; - UINT32 RawDataOffset; - UINT32 RawDataLength; - UINT32 DataLength; - UINT32 ErrorSeverity; -} EFI_ACPI_6_0_GENERIC_ERROR_STATUS_STRUCTURE; - -/// -/// ERST - Error Record Serialization Table -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 SerializationHeaderSize; - UINT8 Reserved0[4]; - UINT32 InstructionEntryCount; -} EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_HEADER; - -/// -/// ERST Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_REVISION 0x01 - -/// -/// ERST Serialization Actions -/// -#define EFI_ACPI_6_0_ERST_BEGIN_WRITE_OPERATION 0x00 -#define EFI_ACPI_6_0_ERST_BEGIN_READ_OPERATION 0x01 -#define EFI_ACPI_6_0_ERST_BEGIN_CLEAR_OPERATION 0x02 -#define EFI_ACPI_6_0_ERST_END_OPERATION 0x03 -#define EFI_ACPI_6_0_ERST_SET_RECORD_OFFSET 0x04 -#define EFI_ACPI_6_0_ERST_EXECUTE_OPERATION 0x05 -#define EFI_ACPI_6_0_ERST_CHECK_BUSY_STATUS 0x06 -#define EFI_ACPI_6_0_ERST_GET_COMMAND_STATUS 0x07 -#define EFI_ACPI_6_0_ERST_GET_RECORD_IDENTIFIER 0x08 -#define EFI_ACPI_6_0_ERST_SET_RECORD_IDENTIFIER 0x09 -#define EFI_ACPI_6_0_ERST_GET_RECORD_COUNT 0x0A -#define EFI_ACPI_6_0_ERST_BEGIN_DUMMY_WRITE_OPERATION 0x0B -#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE 0x0D -#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_LENGTH 0x0E -#define EFI_ACPI_6_0_ERST_GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES 0x0F - -/// -/// ERST Action Command Status -/// -#define EFI_ACPI_6_0_ERST_STATUS_SUCCESS 0x00 -#define EFI_ACPI_6_0_ERST_STATUS_NOT_ENOUGH_SPACE 0x01 -#define EFI_ACPI_6_0_ERST_STATUS_HARDWARE_NOT_AVAILABLE 0x02 -#define EFI_ACPI_6_0_ERST_STATUS_FAILED 0x03 -#define EFI_ACPI_6_0_ERST_STATUS_RECORD_STORE_EMPTY 0x04 -#define EFI_ACPI_6_0_ERST_STATUS_RECORD_NOT_FOUND 0x05 - -/// -/// ERST Serialization Instructions -/// -#define EFI_ACPI_6_0_ERST_READ_REGISTER 0x00 -#define EFI_ACPI_6_0_ERST_READ_REGISTER_VALUE 0x01 -#define EFI_ACPI_6_0_ERST_WRITE_REGISTER 0x02 -#define EFI_ACPI_6_0_ERST_WRITE_REGISTER_VALUE 0x03 -#define EFI_ACPI_6_0_ERST_NOOP 0x04 -#define EFI_ACPI_6_0_ERST_LOAD_VAR1 0x05 -#define EFI_ACPI_6_0_ERST_LOAD_VAR2 0x06 -#define EFI_ACPI_6_0_ERST_STORE_VAR1 0x07 -#define EFI_ACPI_6_0_ERST_ADD 0x08 -#define EFI_ACPI_6_0_ERST_SUBTRACT 0x09 -#define EFI_ACPI_6_0_ERST_ADD_VALUE 0x0A -#define EFI_ACPI_6_0_ERST_SUBTRACT_VALUE 0x0B -#define EFI_ACPI_6_0_ERST_STALL 0x0C -#define EFI_ACPI_6_0_ERST_STALL_WHILE_TRUE 0x0D -#define EFI_ACPI_6_0_ERST_SKIP_NEXT_INSTRUCTION_IF_TRUE 0x0E -#define EFI_ACPI_6_0_ERST_GOTO 0x0F -#define EFI_ACPI_6_0_ERST_SET_SRC_ADDRESS_BASE 0x10 -#define EFI_ACPI_6_0_ERST_SET_DST_ADDRESS_BASE 0x11 -#define EFI_ACPI_6_0_ERST_MOVE_DATA 0x12 - -/// -/// ERST Instruction Flags -/// -#define EFI_ACPI_6_0_ERST_PRESERVE_REGISTER 0x01 - -/// -/// ERST Serialization Instruction Entry -/// -typedef struct { - UINT8 SerializationAction; - UINT8 Instruction; - UINT8 Flags; - UINT8 Reserved0; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion; - UINT64 Value; - UINT64 Mask; -} EFI_ACPI_6_0_ERST_SERIALIZATION_INSTRUCTION_ENTRY; - -/// -/// EINJ - Error Injection Table -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 InjectionHeaderSize; - UINT8 InjectionFlags; - UINT8 Reserved0[3]; - UINT32 InjectionEntryCount; -} EFI_ACPI_6_0_ERROR_INJECTION_TABLE_HEADER; - -/// -/// EINJ Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_ERROR_INJECTION_TABLE_REVISION 0x01 - -/// -/// EINJ Error Injection Actions -/// -#define EFI_ACPI_6_0_EINJ_BEGIN_INJECTION_OPERATION 0x00 -#define EFI_ACPI_6_0_EINJ_GET_TRIGGER_ERROR_ACTION_TABLE 0x01 -#define EFI_ACPI_6_0_EINJ_SET_ERROR_TYPE 0x02 -#define EFI_ACPI_6_0_EINJ_GET_ERROR_TYPE 0x03 -#define EFI_ACPI_6_0_EINJ_END_OPERATION 0x04 -#define EFI_ACPI_6_0_EINJ_EXECUTE_OPERATION 0x05 -#define EFI_ACPI_6_0_EINJ_CHECK_BUSY_STATUS 0x06 -#define EFI_ACPI_6_0_EINJ_GET_COMMAND_STATUS 0x07 -#define EFI_ACPI_6_0_EINJ_TRIGGER_ERROR 0xFF - -/// -/// EINJ Action Command Status -/// -#define EFI_ACPI_6_0_EINJ_STATUS_SUCCESS 0x00 -#define EFI_ACPI_6_0_EINJ_STATUS_UNKNOWN_FAILURE 0x01 -#define EFI_ACPI_6_0_EINJ_STATUS_INVALID_ACCESS 0x02 - -/// -/// EINJ Error Type Definition -/// -#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_CORRECTABLE (1 << 0) -#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_NONFATAL (1 << 1) -#define EFI_ACPI_6_0_EINJ_ERROR_PROCESSOR_UNCORRECTABLE_FATAL (1 << 2) -#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_CORRECTABLE (1 << 3) -#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_NONFATAL (1 << 4) -#define EFI_ACPI_6_0_EINJ_ERROR_MEMORY_UNCORRECTABLE_FATAL (1 << 5) -#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_CORRECTABLE (1 << 6) -#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_NONFATAL (1 << 7) -#define EFI_ACPI_6_0_EINJ_ERROR_PCI_EXPRESS_UNCORRECTABLE_FATAL (1 << 8) -#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_CORRECTABLE (1 << 9) -#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_NONFATAL (1 << 10) -#define EFI_ACPI_6_0_EINJ_ERROR_PLATFORM_UNCORRECTABLE_FATAL (1 << 11) - -/// -/// EINJ Injection Instructions -/// -#define EFI_ACPI_6_0_EINJ_READ_REGISTER 0x00 -#define EFI_ACPI_6_0_EINJ_READ_REGISTER_VALUE 0x01 -#define EFI_ACPI_6_0_EINJ_WRITE_REGISTER 0x02 -#define EFI_ACPI_6_0_EINJ_WRITE_REGISTER_VALUE 0x03 -#define EFI_ACPI_6_0_EINJ_NOOP 0x04 - -/// -/// EINJ Instruction Flags -/// -#define EFI_ACPI_6_0_EINJ_PRESERVE_REGISTER 0x01 - -/// -/// EINJ Injection Instruction Entry -/// -typedef struct { - UINT8 InjectionAction; - UINT8 Instruction; - UINT8 Flags; - UINT8 Reserved0; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE RegisterRegion; - UINT64 Value; - UINT64 Mask; -} EFI_ACPI_6_0_EINJ_INJECTION_INSTRUCTION_ENTRY; - -/// -/// EINJ Trigger Action Table -/// -typedef struct { - UINT32 HeaderSize; - UINT32 Revision; - UINT32 TableSize; - UINT32 EntryCount; -} EFI_ACPI_6_0_EINJ_TRIGGER_ACTION_TABLE; - -/// -/// Platform Communications Channel Table (PCCT) -/// -typedef struct { - EFI_ACPI_DESCRIPTION_HEADER Header; - UINT32 Flags; - UINT64 Reserved; -} EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_HEADER; - -/// -/// PCCT Version (as defined in ACPI 6.0 spec.) -/// -#define EFI_ACPI_6_0_PLATFORM_COMMUNICATION_CHANNEL_TABLE_REVISION 0x01 - -/// -/// PCCT Global Flags -/// -#define EFI_ACPI_6_0_PCCT_FLAGS_SCI_DOORBELL BIT0 - -// -// PCCT Subspace type -// -#define EFI_ACPI_6_0_PCCT_SUBSPACE_TYPE_GENERIC 0x00 - -/// -/// PCC Subspace Structure Header -/// -typedef struct { - UINT8 Type; - UINT8 Length; -} EFI_ACPI_6_0_PCCT_SUBSPACE_HEADER; - -/// -/// Generic Communications Subspace Structure -/// -typedef struct { - UINT8 Type; - UINT8 Length; - UINT8 Reserved[6]; - UINT64 BaseAddress; - UINT64 AddressLength; - EFI_ACPI_6_0_GENERIC_ADDRESS_STRUCTURE DoorbellRegister; - UINT64 DoorbellPreserve; - UINT64 DoorbellWrite; - UINT32 NominalLatency; - UINT32 MaximumPeriodicAccessRate; - UINT16 MinimumRequestTurnaroundTime; -} EFI_ACPI_6_0_PCCT_SUBSPACE_GENERIC; - -/// -/// Generic Communications Channel Shared Memory Region -/// - -typedef struct { - UINT8 Command; - UINT8 Reserved:7; - UINT8 GenerateSci:1; -} EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND; - -typedef struct { - UINT8 CommandComplete:1; - UINT8 SciDoorbell:1; - UINT8 Error:1; - UINT8 PlatformNotification:1; - UINT8 Reserved:4; - UINT8 Reserved1; -} EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS; - -typedef struct { - UINT32 Signature; - EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_COMMAND Command; - EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_STATUS Status; -} EFI_ACPI_6_0_PCCT_GENERIC_SHARED_MEMORY_REGION_HEADER; - -// -// Known table signatures -// - -/// -/// "RSD PTR " Root System Description Pointer -/// -#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_POINTER_SIGNATURE SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') - -/// -/// "APIC" Multiple APIC Description Table -/// -#define EFI_ACPI_6_0_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('A', 'P', 'I', 'C') - -/// -/// "BERT" Boot Error Record Table -/// -#define EFI_ACPI_6_0_BOOT_ERROR_RECORD_TABLE_SIGNATURE SIGNATURE_32('B', 'E', 'R', 'T') - -/// -/// "BGRT" Boot Graphics Resource Table -/// -#define EFI_ACPI_6_0_BOOT_GRAPHICS_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('B', 'G', 'R', 'T') - -/// -/// "CPEP" Corrected Platform Error Polling Table -/// -#define EFI_ACPI_6_0_CORRECTED_PLATFORM_ERROR_POLLING_TABLE_SIGNATURE SIGNATURE_32('C', 'P', 'E', 'P') - -/// -/// "DSDT" Differentiated System Description Table -/// -#define EFI_ACPI_6_0_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('D', 'S', 'D', 'T') - -/// -/// "ECDT" Embedded Controller Boot Resources Table -/// -#define EFI_ACPI_6_0_EMBEDDED_CONTROLLER_BOOT_RESOURCES_TABLE_SIGNATURE SIGNATURE_32('E', 'C', 'D', 'T') - -/// -/// "EINJ" Error Injection Table -/// -#define EFI_ACPI_6_0_ERROR_INJECTION_TABLE_SIGNATURE SIGNATURE_32('E', 'I', 'N', 'J') - -/// -/// "ERST" Error Record Serialization Table -/// -#define EFI_ACPI_6_0_ERROR_RECORD_SERIALIZATION_TABLE_SIGNATURE SIGNATURE_32('E', 'R', 'S', 'T') - -/// -/// "FACP" Fixed ACPI Description Table -/// -#define EFI_ACPI_6_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'P') - -/// -/// "FACS" Firmware ACPI Control Structure -/// -#define EFI_ACPI_6_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE SIGNATURE_32('F', 'A', 'C', 'S') - -/// -/// "FPDT" Firmware Performance Data Table -/// -#define EFI_ACPI_6_0_FIRMWARE_PERFORMANCE_DATA_TABLE_SIGNATURE SIGNATURE_32('F', 'P', 'D', 'T') - -/// -/// "GTDT" Generic Timer Description Table -/// -#define EFI_ACPI_6_0_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('G', 'T', 'D', 'T') - -/// -/// "HEST" Hardware Error Source Table -/// -#define EFI_ACPI_6_0_HARDWARE_ERROR_SOURCE_TABLE_SIGNATURE SIGNATURE_32('H', 'E', 'S', 'T') - -/// -/// "MPST" Memory Power State Table -/// -#define EFI_ACPI_6_0_MEMORY_POWER_STATE_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'S', 'T') - -/// -/// "MSCT" Maximum System Characteristics Table -/// -#define EFI_ACPI_6_0_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'C', 'T') - -/// -/// "NFIT" NVDIMM Firmware Interface Table -/// -#define EFI_ACPI_6_0_NVDIMM_FIRMWARE_INTERFACE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('N', 'F', 'I', 'T') - -/// -/// "PMTT" Platform Memory Topology Table -/// -#define EFI_ACPI_6_0_PLATFORM_MEMORY_TOPOLOGY_TABLE_SIGNATURE SIGNATURE_32('P', 'M', 'T', 'T') - -/// -/// "PSDT" Persistent System Description Table -/// -#define EFI_ACPI_6_0_PERSISTENT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('P', 'S', 'D', 'T') - -/// -/// "RASF" ACPI RAS Feature Table -/// -#define EFI_ACPI_6_0_ACPI_RAS_FEATURE_TABLE_SIGNATURE SIGNATURE_32('R', 'A', 'S', 'F') - -/// -/// "RSDT" Root System Description Table -/// -#define EFI_ACPI_6_0_ROOT_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('R', 'S', 'D', 'T') - -/// -/// "SBST" Smart Battery Specification Table -/// -#define EFI_ACPI_6_0_SMART_BATTERY_SPECIFICATION_TABLE_SIGNATURE SIGNATURE_32('S', 'B', 'S', 'T') - -/// -/// "SLIT" System Locality Information Table -/// -#define EFI_ACPI_6_0_SYSTEM_LOCALITY_INFORMATION_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'T') - -/// -/// "SRAT" System Resource Affinity Table -/// -#define EFI_ACPI_6_0_SYSTEM_RESOURCE_AFFINITY_TABLE_SIGNATURE SIGNATURE_32('S', 'R', 'A', 'T') - -/// -/// "SSDT" Secondary System Description Table -/// -#define EFI_ACPI_6_0_SECONDARY_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('S', 'S', 'D', 'T') - -/// -/// "XSDT" Extended System Description Table -/// -#define EFI_ACPI_6_0_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('X', 'S', 'D', 'T') - -/// -/// "BOOT" MS Simple Boot Spec -/// -#define EFI_ACPI_6_0_SIMPLE_BOOT_FLAG_TABLE_SIGNATURE SIGNATURE_32('B', 'O', 'O', 'T') - -/// -/// "CSRT" MS Core System Resource Table -/// -#define EFI_ACPI_6_0_CORE_SYSTEM_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('C', 'S', 'R', 'T') - -/// -/// "DBG2" MS Debug Port 2 Spec -/// -#define EFI_ACPI_6_0_DEBUG_PORT_2_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', '2') - -/// -/// "DBGP" MS Debug Port Spec -/// -#define EFI_ACPI_6_0_DEBUG_PORT_TABLE_SIGNATURE SIGNATURE_32('D', 'B', 'G', 'P') - -/// -/// "DMAR" DMA Remapping Table -/// -#define EFI_ACPI_6_0_DMA_REMAPPING_TABLE_SIGNATURE SIGNATURE_32('D', 'M', 'A', 'R') - -/// -/// "DRTM" Dynamic Root of Trust for Measurement Table -/// -#define EFI_ACPI_6_0_DYNAMIC_ROOT_OF_TRUST_FOR_MEASUREMENT_TABLE_SIGNATURE SIGNATURE_32('D', 'R', 'T', 'M') - -/// -/// "ETDT" Event Timer Description Table -/// -#define EFI_ACPI_6_0_EVENT_TIMER_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('E', 'T', 'D', 'T') - -/// -/// "HPET" IA-PC High Precision Event Timer Table -/// -#define EFI_ACPI_6_0_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE SIGNATURE_32('H', 'P', 'E', 'T') - -/// -/// "iBFT" iSCSI Boot Firmware Table -/// -#define EFI_ACPI_6_0_ISCSI_BOOT_FIRMWARE_TABLE_SIGNATURE SIGNATURE_32('i', 'B', 'F', 'T') - -/// -/// "IORT" Interrupt Source Override -/// -#define EFI_ACPI_6_0_INTERRUPT_SOURCE_OVERRIDE_SIGNATURE SIGNATURE_32('I', 'O', 'R', 'T') - -/// -/// "IVRS" I/O Virtualization Reporting Structure -/// -#define EFI_ACPI_6_0_IO_VIRTUALIZATION_REPORTING_STRUCTURE_SIGNATURE SIGNATURE_32('I', 'V', 'R', 'S') - -/// -/// "LPIT" Low Power Idle Table -/// -#define EFI_ACPI_6_0_LOW_POWER_IDLE_TABLE_STRUCTURE_SIGNATURE SIGNATURE_32('L', 'P', 'I', 'T') - -/// -/// "MCFG" PCI Express Memory Mapped Configuration Space Base Address Description Table -/// -#define EFI_ACPI_6_0_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'F', 'G') - -/// -/// "MCHI" Management Controller Host Interface Table -/// -#define EFI_ACPI_6_0_MANAGEMENT_CONTROLLER_HOST_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('M', 'C', 'H', 'I') - -/// -/// "MSDM" MS Data Management Table -/// -#define EFI_ACPI_6_0_DATA_MANAGEMENT_TABLE_SIGNATURE SIGNATURE_32('M', 'S', 'D', 'M') - -/// -/// "SLIC" MS Software Licensing Table Specification -/// -#define EFI_ACPI_6_0_SOFTWARE_LICENSING_TABLE_SIGNATURE SIGNATURE_32('S', 'L', 'I', 'C') - -/// -/// "SPCR" Serial Port Concole Redirection Table -/// -#define EFI_ACPI_6_0_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'C', 'R') - -/// -/// "SPMI" Server Platform Management Interface Table -/// -#define EFI_ACPI_6_0_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SIGNATURE SIGNATURE_32('S', 'P', 'M', 'I') - -/// -/// "STAO" _STA Override Table -/// -#define EFI_ACPI_6_0_STA_OVERRIDE_TABLE_SIGNATURE SIGNATURE_32('S', 'T', 'A', 'O') - -/// -/// "TCPA" Trusted Computing Platform Alliance Capabilities Table -/// -#define EFI_ACPI_6_0_TRUSTED_COMPUTING_PLATFORM_ALLIANCE_CAPABILITIES_TABLE_SIGNATURE SIGNATURE_32('T', 'C', 'P', 'A') - -/// -/// "TPM2" Trusted Computing Platform 1 Table -/// -#define EFI_ACPI_6_0_TRUSTED_COMPUTING_PLATFORM_2_TABLE_SIGNATURE SIGNATURE_32('T', 'P', 'M', '2') - -/// -/// "UEFI" UEFI ACPI Data Table -/// -#define EFI_ACPI_6_0_UEFI_ACPI_DATA_TABLE_SIGNATURE SIGNATURE_32('U', 'E', 'F', 'I') - -/// -/// "WAET" Windows ACPI Emulated Devices Table -/// -#define EFI_ACPI_6_0_WINDOWS_ACPI_EMULATED_DEVICES_TABLE_SIGNATURE SIGNATURE_32('W', 'A', 'E', 'T') - -/// -/// "WDAT" Watchdog Action Table -/// -#define EFI_ACPI_6_0_WATCHDOG_ACTION_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'A', 'T') - -/// -/// "WDRT" Watchdog Resource Table -/// -#define EFI_ACPI_6_0_WATCHDOG_RESOURCE_TABLE_SIGNATURE SIGNATURE_32('W', 'D', 'R', 'T') - -/// -/// "WPBT" MS Platform Binary Table -/// -#define EFI_ACPI_6_0_PLATFORM_BINARY_TABLE_SIGNATURE SIGNATURE_32('W', 'P', 'B', 'T') - -/// -/// "XENV" Xen Project Table -/// -#define EFI_ACPI_6_0_XEN_PROJECT_TABLE_SIGNATURE SIGNATURE_32('X', 'E', 'N', 'V') - -#pragma pack() - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/AcpiAml.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/AcpiAml.h deleted file mode 100644 index e7561a70b6..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/AcpiAml.h +++ /dev/null @@ -1,175 +0,0 @@ -/** @file - This file contains AML code definition in the latest ACPI spec. - - Copyright (c) 2011, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef _ACPI_AML_H_ -#define _ACPI_AML_H_ - -// -// ACPI AML definition -// - -// -// Primary OpCode -// -#define AML_ZERO_OP 0x00 -#define AML_ONE_OP 0x01 -#define AML_ALIAS_OP 0x06 -#define AML_NAME_OP 0x08 -#define AML_BYTE_PREFIX 0x0a -#define AML_WORD_PREFIX 0x0b -#define AML_DWORD_PREFIX 0x0c -#define AML_STRING_PREFIX 0x0d -#define AML_QWORD_PREFIX 0x0e -#define AML_SCOPE_OP 0x10 -#define AML_BUFFER_OP 0x11 -#define AML_PACKAGE_OP 0x12 -#define AML_VAR_PACKAGE_OP 0x13 -#define AML_METHOD_OP 0x14 -#define AML_DUAL_NAME_PREFIX 0x2e -#define AML_MULTI_NAME_PREFIX 0x2f -#define AML_NAME_CHAR_A 0x41 -#define AML_NAME_CHAR_B 0x42 -#define AML_NAME_CHAR_C 0x43 -#define AML_NAME_CHAR_D 0x44 -#define AML_NAME_CHAR_E 0x45 -#define AML_NAME_CHAR_F 0x46 -#define AML_NAME_CHAR_G 0x47 -#define AML_NAME_CHAR_H 0x48 -#define AML_NAME_CHAR_I 0x49 -#define AML_NAME_CHAR_J 0x4a -#define AML_NAME_CHAR_K 0x4b -#define AML_NAME_CHAR_L 0x4c -#define AML_NAME_CHAR_M 0x4d -#define AML_NAME_CHAR_N 0x4e -#define AML_NAME_CHAR_O 0x4f -#define AML_NAME_CHAR_P 0x50 -#define AML_NAME_CHAR_Q 0x51 -#define AML_NAME_CHAR_R 0x52 -#define AML_NAME_CHAR_S 0x53 -#define AML_NAME_CHAR_T 0x54 -#define AML_NAME_CHAR_U 0x55 -#define AML_NAME_CHAR_V 0x56 -#define AML_NAME_CHAR_W 0x57 -#define AML_NAME_CHAR_X 0x58 -#define AML_NAME_CHAR_Y 0x59 -#define AML_NAME_CHAR_Z 0x5a -#define AML_ROOT_CHAR 0x5c -#define AML_PARENT_PREFIX_CHAR 0x5e -#define AML_NAME_CHAR__ 0x5f -#define AML_LOCAL0 0x60 -#define AML_LOCAL1 0x61 -#define AML_LOCAL2 0x62 -#define AML_LOCAL3 0x63 -#define AML_LOCAL4 0x64 -#define AML_LOCAL5 0x65 -#define AML_LOCAL6 0x66 -#define AML_LOCAL7 0x67 -#define AML_ARG0 0x68 -#define AML_ARG1 0x69 -#define AML_ARG2 0x6a -#define AML_ARG3 0x6b -#define AML_ARG4 0x6c -#define AML_ARG5 0x6d -#define AML_ARG6 0x6e -#define AML_STORE_OP 0x70 -#define AML_REF_OF_OP 0x71 -#define AML_ADD_OP 0x72 -#define AML_CONCAT_OP 0x73 -#define AML_SUBTRACT_OP 0x74 -#define AML_INCREMENT_OP 0x75 -#define AML_DECREMENT_OP 0x76 -#define AML_MULTIPLY_OP 0x77 -#define AML_DIVIDE_OP 0x78 -#define AML_SHIFT_LEFT_OP 0x79 -#define AML_SHIFT_RIGHT_OP 0x7a -#define AML_AND_OP 0x7b -#define AML_NAND_OP 0x7c -#define AML_OR_OP 0x7d -#define AML_NOR_OP 0x7e -#define AML_XOR_OP 0x7f -#define AML_NOT_OP 0x80 -#define AML_FIND_SET_LEFT_BIT_OP 0x81 -#define AML_FIND_SET_RIGHT_BIT_OP 0x82 -#define AML_DEREF_OF_OP 0x83 -#define AML_CONCAT_RES_OP 0x84 -#define AML_MOD_OP 0x85 -#define AML_NOTIFY_OP 0x86 -#define AML_SIZE_OF_OP 0x87 -#define AML_INDEX_OP 0x88 -#define AML_MATCH_OP 0x89 -#define AML_CREATE_DWORD_FIELD_OP 0x8a -#define AML_CREATE_WORD_FIELD_OP 0x8b -#define AML_CREATE_BYTE_FIELD_OP 0x8c -#define AML_CREATE_BIT_FIELD_OP 0x8d -#define AML_OBJECT_TYPE_OP 0x8e -#define AML_CREATE_QWORD_FIELD_OP 0x8f -#define AML_LAND_OP 0x90 -#define AML_LOR_OP 0x91 -#define AML_LNOT_OP 0x92 -#define AML_LEQUAL_OP 0x93 -#define AML_LGREATER_OP 0x94 -#define AML_LLESS_OP 0x95 -#define AML_TO_BUFFER_OP 0x96 -#define AML_TO_DEC_STRING_OP 0x97 -#define AML_TO_HEX_STRING_OP 0x98 -#define AML_TO_INTEGER_OP 0x99 -#define AML_TO_STRING_OP 0x9c -#define AML_COPY_OBJECT_OP 0x9d -#define AML_MID_OP 0x9e -#define AML_CONTINUE_OP 0x9f -#define AML_IF_OP 0xa0 -#define AML_ELSE_OP 0xa1 -#define AML_WHILE_OP 0xa2 -#define AML_NOOP_OP 0xa3 -#define AML_RETURN_OP 0xa4 -#define AML_BREAK_OP 0xa5 -#define AML_BREAK_POINT_OP 0xcc -#define AML_ONES_OP 0xff - -// -// Extended OpCode -// -#define AML_EXT_OP 0x5b - -#define AML_EXT_MUTEX_OP 0x01 -#define AML_EXT_EVENT_OP 0x02 -#define AML_EXT_COND_REF_OF_OP 0x12 -#define AML_EXT_CREATE_FIELD_OP 0x13 -#define AML_EXT_LOAD_TABLE_OP 0x1f -#define AML_EXT_LOAD_OP 0x20 -#define AML_EXT_STALL_OP 0x21 -#define AML_EXT_SLEEP_OP 0x22 -#define AML_EXT_ACQUIRE_OP 0x23 -#define AML_EXT_SIGNAL_OP 0x24 -#define AML_EXT_WAIT_OP 0x25 -#define AML_EXT_RESET_OP 0x26 -#define AML_EXT_RELEASE_OP 0x27 -#define AML_EXT_FROM_BCD_OP 0x28 -#define AML_EXT_TO_BCD_OP 0x29 -#define AML_EXT_UNLOAD_OP 0x2a -#define AML_EXT_REVISION_OP 0x30 -#define AML_EXT_DEBUG_OP 0x31 -#define AML_EXT_FATAL_OP 0x32 -#define AML_EXT_TIMER_OP 0x33 -#define AML_EXT_REGION_OP 0x80 -#define AML_EXT_FIELD_OP 0x81 -#define AML_EXT_DEVICE_OP 0x82 -#define AML_EXT_PROCESSOR_OP 0x83 -#define AML_EXT_POWER_RES_OP 0x84 -#define AML_EXT_THERMAL_ZONE_OP 0x85 -#define AML_EXT_INDEX_FIELD_OP 0x86 -#define AML_EXT_BANK_FIELD_OP 0x87 -#define AML_EXT_DATA_REGION_OP 0x88 - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Bluetooth.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Bluetooth.h deleted file mode 100644 index 027ef35efe..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/Bluetooth.h +++ /dev/null @@ -1,47 +0,0 @@ -/** @file - This file contains the Bluetooth definitions that are consumed by drivers. - These definitions are from Bluetooth Core Specification Version 4.0 June, 2010 - - Copyright (c) 2015, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef _BLUETOOTH_H_ -#define _BLUETOOTH_H_ - -#pragma pack(1) - -/// -/// BLUETOOTH_ADDRESS -/// -typedef struct { - /// - /// 48bit Bluetooth device address. - /// - UINT8 Address[6]; -} BLUETOOTH_ADDRESS; - -/// -/// BLUETOOTH_CLASS_OF_DEVICE. See Bluetooth specification for detail. -/// -typedef struct { - UINT8 FormatType:2; - UINT8 MinorDeviceClass: 6; - UINT16 MajorDeviceClass: 5; - UINT16 MajorServiceClass:11; -} BLUETOOTH_CLASS_OF_DEVICE; - -#pragma pack() - -#define BLUETOOTH_HCI_COMMAND_LOCAL_READABLE_NAME_MAX_SIZE 248 - -#define BLUETOOTH_HCI_LINK_KEY_SIZE 16 - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/PeImage.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/PeImage.h deleted file mode 100644 index 9b4dd1b22a..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/IndustryStandard/PeImage.h +++ /dev/null @@ -1,756 +0,0 @@ -/** @file - EFI image format for PE32, PE32+ and TE. Please note some data structures are - different for PE32 and PE32+. EFI_IMAGE_NT_HEADERS32 is for PE32 and - EFI_IMAGE_NT_HEADERS64 is for PE32+. - - This file is coded to the Visual Studio, Microsoft Portable Executable and - Common Object File Format Specification, Revision 8.3 - February 6, 2013. - This file also includes some definitions in PI Specification, Revision 1.0. - -Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
-Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
-This file and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __PE_IMAGE_H__ -#define __PE_IMAGE_H__ - -// -// PE32+ Subsystem type for EFI images -// -#define EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION 10 -#define EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11 -#define EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 -#define EFI_IMAGE_SUBSYSTEM_SAL_RUNTIME_DRIVER 13 ///< defined PI Specification, 1.0 - - -// -// PE32+ Machine type for EFI images -// -#define IMAGE_FILE_MACHINE_I386 0x014c -#define IMAGE_FILE_MACHINE_IA64 0x0200 -#define IMAGE_FILE_MACHINE_EBC 0x0EBC -#define IMAGE_FILE_MACHINE_X64 0x8664 -#define IMAGE_FILE_MACHINE_ARMTHUMB_MIXED 0x01c2 -#define IMAGE_FILE_MACHINE_ARM64 0xAA64 - -// -// EXE file formats -// -#define EFI_IMAGE_DOS_SIGNATURE SIGNATURE_16('M', 'Z') -#define EFI_IMAGE_OS2_SIGNATURE SIGNATURE_16('N', 'E') -#define EFI_IMAGE_OS2_SIGNATURE_LE SIGNATURE_16('L', 'E') -#define EFI_IMAGE_NT_SIGNATURE SIGNATURE_32('P', 'E', '\0', '\0') - -/// -/// PE images can start with an optional DOS header, so if an image is run -/// under DOS it can print an error message. -/// -typedef struct { - UINT16 e_magic; ///< Magic number. - UINT16 e_cblp; ///< Bytes on last page of file. - UINT16 e_cp; ///< Pages in file. - UINT16 e_crlc; ///< Relocations. - UINT16 e_cparhdr; ///< Size of header in paragraphs. - UINT16 e_minalloc; ///< Minimum extra paragraphs needed. - UINT16 e_maxalloc; ///< Maximum extra paragraphs needed. - UINT16 e_ss; ///< Initial (relative) SS value. - UINT16 e_sp; ///< Initial SP value. - UINT16 e_csum; ///< Checksum. - UINT16 e_ip; ///< Initial IP value. - UINT16 e_cs; ///< Initial (relative) CS value. - UINT16 e_lfarlc; ///< File address of relocation table. - UINT16 e_ovno; ///< Overlay number. - UINT16 e_res[4]; ///< Reserved words. - UINT16 e_oemid; ///< OEM identifier (for e_oeminfo). - UINT16 e_oeminfo; ///< OEM information; e_oemid specific. - UINT16 e_res2[10]; ///< Reserved words. - UINT32 e_lfanew; ///< File address of new exe header. -} EFI_IMAGE_DOS_HEADER; - -/// -/// COFF File Header (Object and Image). -/// -typedef struct { - UINT16 Machine; - UINT16 NumberOfSections; - UINT32 TimeDateStamp; - UINT32 PointerToSymbolTable; - UINT32 NumberOfSymbols; - UINT16 SizeOfOptionalHeader; - UINT16 Characteristics; -} EFI_IMAGE_FILE_HEADER; - -/// -/// Size of EFI_IMAGE_FILE_HEADER. -/// -#define EFI_IMAGE_SIZEOF_FILE_HEADER 20 - -// -// Characteristics -// -#define EFI_IMAGE_FILE_RELOCS_STRIPPED BIT0 ///< 0x0001 Relocation info stripped from file. -#define EFI_IMAGE_FILE_EXECUTABLE_IMAGE BIT1 ///< 0x0002 File is executable (i.e. no unresolved externel references). -#define EFI_IMAGE_FILE_LINE_NUMS_STRIPPED BIT2 ///< 0x0004 Line nunbers stripped from file. -#define EFI_IMAGE_FILE_LOCAL_SYMS_STRIPPED BIT3 ///< 0x0008 Local symbols stripped from file. -#define EFI_IMAGE_FILE_BYTES_REVERSED_LO BIT7 ///< 0x0080 Bytes of machine word are reversed. -#define EFI_IMAGE_FILE_32BIT_MACHINE BIT8 ///< 0x0100 32 bit word machine. -#define EFI_IMAGE_FILE_DEBUG_STRIPPED BIT9 ///< 0x0200 Debugging info stripped from file in .DBG file. -#define EFI_IMAGE_FILE_SYSTEM BIT12 ///< 0x1000 System File. -#define EFI_IMAGE_FILE_DLL BIT13 ///< 0x2000 File is a DLL. -#define EFI_IMAGE_FILE_BYTES_REVERSED_HI BIT15 ///< 0x8000 Bytes of machine word are reversed. - -/// -/// Header Data Directories. -/// -typedef struct { - UINT32 VirtualAddress; - UINT32 Size; -} EFI_IMAGE_DATA_DIRECTORY; - -// -// Directory Entries -// -#define EFI_IMAGE_DIRECTORY_ENTRY_EXPORT 0 -#define EFI_IMAGE_DIRECTORY_ENTRY_IMPORT 1 -#define EFI_IMAGE_DIRECTORY_ENTRY_RESOURCE 2 -#define EFI_IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 -#define EFI_IMAGE_DIRECTORY_ENTRY_SECURITY 4 -#define EFI_IMAGE_DIRECTORY_ENTRY_BASERELOC 5 -#define EFI_IMAGE_DIRECTORY_ENTRY_DEBUG 6 -#define EFI_IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 -#define EFI_IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 -#define EFI_IMAGE_DIRECTORY_ENTRY_TLS 9 -#define EFI_IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 - -#define EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES 16 - -/// -/// @attention -/// EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC means PE32 and -/// EFI_IMAGE_OPTIONAL_HEADER32 must be used. The data structures only vary -/// after NT additional fields. -/// -#define EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b - -/// -/// Optional Header Standard Fields for PE32. -/// -typedef struct { - /// - /// Standard fields. - /// - UINT16 Magic; - UINT8 MajorLinkerVersion; - UINT8 MinorLinkerVersion; - UINT32 SizeOfCode; - UINT32 SizeOfInitializedData; - UINT32 SizeOfUninitializedData; - UINT32 AddressOfEntryPoint; - UINT32 BaseOfCode; - UINT32 BaseOfData; ///< PE32 contains this additional field, which is absent in PE32+. - /// - /// Optional Header Windows-Specific Fields. - /// - UINT32 ImageBase; - UINT32 SectionAlignment; - UINT32 FileAlignment; - UINT16 MajorOperatingSystemVersion; - UINT16 MinorOperatingSystemVersion; - UINT16 MajorImageVersion; - UINT16 MinorImageVersion; - UINT16 MajorSubsystemVersion; - UINT16 MinorSubsystemVersion; - UINT32 Win32VersionValue; - UINT32 SizeOfImage; - UINT32 SizeOfHeaders; - UINT32 CheckSum; - UINT16 Subsystem; - UINT16 DllCharacteristics; - UINT32 SizeOfStackReserve; - UINT32 SizeOfStackCommit; - UINT32 SizeOfHeapReserve; - UINT32 SizeOfHeapCommit; - UINT32 LoaderFlags; - UINT32 NumberOfRvaAndSizes; - EFI_IMAGE_DATA_DIRECTORY DataDirectory[EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES]; -} EFI_IMAGE_OPTIONAL_HEADER32; - -/// -/// @attention -/// EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC means PE32+ and -/// EFI_IMAGE_OPTIONAL_HEADER64 must be used. The data structures only vary -/// after NT additional fields. -/// -#define EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b - -/// -/// Optional Header Standard Fields for PE32+. -/// -typedef struct { - /// - /// Standard fields. - /// - UINT16 Magic; - UINT8 MajorLinkerVersion; - UINT8 MinorLinkerVersion; - UINT32 SizeOfCode; - UINT32 SizeOfInitializedData; - UINT32 SizeOfUninitializedData; - UINT32 AddressOfEntryPoint; - UINT32 BaseOfCode; - /// - /// Optional Header Windows-Specific Fields. - /// - UINT64 ImageBase; - UINT32 SectionAlignment; - UINT32 FileAlignment; - UINT16 MajorOperatingSystemVersion; - UINT16 MinorOperatingSystemVersion; - UINT16 MajorImageVersion; - UINT16 MinorImageVersion; - UINT16 MajorSubsystemVersion; - UINT16 MinorSubsystemVersion; - UINT32 Win32VersionValue; - UINT32 SizeOfImage; - UINT32 SizeOfHeaders; - UINT32 CheckSum; - UINT16 Subsystem; - UINT16 DllCharacteristics; - UINT64 SizeOfStackReserve; - UINT64 SizeOfStackCommit; - UINT64 SizeOfHeapReserve; - UINT64 SizeOfHeapCommit; - UINT32 LoaderFlags; - UINT32 NumberOfRvaAndSizes; - EFI_IMAGE_DATA_DIRECTORY DataDirectory[EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES]; -} EFI_IMAGE_OPTIONAL_HEADER64; - - -/// -/// @attention -/// EFI_IMAGE_NT_HEADERS32 is for use ONLY by tools. -/// -typedef struct { - UINT32 Signature; - EFI_IMAGE_FILE_HEADER FileHeader; - EFI_IMAGE_OPTIONAL_HEADER32 OptionalHeader; -} EFI_IMAGE_NT_HEADERS32; - -#define EFI_IMAGE_SIZEOF_NT_OPTIONAL32_HEADER sizeof (EFI_IMAGE_NT_HEADERS32) - -/// -/// @attention -/// EFI_IMAGE_HEADERS64 is for use ONLY by tools. -/// -typedef struct { - UINT32 Signature; - EFI_IMAGE_FILE_HEADER FileHeader; - EFI_IMAGE_OPTIONAL_HEADER64 OptionalHeader; -} EFI_IMAGE_NT_HEADERS64; - -#define EFI_IMAGE_SIZEOF_NT_OPTIONAL64_HEADER sizeof (EFI_IMAGE_NT_HEADERS64) - -// -// Other Windows Subsystem Values -// -#define EFI_IMAGE_SUBSYSTEM_UNKNOWN 0 -#define EFI_IMAGE_SUBSYSTEM_NATIVE 1 -#define EFI_IMAGE_SUBSYSTEM_WINDOWS_GUI 2 -#define EFI_IMAGE_SUBSYSTEM_WINDOWS_CUI 3 -#define EFI_IMAGE_SUBSYSTEM_OS2_CUI 5 -#define EFI_IMAGE_SUBSYSTEM_POSIX_CUI 7 - -/// -/// Length of ShortName. -/// -#define EFI_IMAGE_SIZEOF_SHORT_NAME 8 - -/// -/// Section Table. This table immediately follows the optional header. -/// -typedef struct { - UINT8 Name[EFI_IMAGE_SIZEOF_SHORT_NAME]; - union { - UINT32 PhysicalAddress; - UINT32 VirtualSize; - } Misc; - UINT32 VirtualAddress; - UINT32 SizeOfRawData; - UINT32 PointerToRawData; - UINT32 PointerToRelocations; - UINT32 PointerToLinenumbers; - UINT16 NumberOfRelocations; - UINT16 NumberOfLinenumbers; - UINT32 Characteristics; -} EFI_IMAGE_SECTION_HEADER; - -/// -/// Size of EFI_IMAGE_SECTION_HEADER. -/// -#define EFI_IMAGE_SIZEOF_SECTION_HEADER 40 - -// -// Section Flags Values -// -#define EFI_IMAGE_SCN_TYPE_NO_PAD BIT3 ///< 0x00000008 ///< Reserved. -#define EFI_IMAGE_SCN_CNT_CODE BIT5 ///< 0x00000020 -#define EFI_IMAGE_SCN_CNT_INITIALIZED_DATA BIT6 ///< 0x00000040 -#define EFI_IMAGE_SCN_CNT_UNINITIALIZED_DATA BIT7 ///< 0x00000080 - -#define EFI_IMAGE_SCN_LNK_OTHER BIT8 ///< 0x00000100 ///< Reserved. -#define EFI_IMAGE_SCN_LNK_INFO BIT9 ///< 0x00000200 ///< Section contains comments or some other type of information. -#define EFI_IMAGE_SCN_LNK_REMOVE BIT11 ///< 0x00000800 ///< Section contents will not become part of image. -#define EFI_IMAGE_SCN_LNK_COMDAT BIT12 ///< 0x00001000 - -#define EFI_IMAGE_SCN_ALIGN_1BYTES BIT20 ///< 0x00100000 -#define EFI_IMAGE_SCN_ALIGN_2BYTES BIT21 ///< 0x00200000 -#define EFI_IMAGE_SCN_ALIGN_4BYTES (BIT20|BIT21) ///< 0x00300000 -#define EFI_IMAGE_SCN_ALIGN_8BYTES BIT22 ///< 0x00400000 -#define EFI_IMAGE_SCN_ALIGN_16BYTES (BIT20|BIT22) ///< 0x00500000 -#define EFI_IMAGE_SCN_ALIGN_32BYTES (BIT21|BIT22) ///< 0x00600000 -#define EFI_IMAGE_SCN_ALIGN_64BYTES (BIT20|BIT21|BIT22) ///< 0x00700000 - -#define EFI_IMAGE_SCN_MEM_DISCARDABLE BIT25 ///< 0x02000000 -#define EFI_IMAGE_SCN_MEM_NOT_CACHED BIT26 ///< 0x04000000 -#define EFI_IMAGE_SCN_MEM_NOT_PAGED BIT27 ///< 0x08000000 -#define EFI_IMAGE_SCN_MEM_SHARED BIT28 ///< 0x10000000 -#define EFI_IMAGE_SCN_MEM_EXECUTE BIT29 ///< 0x20000000 -#define EFI_IMAGE_SCN_MEM_READ BIT30 ///< 0x40000000 -#define EFI_IMAGE_SCN_MEM_WRITE BIT31 ///< 0x80000000 - -/// -/// Size of a Symbol Table Record. -/// -#define EFI_IMAGE_SIZEOF_SYMBOL 18 - -// -// Symbols have a section number of the section in which they are -// defined. Otherwise, section numbers have the following meanings: -// -#define EFI_IMAGE_SYM_UNDEFINED (UINT16) 0 ///< Symbol is undefined or is common. -#define EFI_IMAGE_SYM_ABSOLUTE (UINT16) -1 ///< Symbol is an absolute value. -#define EFI_IMAGE_SYM_DEBUG (UINT16) -2 ///< Symbol is a special debug item. - -// -// Symbol Type (fundamental) values. -// -#define EFI_IMAGE_SYM_TYPE_NULL 0 ///< no type. -#define EFI_IMAGE_SYM_TYPE_VOID 1 ///< no valid type. -#define EFI_IMAGE_SYM_TYPE_CHAR 2 ///< type character. -#define EFI_IMAGE_SYM_TYPE_SHORT 3 ///< type short integer. -#define EFI_IMAGE_SYM_TYPE_INT 4 -#define EFI_IMAGE_SYM_TYPE_LONG 5 -#define EFI_IMAGE_SYM_TYPE_FLOAT 6 -#define EFI_IMAGE_SYM_TYPE_DOUBLE 7 -#define EFI_IMAGE_SYM_TYPE_STRUCT 8 -#define EFI_IMAGE_SYM_TYPE_UNION 9 -#define EFI_IMAGE_SYM_TYPE_ENUM 10 ///< enumeration. -#define EFI_IMAGE_SYM_TYPE_MOE 11 ///< member of enumeration. -#define EFI_IMAGE_SYM_TYPE_BYTE 12 -#define EFI_IMAGE_SYM_TYPE_WORD 13 -#define EFI_IMAGE_SYM_TYPE_UINT 14 -#define EFI_IMAGE_SYM_TYPE_DWORD 15 - -// -// Symbol Type (derived) values. -// -#define EFI_IMAGE_SYM_DTYPE_NULL 0 ///< no derived type. -#define EFI_IMAGE_SYM_DTYPE_POINTER 1 -#define EFI_IMAGE_SYM_DTYPE_FUNCTION 2 -#define EFI_IMAGE_SYM_DTYPE_ARRAY 3 - -// -// Storage classes. -// -#define EFI_IMAGE_SYM_CLASS_END_OF_FUNCTION ((UINT8) -1) -#define EFI_IMAGE_SYM_CLASS_NULL 0 -#define EFI_IMAGE_SYM_CLASS_AUTOMATIC 1 -#define EFI_IMAGE_SYM_CLASS_EXTERNAL 2 -#define EFI_IMAGE_SYM_CLASS_STATIC 3 -#define EFI_IMAGE_SYM_CLASS_REGISTER 4 -#define EFI_IMAGE_SYM_CLASS_EXTERNAL_DEF 5 -#define EFI_IMAGE_SYM_CLASS_LABEL 6 -#define EFI_IMAGE_SYM_CLASS_UNDEFINED_LABEL 7 -#define EFI_IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8 -#define EFI_IMAGE_SYM_CLASS_ARGUMENT 9 -#define EFI_IMAGE_SYM_CLASS_STRUCT_TAG 10 -#define EFI_IMAGE_SYM_CLASS_MEMBER_OF_UNION 11 -#define EFI_IMAGE_SYM_CLASS_UNION_TAG 12 -#define EFI_IMAGE_SYM_CLASS_TYPE_DEFINITION 13 -#define EFI_IMAGE_SYM_CLASS_UNDEFINED_STATIC 14 -#define EFI_IMAGE_SYM_CLASS_ENUM_TAG 15 -#define EFI_IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16 -#define EFI_IMAGE_SYM_CLASS_REGISTER_PARAM 17 -#define EFI_IMAGE_SYM_CLASS_BIT_FIELD 18 -#define EFI_IMAGE_SYM_CLASS_BLOCK 100 -#define EFI_IMAGE_SYM_CLASS_FUNCTION 101 -#define EFI_IMAGE_SYM_CLASS_END_OF_STRUCT 102 -#define EFI_IMAGE_SYM_CLASS_FILE 103 -#define EFI_IMAGE_SYM_CLASS_SECTION 104 -#define EFI_IMAGE_SYM_CLASS_WEAK_EXTERNAL 105 - -// -// type packing constants -// -#define EFI_IMAGE_N_BTMASK 017 -#define EFI_IMAGE_N_TMASK 060 -#define EFI_IMAGE_N_TMASK1 0300 -#define EFI_IMAGE_N_TMASK2 0360 -#define EFI_IMAGE_N_BTSHFT 4 -#define EFI_IMAGE_N_TSHIFT 2 - -// -// Communal selection types. -// -#define EFI_IMAGE_COMDAT_SELECT_NODUPLICATES 1 -#define EFI_IMAGE_COMDAT_SELECT_ANY 2 -#define EFI_IMAGE_COMDAT_SELECT_SAME_SIZE 3 -#define EFI_IMAGE_COMDAT_SELECT_EXACT_MATCH 4 -#define EFI_IMAGE_COMDAT_SELECT_ASSOCIATIVE 5 - -// -// the following values only be referred in PeCoff, not defined in PECOFF. -// -#define EFI_IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1 -#define EFI_IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2 -#define EFI_IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3 - -/// -/// Relocation format. -/// -typedef struct { - UINT32 VirtualAddress; - UINT32 SymbolTableIndex; - UINT16 Type; -} EFI_IMAGE_RELOCATION; - -/// -/// Size of EFI_IMAGE_RELOCATION -/// -#define EFI_IMAGE_SIZEOF_RELOCATION 10 - -// -// I386 relocation types. -// -#define EFI_IMAGE_REL_I386_ABSOLUTE 0x0000 ///< Reference is absolute, no relocation is necessary. -#define EFI_IMAGE_REL_I386_DIR16 0x0001 ///< Direct 16-bit reference to the symbols virtual address. -#define EFI_IMAGE_REL_I386_REL16 0x0002 ///< PC-relative 16-bit reference to the symbols virtual address. -#define EFI_IMAGE_REL_I386_DIR32 0x0006 ///< Direct 32-bit reference to the symbols virtual address. -#define EFI_IMAGE_REL_I386_DIR32NB 0x0007 ///< Direct 32-bit reference to the symbols virtual address, base not included. -#define EFI_IMAGE_REL_I386_SEG12 0x0009 ///< Direct 16-bit reference to the segment-selector bits of a 32-bit virtual address. -#define EFI_IMAGE_REL_I386_SECTION 0x000A -#define EFI_IMAGE_REL_I386_SECREL 0x000B -#define EFI_IMAGE_REL_I386_REL32 0x0014 ///< PC-relative 32-bit reference to the symbols virtual address. - -// -// x64 processor relocation types. -// -#define IMAGE_REL_AMD64_ABSOLUTE 0x0000 -#define IMAGE_REL_AMD64_ADDR64 0x0001 -#define IMAGE_REL_AMD64_ADDR32 0x0002 -#define IMAGE_REL_AMD64_ADDR32NB 0x0003 -#define IMAGE_REL_AMD64_REL32 0x0004 -#define IMAGE_REL_AMD64_REL32_1 0x0005 -#define IMAGE_REL_AMD64_REL32_2 0x0006 -#define IMAGE_REL_AMD64_REL32_3 0x0007 -#define IMAGE_REL_AMD64_REL32_4 0x0008 -#define IMAGE_REL_AMD64_REL32_5 0x0009 -#define IMAGE_REL_AMD64_SECTION 0x000A -#define IMAGE_REL_AMD64_SECREL 0x000B -#define IMAGE_REL_AMD64_SECREL7 0x000C -#define IMAGE_REL_AMD64_TOKEN 0x000D -#define IMAGE_REL_AMD64_SREL32 0x000E -#define IMAGE_REL_AMD64_PAIR 0x000F -#define IMAGE_REL_AMD64_SSPAN32 0x0010 - -/// -/// Based relocation format. -/// -typedef struct { - UINT32 VirtualAddress; - UINT32 SizeOfBlock; -} EFI_IMAGE_BASE_RELOCATION; - -/// -/// Size of EFI_IMAGE_BASE_RELOCATION. -/// -#define EFI_IMAGE_SIZEOF_BASE_RELOCATION 8 - -// -// Based relocation types. -// -#define EFI_IMAGE_REL_BASED_ABSOLUTE 0 -#define EFI_IMAGE_REL_BASED_HIGH 1 -#define EFI_IMAGE_REL_BASED_LOW 2 -#define EFI_IMAGE_REL_BASED_HIGHLOW 3 -#define EFI_IMAGE_REL_BASED_HIGHADJ 4 -#define EFI_IMAGE_REL_BASED_MIPS_JMPADDR 5 -#define EFI_IMAGE_REL_BASED_ARM_MOV32A 5 -#define EFI_IMAGE_REL_BASED_ARM_MOV32T 7 -#define EFI_IMAGE_REL_BASED_IA64_IMM64 9 -#define EFI_IMAGE_REL_BASED_MIPS_JMPADDR16 9 -#define EFI_IMAGE_REL_BASED_DIR64 10 - -/// -/// Line number format. -/// -typedef struct { - union { - UINT32 SymbolTableIndex; ///< Symbol table index of function name if Linenumber is 0. - UINT32 VirtualAddress; ///< Virtual address of line number. - } Type; - UINT16 Linenumber; ///< Line number. -} EFI_IMAGE_LINENUMBER; - -/// -/// Size of EFI_IMAGE_LINENUMBER. -/// -#define EFI_IMAGE_SIZEOF_LINENUMBER 6 - -// -// Archive format. -// -#define EFI_IMAGE_ARCHIVE_START_SIZE 8 -#define EFI_IMAGE_ARCHIVE_START "!\n" -#define EFI_IMAGE_ARCHIVE_END "`\n" -#define EFI_IMAGE_ARCHIVE_PAD "\n" -#define EFI_IMAGE_ARCHIVE_LINKER_MEMBER "/ " -#define EFI_IMAGE_ARCHIVE_LONGNAMES_MEMBER "// " - -/// -/// Archive Member Headers -/// -typedef struct { - UINT8 Name[16]; ///< File member name - `/' terminated. - UINT8 Date[12]; ///< File member date - decimal. - UINT8 UserID[6]; ///< File member user id - decimal. - UINT8 GroupID[6]; ///< File member group id - decimal. - UINT8 Mode[8]; ///< File member mode - octal. - UINT8 Size[10]; ///< File member size - decimal. - UINT8 EndHeader[2]; ///< String to end header. (0x60 0x0A). -} EFI_IMAGE_ARCHIVE_MEMBER_HEADER; - -/// -/// Size of EFI_IMAGE_ARCHIVE_MEMBER_HEADER. -/// -#define EFI_IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60 - - -// -// DLL Support -// - -/// -/// Export Directory Table. -/// -typedef struct { - UINT32 Characteristics; - UINT32 TimeDateStamp; - UINT16 MajorVersion; - UINT16 MinorVersion; - UINT32 Name; - UINT32 Base; - UINT32 NumberOfFunctions; - UINT32 NumberOfNames; - UINT32 AddressOfFunctions; - UINT32 AddressOfNames; - UINT32 AddressOfNameOrdinals; -} EFI_IMAGE_EXPORT_DIRECTORY; - -/// -/// Hint/Name Table. -/// -typedef struct { - UINT16 Hint; - UINT8 Name[1]; -} EFI_IMAGE_IMPORT_BY_NAME; - -/// -/// Import Address Table RVA (Thunk Table). -/// -typedef struct { - union { - UINT32 Function; - UINT32 Ordinal; - EFI_IMAGE_IMPORT_BY_NAME *AddressOfData; - } u1; -} EFI_IMAGE_THUNK_DATA; - -#define EFI_IMAGE_ORDINAL_FLAG BIT31 ///< Flag for PE32. -#define EFI_IMAGE_SNAP_BY_ORDINAL(Ordinal) ((Ordinal & EFI_IMAGE_ORDINAL_FLAG) != 0) -#define EFI_IMAGE_ORDINAL(Ordinal) (Ordinal & 0xffff) - -/// -/// Import Directory Table -/// -typedef struct { - UINT32 Characteristics; - UINT32 TimeDateStamp; - UINT32 ForwarderChain; - UINT32 Name; - EFI_IMAGE_THUNK_DATA *FirstThunk; -} EFI_IMAGE_IMPORT_DESCRIPTOR; - - -/// -/// Debug Directory Format. -/// -typedef struct { - UINT32 Characteristics; - UINT32 TimeDateStamp; - UINT16 MajorVersion; - UINT16 MinorVersion; - UINT32 Type; - UINT32 SizeOfData; - UINT32 RVA; ///< The address of the debug data when loaded, relative to the image base. - UINT32 FileOffset; ///< The file pointer to the debug data. -} EFI_IMAGE_DEBUG_DIRECTORY_ENTRY; - -#define EFI_IMAGE_DEBUG_TYPE_CODEVIEW 2 ///< The Visual C++ debug information. - -/// -/// Debug Data Structure defined in Microsoft C++. -/// -#define CODEVIEW_SIGNATURE_NB10 SIGNATURE_32('N', 'B', '1', '0') -typedef struct { - UINT32 Signature; ///< "NB10" - UINT32 Unknown; - UINT32 Unknown2; - UINT32 Unknown3; - // - // Filename of .PDB goes here - // -} EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY; - -/// -/// Debug Data Structure defined in Microsoft C++. -/// -#define CODEVIEW_SIGNATURE_RSDS SIGNATURE_32('R', 'S', 'D', 'S') -typedef struct { - UINT32 Signature; ///< "RSDS". - UINT32 Unknown; - UINT32 Unknown2; - UINT32 Unknown3; - UINT32 Unknown4; - UINT32 Unknown5; - // - // Filename of .PDB goes here - // -} EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY; - - -/// -/// Debug Data Structure defined by Apple Mach-O to Coff utility. -/// -#define CODEVIEW_SIGNATURE_MTOC SIGNATURE_32('M', 'T', 'O', 'C') -typedef struct { - UINT32 Signature; ///< "MTOC". - GUID MachOUuid; - // - // Filename of .DLL (Mach-O with debug info) goes here - // -} EFI_IMAGE_DEBUG_CODEVIEW_MTOC_ENTRY; - -/// -/// Resource format. -/// -typedef struct { - UINT32 Characteristics; - UINT32 TimeDateStamp; - UINT16 MajorVersion; - UINT16 MinorVersion; - UINT16 NumberOfNamedEntries; - UINT16 NumberOfIdEntries; - // - // Array of EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY entries goes here. - // -} EFI_IMAGE_RESOURCE_DIRECTORY; - -/// -/// Resource directory entry format. -/// -typedef struct { - union { - struct { - UINT32 NameOffset:31; - UINT32 NameIsString:1; - } s; - UINT32 Id; - } u1; - union { - UINT32 OffsetToData; - struct { - UINT32 OffsetToDirectory:31; - UINT32 DataIsDirectory:1; - } s; - } u2; -} EFI_IMAGE_RESOURCE_DIRECTORY_ENTRY; - -/// -/// Resource directory entry for string. -/// -typedef struct { - UINT16 Length; - CHAR16 String[1]; -} EFI_IMAGE_RESOURCE_DIRECTORY_STRING; - -/// -/// Resource directory entry for data array. -/// -typedef struct { - UINT32 OffsetToData; - UINT32 Size; - UINT32 CodePage; - UINT32 Reserved; -} EFI_IMAGE_RESOURCE_DATA_ENTRY; - -/// -/// Header format for TE images, defined in the PI Specification, 1.0. -/// -typedef struct { - UINT16 Signature; ///< The signature for TE format = "VZ". - UINT16 Machine; ///< From the original file header. - UINT8 NumberOfSections; ///< From the original file header. - UINT8 Subsystem; ///< From original optional header. - UINT16 StrippedSize; ///< Number of bytes we removed from the header. - UINT32 AddressOfEntryPoint; ///< Offset to entry point -- from original optional header. - UINT32 BaseOfCode; ///< From original image -- required for ITP debug. - UINT64 ImageBase; ///< From original file header. - EFI_IMAGE_DATA_DIRECTORY DataDirectory[2]; ///< Only base relocation and debug directory. -} EFI_TE_IMAGE_HEADER; - - -#define EFI_TE_IMAGE_HEADER_SIGNATURE SIGNATURE_16('V', 'Z') - -// -// Data directory indexes in our TE image header -// -#define EFI_TE_IMAGE_DIRECTORY_ENTRY_BASERELOC 0 -#define EFI_TE_IMAGE_DIRECTORY_ENTRY_DEBUG 1 - - -/// -/// Union of PE32, PE32+, and TE headers. -/// -typedef union { - EFI_IMAGE_NT_HEADERS32 Pe32; - EFI_IMAGE_NT_HEADERS64 Pe32Plus; - EFI_TE_IMAGE_HEADER Te; -} EFI_IMAGE_OPTIONAL_HEADER_UNION; - -typedef union { - EFI_IMAGE_NT_HEADERS32 *Pe32; - EFI_IMAGE_NT_HEADERS64 *Pe32Plus; - EFI_TE_IMAGE_HEADER *Te; - EFI_IMAGE_OPTIONAL_HEADER_UNION *Union; -} EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION; - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Library/HobLib.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Library/HobLib.h deleted file mode 100644 index ee54571a5c..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Library/HobLib.h +++ /dev/null @@ -1,532 +0,0 @@ -/** @file - Provides services to create and parse HOBs. Only available for PEI - and DXE module types. - - The HOB Library supports the efficient creation and searching of HOBs - defined in the PI Specification. - A HOB is a Hand-Off Block, defined in the Framework architecture, that - allows the PEI phase to pass information to the DXE phase. HOBs are position - independent and can be relocated easily to different memory memory locations. - -Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.
-This file and the accompanying materials are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __HOB_LIB_H__ -#define __HOB_LIB_H__ - -/** - Returns the pointer to the HOB list. - - This function returns the pointer to first HOB in the list. - For PEI phase, the PEI service GetHobList() can be used to retrieve the pointer - to the HOB list. For the DXE phase, the HOB list pointer can be retrieved through - the EFI System Table by looking up theHOB list GUID in the System Configuration Table. - Since the System Configuration Table does not exist that the time the DXE Core is - launched, the DXE Core uses a global variable from the DXE Core Entry Point Library - to manage the pointer to the HOB list. - - If the pointer to the HOB list is NULL, then ASSERT(). - - @return The pointer to the HOB list. - -**/ -VOID * -EFIAPI -GetHobList ( - VOID - ); - -/** - Returns the next instance of a HOB type from the starting HOB. - - This function searches the first instance of a HOB type from the starting HOB pointer. - If there does not exist such HOB type from the starting HOB pointer, it will return NULL. - In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer - unconditionally: it returns HobStart back if HobStart itself meets the requirement; - caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart. - - If HobStart is NULL, then ASSERT(). - - @param Type The HOB type to return. - @param HobStart The starting HOB pointer to search from. - - @return The next instance of a HOB type from the starting HOB. - -**/ -VOID * -EFIAPI -GetNextHob ( - IN UINT16 Type, - IN CONST VOID *HobStart - ); - -/** - Returns the first instance of a HOB type among the whole HOB list. - - This function searches the first instance of a HOB type among the whole HOB list. - If there does not exist such HOB type in the HOB list, it will return NULL. - - If the pointer to the HOB list is NULL, then ASSERT(). - - @param Type The HOB type to return. - - @return The next instance of a HOB type from the starting HOB. - -**/ -VOID * -EFIAPI -GetFirstHob ( - IN UINT16 Type - ); - -/** - Returns the next instance of the matched GUID HOB from the starting HOB. - - This function searches the first instance of a HOB from the starting HOB pointer. - Such HOB should satisfy two conditions: - its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid. - If there does not exist such HOB from the starting HOB pointer, it will return NULL. - Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE () - to extract the data section and its size info respectively. - In contrast with macro GET_NEXT_HOB(), this function does not skip the starting HOB pointer - unconditionally: it returns HobStart back if HobStart itself meets the requirement; - caller is required to use GET_NEXT_HOB() if it wishes to skip current HobStart. - - If Guid is NULL, then ASSERT(). - If HobStart is NULL, then ASSERT(). - - @param Guid The GUID to match with in the HOB list. - @param HobStart A pointer to a Guid. - - @return The next instance of the matched GUID HOB from the starting HOB. - -**/ -VOID * -EFIAPI -GetNextGuidHob ( - IN CONST EFI_GUID *Guid, - IN CONST VOID *HobStart - ); - -/** - Returns the first instance of the matched GUID HOB among the whole HOB list. - - This function searches the first instance of a HOB among the whole HOB list. - Such HOB should satisfy two conditions: - its HOB type is EFI_HOB_TYPE_GUID_EXTENSION and its GUID Name equals to the input Guid. - If there does not exist such HOB from the starting HOB pointer, it will return NULL. - Caller is required to apply GET_GUID_HOB_DATA () and GET_GUID_HOB_DATA_SIZE () - to extract the data section and its size info respectively. - - If the pointer to the HOB list is NULL, then ASSERT(). - If Guid is NULL, then ASSERT(). - - @param Guid The GUID to match with in the HOB list. - - @return The first instance of the matched GUID HOB among the whole HOB list. - -**/ -VOID * -EFIAPI -GetFirstGuidHob ( - IN CONST EFI_GUID *Guid - ); - -/** - Get the system boot mode from the HOB list. - - This function returns the system boot mode information from the - PHIT HOB in HOB list. - - If the pointer to the HOB list is NULL, then ASSERT(). - - @param VOID - - @return The Boot Mode. - -**/ -EFI_BOOT_MODE -EFIAPI -GetBootModeHob ( - VOID - ); - -/** - Builds a HOB for a loaded PE32 module. - - This function builds a HOB for a loaded PE32 module. - It can only be invoked during PEI phase; - for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. - - If ModuleName is NULL, then ASSERT(). - If there is no additional space for HOB creation, then ASSERT(). - - @param ModuleName The GUID File Name of the module. - @param MemoryAllocationModule The 64 bit physical address of the module. - @param ModuleLength The length of the module in bytes. - @param EntryPoint The 64 bit physical address of the module entry point. - -**/ -VOID -EFIAPI -BuildModuleHob ( - IN CONST EFI_GUID *ModuleName, - IN EFI_PHYSICAL_ADDRESS MemoryAllocationModule, - IN UINT64 ModuleLength, - IN EFI_PHYSICAL_ADDRESS EntryPoint - ); - -/** - Builds a HOB that describes a chunk of system memory with Owner GUID. - - This function builds a HOB that describes a chunk of system memory. - It can only be invoked during PEI phase; - for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. - - If there is no additional space for HOB creation, then ASSERT(). - - @param ResourceType The type of resource described by this HOB. - @param ResourceAttribute The resource attributes of the memory described by this HOB. - @param PhysicalStart The 64 bit physical address of memory described by this HOB. - @param NumberOfBytes The length of the memory described by this HOB in bytes. - @param OwnerGUID GUID for the owner of this resource. - -**/ -VOID -EFIAPI -BuildResourceDescriptorWithOwnerHob ( - IN EFI_RESOURCE_TYPE ResourceType, - IN EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute, - IN EFI_PHYSICAL_ADDRESS PhysicalStart, - IN UINT64 NumberOfBytes, - IN EFI_GUID *OwnerGUID - ); - -/** - Builds a HOB that describes a chunk of system memory. - - This function builds a HOB that describes a chunk of system memory. - It can only be invoked during PEI phase; - for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. - - If there is no additional space for HOB creation, then ASSERT(). - - @param ResourceType The type of resource described by this HOB. - @param ResourceAttribute The resource attributes of the memory described by this HOB. - @param PhysicalStart The 64 bit physical address of memory described by this HOB. - @param NumberOfBytes The length of the memory described by this HOB in bytes. - -**/ -VOID -EFIAPI -BuildResourceDescriptorHob ( - IN EFI_RESOURCE_TYPE ResourceType, - IN EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute, - IN EFI_PHYSICAL_ADDRESS PhysicalStart, - IN UINT64 NumberOfBytes - ); - -/** - Builds a customized HOB tagged with a GUID for identification and returns - the start address of GUID HOB data. - - This function builds a customized HOB tagged with a GUID for identification - and returns the start address of GUID HOB data so that caller can fill the customized data. - The HOB Header and Name field is already stripped. - It can only be invoked during PEI phase; - for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. - - If Guid is NULL, then ASSERT(). - If there is no additional space for HOB creation, then ASSERT(). - If DataLength > (0xFFF8 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT(). - HobLength is UINT16 and multiples of 8 bytes, so the max HobLength is 0xFFF8. - - @param Guid The GUID to tag the customized HOB. - @param DataLength The size of the data payload for the GUID HOB. - - @retval NULL The GUID HOB could not be allocated. - @retval others The start address of GUID HOB data. - -**/ -VOID * -EFIAPI -BuildGuidHob ( - IN CONST EFI_GUID *Guid, - IN UINTN DataLength - ); - -/** - Builds a customized HOB tagged with a GUID for identification, copies the input data to the HOB - data field, and returns the start address of the GUID HOB data. - - This function builds a customized HOB tagged with a GUID for identification and copies the input - data to the HOB data field and returns the start address of the GUID HOB data. It can only be - invoked during PEI phase; for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. - The HOB Header and Name field is already stripped. - It can only be invoked during PEI phase; - for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. - - If Guid is NULL, then ASSERT(). - If Data is NULL and DataLength > 0, then ASSERT(). - If there is no additional space for HOB creation, then ASSERT(). - If DataLength > (0xFFF8 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT(). - HobLength is UINT16 and multiples of 8 bytes, so the max HobLength is 0xFFF8. - - @param Guid The GUID to tag the customized HOB. - @param Data The data to be copied into the data field of the GUID HOB. - @param DataLength The size of the data payload for the GUID HOB. - - @retval NULL The GUID HOB could not be allocated. - @retval others The start address of GUID HOB data. - -**/ -VOID * -EFIAPI -BuildGuidDataHob ( - IN CONST EFI_GUID *Guid, - IN VOID *Data, - IN UINTN DataLength - ); - -/** - Builds a Firmware Volume HOB. - - This function builds a Firmware Volume HOB. - It can only be invoked during PEI phase; - for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. - - If there is no additional space for HOB creation, then ASSERT(). - - @param BaseAddress The base address of the Firmware Volume. - @param Length The size of the Firmware Volume in bytes. - -**/ -VOID -EFIAPI -BuildFvHob ( - IN EFI_PHYSICAL_ADDRESS BaseAddress, - IN UINT64 Length - ); - -/** - Builds a EFI_HOB_TYPE_FV2 HOB. - - This function builds a EFI_HOB_TYPE_FV2 HOB. - It can only be invoked during PEI phase; - for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. - - If there is no additional space for HOB creation, then ASSERT(). - - @param BaseAddress The base address of the Firmware Volume. - @param Length The size of the Firmware Volume in bytes. - @param FvName The name of the Firmware Volume. - @param FileName The name of the file. - -**/ -VOID -EFIAPI -BuildFv2Hob ( - IN EFI_PHYSICAL_ADDRESS BaseAddress, - IN UINT64 Length, - IN CONST EFI_GUID *FvName, - IN CONST EFI_GUID *FileName - ); - -/** - Builds a Capsule Volume HOB. - - This function builds a Capsule Volume HOB. - It can only be invoked during PEI phase; - for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. - - If the platform does not support Capsule Volume HOBs, then ASSERT(). - If there is no additional space for HOB creation, then ASSERT(). - - @param BaseAddress The base address of the Capsule Volume. - @param Length The size of the Capsule Volume in bytes. - -**/ -VOID -EFIAPI -BuildCvHob ( - IN EFI_PHYSICAL_ADDRESS BaseAddress, - IN UINT64 Length - ); - -/** - Builds a HOB for the CPU. - - This function builds a HOB for the CPU. - It can only be invoked during PEI phase; - for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. - - If there is no additional space for HOB creation, then ASSERT(). - - @param SizeOfMemorySpace The maximum physical memory addressability of the processor. - @param SizeOfIoSpace The maximum physical I/O addressability of the processor. - -**/ -VOID -EFIAPI -BuildCpuHob ( - IN UINT8 SizeOfMemorySpace, - IN UINT8 SizeOfIoSpace - ); - -/** - Builds a HOB for the Stack. - - This function builds a HOB for the stack. - It can only be invoked during PEI phase; - for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. - - If there is no additional space for HOB creation, then ASSERT(). - - @param BaseAddress The 64 bit physical address of the Stack. - @param Length The length of the stack in bytes. - -**/ -VOID -EFIAPI -BuildStackHob ( - IN EFI_PHYSICAL_ADDRESS BaseAddress, - IN UINT64 Length - ); - -/** - Builds a HOB for the BSP store. - - This function builds a HOB for BSP store. - It can only be invoked during PEI phase; - for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. - - If there is no additional space for HOB creation, then ASSERT(). - - @param BaseAddress The 64 bit physical address of the BSP. - @param Length The length of the BSP store in bytes. - @param MemoryType Type of memory allocated by this HOB. - -**/ -VOID -EFIAPI -BuildBspStoreHob ( - IN EFI_PHYSICAL_ADDRESS BaseAddress, - IN UINT64 Length, - IN EFI_MEMORY_TYPE MemoryType - ); - -/** - Builds a HOB for the memory allocation. - - This function builds a HOB for the memory allocation. - It can only be invoked during PEI phase; - for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase. - - If there is no additional space for HOB creation, then ASSERT(). - - @param BaseAddress The 64 bit physical address of the memory. - @param Length The length of the memory allocation in bytes. - @param MemoryType Type of memory allocated by this HOB. - -**/ -VOID -EFIAPI -BuildMemoryAllocationHob ( - IN EFI_PHYSICAL_ADDRESS BaseAddress, - IN UINT64 Length, - IN EFI_MEMORY_TYPE MemoryType - ); - -/** - Returns the type of a HOB. - - This macro returns the HobType field from the HOB header for the - HOB specified by HobStart. - - @param HobStart A pointer to a HOB. - - @return HobType. - -**/ -#define GET_HOB_TYPE(HobStart) \ - ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobType) - -/** - Returns the length, in bytes, of a HOB. - - This macro returns the HobLength field from the HOB header for the - HOB specified by HobStart. - - @param HobStart A pointer to a HOB. - - @return HobLength. - -**/ -#define GET_HOB_LENGTH(HobStart) \ - ((*(EFI_HOB_GENERIC_HEADER **)&(HobStart))->HobLength) - -/** - Returns a pointer to the next HOB in the HOB list. - - This macro returns a pointer to HOB that follows the - HOB specified by HobStart in the HOB List. - - @param HobStart A pointer to a HOB. - - @return A pointer to the next HOB in the HOB list. - -**/ -#define GET_NEXT_HOB(HobStart) \ - (VOID *)(*(UINT8 **)&(HobStart) + GET_HOB_LENGTH (HobStart)) - -/** - Determines if a HOB is the last HOB in the HOB list. - - This macro determine if the HOB specified by HobStart is the - last HOB in the HOB list. If HobStart is last HOB in the HOB list, - then TRUE is returned. Otherwise, FALSE is returned. - - @param HobStart A pointer to a HOB. - - @retval TRUE The HOB specified by HobStart is the last HOB in the HOB list. - @retval FALSE The HOB specified by HobStart is not the last HOB in the HOB list. - -**/ -#define END_OF_HOB_LIST(HobStart) (GET_HOB_TYPE (HobStart) == (UINT16)EFI_HOB_TYPE_END_OF_HOB_LIST) - -/** - Returns a pointer to data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION. - - This macro returns a pointer to the data buffer in a HOB specified by HobStart. - HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION. - - @param GuidHob A pointer to a HOB. - - @return A pointer to the data buffer in a HOB. - -**/ -#define GET_GUID_HOB_DATA(HobStart) \ - (VOID *)(*(UINT8 **)&(HobStart) + sizeof (EFI_HOB_GUID_TYPE)) - -/** - Returns the size of the data buffer from a HOB of type EFI_HOB_TYPE_GUID_EXTENSION. - - This macro returns the size, in bytes, of the data buffer in a HOB specified by HobStart. - HobStart is assumed to be a HOB of type EFI_HOB_TYPE_GUID_EXTENSION. - - @param GuidHob A pointer to a HOB. - - @return The size of the data buffer. -**/ -#define GET_GUID_HOB_DATA_SIZE(HobStart) \ - (UINT16)(GET_HOB_LENGTH (HobStart) - sizeof (EFI_HOB_GUID_TYPE)) - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Pi/PiBootMode.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Pi/PiBootMode.h deleted file mode 100644 index f2cab92898..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Pi/PiBootMode.h +++ /dev/null @@ -1,42 +0,0 @@ -/** @file - Present the boot mode values in PI. - - Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - @par Revision Reference: - PI Version 1.2.1A - -**/ - -#ifndef __PI_BOOT_MODE_H__ -#define __PI_BOOT_MODE_H__ - -/// -/// EFI boot mode -/// -typedef UINT32 EFI_BOOT_MODE; - -// -// 0x21 - 0xf..f are reserved. -// -#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_WITH_MFG_MODE_SETTINGS 0x07 -#define BOOT_ON_S2_RESUME 0x10 -#define BOOT_ON_S3_RESUME 0x11 -#define BOOT_ON_FLASH_UPDATE 0x12 -#define BOOT_IN_RECOVERY_MODE 0x20 - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Pi/PiFirmwareFile.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Pi/PiFirmwareFile.h deleted file mode 100644 index 0adbd52500..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Pi/PiFirmwareFile.h +++ /dev/null @@ -1,494 +0,0 @@ -/** @file - The firmware file related definitions in PI. - -Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
-This file and the accompanying materials are licensed and made available under are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - @par Revision Reference: - PI Version 1.4. - -**/ - - -#ifndef __PI_FIRMWARE_FILE_H__ -#define __PI_FIRMWARE_FILE_H__ - -#pragma pack(1) -/// -/// Used to verify the integrity of the file. -/// -typedef union { - struct { - /// - /// The IntegrityCheck.Checksum.Header field is an 8-bit checksum of the file - /// header. The State and IntegrityCheck.Checksum.File fields are assumed - /// to be zero and the checksum is calculated such that the entire header sums to zero. - /// - UINT8 Header; - /// - /// If the FFS_ATTRIB_CHECKSUM (see definition below) bit of the Attributes - /// field is set to one, the IntegrityCheck.Checksum.File field is an 8-bit - /// checksum of the file data. - /// If the FFS_ATTRIB_CHECKSUM bit of the Attributes field is cleared to zero, - /// the IntegrityCheck.Checksum.File field must be initialized with a value of - /// 0xAA. The IntegrityCheck.Checksum.File field is valid any time the - /// EFI_FILE_DATA_VALID bit is set in the State field. - /// - UINT8 File; - } Checksum; - /// - /// This is the full 16 bits of the IntegrityCheck field. - /// - UINT16 Checksum16; -} EFI_FFS_INTEGRITY_CHECK; - -/// -/// FFS_FIXED_CHECKSUM is the checksum value used when the -/// FFS_ATTRIB_CHECKSUM attribute bit is clear. -/// -#define FFS_FIXED_CHECKSUM 0xAA - -typedef UINT8 EFI_FV_FILETYPE; -typedef UINT8 EFI_FFS_FILE_ATTRIBUTES; -typedef UINT8 EFI_FFS_FILE_STATE; - -/// -/// File Types Definitions -/// -#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 -#define EFI_FV_FILETYPE_SMM 0x0A -#define EFI_FV_FILETYPE_FIRMWARE_VOLUME_IMAGE 0x0B -#define EFI_FV_FILETYPE_COMBINED_SMM_DXE 0x0C -#define EFI_FV_FILETYPE_SMM_CORE 0x0D -#define EFI_FV_FILETYPE_OEM_MIN 0xc0 -#define EFI_FV_FILETYPE_OEM_MAX 0xdf -#define EFI_FV_FILETYPE_DEBUG_MIN 0xe0 -#define EFI_FV_FILETYPE_DEBUG_MAX 0xef -#define EFI_FV_FILETYPE_FFS_MIN 0xf0 -#define EFI_FV_FILETYPE_FFS_MAX 0xff -#define EFI_FV_FILETYPE_FFS_PAD 0xf0 -/// -/// FFS File Attributes. -/// -#define FFS_ATTRIB_LARGE_FILE 0x01 -#define FFS_ATTRIB_FIXED 0x04 -#define FFS_ATTRIB_DATA_ALIGNMENT 0x38 -#define FFS_ATTRIB_CHECKSUM 0x40 - -/// -/// FFS File State Bits. -/// -#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 - - -/// -/// Each file begins with the header that describe the -/// contents and state of the files. -/// -typedef struct { - /// - /// This GUID is the file name. It is used to uniquely identify the file. - /// - EFI_GUID Name; - /// - /// Used to verify the integrity of the file. - /// - EFI_FFS_INTEGRITY_CHECK IntegrityCheck; - /// - /// Identifies the type of file. - /// - EFI_FV_FILETYPE Type; - /// - /// Declares various file attribute bits. - /// - EFI_FFS_FILE_ATTRIBUTES Attributes; - /// - /// The length of the file in bytes, including the FFS header. - /// - UINT8 Size[3]; - /// - /// Used to track the state of the file throughout the life of the file from creation to deletion. - /// - EFI_FFS_FILE_STATE State; -} EFI_FFS_FILE_HEADER; - -typedef struct { - /// - /// This GUID is the file name. It is used to uniquely identify the file. There may be only - /// one instance of a file with the file name GUID of Name in any given firmware - /// volume, except if the file type is EFI_FV_FILETYPE_FFS_PAD. - /// - EFI_GUID Name; - - /// - /// Used to verify the integrity of the file. - /// - EFI_FFS_INTEGRITY_CHECK IntegrityCheck; - - /// - /// Identifies the type of file. - /// - EFI_FV_FILETYPE Type; - - /// - /// Declares various file attribute bits. - /// - EFI_FFS_FILE_ATTRIBUTES Attributes; - - /// - /// The length of the file in bytes, including the FFS header. - /// The length of the file data is either (Size - sizeof(EFI_FFS_FILE_HEADER)). This calculation means a - /// zero-length file has a Size of 24 bytes, which is sizeof(EFI_FFS_FILE_HEADER). - /// Size is not required to be a multiple of 8 bytes. Given a file F, the next file header is - /// located at the next 8-byte aligned firmware volume offset following the last byte of the file F. - /// - UINT8 Size[3]; - - /// - /// Used to track the state of the file throughout the life of the file from creation to deletion. - /// - EFI_FFS_FILE_STATE State; - - /// - /// If FFS_ATTRIB_LARGE_FILE is set in Attributes, then ExtendedSize exists and Size must be set to zero. - /// If FFS_ATTRIB_LARGE_FILE is not set then EFI_FFS_FILE_HEADER is used. - /// - UINT64 ExtendedSize; -} EFI_FFS_FILE_HEADER2; - -#define IS_FFS_FILE2(FfsFileHeaderPtr) \ - (((((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Attributes) & FFS_ATTRIB_LARGE_FILE) == FFS_ATTRIB_LARGE_FILE) - -#define FFS_FILE_SIZE(FfsFileHeaderPtr) \ - ((UINT32) (*((UINT32 *) ((EFI_FFS_FILE_HEADER *) (UINTN) FfsFileHeaderPtr)->Size) & 0x00ffffff)) - -#define FFS_FILE2_SIZE(FfsFileHeaderPtr) \ - ((UINT32) (((EFI_FFS_FILE_HEADER2 *) (UINTN) FfsFileHeaderPtr)->ExtendedSize)) - -typedef UINT8 EFI_SECTION_TYPE; - -/// -/// Pseudo type. It is used as a wild card 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 - -#define EFI_SECTION_DISPOSABLE 0x03 - -/// -/// Leaf section Type values. -/// -#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_SMM_DEPEX 0x1C - -/// -/// Common section header. -/// -typedef struct { - /// - /// A 24-bit unsigned integer that contains the total size of the section in bytes, - /// including the EFI_COMMON_SECTION_HEADER. - /// - UINT8 Size[3]; - EFI_SECTION_TYPE Type; - /// - /// Declares the section type. - /// -} EFI_COMMON_SECTION_HEADER; - -typedef struct { - /// - /// A 24-bit unsigned integer that contains the total size of the section in bytes, - /// including the EFI_COMMON_SECTION_HEADER. - /// - UINT8 Size[3]; - - EFI_SECTION_TYPE Type; - - /// - /// If Size is 0xFFFFFF, then ExtendedSize contains the size of the section. If - /// Size is not equal to 0xFFFFFF, then this field does not exist. - /// - UINT32 ExtendedSize; -} EFI_COMMON_SECTION_HEADER2; - -/// -/// Leaf section type that contains an -/// IA-32 16-bit executable image. -/// -typedef EFI_COMMON_SECTION_HEADER EFI_COMPATIBILITY16_SECTION; -typedef EFI_COMMON_SECTION_HEADER2 EFI_COMPATIBILITY16_SECTION2; - -/// -/// CompressionType of EFI_COMPRESSION_SECTION. -/// -#define EFI_NOT_COMPRESSED 0x00 -#define EFI_STANDARD_COMPRESSION 0x01 -/// -/// An encapsulation section type in which the -/// section data is compressed. -/// -typedef struct { - /// - /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION. - /// - EFI_COMMON_SECTION_HEADER CommonHeader; - /// - /// The UINT32 that indicates the size of the section data after decompression. - /// - UINT32 UncompressedLength; - /// - /// Indicates which compression algorithm is used. - /// - UINT8 CompressionType; -} EFI_COMPRESSION_SECTION; - -typedef struct { - /// - /// Usual common section header. CommonHeader.Type = EFI_SECTION_COMPRESSION. - /// - EFI_COMMON_SECTION_HEADER2 CommonHeader; - /// - /// UINT32 that indicates the size of the section data after decompression. - /// - UINT32 UncompressedLength; - /// - /// Indicates which compression algorithm is used. - /// - UINT8 CompressionType; -} EFI_COMPRESSION_SECTION2; - -/// -/// An encapsulation section type in which the section data is disposable. -/// A disposable section is an encapsulation section in which the section data may be disposed of during -/// the process of creating or updating a firmware image without significant impact on the usefulness of -/// the file. The Type field in the section header is set to EFI_SECTION_DISPOSABLE. This -/// allows optional or descriptive data to be included with the firmware file which can be removed in -/// order to conserve space. The contents of this section are implementation specific, but might contain -/// debug data or detailed integration instructions. -/// -typedef EFI_COMMON_SECTION_HEADER EFI_DISPOSABLE_SECTION; -typedef EFI_COMMON_SECTION_HEADER2 EFI_DISPOSABLE_SECTION2; - -/// -/// The leaf section which could be used to determine the dispatch order of DXEs. -/// -typedef EFI_COMMON_SECTION_HEADER EFI_DXE_DEPEX_SECTION; -typedef EFI_COMMON_SECTION_HEADER2 EFI_DXE_DEPEX_SECTION2; - -/// -/// The leaf section which contains a PI FV. -/// -typedef EFI_COMMON_SECTION_HEADER EFI_FIRMWARE_VOLUME_IMAGE_SECTION; -typedef EFI_COMMON_SECTION_HEADER2 EFI_FIRMWARE_VOLUME_IMAGE_SECTION2; - -/// -/// The leaf section which contains a single GUID. -/// -typedef struct { - /// - /// Common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID. - /// - EFI_COMMON_SECTION_HEADER CommonHeader; - /// - /// This GUID is defined by the creator of the file. It is a vendor-defined file type. - /// - EFI_GUID SubTypeGuid; -} EFI_FREEFORM_SUBTYPE_GUID_SECTION; - -typedef struct { - /// - /// The common section header. CommonHeader.Type = EFI_SECTION_FREEFORM_SUBTYPE_GUID. - /// - EFI_COMMON_SECTION_HEADER2 CommonHeader; - /// - /// This GUID is defined by the creator of the file. It is a vendor-defined file type. - /// - EFI_GUID SubTypeGuid; -} EFI_FREEFORM_SUBTYPE_GUID_SECTION2; - -/// -/// Attributes of EFI_GUID_DEFINED_SECTION. -/// -#define EFI_GUIDED_SECTION_PROCESSING_REQUIRED 0x01 -#define EFI_GUIDED_SECTION_AUTH_STATUS_VALID 0x02 -/// -/// The leaf section which is encapsulation defined by specific GUID. -/// -typedef struct { - /// - /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED. - /// - EFI_COMMON_SECTION_HEADER CommonHeader; - /// - /// The GUID that defines the format of the data that follows. It is a vendor-defined section type. - /// - EFI_GUID SectionDefinitionGuid; - /// - /// Contains the offset in bytes from the beginning of the common header to the first byte of the data. - /// - UINT16 DataOffset; - /// - /// The bit field that declares some specific characteristics of the section contents. - /// - UINT16 Attributes; -} EFI_GUID_DEFINED_SECTION; - -typedef struct { - /// - /// The common section header. CommonHeader.Type = EFI_SECTION_GUID_DEFINED. - /// - EFI_COMMON_SECTION_HEADER2 CommonHeader; - /// - /// The GUID that defines the format of the data that follows. It is a vendor-defined section type. - /// - EFI_GUID SectionDefinitionGuid; - /// - /// Contains the offset in bytes from the beginning of the common header to the first byte of the data. - /// - UINT16 DataOffset; - /// - /// The bit field that declares some specific characteristics of the section contents. - /// - UINT16 Attributes; -} EFI_GUID_DEFINED_SECTION2; - -/// -/// The leaf section which contains PE32+ image. -/// -typedef EFI_COMMON_SECTION_HEADER EFI_PE32_SECTION; -typedef EFI_COMMON_SECTION_HEADER2 EFI_PE32_SECTION2; - -/// -/// The leaf section used to determine the dispatch order of PEIMs. -/// -typedef EFI_COMMON_SECTION_HEADER EFI_PEI_DEPEX_SECTION; -typedef EFI_COMMON_SECTION_HEADER2 EFI_PEI_DEPEX_SECTION2; - -/// -/// A leaf section type that contains a position-independent-code (PIC) image. -/// A PIC image section is a leaf section that contains a position-independent-code (PIC) image. -/// In addition to normal PE32+ images that contain relocation information, PEIM executables may be -/// PIC and are referred to as PIC images. A PIC image is the same as a PE32+ image except that all -/// relocation information has been stripped from the image and the image can be moved and will -/// execute correctly without performing any relocation or other fix-ups. EFI_PIC_SECTION2 must -/// be used if the section is 16MB or larger. -/// -typedef EFI_COMMON_SECTION_HEADER EFI_PIC_SECTION; -typedef EFI_COMMON_SECTION_HEADER2 EFI_PIC_SECTION2; - -/// -/// The leaf section which constains the position-independent-code image. -/// -typedef EFI_COMMON_SECTION_HEADER EFI_TE_SECTION; -typedef EFI_COMMON_SECTION_HEADER2 EFI_TE_SECTION2; - -/// -/// The leaf section which contains an array of zero or more bytes. -/// -typedef EFI_COMMON_SECTION_HEADER EFI_RAW_SECTION; -typedef EFI_COMMON_SECTION_HEADER2 EFI_RAW_SECTION2; - -/// -/// The SMM dependency expression section is a leaf section that contains a dependency expression that -/// is used to determine the dispatch order for SMM drivers. Before the SMRAM invocation of the -/// SMM driver's entry point, this dependency expression must evaluate to TRUE. See the Platform -/// Initialization Specification, Volume 2, for details regarding the format of the dependency expression. -/// The dependency expression may refer to protocols installed in either the UEFI or the SMM protocol -/// database. EFI_SMM_DEPEX_SECTION2 must be used if the section is 16MB or larger. -/// -typedef EFI_COMMON_SECTION_HEADER EFI_SMM_DEPEX_SECTION; -typedef EFI_COMMON_SECTION_HEADER2 EFI_SMM_DEPEX_SECTION2; - -/// -/// The leaf section which contains a unicode string that -/// is human readable file name. -/// -typedef struct { - EFI_COMMON_SECTION_HEADER CommonHeader; - - /// - /// Array of unicode string. - /// - CHAR16 FileNameString[1]; -} EFI_USER_INTERFACE_SECTION; - -typedef struct { - EFI_COMMON_SECTION_HEADER2 CommonHeader; - CHAR16 FileNameString[1]; -} EFI_USER_INTERFACE_SECTION2; - -/// -/// The leaf section which contains a numeric build number and -/// an optional unicode string that represents the file revision. -/// -typedef struct { - EFI_COMMON_SECTION_HEADER CommonHeader; - UINT16 BuildNumber; - - /// - /// Array of unicode string. - /// - CHAR16 VersionString[1]; -} EFI_VERSION_SECTION; - -typedef struct { - EFI_COMMON_SECTION_HEADER2 CommonHeader; - /// - /// A UINT16 that represents a particular build. Subsequent builds have monotonically - /// increasing build numbers relative to earlier builds. - /// - UINT16 BuildNumber; - CHAR16 VersionString[1]; -} EFI_VERSION_SECTION2; - -#define IS_SECTION2(SectionHeaderPtr) \ - ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff) == 0x00ffffff) - -#define SECTION_SIZE(SectionHeaderPtr) \ - ((UINT32) (*((UINT32 *) ((EFI_COMMON_SECTION_HEADER *) (UINTN) SectionHeaderPtr)->Size) & 0x00ffffff)) - -#define SECTION2_SIZE(SectionHeaderPtr) \ - (((EFI_COMMON_SECTION_HEADER2 *) (UINTN) SectionHeaderPtr)->ExtendedSize) - -#pragma pack() - -#endif - diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Pi/PiFirmwareVolume.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Pi/PiFirmwareVolume.h deleted file mode 100644 index 2147ae318d..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Pi/PiFirmwareVolume.h +++ /dev/null @@ -1,234 +0,0 @@ -/** @file - The firmware volume related definitions in PI. - - Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - @par Revision Reference: - PI Version 1.3 - -**/ - -#ifndef __PI_FIRMWAREVOLUME_H__ -#define __PI_FIRMWAREVOLUME_H__ - -/// -/// EFI_FV_FILE_ATTRIBUTES -/// -typedef UINT32 EFI_FV_FILE_ATTRIBUTES; - -// -// Value of EFI_FV_FILE_ATTRIBUTES. -// -#define EFI_FV_FILE_ATTRIB_ALIGNMENT 0x0000001F -#define EFI_FV_FILE_ATTRIB_FIXED 0x00000100 -#define EFI_FV_FILE_ATTRIB_MEMORY_MAPPED 0x00000200 - -/// -/// type of EFI FVB attribute -/// -typedef UINT32 EFI_FVB_ATTRIBUTES_2; - -// -// Attributes bit definitions -// -#define EFI_FVB2_READ_DISABLED_CAP 0x00000001 -#define EFI_FVB2_READ_ENABLED_CAP 0x00000002 -#define EFI_FVB2_READ_STATUS 0x00000004 -#define EFI_FVB2_WRITE_DISABLED_CAP 0x00000008 -#define EFI_FVB2_WRITE_ENABLED_CAP 0x00000010 -#define EFI_FVB2_WRITE_STATUS 0x00000020 -#define EFI_FVB2_LOCK_CAP 0x00000040 -#define EFI_FVB2_LOCK_STATUS 0x00000080 -#define EFI_FVB2_STICKY_WRITE 0x00000200 -#define EFI_FVB2_MEMORY_MAPPED 0x00000400 -#define EFI_FVB2_ERASE_POLARITY 0x00000800 -#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_ALIGNMENT_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_FVB2_WEAK_ALIGNMENT 0x80000000 - -typedef struct { - /// - /// The number of sequential blocks which are of the same size. - /// - UINT32 NumBlocks; - /// - /// The size of the blocks. - /// - UINT32 Length; -} EFI_FV_BLOCK_MAP_ENTRY; - -/// -/// Describes the features and layout of the firmware volume. -/// -typedef struct { - /// - /// The first 16 bytes are reserved to allow for the reset vector of - /// processors whose reset vector is at address 0. - /// - UINT8 ZeroVector[16]; - /// - /// Declares the file system with which the firmware volume is formatted. - /// - EFI_GUID FileSystemGuid; - /// - /// Length in bytes of the complete firmware volume, including the header. - /// - UINT64 FvLength; - /// - /// Set to EFI_FVH_SIGNATURE - /// - UINT32 Signature; - /// - /// Declares capabilities and power-on defaults for the firmware volume. - /// - EFI_FVB_ATTRIBUTES_2 Attributes; - /// - /// Length in bytes of the complete firmware volume header. - /// - UINT16 HeaderLength; - /// - /// A 16-bit checksum of the firmware volume header. A valid header sums to zero. - /// - UINT16 Checksum; - /// - /// Offset, relative to the start of the header, of the extended header - /// (EFI_FIRMWARE_VOLUME_EXT_HEADER) or zero if there is no extended header. - /// - UINT16 ExtHeaderOffset; - /// - /// This field must always be set to zero. - /// - UINT8 Reserved[1]; - /// - /// Set to 2. Future versions of this specification may define new header fields and will - /// increment the Revision field accordingly. - /// - UINT8 Revision; - /// - /// An array of run-length encoded FvBlockMapEntry structures. The array is - /// terminated with an entry of {0,0}. - /// - EFI_FV_BLOCK_MAP_ENTRY BlockMap[1]; -} EFI_FIRMWARE_VOLUME_HEADER; - -#define EFI_FVH_SIGNATURE SIGNATURE_32 ('_', 'F', 'V', 'H') - -/// -/// Firmware Volume Header Revision definition -/// -#define EFI_FVH_REVISION 0x02 - -/// -/// Extension header pointed by ExtHeaderOffset of volume header. -/// -typedef struct { - /// - /// Firmware volume name. - /// - EFI_GUID FvName; - /// - /// Size of the rest of the extension header, including this structure. - /// - UINT32 ExtHeaderSize; -} EFI_FIRMWARE_VOLUME_EXT_HEADER; - -/// -/// Entry struture for describing FV extension header -/// -typedef struct { - /// - /// Size of this header extension. - /// - UINT16 ExtEntrySize; - /// - /// Type of the header. - /// - UINT16 ExtEntryType; -} EFI_FIRMWARE_VOLUME_EXT_ENTRY; - -#define EFI_FV_EXT_TYPE_OEM_TYPE 0x01 -/// -/// This extension header provides a mapping between a GUID and an OEM file type. -/// -typedef struct { - /// - /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE. - /// - EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr; - /// - /// A bit mask, one bit for each file type between 0xC0 (bit 0) and 0xDF (bit 31). If a bit - /// is '1', then the GUID entry exists in Types. If a bit is '0' then no GUID entry exists in Types. - /// - UINT32 TypeMask; - /// - /// An array of GUIDs, each GUID representing an OEM file type. - /// - /// EFI_GUID Types[1]; - /// -} EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE; - -#define EFI_FV_EXT_TYPE_GUID_TYPE 0x0002 - -/// -/// This extension header EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE provides a vendor specific -/// GUID FormatType type which includes a length and a successive series of data bytes. -/// -typedef struct { - /// - /// Standard extension entry, with the type EFI_FV_EXT_TYPE_OEM_TYPE. - /// - EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr; - /// - /// Vendor-specific GUID. - /// - EFI_GUID FormatType; - /// - /// An arry of bytes of length Length. - /// - /// UINT8 Data[1]; - /// -} EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE; - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Pi/PiHob.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Pi/PiHob.h deleted file mode 100644 index d35c8918aa..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Pi/PiHob.h +++ /dev/null @@ -1,479 +0,0 @@ -/** @file - HOB related definitions in PI. - -Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
-This file and the accompanying materials are licensed and made available under are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - @par Revision Reference: - PI Version 1.4 - -**/ - -#ifndef __PI_HOB_H__ -#define __PI_HOB_H__ - -// -// HobType of EFI_HOB_GENERIC_HEADER. -// -#define EFI_HOB_TYPE_HANDOFF 0x0001 -#define EFI_HOB_TYPE_MEMORY_ALLOCATION 0x0002 -#define EFI_HOB_TYPE_RESOURCE_DESCRIPTOR 0x0003 -#define EFI_HOB_TYPE_GUID_EXTENSION 0x0004 -#define EFI_HOB_TYPE_FV 0x0005 -#define EFI_HOB_TYPE_CPU 0x0006 -#define EFI_HOB_TYPE_MEMORY_POOL 0x0007 -#define EFI_HOB_TYPE_FV2 0x0009 -#define EFI_HOB_TYPE_LOAD_PEIM_UNUSED 0x000A -#define EFI_HOB_TYPE_UEFI_CAPSULE 0x000B -#define EFI_HOB_TYPE_UNUSED 0xFFFE -#define EFI_HOB_TYPE_END_OF_HOB_LIST 0xFFFF - -/// -/// Describes the format and size of the data inside the HOB. -/// All HOBs must contain this generic HOB header. -/// -typedef struct { - /// - /// Identifies the HOB data structure type. - /// - UINT16 HobType; - /// - /// The length in bytes of the HOB. - /// - UINT16 HobLength; - /// - /// This field must always be set to zero. - /// - UINT32 Reserved; -} EFI_HOB_GENERIC_HEADER; - - -/// -/// Value of version in EFI_HOB_HANDOFF_INFO_TABLE. -/// -#define EFI_HOB_HANDOFF_TABLE_VERSION 0x0009 - -/// -/// Contains general state information used by the HOB producer phase. -/// This HOB must be the first one in the HOB list. -/// -typedef struct { - /// - /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_HANDOFF. - /// - EFI_HOB_GENERIC_HEADER Header; - /// - /// The version number pertaining to the PHIT HOB definition. - /// This value is four bytes in length to provide an 8-byte aligned entry - /// when it is combined with the 4-byte BootMode. - /// - UINT32 Version; - /// - /// The system boot mode as determined during the HOB producer phase. - /// - EFI_BOOT_MODE BootMode; - /// - /// The highest address location of memory that is allocated for use by the HOB producer - /// phase. This address must be 4-KB aligned to meet page restrictions of UEFI. - /// - EFI_PHYSICAL_ADDRESS EfiMemoryTop; - /// - /// The lowest address location of memory that is allocated for use by the HOB producer phase. - /// - EFI_PHYSICAL_ADDRESS EfiMemoryBottom; - /// - /// The highest address location of free memory that is currently available - /// for use by the HOB producer phase. - /// - EFI_PHYSICAL_ADDRESS EfiFreeMemoryTop; - /// - /// The lowest address location of free memory that is available for use by the HOB producer phase. - /// - EFI_PHYSICAL_ADDRESS EfiFreeMemoryBottom; - /// - /// The end of the HOB list. - /// - EFI_PHYSICAL_ADDRESS EfiEndOfHobList; -} EFI_HOB_HANDOFF_INFO_TABLE; - -/// -/// EFI_HOB_MEMORY_ALLOCATION_HEADER describes the -/// various attributes of the logical memory allocation. The type field will be used for -/// subsequent inclusion in the UEFI memory map. -/// -typedef struct { - /// - /// A GUID that defines the memory allocation region's type and purpose, as well as - /// other fields within the memory allocation HOB. This GUID is used to define the - /// additional data within the HOB that may be present for the memory allocation HOB. - /// Type EFI_GUID is defined in InstallProtocolInterface() in the UEFI 2.0 - /// specification. - /// - EFI_GUID Name; - - /// - /// The base address of memory allocated by this HOB. Type - /// EFI_PHYSICAL_ADDRESS is defined in AllocatePages() in the UEFI 2.0 - /// specification. - /// - EFI_PHYSICAL_ADDRESS MemoryBaseAddress; - - /// - /// The length in bytes of memory allocated by this HOB. - /// - UINT64 MemoryLength; - - /// - /// Defines the type of memory allocated by this HOB. The memory type definition - /// follows the EFI_MEMORY_TYPE definition. Type EFI_MEMORY_TYPE is defined - /// in AllocatePages() in the UEFI 2.0 specification. - /// - EFI_MEMORY_TYPE MemoryType; - - /// - /// Padding for Itanium processor family - /// - UINT8 Reserved[4]; -} EFI_HOB_MEMORY_ALLOCATION_HEADER; - -/// -/// Describes all memory ranges used during the HOB producer -/// phase that exist outside the HOB list. This HOB type -/// describes how memory is used, not the physical attributes of memory. -/// -typedef struct { - /// - /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION. - /// - EFI_HOB_GENERIC_HEADER Header; - /// - /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the - /// various attributes of the logical memory allocation. - /// - EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor; - // - // Additional data pertaining to the "Name" Guid memory - // may go here. - // -} EFI_HOB_MEMORY_ALLOCATION; - - -/// -/// Describes the memory stack that is produced by the HOB producer -/// phase and upon which all post-memory-installed executable -/// content in the HOB producer phase is executing. -/// -typedef struct { - /// - /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION. - /// - EFI_HOB_GENERIC_HEADER Header; - /// - /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the - /// various attributes of the logical memory allocation. - /// - EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor; -} EFI_HOB_MEMORY_ALLOCATION_STACK; - -/// -/// Defines the location of the boot-strap -/// processor (BSP) BSPStore ("Backing Store Pointer Store"). -/// This HOB is valid for the Itanium processor family only -/// register overflow store. -/// -typedef struct { - /// - /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION. - /// - EFI_HOB_GENERIC_HEADER Header; - /// - /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the - /// various attributes of the logical memory allocation. - /// - EFI_HOB_MEMORY_ALLOCATION_HEADER AllocDescriptor; -} EFI_HOB_MEMORY_ALLOCATION_BSP_STORE; - -/// -/// Defines the location and entry point of the HOB consumer phase. -/// -typedef struct { - /// - /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_ALLOCATION. - /// - EFI_HOB_GENERIC_HEADER Header; - /// - /// An instance of the EFI_HOB_MEMORY_ALLOCATION_HEADER that describes the - /// various attributes of the logical memory allocation. - /// - EFI_HOB_MEMORY_ALLOCATION_HEADER MemoryAllocationHeader; - /// - /// The GUID specifying the values of the firmware file system name - /// that contains the HOB consumer phase component. - /// - EFI_GUID ModuleName; - /// - /// The address of the memory-mapped firmware volume - /// that contains the HOB consumer phase firmware file. - /// - EFI_PHYSICAL_ADDRESS EntryPoint; -} EFI_HOB_MEMORY_ALLOCATION_MODULE; - -/// -/// The resource type. -/// -typedef UINT32 EFI_RESOURCE_TYPE; - -// -// Value of ResourceType in EFI_HOB_RESOURCE_DESCRIPTOR. -// -#define EFI_RESOURCE_SYSTEM_MEMORY 0x00000000 -#define EFI_RESOURCE_MEMORY_MAPPED_IO 0x00000001 -#define EFI_RESOURCE_IO 0x00000002 -#define EFI_RESOURCE_FIRMWARE_DEVICE 0x00000003 -#define EFI_RESOURCE_MEMORY_MAPPED_IO_PORT 0x00000004 -#define EFI_RESOURCE_MEMORY_RESERVED 0x00000005 -#define EFI_RESOURCE_IO_RESERVED 0x00000006 -#define EFI_RESOURCE_MAX_MEMORY_TYPE 0x00000007 - -/// -/// A type of recount attribute type. -/// -typedef UINT32 EFI_RESOURCE_ATTRIBUTE_TYPE; - -// -// These types can be ORed together as needed. -// -// The following attributes are used to describe settings -// -#define EFI_RESOURCE_ATTRIBUTE_PRESENT 0x00000001 -#define EFI_RESOURCE_ATTRIBUTE_INITIALIZED 0x00000002 -#define EFI_RESOURCE_ATTRIBUTE_TESTED 0x00000004 -#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED 0x00000080 -// -// This is typically used as memory cacheability attribute today. -// NOTE: Since PI spec 1.4, please use EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTED -// as Physical write protected attribute, and EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED -// means Memory cacheability attribute: The memory supports being programmed with -// a writeprotected cacheable attribute. -// -#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED 0x00000100 -#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED 0x00000200 -#define EFI_RESOURCE_ATTRIBUTE_PERSISTENT 0x00800000 -// -// The rest of the attributes are used to describe capabilities -// -#define EFI_RESOURCE_ATTRIBUTE_SINGLE_BIT_ECC 0x00000008 -#define EFI_RESOURCE_ATTRIBUTE_MULTIPLE_BIT_ECC 0x00000010 -#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_1 0x00000020 -#define EFI_RESOURCE_ATTRIBUTE_ECC_RESERVED_2 0x00000040 -#define EFI_RESOURCE_ATTRIBUTE_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 -#define EFI_RESOURCE_ATTRIBUTE_READ_PROTECTABLE 0x00100000 -// -// This is typically used as memory cacheability attribute today. -// NOTE: Since PI spec 1.4, please use EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTABLE -// as Memory capability attribute: The memory supports being protected from processor -// writes, and EFI_RESOURCE_ATTRIBUTE_WRITE_PROTEC TABLE means Memory cacheability attribute: -// The memory supports being programmed with a writeprotected cacheable attribute. -// -#define EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTABLE 0x00200000 -#define EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTABLE 0x00400000 -#define EFI_RESOURCE_ATTRIBUTE_PERSISTABLE 0x01000000 - -#define EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTED 0x00040000 -#define EFI_RESOURCE_ATTRIBUTE_READ_ONLY_PROTECTABLE 0x00800000 - -// -// Physical memory relative reliability attribute. This -// memory provides higher reliability relative to other -// memory in the system. If all memory has the same -// reliability, then this bit is not used. -// -#define EFI_RESOURCE_ATTRIBUTE_MORE_RELIABLE 0x02000000 - -/// -/// Describes the resource properties of all fixed, -/// nonrelocatable resource ranges found on the processor -/// host bus during the HOB producer phase. -/// -typedef struct { - /// - /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_RESOURCE_DESCRIPTOR. - /// - EFI_HOB_GENERIC_HEADER Header; - /// - /// A GUID representing the owner of the resource. This GUID is used by HOB - /// consumer phase components to correlate device ownership of a resource. - /// - EFI_GUID Owner; - /// - /// The resource type enumeration as defined by EFI_RESOURCE_TYPE. - /// - EFI_RESOURCE_TYPE ResourceType; - /// - /// Resource attributes as defined by EFI_RESOURCE_ATTRIBUTE_TYPE. - /// - EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute; - /// - /// The physical start address of the resource region. - /// - EFI_PHYSICAL_ADDRESS PhysicalStart; - /// - /// The number of bytes of the resource region. - /// - UINT64 ResourceLength; -} EFI_HOB_RESOURCE_DESCRIPTOR; - -/// -/// Allows writers of executable content in the HOB producer phase to -/// maintain and manage HOBs with specific GUID. -/// -typedef struct { - /// - /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_GUID_EXTENSION. - /// - EFI_HOB_GENERIC_HEADER Header; - /// - /// A GUID that defines the contents of this HOB. - /// - EFI_GUID Name; - // - // Guid specific data goes here - // -} EFI_HOB_GUID_TYPE; - -/// -/// Details the location of firmware volumes that contain firmware files. -/// -typedef struct { - /// - /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_FV. - /// - EFI_HOB_GENERIC_HEADER Header; - /// - /// The physical memory-mapped base address of the firmware volume. - /// - EFI_PHYSICAL_ADDRESS BaseAddress; - /// - /// The length in bytes of the firmware volume. - /// - UINT64 Length; -} EFI_HOB_FIRMWARE_VOLUME; - -/// -/// Details the location of a firmware volume that was extracted -/// from a file within another firmware volume. -/// -typedef struct { - /// - /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_FV2. - /// - EFI_HOB_GENERIC_HEADER Header; - /// - /// The physical memory-mapped base address of the firmware volume. - /// - EFI_PHYSICAL_ADDRESS BaseAddress; - /// - /// The length in bytes of the firmware volume. - /// - UINT64 Length; - /// - /// The name of the firmware volume. - /// - EFI_GUID FvName; - /// - /// The name of the firmware file that contained this firmware volume. - /// - EFI_GUID FileName; -} EFI_HOB_FIRMWARE_VOLUME2; - - -/// -/// Describes processor information, such as address space and I/O space capabilities. -/// -typedef struct { - /// - /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_CPU. - /// - EFI_HOB_GENERIC_HEADER Header; - /// - /// Identifies the maximum physical memory addressability of the processor. - /// - UINT8 SizeOfMemorySpace; - /// - /// Identifies the maximum physical I/O addressability of the processor. - /// - UINT8 SizeOfIoSpace; - /// - /// This field will always be set to zero. - /// - UINT8 Reserved[6]; -} EFI_HOB_CPU; - - -/// -/// Describes pool memory allocations. -/// -typedef struct { - /// - /// The HOB generic header. Header.HobType = EFI_HOB_TYPE_MEMORY_POOL. - /// - EFI_HOB_GENERIC_HEADER Header; -} EFI_HOB_MEMORY_POOL; - -/// -/// Each UEFI capsule HOB details the location of a UEFI capsule. It includes a base address and length -/// which is based upon memory blocks with a EFI_CAPSULE_HEADER and the associated -/// CapsuleImageSize-based payloads. These HOB's shall be created by the PEI PI firmware -/// sometime after the UEFI UpdateCapsule service invocation with the -/// CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE flag set in the EFI_CAPSULE_HEADER. -/// -typedef struct { - /// - /// The HOB generic header where Header.HobType = EFI_HOB_TYPE_UEFI_CAPSULE. - /// - EFI_HOB_GENERIC_HEADER Header; - - /// - /// The physical memory-mapped base address of an UEFI capsule. This value is set to - /// point to the base of the contiguous memory of the UEFI capsule. - /// The length of the contiguous memory in bytes. - /// - EFI_PHYSICAL_ADDRESS BaseAddress; - UINT64 Length; -} EFI_HOB_UEFI_CAPSULE; - -/// -/// Union of all the possible HOB Types. -/// -typedef union { - EFI_HOB_GENERIC_HEADER *Header; - EFI_HOB_HANDOFF_INFO_TABLE *HandoffInformationTable; - EFI_HOB_MEMORY_ALLOCATION *MemoryAllocation; - EFI_HOB_MEMORY_ALLOCATION_BSP_STORE *MemoryAllocationBspStore; - EFI_HOB_MEMORY_ALLOCATION_STACK *MemoryAllocationStack; - EFI_HOB_MEMORY_ALLOCATION_MODULE *MemoryAllocationModule; - EFI_HOB_RESOURCE_DESCRIPTOR *ResourceDescriptor; - EFI_HOB_GUID_TYPE *Guid; - EFI_HOB_FIRMWARE_VOLUME *FirmwareVolume; - EFI_HOB_FIRMWARE_VOLUME2 *FirmwareVolume2; - EFI_HOB_CPU *Cpu; - EFI_HOB_MEMORY_POOL *Pool; - EFI_HOB_UEFI_CAPSULE *Capsule; - UINT8 *Raw; -} EFI_PEI_HOB_POINTERS; - - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/DevicePath.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/DevicePath.h deleted file mode 100644 index 3520c580b6..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/DevicePath.h +++ /dev/null @@ -1,1320 +0,0 @@ -/** @file - The device path protocol as defined in UEFI 2.0. - - The device path represents a programmatic path to a device, - from a software point of view. The path must persist from boot to boot, so - it can not contain things like PCI bus numbers that change from boot to boot. - -Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
-This file and the accompanying materials are licensed and made available under are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __EFI_DEVICE_PATH_PROTOCOL_H__ -#define __EFI_DEVICE_PATH_PROTOCOL_H__ - -#include -#include -#include - -/// -/// Device Path protocol. -/// -#define EFI_DEVICE_PATH_PROTOCOL_GUID \ - { \ - 0x9576e91, 0x6d3f, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ - } - -/// -/// Device Path guid definition for backward-compatible with EFI1.1. -/// -#define DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH_PROTOCOL_GUID - -#pragma pack(1) - -/** - This protocol can be used on any device handle to obtain generic path/location - information concerning the physical device or logical device. If the handle does - not logically map to a physical device, the handle may not necessarily support - the device path protocol. The device path describes the location of the device - the handle is for. The size of the Device Path can be determined from the structures - that make up the Device Path. -**/ -typedef struct { - UINT8 Type; ///< 0x01 Hardware Device Path. - ///< 0x02 ACPI Device Path. - ///< 0x03 Messaging Device Path. - ///< 0x04 Media Device Path. - ///< 0x05 BIOS Boot Specification Device Path. - ///< 0x7F End of Hardware Device Path. - - UINT8 SubType; ///< Varies by Type - ///< 0xFF End Entire Device Path, or - ///< 0x01 End This Instance of a Device Path and start a new - ///< Device Path. - - UINT8 Length[2]; ///< Specific Device Path data. Type and Sub-Type define - ///< type of data. Size of data is included in Length. - -} EFI_DEVICE_PATH_PROTOCOL; - -/// -/// Device Path protocol definition for backward-compatible with EFI1.1. -/// -typedef EFI_DEVICE_PATH_PROTOCOL EFI_DEVICE_PATH; - -/// -/// Hardware Device Paths. -/// -#define HARDWARE_DEVICE_PATH 0x01 - -/// -/// PCI Device Path SubType. -/// -#define HW_PCI_DP 0x01 - -/// -/// PCI Device Path. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// PCI Function Number. - /// - UINT8 Function; - /// - /// PCI Device Number. - /// - UINT8 Device; -} PCI_DEVICE_PATH; - -/// -/// PCCARD Device Path SubType. -/// -#define HW_PCCARD_DP 0x02 - -/// -/// PCCARD Device Path. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Function Number (0 = First Function). - /// - UINT8 FunctionNumber; -} PCCARD_DEVICE_PATH; - -/// -/// Memory Mapped Device Path SubType. -/// -#define HW_MEMMAP_DP 0x03 - -/// -/// Memory Mapped Device Path. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// EFI_MEMORY_TYPE - /// - UINT32 MemoryType; - /// - /// Starting Memory Address. - /// - EFI_PHYSICAL_ADDRESS StartingAddress; - /// - /// Ending Memory Address. - /// - EFI_PHYSICAL_ADDRESS EndingAddress; -} MEMMAP_DEVICE_PATH; - -/// -/// Hardware Vendor Device Path SubType. -/// -#define HW_VENDOR_DP 0x04 - -/// -/// The Vendor Device Path allows the creation of vendor-defined Device Paths. A vendor must -/// allocate a Vendor GUID for a Device Path. The Vendor GUID can then be used to define the -/// contents on the n bytes that follow in the Vendor Device Path node. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Vendor-assigned GUID that defines the data that follows. - /// - EFI_GUID Guid; - /// - /// Vendor-defined variable size data. - /// -} VENDOR_DEVICE_PATH; - -/// -/// Controller Device Path SubType. -/// -#define HW_CONTROLLER_DP 0x05 - -/// -/// Controller Device Path. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Controller number. - /// - UINT32 ControllerNumber; -} CONTROLLER_DEVICE_PATH; - -/// -/// BMC Device Path SubType. -/// -#define HW_BMC_DP 0x06 - -/// -/// BMC Device Path. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Interface Type. - /// - UINT8 InterfaceType; - /// - /// Base Address. - /// - UINT8 BaseAddress[8]; -} BMC_DEVICE_PATH; - -/// -/// ACPI Device Paths. -/// -#define ACPI_DEVICE_PATH 0x02 - -/// -/// ACPI Device Path SubType. -/// -#define ACPI_DP 0x01 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Device's PnP hardware ID stored in a numeric 32-bit - /// compressed EISA-type ID. This value must match the - /// corresponding _HID in the ACPI name space. - /// - UINT32 HID; - /// - /// Unique ID that is required by ACPI if two devices have the - /// same _HID. This value must also match the corresponding - /// _UID/_HID pair in the ACPI name space. Only the 32-bit - /// numeric value type of _UID is supported. Thus, strings must - /// not be used for the _UID in the ACPI name space. - /// - UINT32 UID; -} ACPI_HID_DEVICE_PATH; - -/// -/// Expanded ACPI Device Path SubType. -/// -#define ACPI_EXTENDED_DP 0x02 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Device's PnP hardware ID stored in a numeric 32-bit - /// compressed EISA-type ID. This value must match the - /// corresponding _HID in the ACPI name space. - /// - UINT32 HID; - /// - /// Unique ID that is required by ACPI if two devices have the - /// same _HID. This value must also match the corresponding - /// _UID/_HID pair in the ACPI name space. - /// - UINT32 UID; - /// - /// Device's compatible PnP hardware ID stored in a numeric - /// 32-bit compressed EISA-type ID. This value must match at - /// least one of the compatible device IDs returned by the - /// corresponding _CID in the ACPI name space. - /// - UINT32 CID; - /// - /// Optional variable length _HIDSTR. - /// Optional variable length _UIDSTR. - /// Optional variable length _CIDSTR. - /// -} ACPI_EXTENDED_HID_DEVICE_PATH; - -// -// EISA ID Macro -// EISA ID Definition 32-bits -// bits[15:0] - three character compressed ASCII EISA ID. -// bits[31:16] - binary number -// Compressed ASCII is 5 bits per character 0b00001 = 'A' 0b11010 = 'Z' -// -#define PNP_EISA_ID_CONST 0x41d0 -#define EISA_ID(_Name, _Num) ((UINT32)((_Name) | (_Num) << 16)) -#define EISA_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId))) -#define EFI_PNP_ID(_PNPId) (EISA_ID(PNP_EISA_ID_CONST, (_PNPId))) - -#define PNP_EISA_ID_MASK 0xffff -#define EISA_ID_TO_NUM(_Id) ((_Id) >> 16) - -/// -/// ACPI _ADR Device Path SubType. -/// -#define ACPI_ADR_DP 0x03 - -/// -/// The _ADR device path is used to contain video output device attributes to support the Graphics -/// Output Protocol. The device path can contain multiple _ADR entries if multiple video output -/// devices are displaying the same output. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// _ADR value. For video output devices the value of this - /// field comes from Table B-2 of the ACPI 3.0 specification. At - /// least one _ADR value is required. - /// - UINT32 ADR; - // - // This device path may optionally contain more than one _ADR entry. - // -} ACPI_ADR_DEVICE_PATH; - -#define ACPI_ADR_DISPLAY_TYPE_OTHER 0 -#define ACPI_ADR_DISPLAY_TYPE_VGA 1 -#define ACPI_ADR_DISPLAY_TYPE_TV 2 -#define ACPI_ADR_DISPLAY_TYPE_EXTERNAL_DIGITAL 3 -#define ACPI_ADR_DISPLAY_TYPE_INTERNAL_DIGITAL 4 - -#define ACPI_DISPLAY_ADR(_DeviceIdScheme, _HeadId, _NonVgaOutput, _BiosCanDetect, _VendorInfo, _Type, _Port, _Index) \ - ((UINT32)( ((UINT32)((_DeviceIdScheme) & 0x1) << 31) | \ - (((_HeadId) & 0x7) << 18) | \ - (((_NonVgaOutput) & 0x1) << 17) | \ - (((_BiosCanDetect) & 0x1) << 16) | \ - (((_VendorInfo) & 0xf) << 12) | \ - (((_Type) & 0xf) << 8) | \ - (((_Port) & 0xf) << 4) | \ - ((_Index) & 0xf) )) - -/// -/// Messaging Device Paths. -/// This Device Path is used to describe the connection of devices outside the resource domain of the -/// system. This Device Path can describe physical messaging information like SCSI ID, or abstract -/// information like networking protocol IP addresses. -/// -#define MESSAGING_DEVICE_PATH 0x03 - -/// -/// ATAPI Device Path SubType -/// -#define MSG_ATAPI_DP 0x01 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Set to zero for primary, or one for secondary. - /// - UINT8 PrimarySecondary; - /// - /// Set to zero for master, or one for slave mode. - /// - UINT8 SlaveMaster; - /// - /// Logical Unit Number. - /// - UINT16 Lun; -} ATAPI_DEVICE_PATH; - -/// -/// SCSI Device Path SubType. -/// -#define MSG_SCSI_DP 0x02 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Target ID on the SCSI bus (PUN). - /// - UINT16 Pun; - /// - /// Logical Unit Number (LUN). - /// - UINT16 Lun; -} SCSI_DEVICE_PATH; - -/// -/// Fibre Channel SubType. -/// -#define MSG_FIBRECHANNEL_DP 0x03 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Reserved for the future. - /// - UINT32 Reserved; - /// - /// Fibre Channel World Wide Number. - /// - UINT64 WWN; - /// - /// Fibre Channel Logical Unit Number. - /// - UINT64 Lun; -} FIBRECHANNEL_DEVICE_PATH; - -/// -/// Fibre Channel Ex SubType. -/// -#define MSG_FIBRECHANNELEX_DP 0x15 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Reserved for the future. - /// - UINT32 Reserved; - /// - /// 8 byte array containing Fibre Channel End Device Port Name. - /// - UINT8 WWN[8]; - /// - /// 8 byte array containing Fibre Channel Logical Unit Number. - /// - UINT8 Lun[8]; -} FIBRECHANNELEX_DEVICE_PATH; - -/// -/// 1394 Device Path SubType -/// -#define MSG_1394_DP 0x04 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Reserved for the future. - /// - UINT32 Reserved; - /// - /// 1394 Global Unique ID (GUID). - /// - UINT64 Guid; -} F1394_DEVICE_PATH; - -/// -/// USB Device Path SubType. -/// -#define MSG_USB_DP 0x05 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// USB Parent Port Number. - /// - UINT8 ParentPortNumber; - /// - /// USB Interface Number. - /// - UINT8 InterfaceNumber; -} USB_DEVICE_PATH; - -/// -/// USB Class Device Path SubType. -/// -#define MSG_USB_CLASS_DP 0x0f -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Vendor ID assigned by USB-IF. A value of 0xFFFF will - /// match any Vendor ID. - /// - UINT16 VendorId; - /// - /// Product ID assigned by USB-IF. A value of 0xFFFF will - /// match any Product ID. - /// - UINT16 ProductId; - /// - /// The class code assigned by the USB-IF. A value of 0xFF - /// will match any class code. - /// - UINT8 DeviceClass; - /// - /// The subclass code assigned by the USB-IF. A value of - /// 0xFF will match any subclass code. - /// - UINT8 DeviceSubClass; - /// - /// The protocol code assigned by the USB-IF. A value of - /// 0xFF will match any protocol code. - /// - UINT8 DeviceProtocol; -} USB_CLASS_DEVICE_PATH; - -/// -/// USB WWID Device Path SubType. -/// -#define MSG_USB_WWID_DP 0x10 - -/// -/// This device path describes a USB device using its serial number. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// USB interface number. - /// - UINT16 InterfaceNumber; - /// - /// USB vendor id of the device. - /// - UINT16 VendorId; - /// - /// USB product id of the device. - /// - UINT16 ProductId; - /// - /// Last 64-or-fewer UTF-16 characters of the USB - /// serial number. The length of the string is - /// determined by the Length field less the offset of the - /// Serial Number field (10) - /// - /// CHAR16 SerialNumber[...]; -} USB_WWID_DEVICE_PATH; - -/// -/// Device Logical Unit SubType. -/// -#define MSG_DEVICE_LOGICAL_UNIT_DP 0x11 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Logical Unit Number for the interface. - /// - UINT8 Lun; -} DEVICE_LOGICAL_UNIT_DEVICE_PATH; - -/// -/// SATA Device Path SubType. -/// -#define MSG_SATA_DP 0x12 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// The HBA port number that facilitates the connection to the - /// device or a port multiplier. The value 0xFFFF is reserved. - /// - UINT16 HBAPortNumber; - /// - /// The Port multiplier port number that facilitates the connection - /// to the device. Bit 15 should be set if the device is directly - /// connected to the HBA. - /// - UINT16 PortMultiplierPortNumber; - /// - /// Logical Unit Number. - /// - UINT16 Lun; -} SATA_DEVICE_PATH; - -/// -/// Flag for if the device is directly connected to the HBA. -/// -#define SATA_HBA_DIRECT_CONNECT_FLAG 0x8000 - -/// -/// I2O Device Path SubType. -/// -#define MSG_I2O_DP 0x06 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Target ID (TID) for a device. - /// - UINT32 Tid; -} I2O_DEVICE_PATH; - -/// -/// MAC Address Device Path SubType. -/// -#define MSG_MAC_ADDR_DP 0x0b -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// The MAC address for a network interface padded with 0s. - /// - EFI_MAC_ADDRESS MacAddress; - /// - /// Network interface type(i.e. 802.3, FDDI). - /// - UINT8 IfType; -} MAC_ADDR_DEVICE_PATH; - -/// -/// IPv4 Device Path SubType -/// -#define MSG_IPv4_DP 0x0c -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// The local IPv4 address. - /// - EFI_IPv4_ADDRESS LocalIpAddress; - /// - /// The remote IPv4 address. - /// - EFI_IPv4_ADDRESS RemoteIpAddress; - /// - /// The local port number. - /// - UINT16 LocalPort; - /// - /// The remote port number. - /// - UINT16 RemotePort; - /// - /// The network protocol(i.e. UDP, TCP). - /// - UINT16 Protocol; - /// - /// 0x00 - The Source IP Address was assigned though DHCP. - /// 0x01 - The Source IP Address is statically bound. - /// - BOOLEAN StaticIpAddress; - /// - /// The gateway IP address - /// - EFI_IPv4_ADDRESS GatewayIpAddress; - /// - /// The subnet mask - /// - EFI_IPv4_ADDRESS SubnetMask; -} IPv4_DEVICE_PATH; - -/// -/// IPv6 Device Path SubType. -/// -#define MSG_IPv6_DP 0x0d -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// The local IPv6 address. - /// - EFI_IPv6_ADDRESS LocalIpAddress; - /// - /// The remote IPv6 address. - /// - EFI_IPv6_ADDRESS RemoteIpAddress; - /// - /// The local port number. - /// - UINT16 LocalPort; - /// - /// The remote port number. - /// - UINT16 RemotePort; - /// - /// The network protocol(i.e. UDP, TCP). - /// - UINT16 Protocol; - /// - /// 0x00 - The Local IP Address was manually configured. - /// 0x01 - The Local IP Address is assigned through IPv6 - /// stateless auto-configuration. - /// 0x02 - The Local IP Address is assigned through IPv6 - /// stateful configuration. - /// - UINT8 IpAddressOrigin; - /// - /// The prefix length - /// - UINT8 PrefixLength; - /// - /// The gateway IP address - /// - EFI_IPv6_ADDRESS GatewayIpAddress; -} IPv6_DEVICE_PATH; - -/// -/// InfiniBand Device Path SubType. -/// -#define MSG_INFINIBAND_DP 0x09 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Flags to help identify/manage InfiniBand device path elements: - /// Bit 0 - IOC/Service (0b = IOC, 1b = Service). - /// Bit 1 - Extend Boot Environment. - /// Bit 2 - Console Protocol. - /// Bit 3 - Storage Protocol. - /// Bit 4 - Network Protocol. - /// All other bits are reserved. - /// - UINT32 ResourceFlags; - /// - /// 128-bit Global Identifier for remote fabric port. - /// - UINT8 PortGid[16]; - /// - /// 64-bit unique identifier to remote IOC or server process. - /// Interpretation of field specified by Resource Flags (bit 0). - /// - UINT64 ServiceId; - /// - /// 64-bit persistent ID of remote IOC port. - /// - UINT64 TargetPortId; - /// - /// 64-bit persistent ID of remote device. - /// - UINT64 DeviceId; -} INFINIBAND_DEVICE_PATH; - -#define INFINIBAND_RESOURCE_FLAG_IOC_SERVICE 0x01 -#define INFINIBAND_RESOURCE_FLAG_EXTENDED_BOOT_ENVIRONMENT 0x02 -#define INFINIBAND_RESOURCE_FLAG_CONSOLE_PROTOCOL 0x04 -#define INFINIBAND_RESOURCE_FLAG_STORAGE_PROTOCOL 0x08 -#define INFINIBAND_RESOURCE_FLAG_NETWORK_PROTOCOL 0x10 - -/// -/// UART Device Path SubType. -/// -#define MSG_UART_DP 0x0e -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Reserved. - /// - UINT32 Reserved; - /// - /// The baud rate setting for the UART style device. A value of 0 - /// means that the device's default baud rate will be used. - /// - UINT64 BaudRate; - /// - /// The number of data bits for the UART style device. A value - /// of 0 means that the device's default number of data bits will be used. - /// - UINT8 DataBits; - /// - /// The parity setting for the UART style device. - /// Parity 0x00 - Default Parity. - /// Parity 0x01 - No Parity. - /// Parity 0x02 - Even Parity. - /// Parity 0x03 - Odd Parity. - /// Parity 0x04 - Mark Parity. - /// Parity 0x05 - Space Parity. - /// - UINT8 Parity; - /// - /// The number of stop bits for the UART style device. - /// Stop Bits 0x00 - Default Stop Bits. - /// Stop Bits 0x01 - 1 Stop Bit. - /// Stop Bits 0x02 - 1.5 Stop Bits. - /// Stop Bits 0x03 - 2 Stop Bits. - /// - UINT8 StopBits; -} UART_DEVICE_PATH; - -// -// Use VENDOR_DEVICE_PATH struct -// -#define MSG_VENDOR_DP 0x0a -typedef VENDOR_DEVICE_PATH VENDOR_DEFINED_DEVICE_PATH; - -#define DEVICE_PATH_MESSAGING_PC_ANSI EFI_PC_ANSI_GUID -#define DEVICE_PATH_MESSAGING_VT_100 EFI_VT_100_GUID -#define DEVICE_PATH_MESSAGING_VT_100_PLUS EFI_VT_100_PLUS_GUID -#define DEVICE_PATH_MESSAGING_VT_UTF8 EFI_VT_UTF8_GUID - -/// -/// A new device path node is defined to declare flow control characteristics. -/// UART Flow Control Messaging Device Path -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// DEVICE_PATH_MESSAGING_UART_FLOW_CONTROL GUID. - /// - EFI_GUID Guid; - /// - /// Bitmap of supported flow control types. - /// Bit 0 set indicates hardware flow control. - /// Bit 1 set indicates Xon/Xoff flow control. - /// All other bits are reserved and are clear. - /// - UINT32 FlowControlMap; -} UART_FLOW_CONTROL_DEVICE_PATH; - -#define UART_FLOW_CONTROL_HARDWARE 0x00000001 -#define UART_FLOW_CONTROL_XON_XOFF 0x00000010 - -#define DEVICE_PATH_MESSAGING_SAS EFI_SAS_DEVICE_PATH_GUID -/// -/// Serial Attached SCSI (SAS) Device Path. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// DEVICE_PATH_MESSAGING_SAS GUID. - /// - EFI_GUID Guid; - /// - /// Reserved for future use. - /// - UINT32 Reserved; - /// - /// SAS Address for Serial Attached SCSI Target. - /// - UINT64 SasAddress; - /// - /// SAS Logical Unit Number. - /// - UINT64 Lun; - /// - /// More Information about the device and its interconnect. - /// - UINT16 DeviceTopology; - /// - /// Relative Target Port (RTP). - /// - UINT16 RelativeTargetPort; -} SAS_DEVICE_PATH; - -/// -/// Serial Attached SCSI (SAS) Ex Device Path SubType -/// -#define MSG_SASEX_DP 0x16 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// 8-byte array of the SAS Address for Serial Attached SCSI Target Port. - /// - UINT8 SasAddress[8]; - /// - /// 8-byte array of the SAS Logical Unit Number. - /// - UINT8 Lun[8]; - /// - /// More Information about the device and its interconnect. - /// - UINT16 DeviceTopology; - /// - /// Relative Target Port (RTP). - /// - UINT16 RelativeTargetPort; -} SASEX_DEVICE_PATH; - -/// -/// NvmExpress Namespace Device Path SubType. -/// -#define MSG_NVME_NAMESPACE_DP 0x17 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - UINT32 NamespaceId; - UINT64 NamespaceUuid; -} NVME_NAMESPACE_DEVICE_PATH; - -/// -/// Uniform Resource Identifiers (URI) Device Path SubType -/// -#define MSG_URI_DP 0x18 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Instance of the URI pursuant to RFC 3986. - /// - CHAR8 Uri[]; -} URI_DEVICE_PATH; - -/// -/// Universal Flash Storage (UFS) Device Path SubType. -/// -#define MSG_UFS_DP 0x19 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Target ID on the UFS bus (PUN). - /// - UINT8 Pun; - /// - /// Logical Unit Number (LUN). - /// - UINT8 Lun; -} UFS_DEVICE_PATH; - -/// -/// SD (Secure Digital) Device Path SubType. -/// -#define MSG_SD_DP 0x1A -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - UINT8 SlotNumber; -} SD_DEVICE_PATH; - -/// -/// iSCSI Device Path SubType -/// -#define MSG_ISCSI_DP 0x13 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Network Protocol (0 = TCP, 1+ = reserved). - /// - UINT16 NetworkProtocol; - /// - /// iSCSI Login Options. - /// - UINT16 LoginOption; - /// - /// iSCSI Logical Unit Number. - /// - UINT64 Lun; - /// - /// iSCSI Target Portal group tag the initiator intends - /// to establish a session with. - /// - UINT16 TargetPortalGroupTag; - /// - /// iSCSI NodeTarget Name. The length of the name - /// is determined by subtracting the offset of this field from Length. - /// - /// CHAR8 iSCSI Target Name. -} ISCSI_DEVICE_PATH; - -#define ISCSI_LOGIN_OPTION_NO_HEADER_DIGEST 0x0000 -#define ISCSI_LOGIN_OPTION_HEADER_DIGEST_USING_CRC32C 0x0002 -#define ISCSI_LOGIN_OPTION_NO_DATA_DIGEST 0x0000 -#define ISCSI_LOGIN_OPTION_DATA_DIGEST_USING_CRC32C 0x0008 -#define ISCSI_LOGIN_OPTION_AUTHMETHOD_CHAP 0x0000 -#define ISCSI_LOGIN_OPTION_AUTHMETHOD_NON 0x1000 -#define ISCSI_LOGIN_OPTION_CHAP_BI 0x0000 -#define ISCSI_LOGIN_OPTION_CHAP_UNI 0x2000 - -/// -/// VLAN Device Path SubType. -/// -#define MSG_VLAN_DP 0x14 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// VLAN identifier (0-4094). - /// - UINT16 VlanId; -} VLAN_DEVICE_PATH; - -/// -/// Bluetooth Device Path SubType. -/// -#define MSG_BLUETOOTH_DP 0x1b -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// 48bit Bluetooth device address. - /// - BLUETOOTH_ADDRESS BD_ADDR; -} BLUETOOTH_DEVICE_PATH; - -/// -/// Wi-Fi Device Path SubType. -/// -#define MSG_WIFI_DP 0x1C -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Service set identifier. A 32-byte octets string. - /// - UINT8 SSId[32]; -} WIFI_DEVICE_PATH; - -// -// Media Device Path -// -#define MEDIA_DEVICE_PATH 0x04 - -/// -/// Hard Drive Media Device Path SubType. -/// -#define MEDIA_HARDDRIVE_DP 0x01 - -/// -/// The Hard Drive Media Device Path is used to represent a partition on a hard drive. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Describes the entry in a partition table, starting with entry 1. - /// Partition number zero represents the entire device. Valid - /// partition numbers for a MBR partition are [1, 4]. Valid - /// partition numbers for a GPT partition are [1, NumberOfPartitionEntries]. - /// - UINT32 PartitionNumber; - /// - /// Starting LBA of the partition on the hard drive. - /// - UINT64 PartitionStart; - /// - /// Size of the partition in units of Logical Blocks. - /// - UINT64 PartitionSize; - /// - /// Signature unique to this partition: - /// If SignatureType is 0, this field has to be initialized with 16 zeros. - /// If SignatureType is 1, the MBR signature is stored in the first 4 bytes of this field. - /// The other 12 bytes are initialized with zeros. - /// If SignatureType is 2, this field contains a 16 byte signature. - /// - UINT8 Signature[16]; - /// - /// Partition Format: (Unused values reserved). - /// 0x01 - PC-AT compatible legacy MBR. - /// 0x02 - GUID Partition Table. - /// - UINT8 MBRType; - /// - /// Type of Disk Signature: (Unused values reserved). - /// 0x00 - No Disk Signature. - /// 0x01 - 32-bit signature from address 0x1b8 of the type 0x01 MBR. - /// 0x02 - GUID signature. - /// - UINT8 SignatureType; -} HARDDRIVE_DEVICE_PATH; - -#define MBR_TYPE_PCAT 0x01 -#define MBR_TYPE_EFI_PARTITION_TABLE_HEADER 0x02 - -#define NO_DISK_SIGNATURE 0x00 -#define SIGNATURE_TYPE_MBR 0x01 -#define SIGNATURE_TYPE_GUID 0x02 - -/// -/// CD-ROM Media Device Path SubType. -/// -#define MEDIA_CDROM_DP 0x02 - -/// -/// The CD-ROM Media Device Path is used to define a system partition that exists on a CD-ROM. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Boot Entry number from the Boot Catalog. The Initial/Default entry is defined as zero. - /// - UINT32 BootEntry; - /// - /// Starting RBA of the partition on the medium. CD-ROMs use Relative logical Block Addressing. - /// - UINT64 PartitionStart; - /// - /// Size of the partition in units of Blocks, also called Sectors. - /// - UINT64 PartitionSize; -} CDROM_DEVICE_PATH; - -// -// Use VENDOR_DEVICE_PATH struct -// -#define MEDIA_VENDOR_DP 0x03 ///< Media vendor device path subtype. - -/// -/// File Path Media Device Path SubType -/// -#define MEDIA_FILEPATH_DP 0x04 -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// A NULL-terminated Path string including directory and file names. - /// - CHAR16 PathName[1]; -} FILEPATH_DEVICE_PATH; - -#define SIZE_OF_FILEPATH_DEVICE_PATH OFFSET_OF(FILEPATH_DEVICE_PATH,PathName) - -/// -/// Media Protocol Device Path SubType. -/// -#define MEDIA_PROTOCOL_DP 0x05 - -/// -/// The Media Protocol Device Path is used to denote the protocol that is being -/// used in a device path at the location of the path specified. -/// Many protocols are inherent to the style of device path. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// The ID of the protocol. - /// - EFI_GUID Protocol; -} MEDIA_PROTOCOL_DEVICE_PATH; - -/// -/// PIWG Firmware File SubType. -/// -#define MEDIA_PIWG_FW_FILE_DP 0x06 - -/// -/// This device path is used by systems implementing the UEFI PI Specification 1.0 to describe a firmware file. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Firmware file name - /// - EFI_GUID FvFileName; -} MEDIA_FW_VOL_FILEPATH_DEVICE_PATH; - -/// -/// PIWG Firmware Volume Device Path SubType. -/// -#define MEDIA_PIWG_FW_VOL_DP 0x07 - -/// -/// This device path is used by systems implementing the UEFI PI Specification 1.0 to describe a firmware volume. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Firmware volume name. - /// - EFI_GUID FvName; -} MEDIA_FW_VOL_DEVICE_PATH; - -/// -/// Media relative offset range device path. -/// -#define MEDIA_RELATIVE_OFFSET_RANGE_DP 0x08 - -/// -/// Used to describe the offset range of media relative. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - UINT32 Reserved; - UINT64 StartingOffset; - UINT64 EndingOffset; -} MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH; - -/// -/// This GUID defines a RAM Disk supporting a raw disk format in volatile memory. -/// -#define EFI_VIRTUAL_DISK_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_VOLATILE - -extern EFI_GUID gEfiVirtualDiskGuid; - -/// -/// This GUID defines a RAM Disk supporting an ISO image in volatile memory. -/// -#define EFI_VIRTUAL_CD_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_VOLATILE - -extern EFI_GUID gEfiVirtualCdGuid; - -/// -/// This GUID defines a RAM Disk supporting a raw disk format in persistent memory. -/// -#define EFI_PERSISTENT_VIRTUAL_DISK_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_DISK_REGION_PERSISTENT - -extern EFI_GUID gEfiPersistentVirtualDiskGuid; - -/// -/// This GUID defines a RAM Disk supporting an ISO image in persistent memory. -/// -#define EFI_PERSISTENT_VIRTUAL_CD_GUID EFI_ACPI_6_0_NFIT_GUID_RAM_DISK_SUPPORTING_VIRTUAL_CD_REGION_PERSISTENT - -extern EFI_GUID gEfiPersistentVirtualCdGuid; - -/// -/// Media ram disk device path. -/// -#define MEDIA_RAM_DISK_DP 0x09 - -/// -/// Used to describe the ram disk device path. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Starting Memory Address. - /// - UINT32 StartingAddr[2]; - /// - /// Ending Memory Address. - /// - UINT32 EndingAddr[2]; - /// - /// GUID that defines the type of the RAM Disk. - /// - EFI_GUID TypeGuid; - /// - /// RAM Diskinstance number, if supported. The default value is zero. - /// - UINT16 Instance; -} MEDIA_RAM_DISK_DEVICE_PATH; - -/// -/// BIOS Boot Specification Device Path. -/// -#define BBS_DEVICE_PATH 0x05 - -/// -/// BIOS Boot Specification Device Path SubType. -/// -#define BBS_BBS_DP 0x01 - -/// -/// This Device Path is used to describe the booting of non-EFI-aware operating systems. -/// -typedef struct { - EFI_DEVICE_PATH_PROTOCOL Header; - /// - /// Device Type as defined by the BIOS Boot Specification. - /// - UINT16 DeviceType; - /// - /// Status Flags as defined by the BIOS Boot Specification. - /// - UINT16 StatusFlag; - /// - /// Null-terminated ASCII string that describes the boot device to a user. - /// - CHAR8 String[1]; -} BBS_BBS_DEVICE_PATH; - -// -// DeviceType definitions - from BBS specification -// -#define BBS_TYPE_FLOPPY 0x01 -#define BBS_TYPE_HARDDRIVE 0x02 -#define BBS_TYPE_CDROM 0x03 -#define BBS_TYPE_PCMCIA 0x04 -#define BBS_TYPE_USB 0x05 -#define BBS_TYPE_EMBEDDED_NETWORK 0x06 -#define BBS_TYPE_BEV 0x80 -#define BBS_TYPE_UNKNOWN 0xFF - - -/// -/// Union of all possible Device Paths and pointers to Device Paths. -/// -typedef union { - EFI_DEVICE_PATH_PROTOCOL DevPath; - PCI_DEVICE_PATH Pci; - PCCARD_DEVICE_PATH PcCard; - MEMMAP_DEVICE_PATH MemMap; - VENDOR_DEVICE_PATH Vendor; - - CONTROLLER_DEVICE_PATH Controller; - BMC_DEVICE_PATH Bmc; - ACPI_HID_DEVICE_PATH Acpi; - ACPI_EXTENDED_HID_DEVICE_PATH ExtendedAcpi; - ACPI_ADR_DEVICE_PATH AcpiAdr; - - ATAPI_DEVICE_PATH Atapi; - SCSI_DEVICE_PATH Scsi; - ISCSI_DEVICE_PATH Iscsi; - FIBRECHANNEL_DEVICE_PATH FibreChannel; - FIBRECHANNELEX_DEVICE_PATH FibreChannelEx; - - F1394_DEVICE_PATH F1394; - USB_DEVICE_PATH Usb; - SATA_DEVICE_PATH Sata; - USB_CLASS_DEVICE_PATH UsbClass; - USB_WWID_DEVICE_PATH UsbWwid; - DEVICE_LOGICAL_UNIT_DEVICE_PATH LogicUnit; - I2O_DEVICE_PATH I2O; - MAC_ADDR_DEVICE_PATH MacAddr; - IPv4_DEVICE_PATH Ipv4; - IPv6_DEVICE_PATH Ipv6; - VLAN_DEVICE_PATH Vlan; - INFINIBAND_DEVICE_PATH InfiniBand; - UART_DEVICE_PATH Uart; - UART_FLOW_CONTROL_DEVICE_PATH UartFlowControl; - SAS_DEVICE_PATH Sas; - SASEX_DEVICE_PATH SasEx; - NVME_NAMESPACE_DEVICE_PATH NvmeNamespace; - URI_DEVICE_PATH Uri; - BLUETOOTH_DEVICE_PATH Bluetooth; - WIFI_DEVICE_PATH WiFi; - UFS_DEVICE_PATH Ufs; - SD_DEVICE_PATH Sd; - HARDDRIVE_DEVICE_PATH HardDrive; - CDROM_DEVICE_PATH CD; - - FILEPATH_DEVICE_PATH FilePath; - MEDIA_PROTOCOL_DEVICE_PATH MediaProtocol; - - MEDIA_FW_VOL_DEVICE_PATH FirmwareVolume; - MEDIA_FW_VOL_FILEPATH_DEVICE_PATH FirmwareFile; - MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH Offset; - MEDIA_RAM_DISK_DEVICE_PATH RamDisk; - BBS_BBS_DEVICE_PATH Bbs; -} EFI_DEV_PATH; - - - -typedef union { - EFI_DEVICE_PATH_PROTOCOL *DevPath; - PCI_DEVICE_PATH *Pci; - PCCARD_DEVICE_PATH *PcCard; - MEMMAP_DEVICE_PATH *MemMap; - VENDOR_DEVICE_PATH *Vendor; - - CONTROLLER_DEVICE_PATH *Controller; - BMC_DEVICE_PATH *Bmc; - ACPI_HID_DEVICE_PATH *Acpi; - ACPI_EXTENDED_HID_DEVICE_PATH *ExtendedAcpi; - ACPI_ADR_DEVICE_PATH *AcpiAdr; - - ATAPI_DEVICE_PATH *Atapi; - SCSI_DEVICE_PATH *Scsi; - ISCSI_DEVICE_PATH *Iscsi; - FIBRECHANNEL_DEVICE_PATH *FibreChannel; - FIBRECHANNELEX_DEVICE_PATH *FibreChannelEx; - - F1394_DEVICE_PATH *F1394; - USB_DEVICE_PATH *Usb; - SATA_DEVICE_PATH *Sata; - USB_CLASS_DEVICE_PATH *UsbClass; - USB_WWID_DEVICE_PATH *UsbWwid; - DEVICE_LOGICAL_UNIT_DEVICE_PATH *LogicUnit; - I2O_DEVICE_PATH *I2O; - MAC_ADDR_DEVICE_PATH *MacAddr; - IPv4_DEVICE_PATH *Ipv4; - IPv6_DEVICE_PATH *Ipv6; - VLAN_DEVICE_PATH *Vlan; - INFINIBAND_DEVICE_PATH *InfiniBand; - UART_DEVICE_PATH *Uart; - UART_FLOW_CONTROL_DEVICE_PATH *UartFlowControl; - SAS_DEVICE_PATH *Sas; - SASEX_DEVICE_PATH *SasEx; - NVME_NAMESPACE_DEVICE_PATH *NvmeNamespace; - URI_DEVICE_PATH *Uri; - BLUETOOTH_DEVICE_PATH *Bluetooth; - WIFI_DEVICE_PATH *WiFi; - UFS_DEVICE_PATH *Ufs; - SD_DEVICE_PATH *Sd; - HARDDRIVE_DEVICE_PATH *HardDrive; - CDROM_DEVICE_PATH *CD; - - FILEPATH_DEVICE_PATH *FilePath; - MEDIA_PROTOCOL_DEVICE_PATH *MediaProtocol; - - MEDIA_FW_VOL_DEVICE_PATH *FirmwareVolume; - MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FirmwareFile; - MEDIA_RELATIVE_OFFSET_RANGE_DEVICE_PATH *Offset; - MEDIA_RAM_DISK_DEVICE_PATH *RamDisk; - BBS_BBS_DEVICE_PATH *Bbs; - UINT8 *Raw; -} EFI_DEV_PATH_PTR; - -#pragma pack() - -#define END_DEVICE_PATH_TYPE 0x7f -#define END_ENTIRE_DEVICE_PATH_SUBTYPE 0xFF -#define END_INSTANCE_DEVICE_PATH_SUBTYPE 0x01 - -extern EFI_GUID gEfiDevicePathProtocolGuid; - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/GraphicsOutput.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/GraphicsOutput.h deleted file mode 100644 index fc5a9d2e8c..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/GraphicsOutput.h +++ /dev/null @@ -1,276 +0,0 @@ -/** @file - Graphics Output Protocol from the UEFI 2.0 specification. - - Abstraction of a very simple graphics device. - - Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __GRAPHICS_OUTPUT_H__ -#define __GRAPHICS_OUTPUT_H__ - -#define EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID \ - { \ - 0x9042a9de, 0x23dc, 0x4a38, {0x96, 0xfb, 0x7a, 0xde, 0xd0, 0x80, 0x51, 0x6a } \ - } - -typedef struct _EFI_GRAPHICS_OUTPUT_PROTOCOL EFI_GRAPHICS_OUTPUT_PROTOCOL; - -typedef struct { - UINT32 RedMask; - UINT32 GreenMask; - UINT32 BlueMask; - UINT32 ReservedMask; -} EFI_PIXEL_BITMASK; - -typedef enum { - /// - /// A pixel is 32-bits and byte zero represents red, byte one represents green, - /// byte two represents blue, and byte three is reserved. This is the definition - /// for the physical frame buffer. The byte values for the red, green, and blue - /// components represent the color intensity. This color intensity value range - /// from a minimum intensity of 0 to maximum intensity of 255. - /// - PixelRedGreenBlueReserved8BitPerColor, - /// - /// A pixel is 32-bits and byte zero represents blue, byte one represents green, - /// byte two represents red, and byte three is reserved. This is the definition - /// for the physical frame buffer. The byte values for the red, green, and blue - /// components represent the color intensity. This color intensity value range - /// from a minimum intensity of 0 to maximum intensity of 255. - /// - PixelBlueGreenRedReserved8BitPerColor, - /// - /// The Pixel definition of the physical frame buffer. - /// - PixelBitMask, - /// - /// This mode does not support a physical frame buffer. - /// - PixelBltOnly, - /// - /// Valid EFI_GRAPHICS_PIXEL_FORMAT enum values are less than this value. - /// - PixelFormatMax -} EFI_GRAPHICS_PIXEL_FORMAT; - -typedef struct { - /// - /// The version of this data structure. A value of zero represents the - /// EFI_GRAPHICS_OUTPUT_MODE_INFORMATION structure as defined in this specification. - /// - UINT32 Version; - /// - /// The size of video screen in pixels in the X dimension. - /// - UINT32 HorizontalResolution; - /// - /// The size of video screen in pixels in the Y dimension. - /// - UINT32 VerticalResolution; - /// - /// Enumeration that defines the physical format of the pixel. A value of PixelBltOnly - /// implies that a linear frame buffer is not available for this mode. - /// - EFI_GRAPHICS_PIXEL_FORMAT PixelFormat; - /// - /// This bit-mask is only valid if PixelFormat is set to PixelPixelBitMask. - /// A bit being set defines what bits are used for what purpose such as Red, Green, Blue, or Reserved. - /// - EFI_PIXEL_BITMASK PixelInformation; - /// - /// Defines the number of pixel elements per video memory line. - /// - UINT32 PixelsPerScanLine; -} EFI_GRAPHICS_OUTPUT_MODE_INFORMATION; - -/** - Returns information for an available graphics mode that the graphics device - and the set of active video output devices supports. - - @param This The EFI_GRAPHICS_OUTPUT_PROTOCOL instance. - @param ModeNumber The mode number to return information on. - @param SizeOfInfo A pointer to the size, in bytes, of the Info buffer. - @param Info A pointer to callee allocated buffer that returns information about ModeNumber. - - @retval EFI_SUCCESS Valid mode information was returned. - @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the video mode. - @retval EFI_INVALID_PARAMETER ModeNumber is not valid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE)( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN UINT32 ModeNumber, - OUT UINTN *SizeOfInfo, - OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info - ); - -/** - Set the video device into the specified mode and clears the visible portions of - the output display to black. - - @param This The EFI_GRAPHICS_OUTPUT_PROTOCOL instance. - @param ModeNumber Abstraction that defines the current video mode. - - @retval EFI_SUCCESS The graphics mode specified by ModeNumber was selected. - @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. - @retval EFI_UNSUPPORTED ModeNumber is not supported by this device. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE)( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN UINT32 ModeNumber - ); - -typedef struct { - UINT8 Blue; - UINT8 Green; - UINT8 Red; - UINT8 Reserved; -} EFI_GRAPHICS_OUTPUT_BLT_PIXEL; - -typedef union { - EFI_GRAPHICS_OUTPUT_BLT_PIXEL Pixel; - UINT32 Raw; -} EFI_GRAPHICS_OUTPUT_BLT_PIXEL_UNION; - -/// -/// actions for BltOperations -/// -typedef enum { - /// - /// Write data from the BltBuffer pixel (0, 0) - /// directly to every pixel of the video display rectangle - /// (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height). - /// Only one pixel will be used from the BltBuffer. Delta is NOT used. - /// - EfiBltVideoFill, - - /// - /// Read data from the video display rectangle - /// (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in - /// the BltBuffer rectangle (DestinationX, DestinationY ) - /// (DestinationX + Width, DestinationY + Height). If DestinationX or - /// DestinationY is not zero then Delta must be set to the length in bytes - /// of a row in the BltBuffer. - /// - EfiBltVideoToBltBuffer, - - /// - /// Write data from the BltBuffer rectangle - /// (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the - /// video display rectangle (DestinationX, DestinationY) - /// (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is - /// not zero then Delta must be set to the length in bytes of a row in the - /// BltBuffer. - /// - EfiBltBufferToVideo, - - /// - /// Copy from the video display rectangle (SourceX, SourceY) - /// (SourceX + Width, SourceY + Height) to the video display rectangle - /// (DestinationX, DestinationY) (DestinationX + Width, DestinationY + Height). - /// The BltBuffer and Delta are not used in this mode. - /// - EfiBltVideoToVideo, - - EfiGraphicsOutputBltOperationMax -} EFI_GRAPHICS_OUTPUT_BLT_OPERATION; - -/** - Blt a rectangle of pixels on the graphics screen. Blt stands for BLock Transfer. - - @param This Protocol instance pointer. - @param BltBuffer The data to transfer to the graphics screen. - Size is at least Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL). - @param BltOperation The operation to perform when copying BltBuffer on to the graphics screen. - @param SourceX The X coordinate of source for the BltOperation. - @param SourceY The Y coordinate of source for the BltOperation. - @param DestinationX The X coordinate of destination for the BltOperation. - @param DestinationY The Y coordinate of destination for the BltOperation. - @param Width The width of a rectangle in the blt rectangle in pixels. - @param Height The height of a rectangle in the blt rectangle in pixels. - @param Delta Not used for EfiBltVideoFill or the EfiBltVideoToVideo operation. - If a Delta of zero is used, the entire BltBuffer is being operated on. - If a subrectangle of the BltBuffer is being used then Delta - represents the number of bytes in a row of the BltBuffer. - - @retval EFI_SUCCESS BltBuffer was drawn to the graphics screen. - @retval EFI_INVALID_PARAMETER BltOperation is not valid. - @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT)( - IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This, - IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL - IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation, - IN UINTN SourceX, - IN UINTN SourceY, - IN UINTN DestinationX, - IN UINTN DestinationY, - IN UINTN Width, - IN UINTN Height, - IN UINTN Delta OPTIONAL - ); - -typedef struct { - /// - /// The number of modes supported by QueryMode() and SetMode(). - /// - UINT32 MaxMode; - /// - /// Current Mode of the graphics device. Valid mode numbers are 0 to MaxMode -1. - /// - UINT32 Mode; - /// - /// Pointer to read-only EFI_GRAPHICS_OUTPUT_MODE_INFORMATION data. - /// - EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *Info; - /// - /// Size of Info structure in bytes. - /// - UINTN SizeOfInfo; - /// - /// Base address of graphics linear frame buffer. - /// Offset zero in FrameBufferBase represents the upper left pixel of the display. - /// - EFI_PHYSICAL_ADDRESS FrameBufferBase; - /// - /// Amount of frame buffer needed to support the active mode as defined by - /// PixelsPerScanLine xVerticalResolution x PixelElementSize. - /// - UINTN FrameBufferSize; -} EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE; - -/// -/// Provides a basic abstraction to set video modes and copy pixels to and from -/// the graphics controller's frame buffer. The linear address of the hardware -/// frame buffer is also exposed so software can write directly to the video hardware. -/// -struct _EFI_GRAPHICS_OUTPUT_PROTOCOL { - EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE QueryMode; - EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE SetMode; - EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT Blt; - /// - /// Pointer to EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE data. - /// - EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE *Mode; -}; - -extern EFI_GUID gEfiGraphicsOutputProtocolGuid; - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/SimpleTextIn.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/SimpleTextIn.h deleted file mode 100644 index adf67eff4d..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/SimpleTextIn.h +++ /dev/null @@ -1,134 +0,0 @@ -/** @file - Simple Text Input protocol from the UEFI 2.0 specification. - - Abstraction of a very simple input device like a keyboard or serial - terminal. - - Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __SIMPLE_TEXT_IN_PROTOCOL_H__ -#define __SIMPLE_TEXT_IN_PROTOCOL_H__ - -#define EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID \ - { \ - 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ - } - -typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL; - -/// -/// Protocol GUID name defined in EFI1.1. -/// -#define SIMPLE_INPUT_PROTOCOL EFI_SIMPLE_TEXT_INPUT_PROTOCOL_GUID - -/// -/// Protocol name in EFI1.1 for backward-compatible. -/// -typedef struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL SIMPLE_INPUT_INTERFACE; - -/// -/// The keystroke information for the key that was pressed. -/// -typedef struct { - UINT16 ScanCode; - CHAR16 UnicodeChar; -} EFI_INPUT_KEY; - -// -// Required unicode control chars -// -#define CHAR_NULL 0x0000 -#define CHAR_BACKSPACE 0x0008 -#define CHAR_TAB 0x0009 -#define CHAR_LINEFEED 0x000A -#define CHAR_CARRIAGE_RETURN 0x000D - -// -// EFI Scan codes -// -#define SCAN_NULL 0x0000 -#define SCAN_UP 0x0001 -#define SCAN_DOWN 0x0002 -#define SCAN_RIGHT 0x0003 -#define SCAN_LEFT 0x0004 -#define SCAN_HOME 0x0005 -#define SCAN_END 0x0006 -#define SCAN_INSERT 0x0007 -#define SCAN_DELETE 0x0008 -#define SCAN_PAGE_UP 0x0009 -#define SCAN_PAGE_DOWN 0x000A -#define SCAN_F1 0x000B -#define SCAN_F2 0x000C -#define SCAN_F3 0x000D -#define SCAN_F4 0x000E -#define SCAN_F5 0x000F -#define SCAN_F6 0x0010 -#define SCAN_F7 0x0011 -#define SCAN_F8 0x0012 -#define SCAN_F9 0x0013 -#define SCAN_F10 0x0014 -#define SCAN_ESC 0x0017 - -/** - Reset the input device and optionally run diagnostics - - @param This Protocol instance pointer. - @param ExtendedVerification Driver may perform diagnostics on reset. - - @retval EFI_SUCCESS The device was reset. - @retval EFI_DEVICE_ERROR The device is not functioning properly and could not be reset. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_INPUT_RESET)( - IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, - IN BOOLEAN ExtendedVerification - ); - -/** - Reads the next keystroke from the input device. The WaitForKey Event can - be used to test for existence of a keystroke via WaitForEvent () call. - - @param This Protocol instance pointer. - @param Key A pointer to a buffer that is filled in with the keystroke - information for the key that was pressed. - - @retval EFI_SUCCESS The keystroke information was returned. - @retval EFI_NOT_READY There was no keystroke data available. - @retval EFI_DEVICE_ERROR The keystroke information was not returned due to - hardware errors. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_INPUT_READ_KEY)( - IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This, - OUT EFI_INPUT_KEY *Key - ); - -/// -/// The EFI_SIMPLE_TEXT_INPUT_PROTOCOL is used on the ConsoleIn device. -/// It is the minimum required protocol for ConsoleIn. -/// -struct _EFI_SIMPLE_TEXT_INPUT_PROTOCOL { - EFI_INPUT_RESET Reset; - EFI_INPUT_READ_KEY ReadKeyStroke; - /// - /// Event to use with WaitForEvent() to wait for a key to be available - /// - EFI_EVENT WaitForKey; -}; - -extern EFI_GUID gEfiSimpleTextInProtocolGuid; - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/SimpleTextInEx.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/SimpleTextInEx.h deleted file mode 100644 index 5ef1639c2b..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/SimpleTextInEx.h +++ /dev/null @@ -1,325 +0,0 @@ -/** @file - Simple Text Input Ex protocol from the UEFI 2.0 specification. - - This protocol defines an extension to the EFI_SIMPLE_TEXT_INPUT_PROTOCOL - which exposes much more state and modifier information from the input device, - also allows one to register a notification for a particular keystroke. - - Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __SIMPLE_TEXT_IN_EX_H__ -#define __SIMPLE_TEXT_IN_EX_H__ - -#include - -#define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \ - {0xdd9e7534, 0x7762, 0x4698, { 0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa } } - - -typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL; - -/** - The Reset() function resets the input device hardware. As part - of initialization process, the firmware/device will make a quick - but reasonable attempt to verify that the device is functioning. - If the ExtendedVerification flag is TRUE the firmware may take - an extended amount of time to verify the device is operating on - reset. Otherwise the reset operation is to occur as quickly as - possible. The hardware verification process is not defined by - this specification and is left up to the platform firmware or - driver to implement. - - @param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance. - - @param ExtendedVerification Indicates that the driver may - perform a more exhaustive - verification operation of the - device during reset. - - - @retval EFI_SUCCESS The device was reset. - - @retval EFI_DEVICE_ERROR The device is not functioning - correctly and could not be reset. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_INPUT_RESET_EX)( - IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, - IN BOOLEAN ExtendedVerification -); - - -/// -/// EFI_KEY_TOGGLE_STATE. The toggle states are defined. -/// They are: EFI_TOGGLE_STATE_VALID, EFI_SCROLL_LOCK_ACTIVE -/// EFI_NUM_LOCK_ACTIVE, EFI_CAPS_LOCK_ACTIVE -/// -typedef UINT8 EFI_KEY_TOGGLE_STATE; - -typedef struct _EFI_KEY_STATE { - /// - /// Reflects the currently pressed shift - /// modifiers for the input device. The - /// returned value is valid only if the high - /// order bit has been set. - /// - UINT32 KeyShiftState; - /// - /// Reflects the current internal state of - /// various toggled attributes. The returned - /// value is valid only if the high order - /// bit has been set. - /// - EFI_KEY_TOGGLE_STATE KeyToggleState; -} EFI_KEY_STATE; - -typedef struct { - /// - /// The EFI scan code and Unicode value returned from the input device. - /// - EFI_INPUT_KEY Key; - /// - /// The current state of various toggled attributes as well as input modifier values. - /// - EFI_KEY_STATE KeyState; -} EFI_KEY_DATA; - -// -// Any Shift or Toggle State that is valid should have -// high order bit set. -// -// Shift state -// -#define EFI_SHIFT_STATE_VALID 0x80000000 -#define EFI_RIGHT_SHIFT_PRESSED 0x00000001 -#define EFI_LEFT_SHIFT_PRESSED 0x00000002 -#define EFI_RIGHT_CONTROL_PRESSED 0x00000004 -#define EFI_LEFT_CONTROL_PRESSED 0x00000008 -#define EFI_RIGHT_ALT_PRESSED 0x00000010 -#define EFI_LEFT_ALT_PRESSED 0x00000020 -#define EFI_RIGHT_LOGO_PRESSED 0x00000040 -#define EFI_LEFT_LOGO_PRESSED 0x00000080 -#define EFI_MENU_KEY_PRESSED 0x00000100 -#define EFI_SYS_REQ_PRESSED 0x00000200 - -// -// Toggle state -// -#define EFI_TOGGLE_STATE_VALID 0x80 -#define EFI_KEY_STATE_EXPOSED 0x40 -#define EFI_SCROLL_LOCK_ACTIVE 0x01 -#define EFI_NUM_LOCK_ACTIVE 0x02 -#define EFI_CAPS_LOCK_ACTIVE 0x04 - -// -// EFI Scan codes -// -#define SCAN_F11 0x0015 -#define SCAN_F12 0x0016 -#define SCAN_PAUSE 0x0048 -#define SCAN_F13 0x0068 -#define SCAN_F14 0x0069 -#define SCAN_F15 0x006A -#define SCAN_F16 0x006B -#define SCAN_F17 0x006C -#define SCAN_F18 0x006D -#define SCAN_F19 0x006E -#define SCAN_F20 0x006F -#define SCAN_F21 0x0070 -#define SCAN_F22 0x0071 -#define SCAN_F23 0x0072 -#define SCAN_F24 0x0073 -#define SCAN_MUTE 0x007F -#define SCAN_VOLUME_UP 0x0080 -#define SCAN_VOLUME_DOWN 0x0081 -#define SCAN_BRIGHTNESS_UP 0x0100 -#define SCAN_BRIGHTNESS_DOWN 0x0101 -#define SCAN_SUSPEND 0x0102 -#define SCAN_HIBERNATE 0x0103 -#define SCAN_TOGGLE_DISPLAY 0x0104 -#define SCAN_RECOVERY 0x0105 -#define SCAN_EJECT 0x0106 - -/** - The function reads the next keystroke from the input device. If - there is no pending keystroke the function returns - EFI_NOT_READY. If there is a pending keystroke, then - KeyData.Key.ScanCode is the EFI scan code defined in Error! - Reference source not found. The KeyData.Key.UnicodeChar is the - actual printable character or is zero if the key does not - represent a printable character (control key, function key, - etc.). The KeyData.KeyState is shift state for the character - reflected in KeyData.Key.UnicodeChar or KeyData.Key.ScanCode . - When interpreting the data from this function, it should be - noted that if a class of printable characters that are - normally adjusted by shift modifiers (e.g. Shift Key + "f" - key) would be presented solely as a KeyData.Key.UnicodeChar - without the associated shift state. So in the previous example - of a Shift Key + "f" key being pressed, the only pertinent - data returned would be KeyData.Key.UnicodeChar with the value - of "F". This of course would not typically be the case for - non-printable characters such as the pressing of the Right - Shift Key + F10 key since the corresponding returned data - would be reflected both in the KeyData.KeyState.KeyShiftState - and KeyData.Key.ScanCode values. UEFI drivers which implement - the EFI_SIMPLE_TEXT_INPUT_EX protocol are required to return - KeyData.Key and KeyData.KeyState values. These drivers must - always return the most current state of - KeyData.KeyState.KeyShiftState and - KeyData.KeyState.KeyToggleState. It should also be noted that - certain input devices may not be able to produce shift or toggle - state information, and in those cases the high order bit in the - respective Toggle and Shift state fields should not be active. - - - @param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance. - - @param KeyData A pointer to a buffer that is filled in with - the keystroke state data for the key that was - pressed. - - - @retval EFI_SUCCESS The keystroke information was - returned. - - @retval EFI_NOT_READY There was no keystroke data available. - EFI_DEVICE_ERROR The keystroke - information was not returned due to - hardware errors. - - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_INPUT_READ_KEY_EX)( - IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, - OUT EFI_KEY_DATA *KeyData -); - -/** - The SetState() function allows the input device hardware to - have state settings adjusted. - - @param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance. - - @param KeyToggleState Pointer to the EFI_KEY_TOGGLE_STATE to - set the state for the input device. - - - @retval EFI_SUCCESS The device state was set appropriately. - - @retval EFI_DEVICE_ERROR The device is not functioning - correctly and could not have the - setting adjusted. - - @retval EFI_UNSUPPORTED The device does not support the - ability to have its state set. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SET_STATE)( - IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, - IN EFI_KEY_TOGGLE_STATE *KeyToggleState -); - -/// -/// The function will be called when the key sequence is typed specified by KeyData. -/// -typedef -EFI_STATUS -(EFIAPI *EFI_KEY_NOTIFY_FUNCTION)( - IN EFI_KEY_DATA *KeyData -); - -/** - The RegisterKeystrokeNotify() function registers a function - which will be called when a specified keystroke will occur. - - @param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance. - - @param KeyData A pointer to a buffer that is filled in with - the keystroke information for the key that was - pressed. - - @param KeyNotificationFunction Points to the function to be - called when the key sequence - is typed specified by KeyData. - - - @param NotifyHandle Points to the unique handle assigned to - the registered notification. - - @retval EFI_SUCCESS The device state was set - appropriately. - - @retval EFI_OUT_OF_RESOURCES Unable to allocate necessary - data structures. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_REGISTER_KEYSTROKE_NOTIFY)( - IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, - IN EFI_KEY_DATA *KeyData, - IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction, - OUT VOID **NotifyHandle -); - -/** - The UnregisterKeystrokeNotify() function removes the - notification which was previously registered. - - @param This A pointer to the EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL instance. - - @param NotificationHandle The handle of the notification - function being unregistered. - - @retval EFI_SUCCESS The device state was set appropriately. - - @retval EFI_INVALID_PARAMETER The NotificationHandle is - invalid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_UNREGISTER_KEYSTROKE_NOTIFY)( - IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This, - IN VOID *NotificationHandle -); - - -/// -/// The EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL is used on the ConsoleIn -/// device. It is an extension to the Simple Text Input protocol -/// which allows a variety of extended shift state information to be -/// returned. -/// -struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL{ - EFI_INPUT_RESET_EX Reset; - EFI_INPUT_READ_KEY_EX ReadKeyStrokeEx; - /// - /// Event to use with WaitForEvent() to wait for a key to be available. - /// - EFI_EVENT WaitForKeyEx; - EFI_SET_STATE SetState; - EFI_REGISTER_KEYSTROKE_NOTIFY RegisterKeyNotify; - EFI_UNREGISTER_KEYSTROKE_NOTIFY UnregisterKeyNotify; -}; - - -extern EFI_GUID gEfiSimpleTextInputExProtocolGuid; - -#endif - diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/SimpleTextOut.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/SimpleTextOut.h deleted file mode 100644 index 8a37ce9add..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Protocol/SimpleTextOut.h +++ /dev/null @@ -1,415 +0,0 @@ -/** @file - Simple Text Out protocol from the UEFI 2.0 specification. - - Abstraction of a very simple text based output device like VGA text mode or - a serial terminal. The Simple Text Out protocol instance can represent - a single hardware device or a virtual device that is an aggregation - of multiple physical devices. - -Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
-This file and the accompanying materials are licensed and made available under are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __SIMPLE_TEXT_OUT_H__ -#define __SIMPLE_TEXT_OUT_H__ - -#define EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID \ - { \ - 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b } \ - } - -/// -/// Protocol GUID defined in EFI1.1. -/// -#define SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL_GUID - -typedef struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL; - -/// -/// Backward-compatible with EFI1.1. -/// -typedef EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL SIMPLE_TEXT_OUTPUT_INTERFACE; - -// -// Define's for required EFI Unicode Box Draw characters -// -#define BOXDRAW_HORIZONTAL 0x2500 -#define BOXDRAW_VERTICAL 0x2502 -#define BOXDRAW_DOWN_RIGHT 0x250c -#define BOXDRAW_DOWN_LEFT 0x2510 -#define BOXDRAW_UP_RIGHT 0x2514 -#define BOXDRAW_UP_LEFT 0x2518 -#define BOXDRAW_VERTICAL_RIGHT 0x251c -#define BOXDRAW_VERTICAL_LEFT 0x2524 -#define BOXDRAW_DOWN_HORIZONTAL 0x252c -#define BOXDRAW_UP_HORIZONTAL 0x2534 -#define BOXDRAW_VERTICAL_HORIZONTAL 0x253c -#define BOXDRAW_DOUBLE_HORIZONTAL 0x2550 -#define BOXDRAW_DOUBLE_VERTICAL 0x2551 -#define BOXDRAW_DOWN_RIGHT_DOUBLE 0x2552 -#define BOXDRAW_DOWN_DOUBLE_RIGHT 0x2553 -#define BOXDRAW_DOUBLE_DOWN_RIGHT 0x2554 -#define BOXDRAW_DOWN_LEFT_DOUBLE 0x2555 -#define BOXDRAW_DOWN_DOUBLE_LEFT 0x2556 -#define BOXDRAW_DOUBLE_DOWN_LEFT 0x2557 -#define BOXDRAW_UP_RIGHT_DOUBLE 0x2558 -#define BOXDRAW_UP_DOUBLE_RIGHT 0x2559 -#define BOXDRAW_DOUBLE_UP_RIGHT 0x255a -#define BOXDRAW_UP_LEFT_DOUBLE 0x255b -#define BOXDRAW_UP_DOUBLE_LEFT 0x255c -#define BOXDRAW_DOUBLE_UP_LEFT 0x255d -#define BOXDRAW_VERTICAL_RIGHT_DOUBLE 0x255e -#define BOXDRAW_VERTICAL_DOUBLE_RIGHT 0x255f -#define BOXDRAW_DOUBLE_VERTICAL_RIGHT 0x2560 -#define BOXDRAW_VERTICAL_LEFT_DOUBLE 0x2561 -#define BOXDRAW_VERTICAL_DOUBLE_LEFT 0x2562 -#define BOXDRAW_DOUBLE_VERTICAL_LEFT 0x2563 -#define BOXDRAW_DOWN_HORIZONTAL_DOUBLE 0x2564 -#define BOXDRAW_DOWN_DOUBLE_HORIZONTAL 0x2565 -#define BOXDRAW_DOUBLE_DOWN_HORIZONTAL 0x2566 -#define BOXDRAW_UP_HORIZONTAL_DOUBLE 0x2567 -#define BOXDRAW_UP_DOUBLE_HORIZONTAL 0x2568 -#define BOXDRAW_DOUBLE_UP_HORIZONTAL 0x2569 -#define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE 0x256a -#define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL 0x256b -#define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL 0x256c - -// -// EFI Required Block Elements Code Chart -// -#define BLOCKELEMENT_FULL_BLOCK 0x2588 -#define BLOCKELEMENT_LIGHT_SHADE 0x2591 - -// -// EFI Required Geometric Shapes Code Chart -// -#define GEOMETRICSHAPE_UP_TRIANGLE 0x25b2 -#define GEOMETRICSHAPE_RIGHT_TRIANGLE 0x25ba -#define GEOMETRICSHAPE_DOWN_TRIANGLE 0x25bc -#define GEOMETRICSHAPE_LEFT_TRIANGLE 0x25c4 - -// -// EFI Required Arrow shapes -// -#define ARROW_LEFT 0x2190 -#define ARROW_UP 0x2191 -#define ARROW_RIGHT 0x2192 -#define ARROW_DOWN 0x2193 - -// -// EFI Console Colours -// -#define EFI_BLACK 0x00 -#define EFI_BLUE 0x01 -#define EFI_GREEN 0x02 -#define EFI_CYAN (EFI_BLUE | EFI_GREEN) -#define EFI_RED 0x04 -#define EFI_MAGENTA (EFI_BLUE | EFI_RED) -#define EFI_BROWN (EFI_GREEN | EFI_RED) -#define EFI_LIGHTGRAY (EFI_BLUE | EFI_GREEN | EFI_RED) -#define EFI_BRIGHT 0x08 -#define EFI_DARKGRAY (EFI_BLACK | EFI_BRIGHT) -#define EFI_LIGHTBLUE (EFI_BLUE | EFI_BRIGHT) -#define EFI_LIGHTGREEN (EFI_GREEN | EFI_BRIGHT) -#define EFI_LIGHTCYAN (EFI_CYAN | EFI_BRIGHT) -#define EFI_LIGHTRED (EFI_RED | EFI_BRIGHT) -#define EFI_LIGHTMAGENTA (EFI_MAGENTA | EFI_BRIGHT) -#define EFI_YELLOW (EFI_BROWN | EFI_BRIGHT) -#define EFI_WHITE (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT) - -// -// Macro to accept color values in their raw form to create -// a value that represents both a foreground and background -// color in a single byte. -// For Foreground, and EFI_* value is valid from EFI_BLACK(0x00) to -// EFI_WHITE (0x0F). -// For Background, only EFI_BLACK, EFI_BLUE, EFI_GREEN, EFI_CYAN, -// EFI_RED, EFI_MAGENTA, EFI_BROWN, and EFI_LIGHTGRAY are acceptable -// -// Do not use EFI_BACKGROUND_xxx values with this macro. -// -#define EFI_TEXT_ATTR(Foreground,Background) ((Foreground) | ((Background) << 4)) - -#define EFI_BACKGROUND_BLACK 0x00 -#define EFI_BACKGROUND_BLUE 0x10 -#define EFI_BACKGROUND_GREEN 0x20 -#define EFI_BACKGROUND_CYAN (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN) -#define EFI_BACKGROUND_RED 0x40 -#define EFI_BACKGROUND_MAGENTA (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED) -#define EFI_BACKGROUND_BROWN (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) -#define EFI_BACKGROUND_LIGHTGRAY (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED) - -// -// We currently define attributes from 0 - 7F for color manipulations -// To internally handle the local display characteristics for a particular character, -// Bit 7 signifies the local glyph representation for a character. If turned on, glyphs will be -// pulled from the wide glyph database and will display locally as a wide character (16 X 19 versus 8 X 19) -// If bit 7 is off, the narrow glyph database will be used. This does NOT affect information that is sent to -// non-local displays, such as serial or LAN consoles. -// -#define EFI_WIDE_ATTRIBUTE 0x80 - -/** - Reset the text output device hardware and optionaly run diagnostics - - @param This The protocol instance pointer. - @param ExtendedVerification Driver may perform more exhaustive verfication - operation of the device during reset. - - @retval EFI_SUCCESS The text output device was reset. - @retval EFI_DEVICE_ERROR The text output device is not functioning correctly and - could not be reset. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_TEXT_RESET)( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN BOOLEAN ExtendedVerification - ); - -/** - Write a string to the output device. - - @param This The protocol instance pointer. - @param String The NULL-terminated string to be displayed on the output - device(s). All output devices must also support the Unicode - drawing character codes defined in this file. - - @retval EFI_SUCCESS The string was output to the device. - @retval EFI_DEVICE_ERROR The device reported an error while attempting to output - the text. - @retval EFI_UNSUPPORTED The output device's mode is not currently in a - defined text mode. - @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the - characters in the string could not be - rendered and were skipped. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_TEXT_STRING)( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN CHAR16 *String - ); - -/** - Verifies that all characters in a string can be output to the - target device. - - @param This The protocol instance pointer. - @param String The NULL-terminated string to be examined for the output - device(s). - - @retval EFI_SUCCESS The device(s) are capable of rendering the output string. - @retval EFI_UNSUPPORTED Some of the characters in the string cannot be - rendered by one or more of the output devices mapped - by the EFI handle. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_TEXT_TEST_STRING)( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN CHAR16 *String - ); - -/** - Returns information for an available text mode that the output device(s) - supports. - - @param This The protocol instance pointer. - @param ModeNumber The mode number to return information on. - @param Columns Returns the geometry of the text output device for the - requested ModeNumber. - @param Rows Returns the geometry of the text output device for the - requested ModeNumber. - - @retval EFI_SUCCESS The requested mode information was returned. - @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. - @retval EFI_UNSUPPORTED The mode number was not valid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_TEXT_QUERY_MODE)( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN UINTN ModeNumber, - OUT UINTN *Columns, - OUT UINTN *Rows - ); - -/** - Sets the output device(s) to a specified mode. - - @param This The protocol instance pointer. - @param ModeNumber The mode number to set. - - @retval EFI_SUCCESS The requested text mode was set. - @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. - @retval EFI_UNSUPPORTED The mode number was not valid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_TEXT_SET_MODE)( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN UINTN ModeNumber - ); - -/** - Sets the background and foreground colors for the OutputString () and - ClearScreen () functions. - - @param This The protocol instance pointer. - @param Attribute The attribute to set. Bits 0..3 are the foreground color, and - bits 4..6 are the background color. All other bits are undefined - and must be zero. The valid Attributes are defined in this file. - - @retval EFI_SUCCESS The attribute was set. - @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. - @retval EFI_UNSUPPORTED The attribute requested is not defined. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_TEXT_SET_ATTRIBUTE)( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN UINTN Attribute - ); - -/** - Clears the output device(s) display to the currently selected background - color. - - @param This The protocol instance pointer. - - @retval EFI_SUCCESS The operation completed successfully. - @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. - @retval EFI_UNSUPPORTED The output device is not in a valid text mode. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_TEXT_CLEAR_SCREEN)( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This - ); - -/** - Sets the current coordinates of the cursor position - - @param This The protocol instance pointer. - @param Column The position to set the cursor to. Must be greater than or - equal to zero and less than the number of columns and rows - by QueryMode (). - @param Row The position to set the cursor to. Must be greater than or - equal to zero and less than the number of columns and rows - by QueryMode (). - - @retval EFI_SUCCESS The operation completed successfully. - @retval EFI_DEVICE_ERROR The device had an error and could not complete the request. - @retval EFI_UNSUPPORTED The output device is not in a valid text mode, or the - cursor position is invalid for the current mode. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_TEXT_SET_CURSOR_POSITION)( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN UINTN Column, - IN UINTN Row - ); - -/** - Makes the cursor visible or invisible - - @param This The protocol instance pointer. - @param Visible If TRUE, the cursor is set to be visible. If FALSE, the cursor is - set to be invisible. - - @retval EFI_SUCCESS The operation completed successfully. - @retval EFI_DEVICE_ERROR The device had an error and could not complete the - request, or the device does not support changing - the cursor mode. - @retval EFI_UNSUPPORTED The output device is not in a valid text mode. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_TEXT_ENABLE_CURSOR)( - IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This, - IN BOOLEAN Visible - ); - -/** - @par Data Structure Description: - Mode Structure pointed to by Simple Text Out protocol. -**/ -typedef struct { - /// - /// The number of modes supported by QueryMode () and SetMode (). - /// - INT32 MaxMode; - - // - // current settings - // - - /// - /// The text mode of the output device(s). - /// - INT32 Mode; - /// - /// The current character output attribute. - /// - INT32 Attribute; - /// - /// The cursor's column. - /// - INT32 CursorColumn; - /// - /// The cursor's row. - /// - INT32 CursorRow; - /// - /// The cursor is currently visbile or not. - /// - BOOLEAN CursorVisible; -} EFI_SIMPLE_TEXT_OUTPUT_MODE; - -/// -/// The SIMPLE_TEXT_OUTPUT protocol is used to control text-based output devices. -/// It is the minimum required protocol for any handle supplied as the ConsoleOut -/// or StandardError device. In addition, the minimum supported text mode of such -/// devices is at least 80 x 25 characters. -/// -struct _EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL { - EFI_TEXT_RESET Reset; - - EFI_TEXT_STRING OutputString; - EFI_TEXT_TEST_STRING TestString; - - EFI_TEXT_QUERY_MODE QueryMode; - EFI_TEXT_SET_MODE SetMode; - EFI_TEXT_SET_ATTRIBUTE SetAttribute; - - EFI_TEXT_CLEAR_SCREEN ClearScreen; - EFI_TEXT_SET_CURSOR_POSITION SetCursorPosition; - EFI_TEXT_ENABLE_CURSOR EnableCursor; - - /// - /// Pointer to SIMPLE_TEXT_OUTPUT_MODE data. - /// - EFI_SIMPLE_TEXT_OUTPUT_MODE *Mode; -}; - -extern EFI_GUID gEfiSimpleTextOutProtocolGuid; - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi.h deleted file mode 100644 index 9e15491a87..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi.h +++ /dev/null @@ -1,27 +0,0 @@ -/** @file - - Root include file for Mde Package UEFI, UEFI_APPLICATION type modules. - - This is the include file for any module of type UEFI and UEFI_APPLICATION. Uefi modules only use - types defined via this include file and can be ported easily to any - environment. - -Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
-This file and the accompanying materials are licensed and made available under are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __PI_UEFI_H__ -#define __PI_UEFI_H__ - -#include -#include - -#endif - diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiBaseType.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiBaseType.h deleted file mode 100644 index 3a277ca8c8..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiBaseType.h +++ /dev/null @@ -1,301 +0,0 @@ -/** @file - Defines data types and constants introduced in UEFI. - -Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
-Portions copyright (c) 2011 - 2013, ARM Ltd. All rights reserved.
- -This file and the accompanying materials are licensed and made available under are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __UEFI_BASETYPE_H__ -#define __UEFI_BASETYPE_H__ - -#include - -// -// Basic data type definitions introduced in UEFI. -// - -/// -/// 128-bit buffer containing a unique identifier value. -/// -typedef GUID EFI_GUID; -/// -/// Function return status for EFI API. -/// -typedef RETURN_STATUS EFI_STATUS; -/// -/// A collection of related interfaces. -/// -typedef VOID *EFI_HANDLE; -/// -/// Handle to an event structure. -/// -typedef VOID *EFI_EVENT; -/// -/// Task priority level. -/// -typedef UINTN EFI_TPL; -/// -/// Logical block address. -/// -typedef UINT64 EFI_LBA; - -/// -/// 64-bit physical memory address. -/// -typedef UINT64 EFI_PHYSICAL_ADDRESS; - -/// -/// 64-bit virtual memory address. -/// -typedef UINT64 EFI_VIRTUAL_ADDRESS; - -/// -/// EFI Time Abstraction: -/// Year: 1900 - 9999 -/// Month: 1 - 12 -/// Day: 1 - 31 -/// Hour: 0 - 23 -/// Minute: 0 - 59 -/// Second: 0 - 59 -/// Nanosecond: 0 - 999,999,999 -/// TimeZone: -1440 to 1440 or 2047 -/// -typedef struct { - UINT16 Year; - UINT8 Month; - UINT8 Day; - UINT8 Hour; - UINT8 Minute; - UINT8 Second; - UINT8 Pad1; - UINT32 Nanosecond; - INT16 TimeZone; - UINT8 Daylight; - UINT8 Pad2; -} EFI_TIME; - - -/// -/// 4-byte buffer. An IPv4 internet protocol address. -/// -typedef struct { - UINT8 Addr[4]; -} EFI_IPv4_ADDRESS; - -/// -/// 16-byte buffer. An IPv6 internet protocol address. -/// -typedef struct { - UINT8 Addr[16]; -} EFI_IPv6_ADDRESS; - -/// -/// 32-byte buffer containing a network Media Access Control address. -/// -typedef struct { - UINT8 Addr[32]; -} EFI_MAC_ADDRESS; - -/// -/// 16-byte buffer aligned on a 4-byte boundary. -/// An IPv4 or IPv6 internet protocol address. -/// -typedef union { - UINT32 Addr[4]; - EFI_IPv4_ADDRESS v4; - EFI_IPv6_ADDRESS v6; -} EFI_IP_ADDRESS; - - -/// -/// Enumeration of EFI_STATUS. -///@{ -#define EFI_SUCCESS RETURN_SUCCESS -#define EFI_LOAD_ERROR RETURN_LOAD_ERROR -#define EFI_INVALID_PARAMETER RETURN_INVALID_PARAMETER -#define EFI_UNSUPPORTED RETURN_UNSUPPORTED -#define EFI_BAD_BUFFER_SIZE RETURN_BAD_BUFFER_SIZE -#define EFI_BUFFER_TOO_SMALL RETURN_BUFFER_TOO_SMALL -#define EFI_NOT_READY RETURN_NOT_READY -#define EFI_DEVICE_ERROR RETURN_DEVICE_ERROR -#define EFI_WRITE_PROTECTED RETURN_WRITE_PROTECTED -#define EFI_OUT_OF_RESOURCES RETURN_OUT_OF_RESOURCES -#define EFI_VOLUME_CORRUPTED RETURN_VOLUME_CORRUPTED -#define EFI_VOLUME_FULL RETURN_VOLUME_FULL -#define EFI_NO_MEDIA RETURN_NO_MEDIA -#define EFI_MEDIA_CHANGED RETURN_MEDIA_CHANGED -#define EFI_NOT_FOUND RETURN_NOT_FOUND -#define EFI_ACCESS_DENIED RETURN_ACCESS_DENIED -#define EFI_NO_RESPONSE RETURN_NO_RESPONSE -#define EFI_NO_MAPPING RETURN_NO_MAPPING -#define EFI_TIMEOUT RETURN_TIMEOUT -#define EFI_NOT_STARTED RETURN_NOT_STARTED -#define EFI_ALREADY_STARTED RETURN_ALREADY_STARTED -#define EFI_ABORTED RETURN_ABORTED -#define EFI_ICMP_ERROR RETURN_ICMP_ERROR -#define EFI_TFTP_ERROR RETURN_TFTP_ERROR -#define EFI_PROTOCOL_ERROR RETURN_PROTOCOL_ERROR -#define EFI_INCOMPATIBLE_VERSION RETURN_INCOMPATIBLE_VERSION -#define EFI_SECURITY_VIOLATION RETURN_SECURITY_VIOLATION -#define EFI_CRC_ERROR RETURN_CRC_ERROR -#define EFI_END_OF_MEDIA RETURN_END_OF_MEDIA -#define EFI_END_OF_FILE RETURN_END_OF_FILE -#define EFI_INVALID_LANGUAGE RETURN_INVALID_LANGUAGE -#define EFI_COMPROMISED_DATA RETURN_COMPROMISED_DATA - -#define EFI_WARN_UNKNOWN_GLYPH RETURN_WARN_UNKNOWN_GLYPH -#define EFI_WARN_DELETE_FAILURE RETURN_WARN_DELETE_FAILURE -#define EFI_WARN_WRITE_FAILURE RETURN_WARN_WRITE_FAILURE -#define EFI_WARN_BUFFER_TOO_SMALL RETURN_WARN_BUFFER_TOO_SMALL -#define EFI_WARN_STALE_DATA RETURN_WARN_STALE_DATA -///@} - -/// -/// Define macro to encode the status code. -/// -#define EFIERR(_a) ENCODE_ERROR(_a) - -#define EFI_ERROR(A) RETURN_ERROR(A) - -/// -/// ICMP error definitions -///@{ -#define EFI_NETWORK_UNREACHABLE EFIERR(100) -#define EFI_HOST_UNREACHABLE EFIERR(101) -#define EFI_PROTOCOL_UNREACHABLE EFIERR(102) -#define EFI_PORT_UNREACHABLE EFIERR(103) -///@} - -/// -/// Tcp connection status definitions -///@{ -#define EFI_CONNECTION_FIN EFIERR(104) -#define EFI_CONNECTION_RESET EFIERR(105) -#define EFI_CONNECTION_REFUSED EFIERR(106) -///@} - -// -// The EFI memory allocation functions work in units of EFI_PAGEs that are -// 4KB. This should in no way be confused with the page size of the processor. -// An EFI_PAGE is just the quanta of memory in EFI. -// -#define EFI_PAGE_SIZE SIZE_4KB -#define EFI_PAGE_MASK 0xFFF -#define EFI_PAGE_SHIFT 12 - -/** - Macro that converts a size, in bytes, to a number of EFI_PAGESs. - - @param Size A size in bytes. This parameter is assumed to be type UINTN. - Passing in a parameter that is larger than UINTN may produce - unexpected results. - - @return The number of EFI_PAGESs associated with the number of bytes specified - by Size. - -**/ -#define EFI_SIZE_TO_PAGES(Size) (((Size) >> EFI_PAGE_SHIFT) + (((Size) & EFI_PAGE_MASK) ? 1 : 0)) - -/** - Macro that converts a number of EFI_PAGEs to a size in bytes. - - @param Pages The number of EFI_PAGES. This parameter is assumed to be - type UINTN. Passing in a parameter that is larger than - UINTN may produce unexpected results. - - @return The number of bytes associated with the number of EFI_PAGEs specified - by Pages. - -**/ -#define EFI_PAGES_TO_SIZE(Pages) ((Pages) << EFI_PAGE_SHIFT) - -/// -/// PE32+ Machine type for IA32 UEFI images. -/// -#define EFI_IMAGE_MACHINE_IA32 0x014C - -/// -/// PE32+ Machine type for IA64 UEFI images. -/// -#define EFI_IMAGE_MACHINE_IA64 0x0200 - -/// -/// PE32+ Machine type for EBC UEFI images. -/// -#define EFI_IMAGE_MACHINE_EBC 0x0EBC - -/// -/// PE32+ Machine type for X64 UEFI images. -/// -#define EFI_IMAGE_MACHINE_X64 0x8664 - -/// -/// PE32+ Machine type for ARM mixed ARM and Thumb/Thumb2 images. -/// -#define EFI_IMAGE_MACHINE_ARMTHUMB_MIXED 0x01C2 - -/// -/// PE32+ Machine type for AARCH64 A64 images. -/// -#define EFI_IMAGE_MACHINE_AARCH64 0xAA64 - - -#if defined (MDE_CPU_IA32) - -#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \ - (((Machine) == EFI_IMAGE_MACHINE_IA32) || ((Machine) == EFI_IMAGE_MACHINE_EBC)) - -#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_X64) - -#elif defined (MDE_CPU_IPF) - -#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \ - (((Machine) == EFI_IMAGE_MACHINE_IA64) || ((Machine) == EFI_IMAGE_MACHINE_EBC)) - -#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE) - -#elif defined (MDE_CPU_X64) - -#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \ - (((Machine) == EFI_IMAGE_MACHINE_X64) || ((Machine) == EFI_IMAGE_MACHINE_EBC)) - -#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_IA32) - -#elif defined (MDE_CPU_ARM) - -#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \ - (((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED) || ((Machine) == EFI_IMAGE_MACHINE_EBC)) - -#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_ARMTHUMB_MIXED) - -#elif defined (MDE_CPU_AARCH64) - -#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \ - (((Machine) == EFI_IMAGE_MACHINE_AARCH64) || ((Machine) == EFI_IMAGE_MACHINE_EBC)) - -#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE) - -#elif defined (MDE_CPU_EBC) - -/// -/// This is just to make sure you can cross compile with the EBC compiler. -/// It does not make sense to have a PE loader coded in EBC. -/// -#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) ((Machine) == EFI_IMAGE_MACHINE_EBC) - -#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE) - -#else -#error Unknown Processor Type -#endif - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiGpt.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiGpt.h deleted file mode 100644 index 85bca35f0e..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiGpt.h +++ /dev/null @@ -1,141 +0,0 @@ -/** @file - EFI Guid Partition Table Format Definition. - -Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.
-This file and the accompanying materials are licensed and made available under are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __UEFI_GPT_H__ -#define __UEFI_GPT_H__ - -/// -/// The primary GUID Partition Table Header must be -/// located in LBA 1 (i.e., the second logical block). -/// -#define PRIMARY_PART_HEADER_LBA 1 -/// -/// EFI Partition Table Signature: "EFI PART". -/// -#define EFI_PTAB_HEADER_ID SIGNATURE_64 ('E','F','I',' ','P','A','R','T') - -#pragma pack(1) - -/// -/// GPT Partition Table Header. -/// -typedef struct { - /// - /// The table header for the GPT partition Table. - /// This header contains EFI_PTAB_HEADER_ID. - /// - EFI_TABLE_HEADER Header; - /// - /// The LBA that contains this data structure. - /// - EFI_LBA MyLBA; - /// - /// LBA address of the alternate GUID Partition Table Header. - /// - EFI_LBA AlternateLBA; - /// - /// The first usable logical block that may be used - /// by a partition described by a GUID Partition Entry. - /// - EFI_LBA FirstUsableLBA; - /// - /// The last usable logical block that may be used - /// by a partition described by a GUID Partition Entry. - /// - EFI_LBA LastUsableLBA; - /// - /// GUID that can be used to uniquely identify the disk. - /// - EFI_GUID DiskGUID; - /// - /// The starting LBA of the GUID Partition Entry array. - /// - EFI_LBA PartitionEntryLBA; - /// - /// The number of Partition Entries in the GUID Partition Entry array. - /// - UINT32 NumberOfPartitionEntries; - /// - /// The size, in bytes, of each the GUID Partition - /// Entry structures in the GUID Partition Entry - /// array. This field shall be set to a value of 128 x 2^n where n is - /// an integer greater than or equal to zero (e.g., 128, 256, 512, etc.). - /// - UINT32 SizeOfPartitionEntry; - /// - /// The CRC32 of the GUID Partition Entry array. - /// Starts at PartitionEntryLBA and is - /// computed over a byte length of - /// NumberOfPartitionEntries * SizeOfPartitionEntry. - /// - UINT32 PartitionEntryArrayCRC32; -} EFI_PARTITION_TABLE_HEADER; - -/// -/// GPT Partition Entry. -/// -typedef struct { - /// - /// Unique ID that defines the purpose and type of this Partition. A value of - /// zero defines that this partition entry is not being used. - /// - EFI_GUID PartitionTypeGUID; - /// - /// GUID that is unique for every partition entry. Every partition ever - /// created will have a unique GUID. - /// This GUID must be assigned when the GUID Partition Entry is created. - /// - EFI_GUID UniquePartitionGUID; - /// - /// Starting LBA of the partition defined by this entry - /// - EFI_LBA StartingLBA; - /// - /// Ending LBA of the partition defined by this entry. - /// - EFI_LBA EndingLBA; - /// - /// Attribute bits, all bits reserved by UEFI - /// Bit 0: If this bit is set, the partition is required for the platform to function. The owner/creator of the - /// partition indicates that deletion or modification of the contents can result in loss of platform - /// features or failure for the platform to boot or operate. The system cannot function normally if - /// this partition is removed, and it should be considered part of the hardware of the system. - /// Actions such as running diagnostics, system recovery, or even OS install or boot, could - /// potentially stop working if this partition is removed. Unless OS software or firmware - /// recognizes this partition, it should never be removed or modified as the UEFI firmware or - /// platform hardware may become non-functional. - /// Bit 1: If this bit is set, then firmware must not produce an EFI_BLOCK_IO_PROTOCOL device for - /// this partition. By not producing an EFI_BLOCK_IO_PROTOCOL partition, file system - /// mappings will not be created for this partition in UEFI. - /// Bit 2: This bit is set aside to let systems with traditional PC-AT BIOS firmware implementations - /// inform certain limited, special-purpose software running on these systems that a GPT - /// partition may be bootable. The UEFI boot manager must ignore this bit when selecting - /// a UEFI-compliant application, e.g., an OS loader. - /// Bits 3-47: Undefined and must be zero. Reserved for expansion by future versions of the UEFI - /// specification. - /// Bits 48-63: Reserved for GUID specific use. The use of these bits will vary depending on the - /// PartitionTypeGUID. Only the owner of the PartitionTypeGUID is allowed - /// to modify these bits. They must be preserved if Bits 0-47 are modified.. - /// - UINT64 Attributes; - /// - /// Null-terminated name of the partition. - /// - CHAR16 PartitionName[36]; -} EFI_PARTITION_ENTRY; - -#pragma pack() -#endif - - diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiInternalFormRepresentation.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiInternalFormRepresentation.h deleted file mode 100644 index 688940591a..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiInternalFormRepresentation.h +++ /dev/null @@ -1,2113 +0,0 @@ -/** @file - 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 - -Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
-This file and the accompanying materials are licensed and made available under are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - @par Revision Reference: - These definitions are from UEFI 2.1 and 2.2. - -**/ - -#ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__ -#define __UEFI_INTERNAL_FORMREPRESENTATION_H__ - -#include - -/// -/// The following types are currently defined: -/// -typedef VOID* EFI_HII_HANDLE; -typedef CHAR16* EFI_STRING; -typedef UINT16 EFI_IMAGE_ID; -typedef UINT16 EFI_QUESTION_ID; -typedef UINT16 EFI_STRING_ID; -typedef UINT16 EFI_FORM_ID; -typedef UINT16 EFI_VARSTORE_ID; -typedef UINT16 EFI_ANIMATION_ID; - -typedef UINT16 EFI_DEFAULT_ID; - -typedef UINT32 EFI_HII_FONT_STYLE; - - - -#pragma pack(1) - -// -// Definitions for Package Lists and Package Headers -// Section 27.3.1 -// - -/// -/// The header found at the start of each package list. -/// -typedef struct { - EFI_GUID PackageListGuid; - UINT32 PackageLength; -} EFI_HII_PACKAGE_LIST_HEADER; - -/// -/// The header found at the start of each package. -/// -typedef struct { - UINT32 Length:24; - UINT32 Type:8; - // UINT8 Data[...]; -} EFI_HII_PACKAGE_HEADER; - -// -// Value of HII package type -// -#define EFI_HII_PACKAGE_TYPE_ALL 0x00 -#define EFI_HII_PACKAGE_TYPE_GUID 0x01 -#define EFI_HII_PACKAGE_FORMS 0x02 -#define EFI_HII_PACKAGE_STRINGS 0x04 -#define EFI_HII_PACKAGE_FONTS 0x05 -#define EFI_HII_PACKAGE_IMAGES 0x06 -#define EFI_HII_PACKAGE_SIMPLE_FONTS 0x07 -#define EFI_HII_PACKAGE_DEVICE_PATH 0x08 -#define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x09 -#define EFI_HII_PACKAGE_ANIMATIONS 0x0A -#define EFI_HII_PACKAGE_END 0xDF -#define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN 0xE0 -#define EFI_HII_PACKAGE_TYPE_SYSTEM_END 0xFF - -// -// Definitions for Simplified Font Package -// - -/// -/// Contents of EFI_NARROW_GLYPH.Attributes. -///@{ -#define EFI_GLYPH_NON_SPACING 0x01 -#define EFI_GLYPH_WIDE 0x02 -#define EFI_GLYPH_HEIGHT 19 -#define EFI_GLYPH_WIDTH 8 -///@} - -/// -/// The EFI_NARROW_GLYPH has a preferred dimension (w x h) of 8 x 19 pixels. -/// -typedef struct { - /// - /// The Unicode representation of the glyph. The term weight is the - /// technical term for a character code. - /// - CHAR16 UnicodeWeight; - /// - /// The data element containing the glyph definitions. - /// - UINT8 Attributes; - /// - /// The column major glyph representation of the character. Bits - /// with values of one indicate that the corresponding pixel is to be - /// on when normally displayed; those with zero are off. - /// - UINT8 GlyphCol1[EFI_GLYPH_HEIGHT]; -} EFI_NARROW_GLYPH; - -/// -/// The EFI_WIDE_GLYPH has a preferred dimension (w x h) of 16 x 19 pixels, which is large enough -/// to accommodate logographic characters. -/// -typedef struct { - /// - /// The Unicode representation of the glyph. The term weight is the - /// technical term for a character code. - /// - CHAR16 UnicodeWeight; - /// - /// The data element containing the glyph definitions. - /// - UINT8 Attributes; - /// - /// The column major glyph representation of the character. Bits - /// with values of one indicate that the corresponding pixel is to be - /// on when normally displayed; those with zero are off. - /// - UINT8 GlyphCol1[EFI_GLYPH_HEIGHT]; - /// - /// The column major glyph representation of the character. Bits - /// with values of one indicate that the corresponding pixel is to be - /// on when normally displayed; those with zero are off. - /// - UINT8 GlyphCol2[EFI_GLYPH_HEIGHT]; - /// - /// Ensures that sizeof (EFI_WIDE_GLYPH) is twice the - /// sizeof (EFI_NARROW_GLYPH). The contents of Pad must - /// be zero. - /// - UINT8 Pad[3]; -} EFI_WIDE_GLYPH; - -/// -/// A simplified font package consists of a font header -/// followed by a series of glyph structures. -/// -typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR { - EFI_HII_PACKAGE_HEADER Header; - UINT16 NumberOfNarrowGlyphs; - UINT16 NumberOfWideGlyphs; - // EFI_NARROW_GLYPH NarrowGlyphs[]; - // EFI_WIDE_GLYPH WideGlyphs[]; -} EFI_HII_SIMPLE_FONT_PACKAGE_HDR; - -// -// Definitions for Font Package -// Section 27.3.3 -// - -// -// Value for font style -// -#define EFI_HII_FONT_STYLE_NORMAL 0x00000000 -#define EFI_HII_FONT_STYLE_BOLD 0x00000001 -#define EFI_HII_FONT_STYLE_ITALIC 0x00000002 -#define EFI_HII_FONT_STYLE_EMBOSS 0x00010000 -#define EFI_HII_FONT_STYLE_OUTLINE 0x00020000 -#define EFI_HII_FONT_STYLE_SHADOW 0x00040000 -#define EFI_HII_FONT_STYLE_UNDERLINE 0x00080000 -#define EFI_HII_FONT_STYLE_DBL_UNDER 0x00100000 - -typedef struct _EFI_HII_GLYPH_INFO { - UINT16 Width; - UINT16 Height; - INT16 OffsetX; - INT16 OffsetY; - INT16 AdvanceX; -} EFI_HII_GLYPH_INFO; - -/// -/// The fixed header consists of a standard record header, -/// then the character values in this section, the flags -/// (including the encoding method) and the offsets of the glyph -/// information, the glyph bitmaps and the character map. -/// -typedef struct _EFI_HII_FONT_PACKAGE_HDR { - EFI_HII_PACKAGE_HEADER Header; - UINT32 HdrSize; - UINT32 GlyphBlockOffset; - EFI_HII_GLYPH_INFO Cell; - EFI_HII_FONT_STYLE FontStyle; - CHAR16 FontFamily[1]; -} EFI_HII_FONT_PACKAGE_HDR; - -// -// Value of different glyph info block types -// -#define EFI_HII_GIBT_END 0x00 -#define EFI_HII_GIBT_GLYPH 0x10 -#define EFI_HII_GIBT_GLYPHS 0x11 -#define EFI_HII_GIBT_GLYPH_DEFAULT 0x12 -#define EFI_HII_GIBT_GLYPHS_DEFAULT 0x13 -#define EFI_HII_GIBT_DUPLICATE 0x20 -#define EFI_HII_GIBT_SKIP2 0x21 -#define EFI_HII_GIBT_SKIP1 0x22 -#define EFI_HII_GIBT_DEFAULTS 0x23 -#define EFI_HII_GIBT_EXT1 0x30 -#define EFI_HII_GIBT_EXT2 0x31 -#define EFI_HII_GIBT_EXT4 0x32 - -typedef struct _EFI_HII_GLYPH_BLOCK { - UINT8 BlockType; -} EFI_HII_GLYPH_BLOCK; - -// -// Definition of different glyph info block types -// - -typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK { - EFI_HII_GLYPH_BLOCK Header; - EFI_HII_GLYPH_INFO Cell; -} EFI_HII_GIBT_DEFAULTS_BLOCK; - -typedef struct _EFI_HII_GIBT_DUPLICATE_BLOCK { - EFI_HII_GLYPH_BLOCK Header; - CHAR16 CharValue; -} EFI_HII_GIBT_DUPLICATE_BLOCK; - -typedef struct _EFI_GLYPH_GIBT_END_BLOCK { - EFI_HII_GLYPH_BLOCK Header; -} EFI_GLYPH_GIBT_END_BLOCK; - -typedef struct _EFI_HII_GIBT_EXT1_BLOCK { - EFI_HII_GLYPH_BLOCK Header; - UINT8 BlockType2; - UINT8 Length; -} EFI_HII_GIBT_EXT1_BLOCK; - -typedef struct _EFI_HII_GIBT_EXT2_BLOCK { - EFI_HII_GLYPH_BLOCK Header; - UINT8 BlockType2; - UINT16 Length; -} EFI_HII_GIBT_EXT2_BLOCK; - -typedef struct _EFI_HII_GIBT_EXT4_BLOCK { - EFI_HII_GLYPH_BLOCK Header; - UINT8 BlockType2; - UINT32 Length; -} EFI_HII_GIBT_EXT4_BLOCK; - -typedef struct _EFI_HII_GIBT_GLYPH_BLOCK { - EFI_HII_GLYPH_BLOCK Header; - EFI_HII_GLYPH_INFO Cell; - UINT8 BitmapData[1]; -} EFI_HII_GIBT_GLYPH_BLOCK; - -typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK { - EFI_HII_GLYPH_BLOCK Header; - EFI_HII_GLYPH_INFO Cell; - UINT16 Count; - UINT8 BitmapData[1]; -} EFI_HII_GIBT_GLYPHS_BLOCK; - -typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK { - EFI_HII_GLYPH_BLOCK Header; - UINT8 BitmapData[1]; -} EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK; - -typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK { - EFI_HII_GLYPH_BLOCK Header; - UINT16 Count; - UINT8 BitmapData[1]; -} EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK; - -typedef struct _EFI_HII_GIBT_SKIP1_BLOCK { - EFI_HII_GLYPH_BLOCK Header; - UINT8 SkipCount; -} EFI_HII_GIBT_SKIP1_BLOCK; - -typedef struct _EFI_HII_GIBT_SKIP2_BLOCK { - EFI_HII_GLYPH_BLOCK Header; - UINT16 SkipCount; -} EFI_HII_GIBT_SKIP2_BLOCK; - -// -// Definitions for Device Path Package -// Section 27.3.4 -// - -/// -/// The device path package is used to carry a device path -/// associated with the package list. -/// -typedef struct _EFI_HII_DEVICE_PATH_PACKAGE_HDR { - EFI_HII_PACKAGE_HEADER Header; - // EFI_DEVICE_PATH_PROTOCOL DevicePath[]; -} EFI_HII_DEVICE_PATH_PACKAGE_HDR; - -// -// Definitions for GUID Package -// Section 27.3.5 -// - -/// -/// The GUID package is used to carry data where the format is defined by a GUID. -/// -typedef struct _EFI_HII_GUID_PACKAGE_HDR { - EFI_HII_PACKAGE_HEADER Header; - EFI_GUID Guid; - // Data per GUID definition may follow -} EFI_HII_GUID_PACKAGE_HDR; - -// -// Definitions for String Package -// Section 27.3.6 -// - -#define UEFI_CONFIG_LANG "x-UEFI" -#define UEFI_CONFIG_LANG_2 "x-i-UEFI" - -/// -/// The fixed header consists of a standard record header and then the string identifiers -/// contained in this section and the offsets of the string and language information. -/// -typedef struct _EFI_HII_STRING_PACKAGE_HDR { - EFI_HII_PACKAGE_HEADER Header; - UINT32 HdrSize; - UINT32 StringInfoOffset; - CHAR16 LanguageWindow[16]; - EFI_STRING_ID LanguageName; - CHAR8 Language[1]; -} EFI_HII_STRING_PACKAGE_HDR; - -typedef struct { - UINT8 BlockType; -} EFI_HII_STRING_BLOCK; - -// -// Value of different string information block types -// -#define EFI_HII_SIBT_END 0x00 -#define EFI_HII_SIBT_STRING_SCSU 0x10 -#define EFI_HII_SIBT_STRING_SCSU_FONT 0x11 -#define EFI_HII_SIBT_STRINGS_SCSU 0x12 -#define EFI_HII_SIBT_STRINGS_SCSU_FONT 0x13 -#define EFI_HII_SIBT_STRING_UCS2 0x14 -#define EFI_HII_SIBT_STRING_UCS2_FONT 0x15 -#define EFI_HII_SIBT_STRINGS_UCS2 0x16 -#define EFI_HII_SIBT_STRINGS_UCS2_FONT 0x17 -#define EFI_HII_SIBT_DUPLICATE 0x20 -#define EFI_HII_SIBT_SKIP2 0x21 -#define EFI_HII_SIBT_SKIP1 0x22 -#define EFI_HII_SIBT_EXT1 0x30 -#define EFI_HII_SIBT_EXT2 0x31 -#define EFI_HII_SIBT_EXT4 0x32 -#define EFI_HII_SIBT_FONT 0x40 - -// -// Definition of different string information block types -// - -typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK { - EFI_HII_STRING_BLOCK Header; - EFI_STRING_ID StringId; -} EFI_HII_SIBT_DUPLICATE_BLOCK; - -typedef struct _EFI_HII_SIBT_END_BLOCK { - EFI_HII_STRING_BLOCK Header; -} EFI_HII_SIBT_END_BLOCK; - -typedef struct _EFI_HII_SIBT_EXT1_BLOCK { - EFI_HII_STRING_BLOCK Header; - UINT8 BlockType2; - UINT8 Length; -} EFI_HII_SIBT_EXT1_BLOCK; - -typedef struct _EFI_HII_SIBT_EXT2_BLOCK { - EFI_HII_STRING_BLOCK Header; - UINT8 BlockType2; - UINT16 Length; -} EFI_HII_SIBT_EXT2_BLOCK; - -typedef struct _EFI_HII_SIBT_EXT4_BLOCK { - EFI_HII_STRING_BLOCK Header; - UINT8 BlockType2; - UINT32 Length; -} EFI_HII_SIBT_EXT4_BLOCK; - -typedef struct _EFI_HII_SIBT_FONT_BLOCK { - EFI_HII_SIBT_EXT2_BLOCK Header; - UINT8 FontId; - UINT16 FontSize; - EFI_HII_FONT_STYLE FontStyle; - CHAR16 FontName[1]; -} EFI_HII_SIBT_FONT_BLOCK; - -typedef struct _EFI_HII_SIBT_SKIP1_BLOCK { - EFI_HII_STRING_BLOCK Header; - UINT8 SkipCount; -} EFI_HII_SIBT_SKIP1_BLOCK; - -typedef struct _EFI_HII_SIBT_SKIP2_BLOCK { - EFI_HII_STRING_BLOCK Header; - UINT16 SkipCount; -} EFI_HII_SIBT_SKIP2_BLOCK; - -typedef struct _EFI_HII_SIBT_STRING_SCSU_BLOCK { - EFI_HII_STRING_BLOCK Header; - UINT8 StringText[1]; -} EFI_HII_SIBT_STRING_SCSU_BLOCK; - -typedef struct _EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK { - EFI_HII_STRING_BLOCK Header; - UINT8 FontIdentifier; - UINT8 StringText[1]; -} EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK; - -typedef struct _EFI_HII_SIBT_STRINGS_SCSU_BLOCK { - EFI_HII_STRING_BLOCK Header; - UINT16 StringCount; - UINT8 StringText[1]; -} EFI_HII_SIBT_STRINGS_SCSU_BLOCK; - -typedef struct _EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK { - EFI_HII_STRING_BLOCK Header; - UINT8 FontIdentifier; - UINT16 StringCount; - UINT8 StringText[1]; -} EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK; - -typedef struct _EFI_HII_SIBT_STRING_UCS2_BLOCK { - EFI_HII_STRING_BLOCK Header; - CHAR16 StringText[1]; -} EFI_HII_SIBT_STRING_UCS2_BLOCK; - -typedef struct _EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK { - EFI_HII_STRING_BLOCK Header; - UINT8 FontIdentifier; - CHAR16 StringText[1]; -} EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK; - -typedef struct _EFI_HII_SIBT_STRINGS_UCS2_BLOCK { - EFI_HII_STRING_BLOCK Header; - UINT16 StringCount; - CHAR16 StringText[1]; -} EFI_HII_SIBT_STRINGS_UCS2_BLOCK; - -typedef struct _EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK { - EFI_HII_STRING_BLOCK Header; - UINT8 FontIdentifier; - UINT16 StringCount; - CHAR16 StringText[1]; -} EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK; - -// -// Definitions for Image Package -// Section 27.3.7 -// - -typedef struct _EFI_HII_IMAGE_PACKAGE_HDR { - EFI_HII_PACKAGE_HEADER Header; - UINT32 ImageInfoOffset; - UINT32 PaletteInfoOffset; -} EFI_HII_IMAGE_PACKAGE_HDR; - -typedef struct _EFI_HII_IMAGE_BLOCK { - UINT8 BlockType; -} EFI_HII_IMAGE_BLOCK; - -// -// Value of different image information block types -// -#define EFI_HII_IIBT_END 0x00 -#define EFI_HII_IIBT_IMAGE_1BIT 0x10 -#define EFI_HII_IIBT_IMAGE_1BIT_TRANS 0x11 -#define EFI_HII_IIBT_IMAGE_4BIT 0x12 -#define EFI_HII_IIBT_IMAGE_4BIT_TRANS 0x13 -#define EFI_HII_IIBT_IMAGE_8BIT 0x14 -#define EFI_HII_IIBT_IMAGE_8BIT_TRANS 0x15 -#define EFI_HII_IIBT_IMAGE_24BIT 0x16 -#define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17 -#define EFI_HII_IIBT_IMAGE_JPEG 0x18 -#define EFI_HII_IIBT_DUPLICATE 0x20 -#define EFI_HII_IIBT_SKIP2 0x21 -#define EFI_HII_IIBT_SKIP1 0x22 -#define EFI_HII_IIBT_EXT1 0x30 -#define EFI_HII_IIBT_EXT2 0x31 -#define EFI_HII_IIBT_EXT4 0x32 - -// -// Definition of different image information block types -// - -typedef struct _EFI_HII_IIBT_END_BLOCK { - EFI_HII_IMAGE_BLOCK Header; -} EFI_HII_IIBT_END_BLOCK; - -typedef struct _EFI_HII_IIBT_EXT1_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - UINT8 BlockType2; - UINT8 Length; -} EFI_HII_IIBT_EXT1_BLOCK; - -typedef struct _EFI_HII_IIBT_EXT2_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - UINT8 BlockType2; - UINT16 Length; -} EFI_HII_IIBT_EXT2_BLOCK; - -typedef struct _EFI_HII_IIBT_EXT4_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - UINT8 BlockType2; - UINT32 Length; -} EFI_HII_IIBT_EXT4_BLOCK; - -typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BASE { - UINT16 Width; - UINT16 Height; - UINT8 Data[1]; -} EFI_HII_IIBT_IMAGE_1BIT_BASE; - -typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - UINT8 PaletteIndex; - EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap; -} EFI_HII_IIBT_IMAGE_1BIT_BLOCK; - -typedef struct _EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - UINT8 PaletteIndex; - EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap; -} EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK; - -typedef struct _EFI_HII_RGB_PIXEL { - UINT8 b; - UINT8 g; - UINT8 r; -} EFI_HII_RGB_PIXEL; - -typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BASE { - UINT16 Width; - UINT16 Height; - EFI_HII_RGB_PIXEL Bitmap[1]; -} EFI_HII_IIBT_IMAGE_24BIT_BASE; - -typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap; -} EFI_HII_IIBT_IMAGE_24BIT_BLOCK; - -typedef struct _EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap; -} EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK; - -typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BASE { - UINT16 Width; - UINT16 Height; - UINT8 Data[1]; -} EFI_HII_IIBT_IMAGE_4BIT_BASE; - -typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - UINT8 PaletteIndex; - EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap; -} EFI_HII_IIBT_IMAGE_4BIT_BLOCK; - -typedef struct _EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - UINT8 PaletteIndex; - EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap; -} EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK; - -typedef struct _EFI_HII_IIBT_IMAGE_8BIT_BASE { - UINT16 Width; - UINT16 Height; - UINT8 Data[1]; -} EFI_HII_IIBT_IMAGE_8BIT_BASE; - -typedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - UINT8 PaletteIndex; - EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap; -} EFI_HII_IIBT_IMAGE_8BIT_BLOCK; - -typedef struct _EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - UINT8 PaletteIndex; - EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap; -} EFI_HII_IIBT_IMAGE_8BIT_TRAN_BLOCK; - -typedef struct _EFI_HII_IIBT_DUPLICATE_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - EFI_IMAGE_ID ImageId; -} EFI_HII_IIBT_DUPLICATE_BLOCK; - -typedef struct _EFI_HII_IIBT_JPEG_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - UINT32 Size; - UINT8 Data[1]; -} EFI_HII_IIBT_JPEG_BLOCK; - -typedef struct _EFI_HII_IIBT_SKIP1_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - UINT8 SkipCount; -} EFI_HII_IIBT_SKIP1_BLOCK; - -typedef struct _EFI_HII_IIBT_SKIP2_BLOCK { - EFI_HII_IMAGE_BLOCK Header; - UINT16 SkipCount; -} EFI_HII_IIBT_SKIP2_BLOCK; - -// -// Definitions for Palette Information -// - -typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER { - UINT16 PaletteCount; -} EFI_HII_IMAGE_PALETTE_INFO_HEADER; - -typedef struct _EFI_HII_IMAGE_PALETTE_INFO { - UINT16 PaletteSize; - EFI_HII_RGB_PIXEL PaletteValue[1]; -} EFI_HII_IMAGE_PALETTE_INFO; - -// -// Definitions for Forms Package -// Section 27.3.8 -// - -/// -/// The Form package is used to carry form-based encoding data. -/// -typedef struct _EFI_HII_FORM_PACKAGE_HDR { - EFI_HII_PACKAGE_HEADER Header; - // EFI_IFR_OP_HEADER OpCodeHeader; - // More op-codes follow -} EFI_HII_FORM_PACKAGE_HDR; - -typedef struct { - UINT8 Hour; - UINT8 Minute; - UINT8 Second; -} EFI_HII_TIME; - -typedef struct { - UINT16 Year; - UINT8 Month; - UINT8 Day; -} EFI_HII_DATE; - -typedef struct { - EFI_QUESTION_ID QuestionId; - EFI_FORM_ID FormId; - EFI_GUID FormSetGuid; - EFI_STRING_ID DevicePath; -} EFI_HII_REF; - -typedef union { - UINT8 u8; - UINT16 u16; - UINT32 u32; - UINT64 u64; - BOOLEAN b; - EFI_HII_TIME time; - EFI_HII_DATE date; - EFI_STRING_ID string; ///< EFI_IFR_TYPE_STRING, EFI_IFR_TYPE_ACTION - EFI_HII_REF ref; ///< EFI_IFR_TYPE_REF - // UINT8 buffer[]; ///< EFI_IFR_TYPE_BUFFER -} EFI_IFR_TYPE_VALUE; - -// -// IFR Opcodes -// -#define EFI_IFR_FORM_OP 0x01 -#define EFI_IFR_SUBTITLE_OP 0x02 -#define EFI_IFR_TEXT_OP 0x03 -#define EFI_IFR_IMAGE_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 -#define EFI_IFR_SUPPRESS_IF_OP 0x0A -#define EFI_IFR_LOCKED_OP 0x0B -#define EFI_IFR_ACTION_OP 0x0C -#define EFI_IFR_RESET_BUTTON_OP 0x0D -#define EFI_IFR_FORM_SET_OP 0x0E -#define EFI_IFR_REF_OP 0x0F -#define EFI_IFR_NO_SUBMIT_IF_OP 0x10 -#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_VAL_LIST_OP 0x14 -#define EFI_IFR_AND_OP 0x15 -#define EFI_IFR_OR_OP 0x16 -#define EFI_IFR_NOT_OP 0x17 -#define EFI_IFR_RULE_OP 0x18 -#define EFI_IFR_GRAY_OUT_IF_OP 0x19 -#define EFI_IFR_DATE_OP 0x1A -#define EFI_IFR_TIME_OP 0x1B -#define EFI_IFR_STRING_OP 0x1C -#define EFI_IFR_REFRESH_OP 0x1D -#define EFI_IFR_DISABLE_IF_OP 0x1E -#define EFI_IFR_ANIMATION_OP 0x1F -#define EFI_IFR_TO_LOWER_OP 0x20 -#define EFI_IFR_TO_UPPER_OP 0x21 -#define EFI_IFR_MAP_OP 0x22 -#define EFI_IFR_ORDERED_LIST_OP 0x23 -#define EFI_IFR_VARSTORE_OP 0x24 -#define EFI_IFR_VARSTORE_NAME_VALUE_OP 0x25 -#define EFI_IFR_VARSTORE_EFI_OP 0x26 -#define EFI_IFR_VARSTORE_DEVICE_OP 0x27 -#define EFI_IFR_VERSION_OP 0x28 -#define EFI_IFR_END_OP 0x29 -#define EFI_IFR_MATCH_OP 0x2A -#define EFI_IFR_GET_OP 0x2B -#define EFI_IFR_SET_OP 0x2C -#define EFI_IFR_READ_OP 0x2D -#define EFI_IFR_WRITE_OP 0x2E -#define EFI_IFR_EQUAL_OP 0x2F -#define EFI_IFR_NOT_EQUAL_OP 0x30 -#define EFI_IFR_GREATER_THAN_OP 0x31 -#define EFI_IFR_GREATER_EQUAL_OP 0x32 -#define EFI_IFR_LESS_THAN_OP 0x33 -#define EFI_IFR_LESS_EQUAL_OP 0x34 -#define EFI_IFR_BITWISE_AND_OP 0x35 -#define EFI_IFR_BITWISE_OR_OP 0x36 -#define EFI_IFR_BITWISE_NOT_OP 0x37 -#define EFI_IFR_SHIFT_LEFT_OP 0x38 -#define EFI_IFR_SHIFT_RIGHT_OP 0x39 -#define EFI_IFR_ADD_OP 0x3A -#define EFI_IFR_SUBTRACT_OP 0x3B -#define EFI_IFR_MULTIPLY_OP 0x3C -#define EFI_IFR_DIVIDE_OP 0x3D -#define EFI_IFR_MODULO_OP 0x3E -#define EFI_IFR_RULE_REF_OP 0x3F -#define EFI_IFR_QUESTION_REF1_OP 0x40 -#define EFI_IFR_QUESTION_REF2_OP 0x41 -#define EFI_IFR_UINT8_OP 0x42 -#define EFI_IFR_UINT16_OP 0x43 -#define EFI_IFR_UINT32_OP 0x44 -#define EFI_IFR_UINT64_OP 0x45 -#define EFI_IFR_TRUE_OP 0x46 -#define EFI_IFR_FALSE_OP 0x47 -#define EFI_IFR_TO_UINT_OP 0x48 -#define EFI_IFR_TO_STRING_OP 0x49 -#define EFI_IFR_TO_BOOLEAN_OP 0x4A -#define EFI_IFR_MID_OP 0x4B -#define EFI_IFR_FIND_OP 0x4C -#define EFI_IFR_TOKEN_OP 0x4D -#define EFI_IFR_STRING_REF1_OP 0x4E -#define EFI_IFR_STRING_REF2_OP 0x4F -#define EFI_IFR_CONDITIONAL_OP 0x50 -#define EFI_IFR_QUESTION_REF3_OP 0x51 -#define EFI_IFR_ZERO_OP 0x52 -#define EFI_IFR_ONE_OP 0x53 -#define EFI_IFR_ONES_OP 0x54 -#define EFI_IFR_UNDEFINED_OP 0x55 -#define EFI_IFR_LENGTH_OP 0x56 -#define EFI_IFR_DUP_OP 0x57 -#define EFI_IFR_THIS_OP 0x58 -#define EFI_IFR_SPAN_OP 0x59 -#define EFI_IFR_VALUE_OP 0x5A -#define EFI_IFR_DEFAULT_OP 0x5B -#define EFI_IFR_DEFAULTSTORE_OP 0x5C -#define EFI_IFR_FORM_MAP_OP 0x5D -#define EFI_IFR_CATENATE_OP 0x5E -#define EFI_IFR_GUID_OP 0x5F -#define EFI_IFR_SECURITY_OP 0x60 -#define EFI_IFR_MODAL_TAG_OP 0x61 -#define EFI_IFR_REFRESH_ID_OP 0x62 -#define EFI_IFR_WARNING_IF_OP 0x63 -#define EFI_IFR_MATCH2_OP 0x64 - -// -// Definitions of IFR Standard Headers -// Section 27.3.8.2 -// - -typedef struct _EFI_IFR_OP_HEADER { - UINT8 OpCode; - UINT8 Length:7; - UINT8 Scope:1; -} EFI_IFR_OP_HEADER; - -typedef struct _EFI_IFR_STATEMENT_HEADER { - EFI_STRING_ID Prompt; - EFI_STRING_ID Help; -} EFI_IFR_STATEMENT_HEADER; - -typedef struct _EFI_IFR_QUESTION_HEADER { - EFI_IFR_STATEMENT_HEADER Header; - EFI_QUESTION_ID QuestionId; - EFI_VARSTORE_ID VarStoreId; - union { - EFI_STRING_ID VarName; - UINT16 VarOffset; - } VarStoreInfo; - UINT8 Flags; -} EFI_IFR_QUESTION_HEADER; - -// -// Flag values of EFI_IFR_QUESTION_HEADER -// -#define EFI_IFR_FLAG_READ_ONLY 0x01 -#define EFI_IFR_FLAG_CALLBACK 0x04 -#define EFI_IFR_FLAG_RESET_REQUIRED 0x10 -#define EFI_IFR_FLAG_RECONNECT_REQUIRED 0x40 -#define EFI_IFR_FLAG_OPTIONS_ONLY 0x80 - -// -// Definition for Opcode Reference -// Section 27.3.8.3 -// -typedef struct _EFI_IFR_DEFAULTSTORE { - EFI_IFR_OP_HEADER Header; - EFI_STRING_ID DefaultName; - UINT16 DefaultId; -} EFI_IFR_DEFAULTSTORE; - -// -// Default Identifier of default store -// -#define EFI_HII_DEFAULT_CLASS_STANDARD 0x0000 -#define EFI_HII_DEFAULT_CLASS_MANUFACTURING 0x0001 -#define EFI_HII_DEFAULT_CLASS_SAFE 0x0002 -#define EFI_HII_DEFAULT_CLASS_PLATFORM_BEGIN 0x4000 -#define EFI_HII_DEFAULT_CLASS_PLATFORM_END 0x7fff -#define EFI_HII_DEFAULT_CLASS_HARDWARE_BEGIN 0x8000 -#define EFI_HII_DEFAULT_CLASS_HARDWARE_END 0xbfff -#define EFI_HII_DEFAULT_CLASS_FIRMWARE_BEGIN 0xc000 -#define EFI_HII_DEFAULT_CLASS_FIRMWARE_END 0xffff - -typedef struct _EFI_IFR_VARSTORE { - EFI_IFR_OP_HEADER Header; - EFI_GUID Guid; - EFI_VARSTORE_ID VarStoreId; - UINT16 Size; - UINT8 Name[1]; -} EFI_IFR_VARSTORE; - -typedef struct _EFI_IFR_VARSTORE_EFI { - EFI_IFR_OP_HEADER Header; - EFI_VARSTORE_ID VarStoreId; - EFI_GUID Guid; - UINT32 Attributes; - UINT16 Size; - UINT8 Name[1]; -} EFI_IFR_VARSTORE_EFI; - -typedef struct _EFI_IFR_VARSTORE_NAME_VALUE { - EFI_IFR_OP_HEADER Header; - EFI_VARSTORE_ID VarStoreId; - EFI_GUID Guid; -} EFI_IFR_VARSTORE_NAME_VALUE; - -typedef struct _EFI_IFR_FORM_SET { - EFI_IFR_OP_HEADER Header; - EFI_GUID Guid; - EFI_STRING_ID FormSetTitle; - EFI_STRING_ID Help; - UINT8 Flags; - // EFI_GUID ClassGuid[]; -} EFI_IFR_FORM_SET; - -typedef struct _EFI_IFR_END { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_END; - -typedef struct _EFI_IFR_FORM { - EFI_IFR_OP_HEADER Header; - UINT16 FormId; - EFI_STRING_ID FormTitle; -} EFI_IFR_FORM; - -typedef struct _EFI_IFR_IMAGE { - EFI_IFR_OP_HEADER Header; - EFI_IMAGE_ID Id; -} EFI_IFR_IMAGE; - -typedef struct _EFI_IFR_MODAL_TAG { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_MODAL_TAG; - -typedef struct _EFI_IFR_LOCKED { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_LOCKED; - -typedef struct _EFI_IFR_RULE { - EFI_IFR_OP_HEADER Header; - UINT8 RuleId; -} EFI_IFR_RULE; - -typedef struct _EFI_IFR_DEFAULT { - EFI_IFR_OP_HEADER Header; - UINT16 DefaultId; - UINT8 Type; - EFI_IFR_TYPE_VALUE Value; -} EFI_IFR_DEFAULT; - -typedef struct _EFI_IFR_DEFAULT_2 { - EFI_IFR_OP_HEADER Header; - UINT16 DefaultId; - UINT8 Type; -} EFI_IFR_DEFAULT_2; - -typedef struct _EFI_IFR_VALUE { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_VALUE; - -typedef struct _EFI_IFR_SUBTITLE { - EFI_IFR_OP_HEADER Header; - EFI_IFR_STATEMENT_HEADER Statement; - UINT8 Flags; -} EFI_IFR_SUBTITLE; - -#define EFI_IFR_FLAGS_HORIZONTAL 0x01 - -typedef struct _EFI_IFR_CHECKBOX { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; - UINT8 Flags; -} EFI_IFR_CHECKBOX; - -#define EFI_IFR_CHECKBOX_DEFAULT 0x01 -#define EFI_IFR_CHECKBOX_DEFAULT_MFG 0x02 - -typedef struct _EFI_IFR_TEXT { - EFI_IFR_OP_HEADER Header; - EFI_IFR_STATEMENT_HEADER Statement; - EFI_STRING_ID TextTwo; -} EFI_IFR_TEXT; - -typedef struct _EFI_IFR_REF { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; - EFI_FORM_ID FormId; -} EFI_IFR_REF; - -typedef struct _EFI_IFR_REF2 { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; - EFI_FORM_ID FormId; - EFI_QUESTION_ID QuestionId; -} EFI_IFR_REF2; - -typedef struct _EFI_IFR_REF3 { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; - EFI_FORM_ID FormId; - EFI_QUESTION_ID QuestionId; - EFI_GUID FormSetId; -} EFI_IFR_REF3; - -typedef struct _EFI_IFR_REF4 { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; - EFI_FORM_ID FormId; - EFI_QUESTION_ID QuestionId; - EFI_GUID FormSetId; - EFI_STRING_ID DevicePath; -} EFI_IFR_REF4; - -typedef struct _EFI_IFR_REF5 { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; -} EFI_IFR_REF5; - -typedef struct _EFI_IFR_RESET_BUTTON { - EFI_IFR_OP_HEADER Header; - EFI_IFR_STATEMENT_HEADER Statement; - EFI_DEFAULT_ID DefaultId; -} EFI_IFR_RESET_BUTTON; - -typedef struct _EFI_IFR_ACTION { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; - EFI_STRING_ID QuestionConfig; -} EFI_IFR_ACTION; - -typedef struct _EFI_IFR_ACTION_1 { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; -} EFI_IFR_ACTION_1; - -typedef struct _EFI_IFR_DATE { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; - UINT8 Flags; -} EFI_IFR_DATE; - -// -// Flags that describe the behavior of the question. -// -#define EFI_QF_DATE_YEAR_SUPPRESS 0x01 -#define EFI_QF_DATE_MONTH_SUPPRESS 0x02 -#define EFI_QF_DATE_DAY_SUPPRESS 0x04 - -#define EFI_QF_DATE_STORAGE 0x30 -#define QF_DATE_STORAGE_NORMAL 0x00 -#define QF_DATE_STORAGE_TIME 0x10 -#define QF_DATE_STORAGE_WAKEUP 0x20 - -typedef union { - struct { - UINT8 MinValue; - UINT8 MaxValue; - UINT8 Step; - } u8; - struct { - UINT16 MinValue; - UINT16 MaxValue; - UINT16 Step; - } u16; - struct { - UINT32 MinValue; - UINT32 MaxValue; - UINT32 Step; - } u32; - struct { - UINT64 MinValue; - UINT64 MaxValue; - UINT64 Step; - } u64; -} MINMAXSTEP_DATA; - -typedef struct _EFI_IFR_NUMERIC { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; - UINT8 Flags; - MINMAXSTEP_DATA data; -} EFI_IFR_NUMERIC; - -// -// Flags related to the numeric question -// -#define EFI_IFR_NUMERIC_SIZE 0x03 -#define EFI_IFR_NUMERIC_SIZE_1 0x00 -#define EFI_IFR_NUMERIC_SIZE_2 0x01 -#define EFI_IFR_NUMERIC_SIZE_4 0x02 -#define EFI_IFR_NUMERIC_SIZE_8 0x03 - -#define EFI_IFR_DISPLAY 0x30 -#define EFI_IFR_DISPLAY_INT_DEC 0x00 -#define EFI_IFR_DISPLAY_UINT_DEC 0x10 -#define EFI_IFR_DISPLAY_UINT_HEX 0x20 - -typedef struct _EFI_IFR_ONE_OF { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; - UINT8 Flags; - MINMAXSTEP_DATA data; -} EFI_IFR_ONE_OF; - -typedef struct _EFI_IFR_STRING { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; - UINT8 MinSize; - UINT8 MaxSize; - UINT8 Flags; -} EFI_IFR_STRING; - -#define EFI_IFR_STRING_MULTI_LINE 0x01 - -typedef struct _EFI_IFR_PASSWORD { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; - UINT16 MinSize; - UINT16 MaxSize; -} EFI_IFR_PASSWORD; - -typedef struct _EFI_IFR_ORDERED_LIST { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; - UINT8 MaxContainers; - UINT8 Flags; -} EFI_IFR_ORDERED_LIST; - -#define EFI_IFR_UNIQUE_SET 0x01 -#define EFI_IFR_NO_EMPTY_SET 0x02 - -typedef struct _EFI_IFR_TIME { - EFI_IFR_OP_HEADER Header; - EFI_IFR_QUESTION_HEADER Question; - UINT8 Flags; -} EFI_IFR_TIME; - -// -// A bit-mask that determines which unique settings are active for this opcode. -// -#define QF_TIME_HOUR_SUPPRESS 0x01 -#define QF_TIME_MINUTE_SUPPRESS 0x02 -#define QF_TIME_SECOND_SUPPRESS 0x04 - -#define QF_TIME_STORAGE 0x30 -#define QF_TIME_STORAGE_NORMAL 0x00 -#define QF_TIME_STORAGE_TIME 0x10 -#define QF_TIME_STORAGE_WAKEUP 0x20 - -typedef struct _EFI_IFR_DISABLE_IF { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_DISABLE_IF; - -typedef struct _EFI_IFR_SUPPRESS_IF { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_SUPPRESS_IF; - -typedef struct _EFI_IFR_GRAY_OUT_IF { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_GRAY_OUT_IF; - -typedef struct _EFI_IFR_INCONSISTENT_IF { - EFI_IFR_OP_HEADER Header; - EFI_STRING_ID Error; -} EFI_IFR_INCONSISTENT_IF; - -typedef struct _EFI_IFR_NO_SUBMIT_IF { - EFI_IFR_OP_HEADER Header; - EFI_STRING_ID Error; -} EFI_IFR_NO_SUBMIT_IF; - -typedef struct _EFI_IFR_WARNING_IF { - EFI_IFR_OP_HEADER Header; - EFI_STRING_ID Warning; - UINT8 TimeOut; -} EFI_IFR_WARNING_IF; - -typedef struct _EFI_IFR_REFRESH { - EFI_IFR_OP_HEADER Header; - UINT8 RefreshInterval; -} EFI_IFR_REFRESH; - -typedef struct _EFI_IFR_VARSTORE_DEVICE { - EFI_IFR_OP_HEADER Header; - EFI_STRING_ID DevicePath; -} EFI_IFR_VARSTORE_DEVICE; - -typedef struct _EFI_IFR_ONE_OF_OPTION { - EFI_IFR_OP_HEADER Header; - EFI_STRING_ID Option; - UINT8 Flags; - UINT8 Type; - EFI_IFR_TYPE_VALUE Value; -} EFI_IFR_ONE_OF_OPTION; - -// -// Types of the option's value. -// -#define EFI_IFR_TYPE_NUM_SIZE_8 0x00 -#define EFI_IFR_TYPE_NUM_SIZE_16 0x01 -#define EFI_IFR_TYPE_NUM_SIZE_32 0x02 -#define EFI_IFR_TYPE_NUM_SIZE_64 0x03 -#define EFI_IFR_TYPE_BOOLEAN 0x04 -#define EFI_IFR_TYPE_TIME 0x05 -#define EFI_IFR_TYPE_DATE 0x06 -#define EFI_IFR_TYPE_STRING 0x07 -#define EFI_IFR_TYPE_OTHER 0x08 -#define EFI_IFR_TYPE_UNDEFINED 0x09 -#define EFI_IFR_TYPE_ACTION 0x0A -#define EFI_IFR_TYPE_BUFFER 0x0B -#define EFI_IFR_TYPE_REF 0x0C - -#define EFI_IFR_OPTION_DEFAULT 0x10 -#define EFI_IFR_OPTION_DEFAULT_MFG 0x20 - -typedef struct _EFI_IFR_GUID { - EFI_IFR_OP_HEADER Header; - EFI_GUID Guid; - //Optional Data Follows -} EFI_IFR_GUID; - -typedef struct _EFI_IFR_REFRESH_ID { - EFI_IFR_OP_HEADER Header; - EFI_GUID RefreshEventGroupId; -} EFI_IFR_REFRESH_ID; - -typedef struct _EFI_IFR_DUP { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_DUP; - -typedef struct _EFI_IFR_EQ_ID_ID { - EFI_IFR_OP_HEADER Header; - EFI_QUESTION_ID QuestionId1; - EFI_QUESTION_ID QuestionId2; -} EFI_IFR_EQ_ID_ID; - -typedef struct _EFI_IFR_EQ_ID_VAL { - EFI_IFR_OP_HEADER Header; - EFI_QUESTION_ID QuestionId; - UINT16 Value; -} EFI_IFR_EQ_ID_VAL; - -typedef struct _EFI_IFR_EQ_ID_VAL_LIST { - EFI_IFR_OP_HEADER Header; - EFI_QUESTION_ID QuestionId; - UINT16 ListLength; - UINT16 ValueList[1]; -} EFI_IFR_EQ_ID_VAL_LIST; - -typedef struct _EFI_IFR_UINT8 { - EFI_IFR_OP_HEADER Header; - UINT8 Value; -} EFI_IFR_UINT8; - -typedef struct _EFI_IFR_UINT16 { - EFI_IFR_OP_HEADER Header; - UINT16 Value; -} EFI_IFR_UINT16; - -typedef struct _EFI_IFR_UINT32 { - EFI_IFR_OP_HEADER Header; - UINT32 Value; -} EFI_IFR_UINT32; - -typedef struct _EFI_IFR_UINT64 { - EFI_IFR_OP_HEADER Header; - UINT64 Value; -} EFI_IFR_UINT64; - -typedef struct _EFI_IFR_QUESTION_REF1 { - EFI_IFR_OP_HEADER Header; - EFI_QUESTION_ID QuestionId; -} EFI_IFR_QUESTION_REF1; - -typedef struct _EFI_IFR_QUESTION_REF2 { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_QUESTION_REF2; - -typedef struct _EFI_IFR_QUESTION_REF3 { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_QUESTION_REF3; - -typedef struct _EFI_IFR_QUESTION_REF3_2 { - EFI_IFR_OP_HEADER Header; - EFI_STRING_ID DevicePath; -} EFI_IFR_QUESTION_REF3_2; - -typedef struct _EFI_IFR_QUESTION_REF3_3 { - EFI_IFR_OP_HEADER Header; - EFI_STRING_ID DevicePath; - EFI_GUID Guid; -} EFI_IFR_QUESTION_REF3_3; - -typedef struct _EFI_IFR_RULE_REF { - EFI_IFR_OP_HEADER Header; - UINT8 RuleId; -} EFI_IFR_RULE_REF; - -typedef struct _EFI_IFR_STRING_REF1 { - EFI_IFR_OP_HEADER Header; - EFI_STRING_ID StringId; -} EFI_IFR_STRING_REF1; - -typedef struct _EFI_IFR_STRING_REF2 { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_STRING_REF2; - -typedef struct _EFI_IFR_THIS { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_THIS; - -typedef struct _EFI_IFR_TRUE { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_TRUE; - -typedef struct _EFI_IFR_FALSE { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_FALSE; - -typedef struct _EFI_IFR_ONE { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_ONE; - -typedef struct _EFI_IFR_ONES { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_ONES; - -typedef struct _EFI_IFR_ZERO { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_ZERO; - -typedef struct _EFI_IFR_UNDEFINED { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_UNDEFINED; - -typedef struct _EFI_IFR_VERSION { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_VERSION; - -typedef struct _EFI_IFR_LENGTH { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_LENGTH; - -typedef struct _EFI_IFR_NOT { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_NOT; - -typedef struct _EFI_IFR_BITWISE_NOT { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_BITWISE_NOT; - -typedef struct _EFI_IFR_TO_BOOLEAN { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_TO_BOOLEAN; - -/// -/// For EFI_IFR_TO_STRING, when converting from -/// unsigned integers, these flags control the format: -/// 0 = unsigned decimal. -/// 1 = signed decimal. -/// 2 = hexadecimal (lower-case alpha). -/// 3 = hexadecimal (upper-case alpha). -///@{ -#define EFI_IFR_STRING_UNSIGNED_DEC 0 -#define EFI_IFR_STRING_SIGNED_DEC 1 -#define EFI_IFR_STRING_LOWERCASE_HEX 2 -#define EFI_IFR_STRING_UPPERCASE_HEX 3 -///@} - -/// -/// When converting from a buffer, these flags control the format: -/// 0 = ASCII. -/// 8 = Unicode. -///@{ -#define EFI_IFR_STRING_ASCII 0 -#define EFI_IFR_STRING_UNICODE 8 -///@} - -typedef struct _EFI_IFR_TO_STRING { - EFI_IFR_OP_HEADER Header; - UINT8 Format; -} EFI_IFR_TO_STRING; - -typedef struct _EFI_IFR_TO_UINT { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_TO_UINT; - -typedef struct _EFI_IFR_TO_UPPER { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_TO_UPPER; - -typedef struct _EFI_IFR_TO_LOWER { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_TO_LOWER; - -typedef struct _EFI_IFR_ADD { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_ADD; - -typedef struct _EFI_IFR_AND { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_AND; - -typedef struct _EFI_IFR_BITWISE_AND { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_BITWISE_AND; - -typedef struct _EFI_IFR_BITWISE_OR { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_BITWISE_OR; - -typedef struct _EFI_IFR_CATENATE { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_CATENATE; - -typedef struct _EFI_IFR_DIVIDE { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_DIVIDE; - -typedef struct _EFI_IFR_EQUAL { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_EQUAL; - -typedef struct _EFI_IFR_GREATER_EQUAL { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_GREATER_EQUAL; - -typedef struct _EFI_IFR_GREATER_THAN { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_GREATER_THAN; - -typedef struct _EFI_IFR_LESS_EQUAL { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_LESS_EQUAL; - -typedef struct _EFI_IFR_LESS_THAN { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_LESS_THAN; - -typedef struct _EFI_IFR_MATCH { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_MATCH; - -typedef struct _EFI_IFR_MATCH2 { - EFI_IFR_OP_HEADER Header; - EFI_GUID SyntaxType; -} EFI_IFR_MATCH2; - -typedef struct _EFI_IFR_MULTIPLY { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_MULTIPLY; - -typedef struct _EFI_IFR_MODULO { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_MODULO; - -typedef struct _EFI_IFR_NOT_EQUAL { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_NOT_EQUAL; - -typedef struct _EFI_IFR_OR { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_OR; - -typedef struct _EFI_IFR_SHIFT_LEFT { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_SHIFT_LEFT; - -typedef struct _EFI_IFR_SHIFT_RIGHT { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_SHIFT_RIGHT; - -typedef struct _EFI_IFR_SUBTRACT { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_SUBTRACT; - -typedef struct _EFI_IFR_CONDITIONAL { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_CONDITIONAL; - -// -// Flags governing the matching criteria of EFI_IFR_FIND -// -#define EFI_IFR_FF_CASE_SENSITIVE 0x00 -#define EFI_IFR_FF_CASE_INSENSITIVE 0x01 - -typedef struct _EFI_IFR_FIND { - EFI_IFR_OP_HEADER Header; - UINT8 Format; -} EFI_IFR_FIND; - -typedef struct _EFI_IFR_MID { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_MID; - -typedef struct _EFI_IFR_TOKEN { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_TOKEN; - -// -// Flags specifying whether to find the first matching string -// or the first non-matching string. -// -#define EFI_IFR_FLAGS_FIRST_MATCHING 0x00 -#define EFI_IFR_FLAGS_FIRST_NON_MATCHING 0x01 - -typedef struct _EFI_IFR_SPAN { - EFI_IFR_OP_HEADER Header; - UINT8 Flags; -} EFI_IFR_SPAN; - -typedef struct _EFI_IFR_SECURITY { - /// - /// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP. - /// - EFI_IFR_OP_HEADER Header; - /// - /// Security permission level. - /// - EFI_GUID Permissions; -} EFI_IFR_SECURITY; - -typedef struct _EFI_IFR_FORM_MAP_METHOD { - /// - /// The string identifier which provides the human-readable name of - /// the configuration method for this standards map form. - /// - EFI_STRING_ID MethodTitle; - /// - /// Identifier which uniquely specifies the configuration methods - /// associated with this standards map form. - /// - EFI_GUID MethodIdentifier; -} EFI_IFR_FORM_MAP_METHOD; - -typedef struct _EFI_IFR_FORM_MAP { - /// - /// The sequence that defines the type of opcode as well as the length - /// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP. - /// - EFI_IFR_OP_HEADER Header; - /// - /// The unique identifier for this particular form. - /// - EFI_FORM_ID FormId; - /// - /// One or more configuration method's name and unique identifier. - /// - // EFI_IFR_FORM_MAP_METHOD Methods[]; -} EFI_IFR_FORM_MAP; - -typedef struct _EFI_IFR_SET { - /// - /// The sequence that defines the type of opcode as well as the length - /// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP. - /// - EFI_IFR_OP_HEADER Header; - /// - /// Specifies the identifier of a previously declared variable store to - /// use when storing the question's value. - /// - EFI_VARSTORE_ID VarStoreId; - union { - /// - /// A 16-bit Buffer Storage offset. - /// - EFI_STRING_ID VarName; - /// - /// A Name Value or EFI Variable name (VarName). - /// - UINT16 VarOffset; - } VarStoreInfo; - /// - /// Specifies the type used for storage. - /// - UINT8 VarStoreType; -} EFI_IFR_SET; - -typedef struct _EFI_IFR_GET { - /// - /// The sequence that defines the type of opcode as well as the length - /// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP. - /// - EFI_IFR_OP_HEADER Header; - /// - /// Specifies the identifier of a previously declared variable store to - /// use when retrieving the value. - /// - EFI_VARSTORE_ID VarStoreId; - union { - /// - /// A 16-bit Buffer Storage offset. - /// - EFI_STRING_ID VarName; - /// - /// A Name Value or EFI Variable name (VarName). - /// - UINT16 VarOffset; - } VarStoreInfo; - /// - /// Specifies the type used for storage. - /// - UINT8 VarStoreType; -} EFI_IFR_GET; - -typedef struct _EFI_IFR_READ { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_READ; - -typedef struct _EFI_IFR_WRITE { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_WRITE; - -typedef struct _EFI_IFR_MAP { - EFI_IFR_OP_HEADER Header; -} EFI_IFR_MAP; -// -// Definitions for Keyboard Package -// Releated definitions are in Section of EFI_HII_DATABASE_PROTOCOL -// - -/// -/// Each enumeration values maps a physical key on a keyboard. -/// -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 { - /// - /// Used to describe a physical key on a keyboard. - /// - EFI_KEY Key; - /// - /// Unicode character code for the Key. - /// - CHAR16 Unicode; - /// - /// Unicode character code for the key with the shift key being held down. - /// - CHAR16 ShiftedUnicode; - /// - /// Unicode character code for the key with the Alt-GR being held down. - /// - CHAR16 AltGrUnicode; - /// - /// Unicode character code for the key with the Alt-GR and shift keys being held down. - /// - CHAR16 ShiftedAltGrUnicode; - /// - /// Modifier keys are defined to allow for special functionality that is not necessarily - /// accomplished by a printable character. Many of these modifier keys are flags to toggle - /// certain state bits on and off inside of a keyboard driver. - /// - UINT16 Modifier; - UINT16 AffectedAttribute; -} EFI_KEY_DESCRIPTOR; - -/// -/// A key which is affected by all the standard shift modifiers. -/// Most keys would be expected to have this bit active. -/// -#define EFI_AFFECTED_BY_STANDARD_SHIFT 0x0001 - -/// -/// This key is affected by the caps lock so that if a keyboard driver -/// would need to disambiguate between a key which had a "1" defined -/// versus an "a" character. Having this bit turned on would tell -/// the keyboard driver to use the appropriate shifted state or not. -/// -#define EFI_AFFECTED_BY_CAPS_LOCK 0x0002 - -/// -/// Similar to the case of CAPS lock, if this bit is active, the key -/// is affected by the num lock being turned on. -/// -#define EFI_AFFECTED_BY_NUM_LOCK 0x0004 - -typedef struct { - UINT16 LayoutLength; - EFI_GUID Guid; - UINT32 LayoutDescriptorStringOffset; - UINT8 DescriptorCount; - // EFI_KEY_DESCRIPTOR Descriptors[]; -} EFI_HII_KEYBOARD_LAYOUT; - -typedef struct { - EFI_HII_PACKAGE_HEADER Header; - UINT16 LayoutCount; - // EFI_HII_KEYBOARD_LAYOUT Layout[]; -} EFI_HII_KEYBOARD_PACKAGE_HDR; - -// -// Modifier values -// -#define EFI_NULL_MODIFIER 0x0000 -#define EFI_LEFT_CONTROL_MODIFIER 0x0001 -#define EFI_RIGHT_CONTROL_MODIFIER 0x0002 -#define EFI_LEFT_ALT_MODIFIER 0x0003 -#define EFI_RIGHT_ALT_MODIFIER 0x0004 -#define EFI_ALT_GR_MODIFIER 0x0005 -#define EFI_INSERT_MODIFIER 0x0006 -#define EFI_DELETE_MODIFIER 0x0007 -#define EFI_PAGE_DOWN_MODIFIER 0x0008 -#define EFI_PAGE_UP_MODIFIER 0x0009 -#define EFI_HOME_MODIFIER 0x000A -#define EFI_END_MODIFIER 0x000B -#define EFI_LEFT_SHIFT_MODIFIER 0x000C -#define EFI_RIGHT_SHIFT_MODIFIER 0x000D -#define EFI_CAPS_LOCK_MODIFIER 0x000E -#define EFI_NUM_LOCK_MODIFIER 0x000F -#define EFI_LEFT_ARROW_MODIFIER 0x0010 -#define EFI_RIGHT_ARROW_MODIFIER 0x0011 -#define EFI_DOWN_ARROW_MODIFIER 0x0012 -#define EFI_UP_ARROW_MODIFIER 0x0013 -#define EFI_NS_KEY_MODIFIER 0x0014 -#define EFI_NS_KEY_DEPENDENCY_MODIFIER 0x0015 -#define EFI_FUNCTION_KEY_ONE_MODIFIER 0x0016 -#define EFI_FUNCTION_KEY_TWO_MODIFIER 0x0017 -#define EFI_FUNCTION_KEY_THREE_MODIFIER 0x0018 -#define EFI_FUNCTION_KEY_FOUR_MODIFIER 0x0019 -#define EFI_FUNCTION_KEY_FIVE_MODIFIER 0x001A -#define EFI_FUNCTION_KEY_SIX_MODIFIER 0x001B -#define EFI_FUNCTION_KEY_SEVEN_MODIFIER 0x001C -#define EFI_FUNCTION_KEY_EIGHT_MODIFIER 0x001D -#define EFI_FUNCTION_KEY_NINE_MODIFIER 0x001E -#define EFI_FUNCTION_KEY_TEN_MODIFIER 0x001F -#define EFI_FUNCTION_KEY_ELEVEN_MODIFIER 0x0020 -#define EFI_FUNCTION_KEY_TWELVE_MODIFIER 0x0021 - -// -// Keys that have multiple control functions based on modifier -// settings are handled in the keyboard driver implementation. -// For instance, PRINT_KEY might have a modifier held down and -// is still a nonprinting character, but might have an alternate -// control function like SYSREQUEST -// -#define EFI_PRINT_MODIFIER 0x0022 -#define EFI_SYS_REQUEST_MODIFIER 0x0023 -#define EFI_SCROLL_LOCK_MODIFIER 0x0024 -#define EFI_PAUSE_MODIFIER 0x0025 -#define EFI_BREAK_MODIFIER 0x0026 - -#define EFI_LEFT_LOGO_MODIFIER 0x0027 -#define EFI_RIGHT_LOGO_MODIFIER 0x0028 -#define EFI_MENU_MODIFIER 0x0029 - -/// -/// Animation IFR opcode -/// -typedef struct _EFI_IFR_ANIMATION { - /// - /// Standard opcode header, where Header.OpCode is - /// EFI_IFR_ANIMATION_OP. - /// - EFI_IFR_OP_HEADER Header; - /// - /// Animation identifier in the HII database. - /// - EFI_ANIMATION_ID Id; -} EFI_IFR_ANIMATION; - -/// -/// HII animation package header. -/// -typedef struct _EFI_HII_ANIMATION_PACKAGE_HDR { - /// - /// Standard package header, where Header.Type = EFI_HII_PACKAGE_ANIMATIONS. - /// - EFI_HII_PACKAGE_HEADER Header; - /// - /// Offset, relative to this header, of the animation information. If - /// this is zero, then there are no animation sequences in the package. - /// - UINT32 AnimationInfoOffset; -} EFI_HII_ANIMATION_PACKAGE_HDR; - -/// -/// Animation information is encoded as a series of blocks, -/// with each block prefixed by a single byte header EFI_HII_ANIMATION_BLOCK. -/// -typedef struct _EFI_HII_ANIMATION_BLOCK { - UINT8 BlockType; - //UINT8 BlockBody[]; -} EFI_HII_ANIMATION_BLOCK; - -/// -/// Animation block types. -/// -#define EFI_HII_AIBT_END 0x00 -#define EFI_HII_AIBT_OVERLAY_IMAGES 0x10 -#define EFI_HII_AIBT_CLEAR_IMAGES 0x11 -#define EFI_HII_AIBT_RESTORE_SCRN 0x12 -#define EFI_HII_AIBT_OVERLAY_IMAGES_LOOP 0x18 -#define EFI_HII_AIBT_CLEAR_IMAGES_LOOP 0x19 -#define EFI_HII_AIBT_RESTORE_SCRN_LOOP 0x1A -#define EFI_HII_AIBT_DUPLICATE 0x20 -#define EFI_HII_AIBT_SKIP2 0x21 -#define EFI_HII_AIBT_SKIP1 0x22 -#define EFI_HII_AIBT_EXT1 0x30 -#define EFI_HII_AIBT_EXT2 0x31 -#define EFI_HII_AIBT_EXT4 0x32 - -/// -/// Extended block headers used for variable sized animation records -/// which need an explicit length. -/// - -typedef struct _EFI_HII_AIBT_EXT1_BLOCK { - /// - /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT1. - /// - EFI_HII_ANIMATION_BLOCK Header; - /// - /// The block type. - /// - UINT8 BlockType2; - /// - /// Size of the animation block, in bytes, including the animation block header. - /// - UINT8 Length; -} EFI_HII_AIBT_EXT1_BLOCK; - -typedef struct _EFI_HII_AIBT_EXT2_BLOCK { - /// - /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT2. - /// - EFI_HII_ANIMATION_BLOCK Header; - /// - /// The block type - /// - UINT8 BlockType2; - /// - /// Size of the animation block, in bytes, including the animation block header. - /// - UINT16 Length; -} EFI_HII_AIBT_EXT2_BLOCK; - -typedef struct _EFI_HII_AIBT_EXT4_BLOCK { - /// - /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT4. - /// - EFI_HII_ANIMATION_BLOCK Header; - /// - /// The block type - /// - UINT8 BlockType2; - /// - /// Size of the animation block, in bytes, including the animation block header. - /// - UINT32 Length; -} EFI_HII_AIBT_EXT4_BLOCK; - -typedef struct _EFI_HII_ANIMATION_CELL { - /// - /// The X offset from the upper left hand corner of the logical - /// window to position the indexed image. - /// - UINT16 OffsetX; - /// - /// The Y offset from the upper left hand corner of the logical - /// window to position the indexed image. - /// - UINT16 OffsetY; - /// - /// The image to display at the specified offset from the upper left - /// hand corner of the logical window. - /// - EFI_IMAGE_ID ImageId; - /// - /// The number of milliseconds to delay after displaying the indexed - /// image and before continuing on to the next linked image. If value - /// is zero, no delay. - /// - UINT16 Delay; -} EFI_HII_ANIMATION_CELL; - -/// -/// An animation block to describe an animation sequence that does not cycle, and -/// where one image is simply displayed over the previous image. -/// -typedef struct _EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK { - /// - /// This is image that is to be reference by the image protocols, if the - /// animation function is not supported or disabled. This image can - /// be one particular image from the animation sequence (if any one - /// of the animation frames has a complete image) or an alternate - /// image that can be displayed alone. If the value is zero, no image - /// is displayed. - /// - EFI_IMAGE_ID DftImageId; - /// - /// The overall width of the set of images (logical window width). - /// - UINT16 Width; - /// - /// The overall height of the set of images (logical window height). - /// - UINT16 Height; - /// - /// The number of EFI_HII_ANIMATION_CELL contained in the - /// animation sequence. - /// - UINT16 CellCount; - /// - /// An array of CellCount animation cells. - /// - EFI_HII_ANIMATION_CELL AnimationCell[1]; -} EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK; - -/// -/// An animation block to describe an animation sequence that does not cycle, -/// and where the logical window is cleared to the specified color before -/// the next image is displayed. -/// -typedef struct _EFI_HII_AIBT_CLEAR_IMAGES_BLOCK { - /// - /// This is image that is to be reference by the image protocols, if the - /// animation function is not supported or disabled. This image can - /// be one particular image from the animation sequence (if any one - /// of the animation frames has a complete image) or an alternate - /// image that can be displayed alone. If the value is zero, no image - /// is displayed. - /// - EFI_IMAGE_ID DftImageId; - /// - /// The overall width of the set of images (logical window width). - /// - UINT16 Width; - /// - /// The overall height of the set of images (logical window height). - /// - UINT16 Height; - /// - /// The number of EFI_HII_ANIMATION_CELL contained in the - /// animation sequence. - /// - UINT16 CellCount; - /// - /// The color to clear the logical window to before displaying the - /// indexed image. - /// - EFI_HII_RGB_PIXEL BackgndColor; - /// - /// An array of CellCount animation cells. - /// - EFI_HII_ANIMATION_CELL AnimationCell[1]; -} EFI_HII_AIBT_CLEAR_IMAGES_BLOCK; - -/// -/// An animation block to describe an animation sequence that does not cycle, -/// and where the screen is restored to the original state before the next -/// image is displayed. -/// -typedef struct _EFI_HII_AIBT_RESTORE_SCRN_BLOCK { - /// - /// This is image that is to be reference by the image protocols, if the - /// animation function is not supported or disabled. This image can - /// be one particular image from the animation sequence (if any one - /// of the animation frames has a complete image) or an alternate - /// image that can be displayed alone. If the value is zero, no image - /// is displayed. - /// - EFI_IMAGE_ID DftImageId; - /// - /// The overall width of the set of images (logical window width). - /// - UINT16 Width; - /// - /// The overall height of the set of images (logical window height). - /// - UINT16 Height; - /// - /// The number of EFI_HII_ANIMATION_CELL contained in the - /// animation sequence. - /// - UINT16 CellCount; - /// - /// An array of CellCount animation cells. - /// - EFI_HII_ANIMATION_CELL AnimationCell[1]; -} EFI_HII_AIBT_RESTORE_SCRN_BLOCK; - -/// -/// An animation block to describe an animation sequence that continuously cycles, -/// and where one image is simply displayed over the previous image. -/// -typedef EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK EFI_HII_AIBT_OVERLAY_IMAGES_LOOP_BLOCK; - -/// -/// An animation block to describe an animation sequence that continuously cycles, -/// and where the logical window is cleared to the specified color before -/// the next image is displayed. -/// -typedef EFI_HII_AIBT_CLEAR_IMAGES_BLOCK EFI_HII_AIBT_CLEAR_IMAGES_LOOP_BLOCK; - -/// -/// An animation block to describe an animation sequence that continuously cycles, -/// and where the screen is restored to the original state before -/// the next image is displayed. -/// -typedef EFI_HII_AIBT_RESTORE_SCRN_BLOCK EFI_HII_AIBT_RESTORE_SCRN_LOOP_BLOCK; - -/// -/// Assigns a new character value to a previously defined animation sequence. -/// -typedef struct _EFI_HII_AIBT_DUPLICATE_BLOCK { - /// - /// The previously defined animation ID with the exact same - /// animation information. - /// - EFI_ANIMATION_ID AnimationId; -} EFI_HII_AIBT_DUPLICATE_BLOCK; - -/// -/// Skips animation IDs. -/// -typedef struct _EFI_HII_AIBT_SKIP1_BLOCK { - /// - /// The unsigned 8-bit value to add to AnimationIdCurrent. - /// - UINT8 SkipCount; -} EFI_HII_AIBT_SKIP1_BLOCK; - -/// -/// Skips animation IDs. -/// -typedef struct _EFI_HII_AIBT_SKIP2_BLOCK { - /// - /// The unsigned 16-bit value to add to AnimationIdCurrent. - /// - UINT16 SkipCount; -} EFI_HII_AIBT_SKIP2_BLOCK; - -#pragma pack() - - - -/// -/// References to string tokens must use this macro to enable scanning for -/// token usages. -/// -/// -/// STRING_TOKEN is not defined in UEFI specification. But it is placed -/// here for the easy access by C files and VFR source files. -/// -#define STRING_TOKEN(t) t - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiMultiPhase.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiMultiPhase.h deleted file mode 100644 index 6d96c124d2..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiMultiPhase.h +++ /dev/null @@ -1,231 +0,0 @@ -/** @file - This includes some definitions introduced in UEFI that will be used in both PEI and DXE phases. - -Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
-This file and the accompanying materials are licensed and made available under are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __UEFI_MULTIPHASE_H__ -#define __UEFI_MULTIPHASE_H__ - -#include -/// -/// Enumeration of memory types introduced in UEFI. -/// -typedef enum { - /// - /// Not used. - /// - EfiReservedMemoryType, - /// - /// The code portions of a loaded application. - /// (Note that UEFI OS loaders are UEFI applications.) - /// - EfiLoaderCode, - /// - /// The data portions of a loaded application and the default data allocation - /// type used by an application to allocate pool memory. - /// - EfiLoaderData, - /// - /// The code portions of a loaded Boot Services Driver. - /// - EfiBootServicesCode, - /// - /// The data portions of a loaded Boot Serves Driver, and the default data - /// allocation type used by a Boot Services Driver to allocate pool memory. - /// - EfiBootServicesData, - /// - /// The code portions of a loaded Runtime Services Driver. - /// - EfiRuntimeServicesCode, - /// - /// The data portions of a loaded Runtime Services Driver and the default - /// data allocation type used by a Runtime Services Driver to allocate pool memory. - /// - EfiRuntimeServicesData, - /// - /// Free (unallocated) memory. - /// - EfiConventionalMemory, - /// - /// Memory in which errors have been detected. - /// - EfiUnusableMemory, - /// - /// Memory that holds the ACPI tables. - /// - EfiACPIReclaimMemory, - /// - /// Address space reserved for use by the firmware. - /// - EfiACPIMemoryNVS, - /// - /// Used by system firmware to request that a memory-mapped IO region - /// be mapped by the OS to a virtual address so it can be accessed by EFI runtime services. - /// - EfiMemoryMappedIO, - /// - /// System memory-mapped IO region that is used to translate memory - /// cycles to IO cycles by the processor. - /// - EfiMemoryMappedIOPortSpace, - /// - /// Address space reserved by the firmware for code that is part of the processor. - /// - EfiPalCode, - /// - /// A memory region that operates as EfiConventionalMemory, - /// however it happens to also support byte-addressable non-volatility. - /// - EfiPersistentMemory, - EfiMaxMemoryType -} EFI_MEMORY_TYPE; - -/// -/// Enumeration of reset types. -/// -typedef enum { - /// - /// Used to induce a system-wide reset. This sets all circuitry within the - /// system to its initial state. This type of reset is asynchronous to system - /// operation and operates withgout regard to cycle boundaries. EfiColdReset - /// is tantamount to a system power cycle. - /// - EfiResetCold, - /// - /// Used to induce a system-wide initialization. The processors are set to their - /// initial state, and pending cycles are not corrupted. If the system does - /// not support this reset type, then an EfiResetCold must be performed. - /// - EfiResetWarm, - /// - /// Used to induce an entry into a power state equivalent to the ACPI G2/S5 or G3 - /// state. If the system does not support this reset type, then when the system - /// is rebooted, it should exhibit the EfiResetCold attributes. - /// - EfiResetShutdown, - /// - /// Used to induce a system-wide reset. The exact type of the reset is defined by - /// the EFI_GUID that follows the Null-terminated Unicode string passed into - /// ResetData. If the platform does not recognize the EFI_GUID in ResetData the - /// platform must pick a supported reset type to perform. The platform may - /// optionally log the parameters from any non-normal reset that occurs. - /// - EfiResetPlatformSpecific -} EFI_RESET_TYPE; - -/// -/// Data structure that precedes all of the standard EFI table types. -/// -typedef struct { - /// - /// A 64-bit signature that identifies the type of table that follows. - /// Unique signatures have been generated for the EFI System Table, - /// the EFI Boot Services Table, and the EFI Runtime Services Table. - /// - UINT64 Signature; - /// - /// The revision of the EFI Specification to which this table - /// conforms. The upper 16 bits of this field contain the major - /// revision value, and the lower 16 bits contain the minor revision - /// value. The minor revision values are limited to the range of 00..99. - /// - UINT32 Revision; - /// - /// The size, in bytes, of the entire table including the EFI_TABLE_HEADER. - /// - UINT32 HeaderSize; - /// - /// The 32-bit CRC for the entire table. This value is computed by - /// setting this field to 0, and computing the 32-bit CRC for HeaderSize bytes. - /// - UINT32 CRC32; - /// - /// Reserved field that must be set to 0. - /// - UINT32 Reserved; -} EFI_TABLE_HEADER; - -/// -/// Attributes of variable. -/// -#define EFI_VARIABLE_NON_VOLATILE 0x00000001 -#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 -#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004 -/// -/// This attribute is identified by the mnemonic 'HR' -/// elsewhere in this specification. -/// -#define EFI_VARIABLE_HARDWARE_ERROR_RECORD 0x00000008 -/// -/// Attributes of Authenticated Variable -/// -#define EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS 0x00000010 -#define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020 -#define EFI_VARIABLE_APPEND_WRITE 0x00000040 - - -/// -/// AuthInfo is a WIN_CERTIFICATE using the wCertificateType -/// WIN_CERTIFICATE_UEFI_GUID and the CertType -/// EFI_CERT_TYPE_RSA2048_SHA256_GUID. If the attribute specifies -/// authenticated access, then the Data buffer should begin with an -/// authentication descriptor prior to the data payload and DataSize -/// should reflect the data.and descriptor size. The caller -/// shall digest the Monotonic Count value and the associated data -/// for the variable update using the SHA-256 1-way hash algorithm. -/// The ensuing the 32-byte digest will be signed using the private -/// key associated w/ the public/private 2048-bit RSA key-pair. The -/// WIN_CERTIFICATE shall be used to describe the signature of the -/// Variable data *Data. In addition, the signature will also -/// include the MonotonicCount value to guard against replay attacks. -/// -typedef struct { - /// - /// Included in the signature of - /// AuthInfo.Used to ensure freshness/no - /// replay. Incremented during each - /// "Write" access. - /// - UINT64 MonotonicCount; - /// - /// Provides the authorization for the variable - /// access. It is a signature across the - /// variable data and the Monotonic Count - /// value. Caller uses Private key that is - /// associated with a public key that has been - /// provisioned via the key exchange. - /// - WIN_CERTIFICATE_UEFI_GUID AuthInfo; -} EFI_VARIABLE_AUTHENTICATION; - -/// -/// When the attribute EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS is -/// set, then the Data buffer shall begin with an instance of a complete (and serialized) -/// EFI_VARIABLE_AUTHENTICATION_2 descriptor. The descriptor shall be followed by the new -/// variable value and DataSize shall reflect the combined size of the descriptor and the new -/// variable value. The authentication descriptor is not part of the variable data and is not -/// returned by subsequent calls to GetVariable(). -/// -typedef struct { - /// - /// For the TimeStamp value, components Pad1, Nanosecond, TimeZone, Daylight and - /// Pad2 shall be set to 0. This means that the time shall always be expressed in GMT. - /// - EFI_TIME TimeStamp; - /// - /// Only a CertType of EFI_CERT_TYPE_PKCS7_GUID is accepted. - /// - WIN_CERTIFICATE_UEFI_GUID AuthInfo; - } EFI_VARIABLE_AUTHENTICATION_2; - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiPxe.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiPxe.h deleted file mode 100644 index a18d1916f0..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiPxe.h +++ /dev/null @@ -1,1772 +0,0 @@ -/** @file - This header file contains all of the PXE type definitions, - structure prototypes, global variables and constants that - are needed for porting PXE to EFI. - -Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.
-This file and the accompanying materials are licensed and made available under are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - @par Revision Reference: - 32/64-bit PXE specification: - alpha-4, 99-Dec-17. - -**/ - -#ifndef __EFI_PXE_H__ -#define __EFI_PXE_H__ - -#pragma pack(1) - -#define PXE_BUSTYPE(a, b, c, d) \ - ( \ - (((PXE_UINT32) (d) & 0xFF) << 24) | (((PXE_UINT32) (c) & 0xFF) << 16) | (((PXE_UINT32) (b) & 0xFF) << 8) | \ - ((PXE_UINT32) (a) & 0xFF) \ - ) - -/// -/// UNDI ROM ID and devive ID signature. -/// -#define PXE_BUSTYPE_PXE PXE_BUSTYPE ('!', 'P', 'X', 'E') - -/// -/// BUS ROM ID signatures. -/// -#define PXE_BUSTYPE_PCI PXE_BUSTYPE ('P', 'C', 'I', 'R') -#define PXE_BUSTYPE_PC_CARD PXE_BUSTYPE ('P', 'C', 'C', 'R') -#define PXE_BUSTYPE_USB PXE_BUSTYPE ('U', 'S', 'B', 'R') -#define PXE_BUSTYPE_1394 PXE_BUSTYPE ('1', '3', '9', '4') - -#define PXE_SWAP_UINT16(n) ((((PXE_UINT16) (n) & 0x00FF) << 8) | (((PXE_UINT16) (n) & 0xFF00) >> 8)) - -#define PXE_SWAP_UINT32(n) \ - ((((PXE_UINT32)(n) & 0x000000FF) << 24) | \ - (((PXE_UINT32)(n) & 0x0000FF00) << 8) | \ - (((PXE_UINT32)(n) & 0x00FF0000) >> 8) | \ - (((PXE_UINT32)(n) & 0xFF000000) >> 24)) - -#define PXE_SWAP_UINT64(n) \ - ((((PXE_UINT64)(n) & 0x00000000000000FFULL) << 56) | \ - (((PXE_UINT64)(n) & 0x000000000000FF00ULL) << 40) | \ - (((PXE_UINT64)(n) & 0x0000000000FF0000ULL) << 24) | \ - (((PXE_UINT64)(n) & 0x00000000FF000000ULL) << 8) | \ - (((PXE_UINT64)(n) & 0x000000FF00000000ULL) >> 8) | \ - (((PXE_UINT64)(n) & 0x0000FF0000000000ULL) >> 24) | \ - (((PXE_UINT64)(n) & 0x00FF000000000000ULL) >> 40) | \ - (((PXE_UINT64)(n) & 0xFF00000000000000ULL) >> 56)) - - -#define PXE_CPBSIZE_NOT_USED 0 ///< zero -#define PXE_DBSIZE_NOT_USED 0 ///< zero -#define PXE_CPBADDR_NOT_USED (PXE_UINT64) 0 ///< zero -#define PXE_DBADDR_NOT_USED (PXE_UINT64) 0 ///< zero -#define PXE_CONST CONST - -#define PXE_VOLATILE volatile - -typedef VOID PXE_VOID; -typedef UINT8 PXE_UINT8; -typedef UINT16 PXE_UINT16; -typedef UINT32 PXE_UINT32; -typedef UINTN PXE_UINTN; - -/// -/// Typedef unsigned long PXE_UINT64. -/// -typedef UINT64 PXE_UINT64; - -typedef PXE_UINT8 PXE_BOOL; -#define PXE_FALSE 0 ///< zero -#define PXE_TRUE (!PXE_FALSE) - -typedef PXE_UINT16 PXE_OPCODE; - -/// -/// Return UNDI operational state. -/// -#define PXE_OPCODE_GET_STATE 0x0000 - -/// -/// Change UNDI operational state from Stopped to Started. -/// -#define PXE_OPCODE_START 0x0001 - -/// -/// Change UNDI operational state from Started to Stopped. -/// -#define PXE_OPCODE_STOP 0x0002 - -/// -/// Get UNDI initialization information. -/// -#define PXE_OPCODE_GET_INIT_INFO 0x0003 - -/// -/// Get NIC configuration information. -/// -#define PXE_OPCODE_GET_CONFIG_INFO 0x0004 - -/// -/// Changed UNDI operational state from Started to Initialized. -/// -#define PXE_OPCODE_INITIALIZE 0x0005 - -/// -/// Re-initialize the NIC H/W. -/// -#define PXE_OPCODE_RESET 0x0006 - -/// -/// Change the UNDI operational state from Initialized to Started. -/// -#define PXE_OPCODE_SHUTDOWN 0x0007 - -/// -/// Read & change state of external interrupt enables. -/// -#define PXE_OPCODE_INTERRUPT_ENABLES 0x0008 - -/// -/// Read & change state of packet receive filters. -/// -#define PXE_OPCODE_RECEIVE_FILTERS 0x0009 - -/// -/// Read & change station MAC address. -/// -#define PXE_OPCODE_STATION_ADDRESS 0x000A - -/// -/// Read traffic statistics. -/// -#define PXE_OPCODE_STATISTICS 0x000B - -/// -/// Convert multicast IP address to multicast MAC address. -/// -#define PXE_OPCODE_MCAST_IP_TO_MAC 0x000C - -/// -/// Read or change non-volatile storage on the NIC. -/// -#define PXE_OPCODE_NVDATA 0x000D - -/// -/// Get & clear interrupt status. -/// -#define PXE_OPCODE_GET_STATUS 0x000E - -/// -/// Fill media header in packet for transmit. -/// -#define PXE_OPCODE_FILL_HEADER 0x000F - -/// -/// Transmit packet(s). -/// -#define PXE_OPCODE_TRANSMIT 0x0010 - -/// -/// Receive packet. -/// -#define PXE_OPCODE_RECEIVE 0x0011 - -/// -/// Last valid PXE UNDI OpCode number. -/// -#define PXE_OPCODE_LAST_VALID 0x0011 - -typedef PXE_UINT16 PXE_OPFLAGS; - -#define PXE_OPFLAGS_NOT_USED 0x0000 - -// -// ////////////////////////////////////// -// UNDI Get State -// -// No OpFlags - -//////////////////////////////////////// -// UNDI Start -// -// No OpFlags - -//////////////////////////////////////// -// UNDI Stop -// -// No OpFlags - -//////////////////////////////////////// -// UNDI Get Init Info -// -// No Opflags - -//////////////////////////////////////// -// UNDI Get Config Info -// -// No Opflags - -/// -/// UNDI Initialize -/// -#define PXE_OPFLAGS_INITIALIZE_CABLE_DETECT_MASK 0x0001 -#define PXE_OPFLAGS_INITIALIZE_DETECT_CABLE 0x0000 -#define PXE_OPFLAGS_INITIALIZE_DO_NOT_DETECT_CABLE 0x0001 - -/// -/// -/// UNDI Reset -/// -#define PXE_OPFLAGS_RESET_DISABLE_INTERRUPTS 0x0001 -#define PXE_OPFLAGS_RESET_DISABLE_FILTERS 0x0002 - -/// -/// UNDI Shutdown. -/// -/// No OpFlags. - -/// -/// UNDI Interrupt Enables. -/// -/// -/// Select whether to enable or disable external interrupt signals. -/// Setting both enable and disable will return PXE_STATCODE_INVALID_OPFLAGS. -/// -#define PXE_OPFLAGS_INTERRUPT_OPMASK 0xC000 -#define PXE_OPFLAGS_INTERRUPT_ENABLE 0x8000 -#define PXE_OPFLAGS_INTERRUPT_DISABLE 0x4000 -#define PXE_OPFLAGS_INTERRUPT_READ 0x0000 - -/// -/// Enable receive interrupts. An external interrupt will be generated -/// after a complete non-error packet has been received. -/// -#define PXE_OPFLAGS_INTERRUPT_RECEIVE 0x0001 - -/// -/// Enable transmit interrupts. An external interrupt will be generated -/// after a complete non-error packet has been transmitted. -/// -#define PXE_OPFLAGS_INTERRUPT_TRANSMIT 0x0002 - -/// -/// Enable command interrupts. An external interrupt will be generated -/// when command execution stops. -/// -#define PXE_OPFLAGS_INTERRUPT_COMMAND 0x0004 - -/// -/// Generate software interrupt. Setting this bit generates an external -/// interrupt, if it is supported by the hardware. -/// -#define PXE_OPFLAGS_INTERRUPT_SOFTWARE 0x0008 - -/// -/// UNDI Receive Filters. -/// -/// -/// Select whether to enable or disable receive filters. -/// Setting both enable and disable will return PXE_STATCODE_INVALID_OPCODE. -/// -#define PXE_OPFLAGS_RECEIVE_FILTER_OPMASK 0xC000 -#define PXE_OPFLAGS_RECEIVE_FILTER_ENABLE 0x8000 -#define PXE_OPFLAGS_RECEIVE_FILTER_DISABLE 0x4000 -#define PXE_OPFLAGS_RECEIVE_FILTER_READ 0x0000 - -/// -/// To reset the contents of the multicast MAC address filter list, -/// set this OpFlag: -/// -#define PXE_OPFLAGS_RECEIVE_FILTER_RESET_MCAST_LIST 0x2000 - -/// -/// Enable unicast packet receiving. Packets sent to the current station -/// MAC address will be received. -/// -#define PXE_OPFLAGS_RECEIVE_FILTER_UNICAST 0x0001 - -/// -/// Enable broadcast packet receiving. Packets sent to the broadcast -/// MAC address will be received. -/// -#define PXE_OPFLAGS_RECEIVE_FILTER_BROADCAST 0x0002 - -/// -/// Enable filtered multicast packet receiving. Packets sent to any -/// of the multicast MAC addresses in the multicast MAC address filter -/// list will be received. If the filter list is empty, no multicast -/// -#define PXE_OPFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST 0x0004 - -/// -/// Enable promiscuous packet receiving. All packets will be received. -/// -#define PXE_OPFLAGS_RECEIVE_FILTER_PROMISCUOUS 0x0008 - -/// -/// Enable promiscuous multicast packet receiving. All multicast -/// packets will be received. -/// -#define PXE_OPFLAGS_RECEIVE_FILTER_ALL_MULTICAST 0x0010 - -/// -/// UNDI Station Address. -/// -#define PXE_OPFLAGS_STATION_ADDRESS_READ 0x0000 -#define PXE_OPFLAGS_STATION_ADDRESS_WRITE 0x0000 -#define PXE_OPFLAGS_STATION_ADDRESS_RESET 0x0001 - -/// -/// UNDI Statistics. -/// -#define PXE_OPFLAGS_STATISTICS_READ 0x0000 -#define PXE_OPFLAGS_STATISTICS_RESET 0x0001 - -/// -/// UNDI MCast IP to MAC. -/// -/// -/// Identify the type of IP address in the CPB. -/// -#define PXE_OPFLAGS_MCAST_IP_TO_MAC_OPMASK 0x0003 -#define PXE_OPFLAGS_MCAST_IPV4_TO_MAC 0x0000 -#define PXE_OPFLAGS_MCAST_IPV6_TO_MAC 0x0001 - -/// -/// UNDI NvData. -/// -/// -/// Select the type of non-volatile data operation. -/// -#define PXE_OPFLAGS_NVDATA_OPMASK 0x0001 -#define PXE_OPFLAGS_NVDATA_READ 0x0000 -#define PXE_OPFLAGS_NVDATA_WRITE 0x0001 - -/// -/// UNDI Get Status. -/// -/// -/// Return current interrupt status. This will also clear any interrupts -/// that are currently set. This can be used in a polling routine. The -/// interrupt flags are still set and cleared even when the interrupts -/// are disabled. -/// -#define PXE_OPFLAGS_GET_INTERRUPT_STATUS 0x0001 - -/// -/// Return list of transmitted buffers for recycling. Transmit buffers -/// must not be changed or unallocated until they have recycled. After -/// issuing a transmit command, wait for a transmit complete interrupt. -/// When a transmit complete interrupt is received, read the transmitted -/// buffers. Do not plan on getting one buffer per interrupt. Some -/// NICs and UNDIs may transmit multiple buffers per interrupt. -/// -#define PXE_OPFLAGS_GET_TRANSMITTED_BUFFERS 0x0002 - -/// -/// Return current media status. -/// -#define PXE_OPFLAGS_GET_MEDIA_STATUS 0x0004 - -/// -/// UNDI Fill Header. -/// -#define PXE_OPFLAGS_FILL_HEADER_OPMASK 0x0001 -#define PXE_OPFLAGS_FILL_HEADER_FRAGMENTED 0x0001 -#define PXE_OPFLAGS_FILL_HEADER_WHOLE 0x0000 - -/// -/// UNDI Transmit. -/// -/// -/// S/W UNDI only. Return after the packet has been transmitted. A -/// transmit complete interrupt will still be generated and the transmit -/// buffer will have to be recycled. -/// -#define PXE_OPFLAGS_SWUNDI_TRANSMIT_OPMASK 0x0001 -#define PXE_OPFLAGS_TRANSMIT_BLOCK 0x0001 -#define PXE_OPFLAGS_TRANSMIT_DONT_BLOCK 0x0000 - -#define PXE_OPFLAGS_TRANSMIT_OPMASK 0x0002 -#define PXE_OPFLAGS_TRANSMIT_FRAGMENTED 0x0002 -#define PXE_OPFLAGS_TRANSMIT_WHOLE 0x0000 - -/// -/// UNDI Receive. -/// -/// No OpFlags. -/// - -/// -/// PXE STATFLAGS. -/// -typedef PXE_UINT16 PXE_STATFLAGS; - -#define PXE_STATFLAGS_INITIALIZE 0x0000 - -/// -/// Common StatFlags that can be returned by all commands. -/// -/// -/// The COMMAND_COMPLETE and COMMAND_FAILED status flags must be -/// implemented by all UNDIs. COMMAND_QUEUED is only needed by UNDIs -/// that support command queuing. -/// -#define PXE_STATFLAGS_STATUS_MASK 0xC000 -#define PXE_STATFLAGS_COMMAND_COMPLETE 0xC000 -#define PXE_STATFLAGS_COMMAND_FAILED 0x8000 -#define PXE_STATFLAGS_COMMAND_QUEUED 0x4000 - -/// -/// UNDI Get State. -/// -#define PXE_STATFLAGS_GET_STATE_MASK 0x0003 -#define PXE_STATFLAGS_GET_STATE_INITIALIZED 0x0002 -#define PXE_STATFLAGS_GET_STATE_STARTED 0x0001 -#define PXE_STATFLAGS_GET_STATE_STOPPED 0x0000 - -/// -/// UNDI Start. -/// -/// No additional StatFlags. -/// - -/// -/// UNDI Get Init Info. -/// -#define PXE_STATFLAGS_CABLE_DETECT_MASK 0x0001 -#define PXE_STATFLAGS_CABLE_DETECT_NOT_SUPPORTED 0x0000 -#define PXE_STATFLAGS_CABLE_DETECT_SUPPORTED 0x0001 - -#define PXE_STATFLAGS_GET_STATUS_NO_MEDIA_MASK 0x0002 -#define PXE_STATFLAGS_GET_STATUS_NO_MEDIA_NOT_SUPPORTED 0x0000 -#define PXE_STATFLAGS_GET_STATUS_NO_MEDIA_SUPPORTED 0x0002 - -/// -/// UNDI Initialize. -/// -#define PXE_STATFLAGS_INITIALIZED_NO_MEDIA 0x0001 - -/// -/// UNDI Reset. -/// -#define PXE_STATFLAGS_RESET_NO_MEDIA 0x0001 - -/// -/// UNDI Shutdown. -/// -/// No additional StatFlags. - -/// -/// UNDI Interrupt Enables. -/// -/// -/// If set, receive interrupts are enabled. -/// -#define PXE_STATFLAGS_INTERRUPT_RECEIVE 0x0001 - -/// -/// If set, transmit interrupts are enabled. -/// -#define PXE_STATFLAGS_INTERRUPT_TRANSMIT 0x0002 - -/// -/// If set, command interrupts are enabled. -/// -#define PXE_STATFLAGS_INTERRUPT_COMMAND 0x0004 - -/// -/// UNDI Receive Filters. -/// - -/// -/// If set, unicast packets will be received. -/// -#define PXE_STATFLAGS_RECEIVE_FILTER_UNICAST 0x0001 - -/// -/// If set, broadcast packets will be received. -/// -#define PXE_STATFLAGS_RECEIVE_FILTER_BROADCAST 0x0002 - -/// -/// If set, multicast packets that match up with the multicast address -/// filter list will be received. -/// -#define PXE_STATFLAGS_RECEIVE_FILTER_FILTERED_MULTICAST 0x0004 - -/// -/// If set, all packets will be received. -/// -#define PXE_STATFLAGS_RECEIVE_FILTER_PROMISCUOUS 0x0008 - -/// -/// If set, all multicast packets will be received. -/// -#define PXE_STATFLAGS_RECEIVE_FILTER_ALL_MULTICAST 0x0010 - -/// -/// UNDI Station Address. -/// -/// No additional StatFlags. -/// - -/// -/// UNDI Statistics. -/// -/// No additional StatFlags. -/// - -/// -//// UNDI MCast IP to MAC. -//// -//// No additional StatFlags. - -/// -/// UNDI NvData. -/// -/// No additional StatFlags. -/// - -/// -/// UNDI Get Status. -/// - -/// -/// Use to determine if an interrupt has occurred. -/// -#define PXE_STATFLAGS_GET_STATUS_INTERRUPT_MASK 0x000F -#define PXE_STATFLAGS_GET_STATUS_NO_INTERRUPTS 0x0000 - -/// -/// If set, at least one receive interrupt occurred. -/// -#define PXE_STATFLAGS_GET_STATUS_RECEIVE 0x0001 - -/// -/// If set, at least one transmit interrupt occurred. -/// -#define PXE_STATFLAGS_GET_STATUS_TRANSMIT 0x0002 - -/// -/// If set, at least one command interrupt occurred. -/// -#define PXE_STATFLAGS_GET_STATUS_COMMAND 0x0004 - -/// -/// If set, at least one software interrupt occurred. -/// -#define PXE_STATFLAGS_GET_STATUS_SOFTWARE 0x0008 - -/// -/// This flag is set if the transmitted buffer queue is empty. This flag -/// will be set if all transmitted buffer addresses get written into the DB. -/// -#define PXE_STATFLAGS_GET_STATUS_TXBUF_QUEUE_EMPTY 0x0010 - -/// -/// This flag is set if no transmitted buffer addresses were written -/// into the DB. (This could be because DBsize was too small.) -/// -#define PXE_STATFLAGS_GET_STATUS_NO_TXBUFS_WRITTEN 0x0020 - -/// -/// This flag is set if there is no media detected. -/// -#define PXE_STATFLAGS_GET_STATUS_NO_MEDIA 0x0040 - -/// -/// UNDI Fill Header. -/// -/// No additional StatFlags. -/// - -/// -/// UNDI Transmit. -/// -/// No additional StatFlags. - -/// -/// UNDI Receive -///. - -/// -/// No additional StatFlags. -/// -typedef PXE_UINT16 PXE_STATCODE; - -#define PXE_STATCODE_INITIALIZE 0x0000 - -/// -/// Common StatCodes returned by all UNDI commands, UNDI protocol functions -/// and BC protocol functions. -/// -#define PXE_STATCODE_SUCCESS 0x0000 - -#define PXE_STATCODE_INVALID_CDB 0x0001 -#define PXE_STATCODE_INVALID_CPB 0x0002 -#define PXE_STATCODE_BUSY 0x0003 -#define PXE_STATCODE_QUEUE_FULL 0x0004 -#define PXE_STATCODE_ALREADY_STARTED 0x0005 -#define PXE_STATCODE_NOT_STARTED 0x0006 -#define PXE_STATCODE_NOT_SHUTDOWN 0x0007 -#define PXE_STATCODE_ALREADY_INITIALIZED 0x0008 -#define PXE_STATCODE_NOT_INITIALIZED 0x0009 -#define PXE_STATCODE_DEVICE_FAILURE 0x000A -#define PXE_STATCODE_NVDATA_FAILURE 0x000B -#define PXE_STATCODE_UNSUPPORTED 0x000C -#define PXE_STATCODE_BUFFER_FULL 0x000D -#define PXE_STATCODE_INVALID_PARAMETER 0x000E -#define PXE_STATCODE_INVALID_UNDI 0x000F -#define PXE_STATCODE_IPV4_NOT_SUPPORTED 0x0010 -#define PXE_STATCODE_IPV6_NOT_SUPPORTED 0x0011 -#define PXE_STATCODE_NOT_ENOUGH_MEMORY 0x0012 -#define PXE_STATCODE_NO_DATA 0x0013 - -typedef PXE_UINT16 PXE_IFNUM; - -/// -/// This interface number must be passed to the S/W UNDI Start command. -/// -#define PXE_IFNUM_START 0x0000 - -/// -/// This interface number is returned by the S/W UNDI Get State and -/// Start commands if information in the CDB, CPB or DB is invalid. -/// -#define PXE_IFNUM_INVALID 0x0000 - -typedef PXE_UINT16 PXE_CONTROL; - -/// -/// Setting this flag directs the UNDI to queue this command for later -/// execution if the UNDI is busy and it supports command queuing. -/// If queuing is not supported, a PXE_STATCODE_INVALID_CONTROL error -/// is returned. If the queue is full, a PXE_STATCODE_CDB_QUEUE_FULL -/// error is returned. -/// -#define PXE_CONTROL_QUEUE_IF_BUSY 0x0002 - -/// -/// These two bit values are used to determine if there are more UNDI -/// CDB structures following this one. If the link bit is set, there -/// must be a CDB structure following this one. Execution will start -/// on the next CDB structure as soon as this one completes successfully. -/// If an error is generated by this command, execution will stop. -/// -#define PXE_CONTROL_LINK 0x0001 -#define PXE_CONTROL_LAST_CDB_IN_LIST 0x0000 - -typedef PXE_UINT8 PXE_FRAME_TYPE; - -#define PXE_FRAME_TYPE_NONE 0x00 -#define PXE_FRAME_TYPE_UNICAST 0x01 -#define PXE_FRAME_TYPE_BROADCAST 0x02 -#define PXE_FRAME_TYPE_FILTERED_MULTICAST 0x03 -#define PXE_FRAME_TYPE_PROMISCUOUS 0x04 -#define PXE_FRAME_TYPE_PROMISCUOUS_MULTICAST 0x05 - -#define PXE_FRAME_TYPE_MULTICAST PXE_FRAME_TYPE_FILTERED_MULTICAST - -typedef PXE_UINT32 PXE_IPV4; - -typedef PXE_UINT32 PXE_IPV6[4]; -#define PXE_MAC_LENGTH 32 - -typedef PXE_UINT8 PXE_MAC_ADDR[PXE_MAC_LENGTH]; - -typedef PXE_UINT8 PXE_IFTYPE; -typedef UINT16 PXE_MEDIA_PROTOCOL; - -/// -/// This information is from the ARP section of RFC 1700. -/// -/// 1 Ethernet (10Mb) [JBP] -/// 2 Experimental Ethernet (3Mb) [JBP] -/// 3 Amateur Radio AX.25 [PXK] -/// 4 Proteon ProNET Token Ring [JBP] -/// 5 Chaos [GXP] -/// 6 IEEE 802 Networks [JBP] -/// 7 ARCNET [JBP] -/// 8 Hyperchannel [JBP] -/// 9 Lanstar [TU] -/// 10 Autonet Short Address [MXB1] -/// 11 LocalTalk [JKR1] -/// 12 LocalNet (IBM* PCNet or SYTEK* LocalNET) [JXM] -/// 13 Ultra link [RXD2] -/// 14 SMDS [GXC1] -/// 15 Frame Relay [AGM] -/// 16 Asynchronous Transmission Mode (ATM) [JXB2] -/// 17 HDLC [JBP] -/// 18 Fibre Channel [Yakov Rekhter] -/// 19 Asynchronous Transmission Mode (ATM) [Mark Laubach] -/// 20 Serial Line [JBP] -/// 21 Asynchronous Transmission Mode (ATM) [MXB1] -/// -/// * Other names and brands may be claimed as the property of others. -/// -#define PXE_IFTYPE_ETHERNET 0x01 -#define PXE_IFTYPE_TOKENRING 0x04 -#define PXE_IFTYPE_FIBRE_CHANNEL 0x12 - -typedef struct s_pxe_hw_undi { - PXE_UINT32 Signature; ///< PXE_ROMID_SIGNATURE. - PXE_UINT8 Len; ///< sizeof(PXE_HW_UNDI). - PXE_UINT8 Fudge; ///< makes 8-bit cksum equal zero. - PXE_UINT8 Rev; ///< PXE_ROMID_REV. - PXE_UINT8 IFcnt; ///< physical connector count lower byte. - PXE_UINT8 MajorVer; ///< PXE_ROMID_MAJORVER. - PXE_UINT8 MinorVer; ///< PXE_ROMID_MINORVER. - PXE_UINT8 IFcntExt; ///< physical connector count upper byte. - PXE_UINT8 reserved; ///< zero, not used. - PXE_UINT32 Implementation; ///< implementation flags. - ///< reserved ///< vendor use. - ///< UINT32 Status; ///< status port. - ///< UINT32 Command; ///< command port. - ///< UINT64 CDBaddr; ///< CDB address port. - ///< -} PXE_HW_UNDI; - -/// -/// Status port bit definitions. -/// - -/// -/// UNDI operation state. -/// -#define PXE_HWSTAT_STATE_MASK 0xC0000000 -#define PXE_HWSTAT_BUSY 0xC0000000 -#define PXE_HWSTAT_INITIALIZED 0x80000000 -#define PXE_HWSTAT_STARTED 0x40000000 -#define PXE_HWSTAT_STOPPED 0x00000000 - -/// -/// If set, last command failed. -/// -#define PXE_HWSTAT_COMMAND_FAILED 0x20000000 - -/// -/// If set, identifies enabled receive filters. -/// -#define PXE_HWSTAT_PROMISCUOUS_MULTICAST_RX_ENABLED 0x00001000 -#define PXE_HWSTAT_PROMISCUOUS_RX_ENABLED 0x00000800 -#define PXE_HWSTAT_BROADCAST_RX_ENABLED 0x00000400 -#define PXE_HWSTAT_MULTICAST_RX_ENABLED 0x00000200 -#define PXE_HWSTAT_UNICAST_RX_ENABLED 0x00000100 - -/// -/// If set, identifies enabled external interrupts. -/// -#define PXE_HWSTAT_SOFTWARE_INT_ENABLED 0x00000080 -#define PXE_HWSTAT_TX_COMPLETE_INT_ENABLED 0x00000040 -#define PXE_HWSTAT_PACKET_RX_INT_ENABLED 0x00000020 -#define PXE_HWSTAT_CMD_COMPLETE_INT_ENABLED 0x00000010 - -/// -/// If set, identifies pending interrupts. -/// -#define PXE_HWSTAT_SOFTWARE_INT_PENDING 0x00000008 -#define PXE_HWSTAT_TX_COMPLETE_INT_PENDING 0x00000004 -#define PXE_HWSTAT_PACKET_RX_INT_PENDING 0x00000002 -#define PXE_HWSTAT_CMD_COMPLETE_INT_PENDING 0x00000001 - -/// -/// Command port definitions. -/// - -/// -/// If set, CDB identified in CDBaddr port is given to UNDI. -/// If not set, other bits in this word will be processed. -/// -#define PXE_HWCMD_ISSUE_COMMAND 0x80000000 -#define PXE_HWCMD_INTS_AND_FILTS 0x00000000 - -/// -/// Use these to enable/disable receive filters. -/// -#define PXE_HWCMD_PROMISCUOUS_MULTICAST_RX_ENABLE 0x00001000 -#define PXE_HWCMD_PROMISCUOUS_RX_ENABLE 0x00000800 -#define PXE_HWCMD_BROADCAST_RX_ENABLE 0x00000400 -#define PXE_HWCMD_MULTICAST_RX_ENABLE 0x00000200 -#define PXE_HWCMD_UNICAST_RX_ENABLE 0x00000100 - -/// -/// Use these to enable/disable external interrupts. -/// -#define PXE_HWCMD_SOFTWARE_INT_ENABLE 0x00000080 -#define PXE_HWCMD_TX_COMPLETE_INT_ENABLE 0x00000040 -#define PXE_HWCMD_PACKET_RX_INT_ENABLE 0x00000020 -#define PXE_HWCMD_CMD_COMPLETE_INT_ENABLE 0x00000010 - -/// -/// Use these to clear pending external interrupts. -/// -#define PXE_HWCMD_CLEAR_SOFTWARE_INT 0x00000008 -#define PXE_HWCMD_CLEAR_TX_COMPLETE_INT 0x00000004 -#define PXE_HWCMD_CLEAR_PACKET_RX_INT 0x00000002 -#define PXE_HWCMD_CLEAR_CMD_COMPLETE_INT 0x00000001 - -typedef struct s_pxe_sw_undi { - PXE_UINT32 Signature; ///< PXE_ROMID_SIGNATURE. - PXE_UINT8 Len; ///< sizeof(PXE_SW_UNDI). - PXE_UINT8 Fudge; ///< makes 8-bit cksum zero. - PXE_UINT8 Rev; ///< PXE_ROMID_REV. - PXE_UINT8 IFcnt; ///< physical connector count lower byte. - PXE_UINT8 MajorVer; ///< PXE_ROMID_MAJORVER. - PXE_UINT8 MinorVer; ///< PXE_ROMID_MINORVER. - PXE_UINT8 IFcntExt; ///< physical connector count upper byte. - PXE_UINT8 reserved1; ///< zero, not used. - PXE_UINT32 Implementation; ///< Implementation flags. - PXE_UINT64 EntryPoint; ///< API entry point. - PXE_UINT8 reserved2[3]; ///< zero, not used. - PXE_UINT8 BusCnt; ///< number of bustypes supported. - PXE_UINT32 BusType[1]; ///< list of supported bustypes. -} PXE_SW_UNDI; - -typedef union u_pxe_undi { - PXE_HW_UNDI hw; - PXE_SW_UNDI sw; -} PXE_UNDI; - -/// -/// Signature of !PXE structure. -/// -#define PXE_ROMID_SIGNATURE PXE_BUSTYPE ('!', 'P', 'X', 'E') - -/// -/// !PXE structure format revision -///. -#define PXE_ROMID_REV 0x02 - -/// -/// UNDI command interface revision. These are the values that get sent -/// in option 94 (Client Network Interface Identifier) in the DHCP Discover -/// and PXE Boot Server Request packets. -/// -#define PXE_ROMID_MAJORVER 0x03 -#define PXE_ROMID_MINORVER 0x01 - -/// -/// Implementation flags. -/// -#define PXE_ROMID_IMP_HW_UNDI 0x80000000 -#define PXE_ROMID_IMP_SW_VIRT_ADDR 0x40000000 -#define PXE_ROMID_IMP_64BIT_DEVICE 0x00010000 -#define PXE_ROMID_IMP_FRAG_SUPPORTED 0x00008000 -#define PXE_ROMID_IMP_CMD_LINK_SUPPORTED 0x00004000 -#define PXE_ROMID_IMP_CMD_QUEUE_SUPPORTED 0x00002000 -#define PXE_ROMID_IMP_MULTI_FRAME_SUPPORTED 0x00001000 -#define PXE_ROMID_IMP_NVDATA_SUPPORT_MASK 0x00000C00 -#define PXE_ROMID_IMP_NVDATA_BULK_WRITABLE 0x00000C00 -#define PXE_ROMID_IMP_NVDATA_SPARSE_WRITABLE 0x00000800 -#define PXE_ROMID_IMP_NVDATA_READ_ONLY 0x00000400 -#define PXE_ROMID_IMP_NVDATA_NOT_AVAILABLE 0x00000000 -#define PXE_ROMID_IMP_STATISTICS_SUPPORTED 0x00000200 -#define PXE_ROMID_IMP_STATION_ADDR_SETTABLE 0x00000100 -#define PXE_ROMID_IMP_PROMISCUOUS_MULTICAST_RX_SUPPORTED 0x00000080 -#define PXE_ROMID_IMP_PROMISCUOUS_RX_SUPPORTED 0x00000040 -#define PXE_ROMID_IMP_BROADCAST_RX_SUPPORTED 0x00000020 -#define PXE_ROMID_IMP_FILTERED_MULTICAST_RX_SUPPORTED 0x00000010 -#define PXE_ROMID_IMP_SOFTWARE_INT_SUPPORTED 0x00000008 -#define PXE_ROMID_IMP_TX_COMPLETE_INT_SUPPORTED 0x00000004 -#define PXE_ROMID_IMP_PACKET_RX_INT_SUPPORTED 0x00000002 -#define PXE_ROMID_IMP_CMD_COMPLETE_INT_SUPPORTED 0x00000001 - -typedef struct s_pxe_cdb { - PXE_OPCODE OpCode; - PXE_OPFLAGS OpFlags; - PXE_UINT16 CPBsize; - PXE_UINT16 DBsize; - PXE_UINT64 CPBaddr; - PXE_UINT64 DBaddr; - PXE_STATCODE StatCode; - PXE_STATFLAGS StatFlags; - PXE_UINT16 IFnum; - PXE_CONTROL Control; -} PXE_CDB; - -typedef union u_pxe_ip_addr { - PXE_IPV6 IPv6; - PXE_IPV4 IPv4; -} PXE_IP_ADDR; - -typedef union pxe_device { - /// - /// PCI and PC Card NICs are both identified using bus, device - /// and function numbers. For PC Card, this may require PC - /// Card services to be loaded in the BIOS or preboot - /// environment. - /// - struct { - /// - /// See S/W UNDI ROMID structure definition for PCI and - /// PCC BusType definitions. - /// - PXE_UINT32 BusType; - - /// - /// Bus, device & function numbers that locate this device. - /// - PXE_UINT16 Bus; - PXE_UINT8 Device; - PXE_UINT8 Function; - } - PCI, PCC; - -} PXE_DEVICE; - -/// -/// cpb and db definitions -/// -#define MAX_PCI_CONFIG_LEN 64 ///< # of dwords. -#define MAX_EEPROM_LEN 128 ///< # of dwords. -#define MAX_XMIT_BUFFERS 32 ///< recycling Q length for xmit_done. -#define MAX_MCAST_ADDRESS_CNT 8 - -typedef struct s_pxe_cpb_start_30 { - /// - /// PXE_VOID Delay(UINTN microseconds); - /// - /// UNDI will never request a delay smaller than 10 microseconds - /// and will always request delays in increments of 10 microseconds. - /// The Delay() CallBack routine must delay between n and n + 10 - /// microseconds before returning control to the UNDI. - /// - /// This field cannot be set to zero. - /// - UINT64 Delay; - - /// - /// PXE_VOID Block(UINT32 enable); - /// - /// UNDI may need to block multi-threaded/multi-processor access to - /// critical code sections when programming or accessing the network - /// device. To this end, a blocking service is needed by the UNDI. - /// When UNDI needs a block, it will call Block() passing a non-zero - /// value. When UNDI no longer needs a block, it will call Block() - /// with a zero value. When called, if the Block() is already enabled, - /// do not return control to the UNDI until the previous Block() is - /// disabled. - /// - /// This field cannot be set to zero. - /// - UINT64 Block; - - /// - /// PXE_VOID Virt2Phys(UINT64 virtual, UINT64 physical_ptr); - /// - /// UNDI will pass the virtual address of a buffer and the virtual - /// address of a 64-bit physical buffer. Convert the virtual address - /// to a physical address and write the result to the physical address - /// buffer. If virtual and physical addresses are the same, just - /// copy the virtual address to the physical address buffer. - /// - /// This field can be set to zero if virtual and physical addresses - /// are equal. - /// - UINT64 Virt2Phys; - /// - /// PXE_VOID Mem_IO(UINT8 read_write, UINT8 len, UINT64 port, - /// UINT64 buf_addr); - /// - /// UNDI will read or write the device io space using this call back - /// function. It passes the number of bytes as the len parameter and it - /// will be either 1,2,4 or 8. - /// - /// This field can not be set to zero. - /// - UINT64 Mem_IO; -} PXE_CPB_START_30; - -typedef struct s_pxe_cpb_start_31 { - /// - /// PXE_VOID Delay(UINT64 UnqId, UINTN microseconds); - /// - /// UNDI will never request a delay smaller than 10 microseconds - /// and will always request delays in increments of 10 microseconds. - /// The Delay() CallBack routine must delay between n and n + 10 - /// microseconds before returning control to the UNDI. - /// - /// This field cannot be set to zero. - /// - UINT64 Delay; - - /// - /// PXE_VOID Block(UINT64 unq_id, UINT32 enable); - /// - /// UNDI may need to block multi-threaded/multi-processor access to - /// critical code sections when programming or accessing the network - /// device. To this end, a blocking service is needed by the UNDI. - /// When UNDI needs a block, it will call Block() passing a non-zero - /// value. When UNDI no longer needs a block, it will call Block() - /// with a zero value. When called, if the Block() is already enabled, - /// do not return control to the UNDI until the previous Block() is - /// disabled. - /// - /// This field cannot be set to zero. - /// - UINT64 Block; - - /// - /// PXE_VOID Virt2Phys(UINT64 UnqId, UINT64 virtual, UINT64 physical_ptr); - /// - /// UNDI will pass the virtual address of a buffer and the virtual - /// address of a 64-bit physical buffer. Convert the virtual address - /// to a physical address and write the result to the physical address - /// buffer. If virtual and physical addresses are the same, just - /// copy the virtual address to the physical address buffer. - /// - /// This field can be set to zero if virtual and physical addresses - /// are equal. - /// - UINT64 Virt2Phys; - /// - /// PXE_VOID Mem_IO(UINT64 UnqId, UINT8 read_write, UINT8 len, UINT64 port, - /// UINT64 buf_addr); - /// - /// UNDI will read or write the device io space using this call back - /// function. It passes the number of bytes as the len parameter and it - /// will be either 1,2,4 or 8. - /// - /// This field can not be set to zero. - /// - UINT64 Mem_IO; - /// - /// PXE_VOID Map_Mem(UINT64 unq_id, UINT64 virtual_addr, UINT32 size, - /// UINT32 Direction, UINT64 mapped_addr); - /// - /// UNDI will pass the virtual address of a buffer, direction of the data - /// flow from/to the mapped buffer (the constants are defined below) - /// and a place holder (pointer) for the mapped address. - /// This call will Map the given address to a physical DMA address and write - /// the result to the mapped_addr pointer. If there is no need to - /// map the given address to a lower address (i.e. the given address is - /// associated with a physical address that is already compatible to be - /// used with the DMA, it converts the given virtual address to it's - /// physical address and write that in the mapped address pointer. - /// - /// This field can be set to zero if there is no mapping service available. - /// - UINT64 Map_Mem; - - /// - /// PXE_VOID UnMap_Mem(UINT64 unq_id, UINT64 virtual_addr, UINT32 size, - /// UINT32 Direction, UINT64 mapped_addr); - /// - /// UNDI will pass the virtual and mapped addresses of a buffer. - /// This call will un map the given address. - /// - /// This field can be set to zero if there is no unmapping service available. - /// - UINT64 UnMap_Mem; - - /// - /// PXE_VOID Sync_Mem(UINT64 unq_id, UINT64 virtual, - /// UINT32 size, UINT32 Direction, UINT64 mapped_addr); - /// - /// UNDI will pass the virtual and mapped addresses of a buffer. - /// This call will synchronize the contents of both the virtual and mapped. - /// buffers for the given Direction. - /// - /// This field can be set to zero if there is no service available. - /// - UINT64 Sync_Mem; - - /// - /// protocol driver can provide anything for this Unique_ID, UNDI remembers - /// that as just a 64bit value assocaited to the interface specified by - /// the ifnum and gives it back as a parameter to all the call-back routines - /// when calling for that interface! - /// - UINT64 Unique_ID; -} PXE_CPB_START_31; - -#define TO_AND_FROM_DEVICE 0 -#define FROM_DEVICE 1 -#define TO_DEVICE 2 - -#define PXE_DELAY_MILLISECOND 1000 -#define PXE_DELAY_SECOND 1000000 -#define PXE_IO_READ 0 -#define PXE_IO_WRITE 1 -#define PXE_MEM_READ 2 -#define PXE_MEM_WRITE 4 - -typedef struct s_pxe_db_get_init_info { - /// - /// Minimum length of locked memory buffer that must be given to - /// the Initialize command. Giving UNDI more memory will generally - /// give better performance. - /// - /// If MemoryRequired is zero, the UNDI does not need and will not - /// use system memory to receive and transmit packets. - /// - PXE_UINT32 MemoryRequired; - - /// - /// Maximum frame data length for Tx/Rx excluding the media header. - /// - PXE_UINT32 FrameDataLen; - - /// - /// Supported link speeds are in units of mega bits. Common ethernet - /// values are 10, 100 and 1000. Unused LinkSpeeds[] entries are zero - /// filled. - /// - PXE_UINT32 LinkSpeeds[4]; - - /// - /// Number of non-volatile storage items. - /// - PXE_UINT32 NvCount; - - /// - /// Width of non-volatile storage item in bytes. 0, 1, 2 or 4 - /// - PXE_UINT16 NvWidth; - - /// - /// Media header length. This is the typical media header length for - /// this UNDI. This information is needed when allocating receive - /// and transmit buffers. - /// - PXE_UINT16 MediaHeaderLen; - - /// - /// Number of bytes in the NIC hardware (MAC) address. - /// - PXE_UINT16 HWaddrLen; - - /// - /// Maximum number of multicast MAC addresses in the multicast - /// MAC address filter list. - /// - PXE_UINT16 MCastFilterCnt; - - /// - /// Default number and size of transmit and receive buffers that will - /// be allocated by the UNDI. If MemoryRequired is non-zero, this - /// allocation will come out of the memory buffer given to the Initialize - /// command. If MemoryRequired is zero, this allocation will come out of - /// memory on the NIC. - /// - PXE_UINT16 TxBufCnt; - PXE_UINT16 TxBufSize; - PXE_UINT16 RxBufCnt; - PXE_UINT16 RxBufSize; - - /// - /// Hardware interface types defined in the Assigned Numbers RFC - /// and used in DHCP and ARP packets. - /// See the PXE_IFTYPE typedef and PXE_IFTYPE_xxx macros. - /// - PXE_UINT8 IFtype; - - /// - /// Supported duplex. See PXE_DUPLEX_xxxxx #defines below. - /// - PXE_UINT8 SupportedDuplexModes; - - /// - /// Supported loopback options. See PXE_LOOPBACK_xxxxx #defines below. - /// - PXE_UINT8 SupportedLoopBackModes; -} PXE_DB_GET_INIT_INFO; - -#define PXE_MAX_TXRX_UNIT_ETHER 1500 - -#define PXE_HWADDR_LEN_ETHER 0x0006 -#define PXE_MAC_HEADER_LEN_ETHER 0x000E - -#define PXE_DUPLEX_ENABLE_FULL_SUPPORTED 1 -#define PXE_DUPLEX_FORCE_FULL_SUPPORTED 2 - -#define PXE_LOOPBACK_INTERNAL_SUPPORTED 1 -#define PXE_LOOPBACK_EXTERNAL_SUPPORTED 2 - -typedef struct s_pxe_pci_config_info { - /// - /// This is the flag field for the PXE_DB_GET_CONFIG_INFO union. - /// For PCI bus devices, this field is set to PXE_BUSTYPE_PCI. - /// - UINT32 BusType; - - /// - /// This identifies the PCI network device that this UNDI interface. - /// is bound to. - /// - UINT16 Bus; - UINT8 Device; - UINT8 Function; - - /// - /// This is a copy of the PCI configuration space for this - /// network device. - /// - union { - UINT8 Byte[256]; - UINT16 Word[128]; - UINT32 Dword[64]; - } Config; -} PXE_PCI_CONFIG_INFO; - -typedef struct s_pxe_pcc_config_info { - /// - /// This is the flag field for the PXE_DB_GET_CONFIG_INFO union. - /// For PCC bus devices, this field is set to PXE_BUSTYPE_PCC. - /// - PXE_UINT32 BusType; - - /// - /// This identifies the PCC network device that this UNDI interface - /// is bound to. - /// - PXE_UINT16 Bus; - PXE_UINT8 Device; - PXE_UINT8 Function; - - /// - /// This is a copy of the PCC configuration space for this - /// network device. - /// - union { - PXE_UINT8 Byte[256]; - PXE_UINT16 Word[128]; - PXE_UINT32 Dword[64]; - } Config; -} PXE_PCC_CONFIG_INFO; - -typedef union u_pxe_db_get_config_info { - PXE_PCI_CONFIG_INFO pci; - PXE_PCC_CONFIG_INFO pcc; -} PXE_DB_GET_CONFIG_INFO; - -typedef struct s_pxe_cpb_initialize { - /// - /// Address of first (lowest) byte of the memory buffer. This buffer must - /// be in contiguous physical memory and cannot be swapped out. The UNDI - /// will be using this for transmit and receive buffering. - /// - PXE_UINT64 MemoryAddr; - - /// - /// MemoryLength must be greater than or equal to MemoryRequired - /// returned by the Get Init Info command. - /// - PXE_UINT32 MemoryLength; - - /// - /// Desired link speed in Mbit/sec. Common ethernet values are 10, 100 - /// and 1000. Setting a value of zero will auto-detect and/or use the - /// default link speed (operation depends on UNDI/NIC functionality). - /// - PXE_UINT32 LinkSpeed; - - /// - /// Suggested number and size of receive and transmit buffers to - /// allocate. If MemoryAddr and MemoryLength are non-zero, this - /// allocation comes out of the supplied memory buffer. If MemoryAddr - /// and MemoryLength are zero, this allocation comes out of memory - /// on the NIC. - /// - /// If these fields are set to zero, the UNDI will allocate buffer - /// counts and sizes as it sees fit. - /// - PXE_UINT16 TxBufCnt; - PXE_UINT16 TxBufSize; - PXE_UINT16 RxBufCnt; - PXE_UINT16 RxBufSize; - - /// - /// The following configuration parameters are optional and must be zero - /// to use the default values. - /// - PXE_UINT8 DuplexMode; - - PXE_UINT8 LoopBackMode; -} PXE_CPB_INITIALIZE; - -#define PXE_DUPLEX_DEFAULT 0x00 -#define PXE_FORCE_FULL_DUPLEX 0x01 -#define PXE_ENABLE_FULL_DUPLEX 0x02 -#define PXE_FORCE_HALF_DUPLEX 0x04 -#define PXE_DISABLE_FULL_DUPLEX 0x08 - -#define LOOPBACK_NORMAL 0 -#define LOOPBACK_INTERNAL 1 -#define LOOPBACK_EXTERNAL 2 - -typedef struct s_pxe_db_initialize { - /// - /// Actual amount of memory used from the supplied memory buffer. This - /// may be less that the amount of memory suppllied and may be zero if - /// the UNDI and network device do not use external memory buffers. - /// - /// Memory used by the UNDI and network device is allocated from the - /// lowest memory buffer address. - /// - PXE_UINT32 MemoryUsed; - - /// - /// Actual number and size of receive and transmit buffers that were - /// allocated. - /// - PXE_UINT16 TxBufCnt; - PXE_UINT16 TxBufSize; - PXE_UINT16 RxBufCnt; - PXE_UINT16 RxBufSize; -} PXE_DB_INITIALIZE; - -typedef struct s_pxe_cpb_receive_filters { - /// - /// List of multicast MAC addresses. This list, if present, will - /// replace the existing multicast MAC address filter list. - /// - PXE_MAC_ADDR MCastList[MAX_MCAST_ADDRESS_CNT]; -} PXE_CPB_RECEIVE_FILTERS; - -typedef struct s_pxe_db_receive_filters { - /// - /// Filtered multicast MAC address list. - /// - PXE_MAC_ADDR MCastList[MAX_MCAST_ADDRESS_CNT]; -} PXE_DB_RECEIVE_FILTERS; - -typedef struct s_pxe_cpb_station_address { - /// - /// If supplied and supported, the current station MAC address - /// will be changed. - /// - PXE_MAC_ADDR StationAddr; -} PXE_CPB_STATION_ADDRESS; - -typedef struct s_pxe_dpb_station_address { - /// - /// Current station MAC address. - /// - PXE_MAC_ADDR StationAddr; - - /// - /// Station broadcast MAC address. - /// - PXE_MAC_ADDR BroadcastAddr; - - /// - /// Permanent station MAC address. - /// - PXE_MAC_ADDR PermanentAddr; -} PXE_DB_STATION_ADDRESS; - -typedef struct s_pxe_db_statistics { - /// - /// Bit field identifying what statistic data is collected by the - /// UNDI/NIC. - /// If bit 0x00 is set, Data[0x00] is collected. - /// If bit 0x01 is set, Data[0x01] is collected. - /// If bit 0x20 is set, Data[0x20] is collected. - /// If bit 0x21 is set, Data[0x21] is collected. - /// Etc. - /// - PXE_UINT64 Supported; - - /// - /// Statistic data. - /// - PXE_UINT64 Data[64]; -} PXE_DB_STATISTICS; - -/// -/// Total number of frames received. Includes frames with errors and -/// dropped frames. -/// -#define PXE_STATISTICS_RX_TOTAL_FRAMES 0x00 - -/// -/// Number of valid frames received and copied into receive buffers. -/// -#define PXE_STATISTICS_RX_GOOD_FRAMES 0x01 - -/// -/// Number of frames below the minimum length for the media. -/// This would be <64 for ethernet. -/// -#define PXE_STATISTICS_RX_UNDERSIZE_FRAMES 0x02 - -/// -/// Number of frames longer than the maxminum length for the -/// media. This would be >1500 for ethernet. -/// -#define PXE_STATISTICS_RX_OVERSIZE_FRAMES 0x03 - -/// -/// Valid frames that were dropped because receive buffers were full. -/// -#define PXE_STATISTICS_RX_DROPPED_FRAMES 0x04 - -/// -/// Number of valid unicast frames received and not dropped. -/// -#define PXE_STATISTICS_RX_UNICAST_FRAMES 0x05 - -/// -/// Number of valid broadcast frames received and not dropped. -/// -#define PXE_STATISTICS_RX_BROADCAST_FRAMES 0x06 - -/// -/// Number of valid mutlicast frames received and not dropped. -/// -#define PXE_STATISTICS_RX_MULTICAST_FRAMES 0x07 - -/// -/// Number of frames w/ CRC or alignment errors. -/// -#define PXE_STATISTICS_RX_CRC_ERROR_FRAMES 0x08 - -/// -/// Total number of bytes received. Includes frames with errors -/// and dropped frames. -/// -#define PXE_STATISTICS_RX_TOTAL_BYTES 0x09 - -/// -/// Transmit statistics. -/// -#define PXE_STATISTICS_TX_TOTAL_FRAMES 0x0A -#define PXE_STATISTICS_TX_GOOD_FRAMES 0x0B -#define PXE_STATISTICS_TX_UNDERSIZE_FRAMES 0x0C -#define PXE_STATISTICS_TX_OVERSIZE_FRAMES 0x0D -#define PXE_STATISTICS_TX_DROPPED_FRAMES 0x0E -#define PXE_STATISTICS_TX_UNICAST_FRAMES 0x0F -#define PXE_STATISTICS_TX_BROADCAST_FRAMES 0x10 -#define PXE_STATISTICS_TX_MULTICAST_FRAMES 0x11 -#define PXE_STATISTICS_TX_CRC_ERROR_FRAMES 0x12 -#define PXE_STATISTICS_TX_TOTAL_BYTES 0x13 - -/// -/// Number of collisions detection on this subnet. -/// -#define PXE_STATISTICS_COLLISIONS 0x14 - -/// -/// Number of frames destined for unsupported protocol. -/// -#define PXE_STATISTICS_UNSUPPORTED_PROTOCOL 0x15 - -typedef struct s_pxe_cpb_mcast_ip_to_mac { - /// - /// Multicast IP address to be converted to multicast MAC address. - /// - PXE_IP_ADDR IP; -} PXE_CPB_MCAST_IP_TO_MAC; - -typedef struct s_pxe_db_mcast_ip_to_mac { - /// - /// Multicast MAC address. - /// - PXE_MAC_ADDR MAC; -} PXE_DB_MCAST_IP_TO_MAC; - -typedef struct s_pxe_cpb_nvdata_sparse { - /// - /// NvData item list. Only items in this list will be updated. - /// - struct { - /// - /// Non-volatile storage address to be changed. - /// - PXE_UINT32 Addr; - - /// - /// Data item to write into above storage address. - /// - union { - PXE_UINT8 Byte; - PXE_UINT16 Word; - PXE_UINT32 Dword; - } Data; - } Item[MAX_EEPROM_LEN]; -} PXE_CPB_NVDATA_SPARSE; - -/// -/// When using bulk update, the size of the CPB structure must be -/// the same size as the non-volatile NIC storage. -/// -typedef union u_pxe_cpb_nvdata_bulk { - /// - /// Array of byte-wide data items. - /// - PXE_UINT8 Byte[MAX_EEPROM_LEN << 2]; - - /// - /// Array of word-wide data items. - /// - PXE_UINT16 Word[MAX_EEPROM_LEN << 1]; - - /// - /// Array of dword-wide data items. - /// - PXE_UINT32 Dword[MAX_EEPROM_LEN]; -} PXE_CPB_NVDATA_BULK; - -typedef struct s_pxe_db_nvdata { - /// - /// Arrays of data items from non-volatile storage. - /// - union { - /// - /// Array of byte-wide data items. - /// - PXE_UINT8 Byte[MAX_EEPROM_LEN << 2]; - - /// - /// Array of word-wide data items. - /// - PXE_UINT16 Word[MAX_EEPROM_LEN << 1]; - - /// - /// Array of dword-wide data items. - /// - PXE_UINT32 Dword[MAX_EEPROM_LEN]; - } Data; -} PXE_DB_NVDATA; - -typedef struct s_pxe_db_get_status { - /// - /// Length of next receive frame (header + data). If this is zero, - /// there is no next receive frame available. - /// - PXE_UINT32 RxFrameLen; - - /// - /// Reserved, set to zero. - /// - PXE_UINT32 reserved; - - /// - /// Addresses of transmitted buffers that need to be recycled. - /// - PXE_UINT64 TxBuffer[MAX_XMIT_BUFFERS]; -} PXE_DB_GET_STATUS; - -typedef struct s_pxe_cpb_fill_header { - /// - /// Source and destination MAC addresses. These will be copied into - /// the media header without doing byte swapping. - /// - PXE_MAC_ADDR SrcAddr; - PXE_MAC_ADDR DestAddr; - - /// - /// Address of first byte of media header. The first byte of packet data - /// follows the last byte of the media header. - /// - PXE_UINT64 MediaHeader; - - /// - /// Length of packet data in bytes (not including the media header). - /// - PXE_UINT32 PacketLen; - - /// - /// Protocol type. This will be copied into the media header without - /// doing byte swapping. Protocol type numbers can be obtained from - /// the Assigned Numbers RFC 1700. - /// - PXE_UINT16 Protocol; - - /// - /// Length of the media header in bytes. - /// - PXE_UINT16 MediaHeaderLen; -} PXE_CPB_FILL_HEADER; - -#define PXE_PROTOCOL_ETHERNET_IP 0x0800 -#define PXE_PROTOCOL_ETHERNET_ARP 0x0806 -#define MAX_XMIT_FRAGMENTS 16 - -typedef struct s_pxe_cpb_fill_header_fragmented { - /// - /// Source and destination MAC addresses. These will be copied into - /// the media header without doing byte swapping. - /// - PXE_MAC_ADDR SrcAddr; - PXE_MAC_ADDR DestAddr; - - /// - /// Length of packet data in bytes (not including the media header). - /// - PXE_UINT32 PacketLen; - - /// - /// Protocol type. This will be copied into the media header without - /// doing byte swapping. Protocol type numbers can be obtained from - /// the Assigned Numbers RFC 1700. - /// - PXE_MEDIA_PROTOCOL Protocol; - - /// - /// Length of the media header in bytes. - /// - PXE_UINT16 MediaHeaderLen; - - /// - /// Number of packet fragment descriptors. - /// - PXE_UINT16 FragCnt; - - /// - /// Reserved, must be set to zero. - /// - PXE_UINT16 reserved; - - /// - /// Array of packet fragment descriptors. The first byte of the media - /// header is the first byte of the first fragment. - /// - struct { - /// - /// Address of this packet fragment. - /// - PXE_UINT64 FragAddr; - - /// - /// Length of this packet fragment. - /// - PXE_UINT32 FragLen; - - /// - /// Reserved, must be set to zero. - /// - PXE_UINT32 reserved; - } FragDesc[MAX_XMIT_FRAGMENTS]; -} -PXE_CPB_FILL_HEADER_FRAGMENTED; - -typedef struct s_pxe_cpb_transmit { - /// - /// Address of first byte of frame buffer. This is also the first byte - /// of the media header. - /// - PXE_UINT64 FrameAddr; - - /// - /// Length of the data portion of the frame buffer in bytes. Do not - /// include the length of the media header. - /// - PXE_UINT32 DataLen; - - /// - /// Length of the media header in bytes. - /// - PXE_UINT16 MediaheaderLen; - - /// - /// Reserved, must be zero. - /// - PXE_UINT16 reserved; -} PXE_CPB_TRANSMIT; - -typedef struct s_pxe_cpb_transmit_fragments { - /// - /// Length of packet data in bytes (not including the media header). - /// - PXE_UINT32 FrameLen; - - /// - /// Length of the media header in bytes. - /// - PXE_UINT16 MediaheaderLen; - - /// - /// Number of packet fragment descriptors. - /// - PXE_UINT16 FragCnt; - - /// - /// Array of frame fragment descriptors. The first byte of the first - /// fragment is also the first byte of the media header. - /// - struct { - /// - /// Address of this frame fragment. - /// - PXE_UINT64 FragAddr; - - /// - /// Length of this frame fragment. - /// - PXE_UINT32 FragLen; - - /// - /// Reserved, must be set to zero. - /// - PXE_UINT32 reserved; - } FragDesc[MAX_XMIT_FRAGMENTS]; -} -PXE_CPB_TRANSMIT_FRAGMENTS; - -typedef struct s_pxe_cpb_receive { - /// - /// Address of first byte of receive buffer. This is also the first byte - /// of the frame header. - /// - PXE_UINT64 BufferAddr; - - /// - /// Length of receive buffer. This must be large enough to hold the - /// received frame (media header + data). If the length of smaller than - /// the received frame, data will be lost. - /// - PXE_UINT32 BufferLen; - - /// - /// Reserved, must be set to zero. - /// - PXE_UINT32 reserved; -} PXE_CPB_RECEIVE; - -typedef struct s_pxe_db_receive { - /// - /// Source and destination MAC addresses from media header. - /// - PXE_MAC_ADDR SrcAddr; - PXE_MAC_ADDR DestAddr; - - /// - /// Length of received frame. May be larger than receive buffer size. - /// The receive buffer will not be overwritten. This is how to tell - /// if data was lost because the receive buffer was too small. - /// - PXE_UINT32 FrameLen; - - /// - /// Protocol type from media header. - /// - PXE_MEDIA_PROTOCOL Protocol; - - /// - /// Length of media header in received frame. - /// - PXE_UINT16 MediaHeaderLen; - - /// - /// Type of receive frame. - /// - PXE_FRAME_TYPE Type; - - /// - /// Reserved, must be zero. - /// - PXE_UINT8 reserved[7]; - -} PXE_DB_RECEIVE; - -#pragma pack() - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiSpec.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiSpec.h deleted file mode 100644 index 33da9cad97..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/Uefi/UefiSpec.h +++ /dev/null @@ -1,2188 +0,0 @@ -/** @file - Include file that supports UEFI. - - This include file must contain things defined in the UEFI 2.5 specification. - If a code construct is defined in the UEFI 2.5 specification it must be included - by this include file. - -Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
-This file and the accompanying materials are licensed and made available under are licensed and made available under -the terms and conditions of the BSD License. -The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php. - -THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __UEFI_SPEC_H__ -#define __UEFI_SPEC_H__ - -#include - -#include -#include -#include -#include - -/// -/// Enumeration of EFI memory allocation types. -/// -typedef enum { - /// - /// Allocate any available range of pages that satisfies the request. - /// - AllocateAnyPages, - /// - /// Allocate any available range of pages whose uppermost address is less than - /// or equal to a specified maximum address. - /// - AllocateMaxAddress, - /// - /// Allocate pages at a specified address. - /// - AllocateAddress, - /// - /// Maximum enumeration value that may be used for bounds checking. - /// - MaxAllocateType -} EFI_ALLOCATE_TYPE; - -// -// Bit definitions for EFI_TIME.Daylight -// -#define EFI_TIME_ADJUST_DAYLIGHT 0x01 -#define EFI_TIME_IN_DAYLIGHT 0x02 - -/// -/// Value definition for EFI_TIME.TimeZone. -/// -#define EFI_UNSPECIFIED_TIMEZONE 0x07FF - -// -// Memory cacheability attributes -// -#define EFI_MEMORY_UC 0x0000000000000001ULL -#define EFI_MEMORY_WC 0x0000000000000002ULL -#define EFI_MEMORY_WT 0x0000000000000004ULL -#define EFI_MEMORY_WB 0x0000000000000008ULL -#define EFI_MEMORY_UCE 0x0000000000000010ULL -// -// Physical memory protection attributes -// -// Note: UEFI spec 2.5 and following: use EFI_MEMORY_RO as write-protected physical memory -// protection attribute. Also, EFI_MEMORY_WP means cacheability attribute. -// -#define EFI_MEMORY_WP 0x0000000000001000ULL -#define EFI_MEMORY_RP 0x0000000000002000ULL -#define EFI_MEMORY_XP 0x0000000000004000ULL -#define EFI_MEMORY_RO 0x0000000000020000ULL -// -// Physical memory persistence attribute. -// The memory region supports byte-addressable non-volatility. -// -#define EFI_MEMORY_NV 0x0000000000008000ULL -// -// The memory region provides higher reliability relative to other memory in the system. -// If all memory has the same reliability, then this bit is not used. -// -#define EFI_MEMORY_MORE_RELIABLE 0x0000000000010000ULL -// -// Runtime memory attribute -// -#define EFI_MEMORY_RUNTIME 0x8000000000000000ULL - -/// -/// Memory descriptor version number. -/// -#define EFI_MEMORY_DESCRIPTOR_VERSION 1 - -/// -/// Definition of an EFI memory descriptor. -/// -typedef struct { - /// - /// Type of the memory region. See EFI_MEMORY_TYPE. - /// - UINT32 Type; - /// - /// Physical address of the first byte of the memory region. Must aligned - /// on a 4 KB boundary. - /// - EFI_PHYSICAL_ADDRESS PhysicalStart; - /// - /// Virtual address of the first byte of the memory region. Must aligned - /// on a 4 KB boundary. - /// - EFI_VIRTUAL_ADDRESS VirtualStart; - /// - /// Number of 4KB pages in the memory region. - /// - UINT64 NumberOfPages; - /// - /// Attributes of the memory region that describe the bit mask of capabilities - /// for that memory region, and not necessarily the current settings for that - /// memory region. - /// - UINT64 Attribute; -} EFI_MEMORY_DESCRIPTOR; - -/** - Allocates memory pages from the system. - - @param[in] Type The type of allocation to perform. - @param[in] MemoryType The type of memory to allocate. - MemoryType values in the range 0x70000000..0x7FFFFFFF - are reserved for OEM use. MemoryType values in the range - 0x80000000..0xFFFFFFFF are reserved for use by UEFI OS loaders - that are provided by operating system vendors. The only illegal - memory type values are those in the range EfiMaxMemoryType..0x6FFFFFFF. - @param[in] Pages The number of contiguous 4 KB pages to allocate. - @param[in, out] Memory The pointer to a physical address. On input, the way in which the address is - used depends on the value of Type. - - @retval EFI_SUCCESS The requested pages were allocated. - @retval EFI_INVALID_PARAMETER 1) Type is not AllocateAnyPages or - AllocateMaxAddress or AllocateAddress. - 2) MemoryType is in the range - EfiMaxMemoryType..0x6FFFFFFF. - 3) Memory is NULL. - 4) MemoryType was EfiPersistentMemory. - @retval EFI_OUT_OF_RESOURCES The pages could not be allocated. - @retval EFI_NOT_FOUND The requested pages could not be found. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_ALLOCATE_PAGES)( - IN EFI_ALLOCATE_TYPE Type, - IN EFI_MEMORY_TYPE MemoryType, - IN UINTN Pages, - IN OUT EFI_PHYSICAL_ADDRESS *Memory - ); - -/** - Frees memory pages. - - @param[in] Memory The base physical address of the pages to be freed. - @param[in] Pages The number of contiguous 4 KB pages to free. - - @retval EFI_SUCCESS The requested pages were freed. - @retval EFI_INVALID_PARAMETER Memory is not a page-aligned address or Pages is invalid. - @retval EFI_NOT_FOUND The requested memory pages were not allocated with - AllocatePages(). - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_FREE_PAGES)( - IN EFI_PHYSICAL_ADDRESS Memory, - IN UINTN Pages - ); - -/** - Returns the current memory map. - - @param[in, out] MemoryMapSize A pointer to the size, in bytes, of the MemoryMap buffer. - On input, this is the size of the buffer allocated by the caller. - On output, it is the size of the buffer returned by the firmware if - the buffer was large enough, or the size of the buffer needed to contain - the map if the buffer was too small. - @param[in, out] MemoryMap A pointer to the buffer in which firmware places the current memory - map. - @param[out] MapKey A pointer to the location in which firmware returns the key for the - current memory map. - @param[out] DescriptorSize A pointer to the location in which firmware returns the size, in bytes, of - an individual EFI_MEMORY_DESCRIPTOR. - @param[out] DescriptorVersion A pointer to the location in which firmware returns the version number - associated with the EFI_MEMORY_DESCRIPTOR. - - @retval EFI_SUCCESS The memory map was returned in the MemoryMap buffer. - @retval EFI_BUFFER_TOO_SMALL The MemoryMap buffer was too small. The current buffer size - needed to hold the memory map is returned in MemoryMapSize. - @retval EFI_INVALID_PARAMETER 1) MemoryMapSize is NULL. - 2) The MemoryMap buffer is not too small and MemoryMap is - NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GET_MEMORY_MAP)( - IN OUT UINTN *MemoryMapSize, - IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap, - OUT UINTN *MapKey, - OUT UINTN *DescriptorSize, - OUT UINT32 *DescriptorVersion - ); - -/** - Allocates pool memory. - - @param[in] PoolType The type of pool to allocate. - MemoryType values in the range 0x70000000..0x7FFFFFFF - are reserved for OEM use. MemoryType values in the range - 0x80000000..0xFFFFFFFF are reserved for use by UEFI OS loaders - that are provided by operating system vendors. The only illegal - memory type values are those in the range EfiMaxMemoryType..0x6FFFFFFF. - @param[in] Size The number of bytes to allocate from the pool. - @param[out] Buffer A pointer to a pointer to the allocated buffer if the call succeeds; - undefined otherwise. - - @retval EFI_SUCCESS The requested number of bytes was allocated. - @retval EFI_OUT_OF_RESOURCES The pool requested could not be allocated. - @retval EFI_INVALID_PARAMETER PoolType was invalid or Buffer is NULL. - PoolType was EfiPersistentMemory. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_ALLOCATE_POOL)( - IN EFI_MEMORY_TYPE PoolType, - IN UINTN Size, - OUT VOID **Buffer - ); - -/** - Returns pool memory to the system. - - @param[in] Buffer The pointer to the buffer to free. - - @retval EFI_SUCCESS The memory was returned to the system. - @retval EFI_INVALID_PARAMETER Buffer was invalid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_FREE_POOL)( - IN VOID *Buffer - ); - -/** - Changes the runtime addressing mode of EFI firmware from physical to virtual. - - @param[in] MemoryMapSize The size in bytes of VirtualMap. - @param[in] DescriptorSize The size in bytes of an entry in the VirtualMap. - @param[in] DescriptorVersion The version of the structure entries in VirtualMap. - @param[in] VirtualMap An array of memory descriptors which contain new virtual - address mapping information for all runtime ranges. - - @retval EFI_SUCCESS The virtual address map has been applied. - @retval EFI_UNSUPPORTED EFI firmware is not at runtime, or the EFI firmware is already in - virtual address mapped mode. - @retval EFI_INVALID_PARAMETER DescriptorSize or DescriptorVersion is invalid. - @retval EFI_NO_MAPPING A virtual address was not supplied for a range in the memory - map that requires a mapping. - @retval EFI_NOT_FOUND A virtual address was supplied for an address that is not found - in the memory map. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SET_VIRTUAL_ADDRESS_MAP)( - IN UINTN MemoryMapSize, - IN UINTN DescriptorSize, - IN UINT32 DescriptorVersion, - IN EFI_MEMORY_DESCRIPTOR *VirtualMap - ); - -/** - Connects one or more drivers to a controller. - - @param[in] ControllerHandle The handle of the controller to which driver(s) are to be connected. - @param[in] DriverImageHandle A pointer to an ordered list handles that support the - EFI_DRIVER_BINDING_PROTOCOL. - @param[in] RemainingDevicePath A pointer to the device path that specifies a child of the - controller specified by ControllerHandle. - @param[in] Recursive If TRUE, then ConnectController() is called recursively - until the entire tree of controllers below the controller specified - by ControllerHandle have been created. If FALSE, then - the tree of controllers is only expanded one level. - - @retval EFI_SUCCESS 1) One or more drivers were connected to ControllerHandle. - 2) No drivers were connected to ControllerHandle, but - RemainingDevicePath is not NULL, and it is an End Device - Path Node. - @retval EFI_INVALID_PARAMETER ControllerHandle is NULL. - @retval EFI_NOT_FOUND 1) There are no EFI_DRIVER_BINDING_PROTOCOL instances - present in the system. - 2) No drivers were connected to ControllerHandle. - @retval EFI_SECURITY_VIOLATION - The user has no permission to start UEFI device drivers on the device path - associated with the ControllerHandle or specified by the RemainingDevicePath. -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_CONNECT_CONTROLLER)( - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE *DriverImageHandle, OPTIONAL - IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath, OPTIONAL - IN BOOLEAN Recursive - ); - -/** - Disconnects one or more drivers from a controller. - - @param[in] ControllerHandle The handle of the controller from which driver(s) are to be disconnected. - @param[in] DriverImageHandle The driver to disconnect from ControllerHandle. - If DriverImageHandle is NULL, then all the drivers currently managing - ControllerHandle are disconnected from ControllerHandle. - @param[in] ChildHandle The handle of the child to destroy. - If ChildHandle is NULL, then all the children of ControllerHandle are - destroyed before the drivers are disconnected from ControllerHandle. - - @retval EFI_SUCCESS 1) One or more drivers were disconnected from the controller. - 2) On entry, no drivers are managing ControllerHandle. - 3) DriverImageHandle is not NULL, and on entry - DriverImageHandle is not managing ControllerHandle. - @retval EFI_INVALID_PARAMETER 1) ControllerHandle is NULL. - 2) DriverImageHandle is not NULL, and it is not a valid EFI_HANDLE. - 3) ChildHandle is not NULL, and it is not a valid EFI_HANDLE. - 4) DriverImageHandle does not support the EFI_DRIVER_BINDING_PROTOCOL. - @retval EFI_OUT_OF_RESOURCES There are not enough resources available to disconnect any drivers from - ControllerHandle. - @retval EFI_DEVICE_ERROR The controller could not be disconnected because of a device error. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_DISCONNECT_CONTROLLER)( - IN EFI_HANDLE ControllerHandle, - IN EFI_HANDLE DriverImageHandle, OPTIONAL - IN EFI_HANDLE ChildHandle OPTIONAL - ); - - - -// -// ConvertPointer DebugDisposition type. -// -#define EFI_OPTIONAL_PTR 0x00000001 - -/** - Determines the new virtual address that is to be used on subsequent memory accesses. - - @param[in] DebugDisposition Supplies type information for the pointer being converted. - @param[in, out] Address A pointer to a pointer that is to be fixed to be the value needed - for the new virtual address mappings being applied. - - @retval EFI_SUCCESS The pointer pointed to by Address was modified. - @retval EFI_INVALID_PARAMETER 1) Address is NULL. - 2) *Address is NULL and DebugDisposition does - not have the EFI_OPTIONAL_PTR bit set. - @retval EFI_NOT_FOUND The pointer pointed to by Address was not found to be part - of the current memory map. This is normally fatal. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_CONVERT_POINTER)( - IN UINTN DebugDisposition, - IN OUT VOID **Address - ); - - -// -// These types can be ORed together as needed - for example, -// EVT_TIMER might be Ored with EVT_NOTIFY_WAIT or -// EVT_NOTIFY_SIGNAL. -// -#define EVT_TIMER 0x80000000 -#define EVT_RUNTIME 0x40000000 -#define EVT_NOTIFY_WAIT 0x00000100 -#define EVT_NOTIFY_SIGNAL 0x00000200 - -#define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201 -#define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202 - -// -// The event's NotifyContext pointer points to a runtime memory -// address. -// The event is deprecated in UEFI2.0 and later specifications. -// -#define EVT_RUNTIME_CONTEXT 0x20000000 - - -/** - Invoke a notification event - - @param[in] Event Event whose notification function is being invoked. - @param[in] Context The pointer to the notification function's context, - which is implementation-dependent. - -**/ -typedef -VOID -(EFIAPI *EFI_EVENT_NOTIFY)( - IN EFI_EVENT Event, - IN VOID *Context - ); - -/** - Creates an event. - - @param[in] Type The type of event to create and its mode and attributes. - @param[in] NotifyTpl The task priority level of event notifications, if needed. - @param[in] NotifyFunction The pointer to the event's notification function, if any. - @param[in] NotifyContext The pointer to the notification function's context; corresponds to parameter - Context in the notification function. - @param[out] Event The pointer to the newly created event if the call succeeds; undefined - otherwise. - - @retval EFI_SUCCESS The event structure was created. - @retval EFI_INVALID_PARAMETER One or more parameters are invalid. - @retval EFI_OUT_OF_RESOURCES The event could not be allocated. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_CREATE_EVENT)( - IN UINT32 Type, - IN EFI_TPL NotifyTpl, - IN EFI_EVENT_NOTIFY NotifyFunction, - IN VOID *NotifyContext, - OUT EFI_EVENT *Event - ); - -/** - Creates an event in a group. - - @param[in] Type The type of event to create and its mode and attributes. - @param[in] NotifyTpl The task priority level of event notifications,if needed. - @param[in] NotifyFunction The pointer to the event's notification function, if any. - @param[in] NotifyContext The pointer to the notification function's context; corresponds to parameter - Context in the notification function. - @param[in] EventGroup The pointer to the unique identifier of the group to which this event belongs. - If this is NULL, then the function behaves as if the parameters were passed - to CreateEvent. - @param[out] Event The pointer to the newly created event if the call succeeds; undefined - otherwise. - - @retval EFI_SUCCESS The event structure was created. - @retval EFI_INVALID_PARAMETER One or more parameters are invalid. - @retval EFI_OUT_OF_RESOURCES The event could not be allocated. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_CREATE_EVENT_EX)( - IN UINT32 Type, - IN EFI_TPL NotifyTpl, - IN EFI_EVENT_NOTIFY NotifyFunction OPTIONAL, - IN CONST VOID *NotifyContext OPTIONAL, - IN CONST EFI_GUID *EventGroup OPTIONAL, - OUT EFI_EVENT *Event - ); - -/// -/// Timer delay types -/// -typedef enum { - /// - /// An event's timer settings is to be cancelled and not trigger time is to be set/ - /// - TimerCancel, - /// - /// An event is to be signaled periodically at a specified interval from the current time. - /// - TimerPeriodic, - /// - /// An event is to be signaled once at a specified interval from the current time. - /// - TimerRelative -} EFI_TIMER_DELAY; - -/** - Sets the type of timer and the trigger time for a timer event. - - @param[in] Event The timer event that is to be signaled at the specified time. - @param[in] Type The type of time that is specified in TriggerTime. - @param[in] TriggerTime The number of 100ns units until the timer expires. - A TriggerTime of 0 is legal. - If Type is TimerRelative and TriggerTime is 0, then the timer - event will be signaled on the next timer tick. - If Type is TimerPeriodic and TriggerTime is 0, then the timer - event will be signaled on every timer tick. - - @retval EFI_SUCCESS The event has been set to be signaled at the requested time. - @retval EFI_INVALID_PARAMETER Event or Type is not valid. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SET_TIMER)( - IN EFI_EVENT Event, - IN EFI_TIMER_DELAY Type, - IN UINT64 TriggerTime - ); - -/** - Signals an event. - - @param[in] Event The event to signal. - - @retval EFI_SUCCESS The event has been signaled. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SIGNAL_EVENT)( - IN EFI_EVENT Event - ); - -/** - Stops execution until an event is signaled. - - @param[in] NumberOfEvents The number of events in the Event array. - @param[in] Event An array of EFI_EVENT. - @param[out] Index The pointer to the index of the event which satisfied the wait condition. - - @retval EFI_SUCCESS The event indicated by Index was signaled. - @retval EFI_INVALID_PARAMETER 1) NumberOfEvents is 0. - 2) The event indicated by Index is of type - EVT_NOTIFY_SIGNAL. - @retval EFI_UNSUPPORTED The current TPL is not TPL_APPLICATION. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_WAIT_FOR_EVENT)( - IN UINTN NumberOfEvents, - IN EFI_EVENT *Event, - OUT UINTN *Index - ); - -/** - Closes an event. - - @param[in] Event The event to close. - - @retval EFI_SUCCESS The event has been closed. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_CLOSE_EVENT)( - IN EFI_EVENT Event - ); - -/** - Checks whether an event is in the signaled state. - - @param[in] Event The event to check. - - @retval EFI_SUCCESS The event is in the signaled state. - @retval EFI_NOT_READY The event is not in the signaled state. - @retval EFI_INVALID_PARAMETER Event is of type EVT_NOTIFY_SIGNAL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_CHECK_EVENT)( - IN EFI_EVENT Event - ); - - -// -// Task priority level -// -#define TPL_APPLICATION 4 -#define TPL_CALLBACK 8 -#define TPL_NOTIFY 16 -#define TPL_HIGH_LEVEL 31 - - -/** - Raises a task's priority level and returns its previous level. - - @param[in] NewTpl The new task priority level. - - @return Previous task priority level - -**/ -typedef -EFI_TPL -(EFIAPI *EFI_RAISE_TPL)( - IN EFI_TPL NewTpl - ); - -/** - Restores a task's priority level to its previous value. - - @param[in] OldTpl The previous task priority level to restore. - -**/ -typedef -VOID -(EFIAPI *EFI_RESTORE_TPL)( - IN EFI_TPL OldTpl - ); - -/** - Returns the value of a variable. - - @param[in] VariableName A Null-terminated string that is the name of the vendor's - variable. - @param[in] VendorGuid A unique identifier for the vendor. - @param[out] Attributes If not NULL, a pointer to the memory location to return the - attributes bitmask for the variable. - @param[in, out] DataSize On input, the size in bytes of the return Data buffer. - On output the size of data returned in Data. - @param[out] Data The buffer to return the contents of the variable. - - @retval EFI_SUCCESS The function completed successfully. - @retval EFI_NOT_FOUND The variable was not found. - @retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the result. - @retval EFI_INVALID_PARAMETER VariableName is NULL. - @retval EFI_INVALID_PARAMETER VendorGuid is NULL. - @retval EFI_INVALID_PARAMETER DataSize is NULL. - @retval EFI_INVALID_PARAMETER The DataSize is not too small and Data is NULL. - @retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error. - @retval EFI_SECURITY_VIOLATION The variable could not be retrieved due to an authentication failure. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GET_VARIABLE)( - IN CHAR16 *VariableName, - IN EFI_GUID *VendorGuid, - OUT UINT32 *Attributes, OPTIONAL - IN OUT UINTN *DataSize, - OUT VOID *Data - ); - -/** - Enumerates the current variable names. - - @param[in, out] VariableNameSize The size of the VariableName buffer. - @param[in, out] VariableName On input, supplies the last VariableName that was returned - by GetNextVariableName(). On output, returns the Nullterminated - string of the current variable. - @param[in, out] VendorGuid On input, supplies the last VendorGuid that was returned by - GetNextVariableName(). On output, returns the - VendorGuid of the current variable. - - @retval EFI_SUCCESS The function completed successfully. - @retval EFI_NOT_FOUND The next variable was not found. - @retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the result. - @retval EFI_INVALID_PARAMETER VariableNameSize is NULL. - @retval EFI_INVALID_PARAMETER VariableName is NULL. - @retval EFI_INVALID_PARAMETER VendorGuid is NULL. - @retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GET_NEXT_VARIABLE_NAME)( - IN OUT UINTN *VariableNameSize, - IN OUT CHAR16 *VariableName, - IN OUT EFI_GUID *VendorGuid - ); - -/** - Sets the value of a variable. - - @param[in] VariableName A Null-terminated string that is the name of the vendor's variable. - Each VariableName is unique for each VendorGuid. VariableName must - contain 1 or more characters. If VariableName is an empty string, - then EFI_INVALID_PARAMETER is returned. - @param[in] VendorGuid A unique identifier for the vendor. - @param[in] Attributes Attributes bitmask to set for the variable. - @param[in] DataSize The size in bytes of the Data buffer. Unless the EFI_VARIABLE_APPEND_WRITE, - EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS, or - EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS attribute is set, a size of zero - causes the variable to be deleted. When the EFI_VARIABLE_APPEND_WRITE attribute is - set, then a SetVariable() call with a DataSize of zero will not cause any change to - the variable value (the timestamp associated with the variable may be updated however - even if no new data value is provided,see the description of the - EFI_VARIABLE_AUTHENTICATION_2 descriptor below. In this case the DataSize will not - be zero since the EFI_VARIABLE_AUTHENTICATION_2 descriptor will be populated). - @param[in] Data The contents for the variable. - - @retval EFI_SUCCESS The firmware has successfully stored the variable and its data as - defined by the Attributes. - @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits, name, and GUID was supplied, or the - DataSize exceeds the maximum allowed. - @retval EFI_INVALID_PARAMETER VariableName is an empty string. - @retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold the variable and its data. - @retval EFI_DEVICE_ERROR The variable could not be retrieved due to a hardware error. - @retval EFI_WRITE_PROTECTED The variable in question is read-only. - @retval EFI_WRITE_PROTECTED The variable in question cannot be deleted. - @retval EFI_SECURITY_VIOLATION The variable could not be written due to EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS - or EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACESS being set, but the AuthInfo - does NOT pass the validation check carried out by the firmware. - - @retval EFI_NOT_FOUND The variable trying to be updated or deleted was not found. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SET_VARIABLE)( - IN CHAR16 *VariableName, - IN EFI_GUID *VendorGuid, - IN UINT32 Attributes, - IN UINTN DataSize, - IN VOID *Data - ); - - -/// -/// This provides the capabilities of the -/// real time clock device as exposed through the EFI interfaces. -/// -typedef struct { - /// - /// Provides the reporting resolution of the real-time clock device in - /// counts per second. For a normal PC-AT CMOS RTC device, this - /// value would be 1 Hz, or 1, to indicate that the device only reports - /// the time to the resolution of 1 second. - /// - UINT32 Resolution; - /// - /// Provides the timekeeping accuracy of the real-time clock in an - /// error rate of 1E-6 parts per million. For a clock with an accuracy - /// of 50 parts per million, the value in this field would be - /// 50,000,000. - /// - UINT32 Accuracy; - /// - /// A TRUE indicates that a time set operation clears the device's - /// time below the Resolution reporting level. A FALSE - /// indicates that the state below the Resolution level of the - /// device is not cleared when the time is set. Normal PC-AT CMOS - /// RTC devices set this value to FALSE. - /// - BOOLEAN SetsToZero; -} EFI_TIME_CAPABILITIES; - -/** - Returns the current time and date information, and the time-keeping capabilities - of the hardware platform. - - @param[out] Time A pointer to storage to receive a snapshot of the current time. - @param[out] Capabilities An optional pointer to a buffer to receive the real time clock - device's capabilities. - - @retval EFI_SUCCESS The operation completed successfully. - @retval EFI_INVALID_PARAMETER Time is NULL. - @retval EFI_DEVICE_ERROR The time could not be retrieved due to hardware error. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GET_TIME)( - OUT EFI_TIME *Time, - OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL - ); - -/** - Sets the current local time and date information. - - @param[in] Time A pointer to the current time. - - @retval EFI_SUCCESS The operation completed successfully. - @retval EFI_INVALID_PARAMETER A time field is out of range. - @retval EFI_DEVICE_ERROR The time could not be set due due to hardware error. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SET_TIME)( - IN EFI_TIME *Time - ); - -/** - Returns the current wakeup alarm clock setting. - - @param[out] Enabled Indicates if the alarm is currently enabled or disabled. - @param[out] Pending Indicates if the alarm signal is pending and requires acknowledgement. - @param[out] Time The current alarm setting. - - @retval EFI_SUCCESS The alarm settings were returned. - @retval EFI_INVALID_PARAMETER Enabled is NULL. - @retval EFI_INVALID_PARAMETER Pending is NULL. - @retval EFI_INVALID_PARAMETER Time is NULL. - @retval EFI_DEVICE_ERROR The wakeup time could not be retrieved due to a hardware error. - @retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GET_WAKEUP_TIME)( - OUT BOOLEAN *Enabled, - OUT BOOLEAN *Pending, - OUT EFI_TIME *Time - ); - -/** - Sets the system wakeup alarm clock time. - - @param[in] Enable Enable or disable the wakeup alarm. - @param[in] Time If Enable is TRUE, the time to set the wakeup alarm for. - If Enable is FALSE, then this parameter is optional, and may be NULL. - - @retval EFI_SUCCESS If Enable is TRUE, then the wakeup alarm was enabled. If - Enable is FALSE, then the wakeup alarm was disabled. - @retval EFI_INVALID_PARAMETER A time field is out of range. - @retval EFI_DEVICE_ERROR The wakeup time could not be set due to a hardware error. - @retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SET_WAKEUP_TIME)( - IN BOOLEAN Enable, - IN EFI_TIME *Time OPTIONAL - ); - -/** - Loads an EFI image into memory. - - @param[in] BootPolicy If TRUE, indicates that the request originates from the boot - manager, and that the boot manager is attempting to load - FilePath as a boot selection. Ignored if SourceBuffer is - not NULL. - @param[in] ParentImageHandle The caller's image handle. - @param[in] DevicePath The DeviceHandle specific file path from which the image is - loaded. - @param[in] SourceBuffer If not NULL, a pointer to the memory location containing a copy - of the image to be loaded. - @param[in] SourceSize The size in bytes of SourceBuffer. Ignored if SourceBuffer is NULL. - @param[out] ImageHandle The pointer to the returned image handle that is created when the - image is successfully loaded. - - @retval EFI_SUCCESS Image was loaded into memory correctly. - @retval EFI_NOT_FOUND Both SourceBuffer and DevicePath are NULL. - @retval EFI_INVALID_PARAMETER One or more parametes are invalid. - @retval EFI_UNSUPPORTED The image type is not supported. - @retval EFI_OUT_OF_RESOURCES Image was not loaded due to insufficient resources. - @retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not - understood. - @retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error. - @retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the - image from being loaded. NULL is returned in *ImageHandle. - @retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a - valid EFI_LOADED_IMAGE_PROTOCOL. However, the current - platform policy specifies that the image should not be started. -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_IMAGE_LOAD)( - IN BOOLEAN BootPolicy, - IN EFI_HANDLE ParentImageHandle, - IN EFI_DEVICE_PATH_PROTOCOL *DevicePath, - IN VOID *SourceBuffer OPTIONAL, - IN UINTN SourceSize, - OUT EFI_HANDLE *ImageHandle - ); - -/** - Transfers control to a loaded image's entry point. - - @param[in] ImageHandle Handle of image to be started. - @param[out] ExitDataSize The pointer to the size, in bytes, of ExitData. - @param[out] ExitData The pointer to a pointer to a data buffer that includes a Null-terminated - string, optionally followed by additional binary data. - - @retval EFI_INVALID_PARAMETER ImageHandle is either an invalid image handle or the image - has already been initialized with StartImage. - @retval EFI_SECURITY_VIOLATION The current platform policy specifies that the image should not be started. - @return Exit code from image - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_IMAGE_START)( - IN EFI_HANDLE ImageHandle, - OUT UINTN *ExitDataSize, - OUT CHAR16 **ExitData OPTIONAL - ); - -/** - Terminates a loaded EFI image and returns control to boot services. - - @param[in] ImageHandle Handle that identifies the image. This parameter is passed to the - image on entry. - @param[in] ExitStatus The image's exit code. - @param[in] ExitDataSize The size, in bytes, of ExitData. Ignored if ExitStatus is EFI_SUCCESS. - @param[in] ExitData The pointer to a data buffer that includes a Null-terminated string, - optionally followed by additional binary data. The string is a - description that the caller may use to further indicate the reason - for the image's exit. ExitData is only valid if ExitStatus - is something other than EFI_SUCCESS. The ExitData buffer - must be allocated by calling AllocatePool(). - - @retval EFI_SUCCESS The image specified by ImageHandle was unloaded. - @retval EFI_INVALID_PARAMETER The image specified by ImageHandle has been loaded and - started with LoadImage() and StartImage(), but the - image is not the currently executing image. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_EXIT)( - IN EFI_HANDLE ImageHandle, - IN EFI_STATUS ExitStatus, - IN UINTN ExitDataSize, - IN CHAR16 *ExitData OPTIONAL - ); - -/** - Unloads an image. - - @param[in] ImageHandle Handle that identifies the image to be unloaded. - - @retval EFI_SUCCESS The image has been unloaded. - @retval EFI_INVALID_PARAMETER ImageHandle is not a valid image handle. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_IMAGE_UNLOAD)( - IN EFI_HANDLE ImageHandle - ); - -/** - Terminates all boot services. - - @param[in] ImageHandle Handle that identifies the exiting image. - @param[in] MapKey Key to the latest memory map. - - @retval EFI_SUCCESS Boot services have been terminated. - @retval EFI_INVALID_PARAMETER MapKey is incorrect. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_EXIT_BOOT_SERVICES)( - IN EFI_HANDLE ImageHandle, - IN UINTN MapKey - ); - -/** - Induces a fine-grained stall. - - @param[in] Microseconds The number of microseconds to stall execution. - - @retval EFI_SUCCESS Execution was stalled at least the requested number of - Microseconds. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_STALL)( - IN UINTN Microseconds - ); - -/** - Sets the system's watchdog timer. - - @param[in] Timeout The number of seconds to set the watchdog timer to. - @param[in] WatchdogCode The numeric code to log on a watchdog timer timeout event. - @param[in] DataSize The size, in bytes, of WatchdogData. - @param[in] WatchdogData A data buffer that includes a Null-terminated string, optionally - followed by additional binary data. - - @retval EFI_SUCCESS The timeout has been set. - @retval EFI_INVALID_PARAMETER The supplied WatchdogCode is invalid. - @retval EFI_UNSUPPORTED The system does not have a watchdog timer. - @retval EFI_DEVICE_ERROR The watchdog timer could not be programmed due to a hardware - error. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_SET_WATCHDOG_TIMER)( - IN UINTN Timeout, - IN UINT64 WatchdogCode, - IN UINTN DataSize, - IN CHAR16 *WatchdogData OPTIONAL - ); - -/** - Resets the entire platform. - - @param[in] ResetType The type of reset to perform. - @param[in] ResetStatus The status code for the reset. - @param[in] DataSize The size, in bytes, of WatchdogData. - @param[in] ResetData For a ResetType of EfiResetCold, EfiResetWarm, or - EfiResetShutdown the data buffer starts with a Null-terminated - string, optionally followed by additional binary data. - -**/ -typedef -VOID -(EFIAPI *EFI_RESET_SYSTEM)( - IN EFI_RESET_TYPE ResetType, - IN EFI_STATUS ResetStatus, - IN UINTN DataSize, - IN VOID *ResetData OPTIONAL - ); - -/** - Returns a monotonically increasing count for the platform. - - @param[out] Count The pointer to returned value. - - @retval EFI_SUCCESS The next monotonic count was returned. - @retval EFI_INVALID_PARAMETER Count is NULL. - @retval EFI_DEVICE_ERROR The device is not functioning properly. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GET_NEXT_MONOTONIC_COUNT)( - OUT UINT64 *Count - ); - -/** - Returns the next high 32 bits of the platform's monotonic counter. - - @param[out] HighCount The pointer to returned value. - - @retval EFI_SUCCESS The next high monotonic count was returned. - @retval EFI_INVALID_PARAMETER HighCount is NULL. - @retval EFI_DEVICE_ERROR The device is not functioning properly. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_GET_NEXT_HIGH_MONO_COUNT)( - OUT UINT32 *HighCount - ); - -/** - Computes and returns a 32-bit CRC for a data buffer. - - @param[in] Data A pointer to the buffer on which the 32-bit CRC is to be computed. - @param[in] DataSize The number of bytes in the buffer Data. - @param[out] Crc32 The 32-bit CRC that was computed for the data buffer specified by Data - and DataSize. - - @retval EFI_SUCCESS The 32-bit CRC was computed for the data buffer and returned in - Crc32. - @retval EFI_INVALID_PARAMETER Data is NULL. - @retval EFI_INVALID_PARAMETER Crc32 is NULL. - @retval EFI_INVALID_PARAMETER DataSize is 0. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_CALCULATE_CRC32)( - IN VOID *Data, - IN UINTN DataSize, - OUT UINT32 *Crc32 - ); - -/** - Copies the contents of one buffer to another buffer. - - @param[in] Destination The pointer to the destination buffer of the memory copy. - @param[in] Source The pointer to the source buffer of the memory copy. - @param[in] Length Number of bytes to copy from Source to Destination. - -**/ -typedef -VOID -(EFIAPI *EFI_COPY_MEM)( - IN VOID *Destination, - IN VOID *Source, - IN UINTN Length - ); - -/** - The SetMem() function fills a buffer with a specified value. - - @param[in] Buffer The pointer to the buffer to fill. - @param[in] Size Number of bytes in Buffer to fill. - @param[in] Value Value to fill Buffer with. - -**/ -typedef -VOID -(EFIAPI *EFI_SET_MEM)( - IN VOID *Buffer, - IN UINTN Size, - IN UINT8 Value - ); - -/// -/// Enumeration of EFI Interface Types -/// -typedef enum { - /// - /// Indicates that the supplied protocol interface is supplied in native form. - /// - EFI_NATIVE_INTERFACE -} EFI_INTERFACE_TYPE; - -/** - Installs a protocol interface on a device handle. If the handle does not exist, it is created and added - to the list of handles in the system. InstallMultipleProtocolInterfaces() performs - more error checking than InstallProtocolInterface(), so it is recommended that - InstallMultipleProtocolInterfaces() be used in place of - InstallProtocolInterface() - - @param[in, out] Handle A pointer to the EFI_HANDLE on which the interface is to be installed. - @param[in] Protocol The numeric ID of the protocol interface. - @param[in] InterfaceType Indicates whether Interface is supplied in native form. - @param[in] Interface A pointer to the protocol interface. - - @retval EFI_SUCCESS The protocol interface was installed. - @retval EFI_OUT_OF_RESOURCES Space for a new handle could not be allocated. - @retval EFI_INVALID_PARAMETER Handle is NULL. - @retval EFI_INVALID_PARAMETER Protocol is NULL. - @retval EFI_INVALID_PARAMETER InterfaceType is not EFI_NATIVE_INTERFACE. - @retval EFI_INVALID_PARAMETER Protocol is already installed on the handle specified by Handle. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_INSTALL_PROTOCOL_INTERFACE)( - IN OUT EFI_HANDLE *Handle, - IN EFI_GUID *Protocol, - IN EFI_INTERFACE_TYPE InterfaceType, - IN VOID *Interface - ); - -/** - Installs one or more protocol interfaces into the boot services environment. - - @param[in, out] Handle The pointer to a handle to install the new protocol interfaces on, - or a pointer to NULL if a new handle is to be allocated. - @param ... A variable argument list containing pairs of protocol GUIDs and protocol - interfaces. - - @retval EFI_SUCCESS All the protocol interface was installed. - @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols. - @retval EFI_ALREADY_STARTED A Device Path Protocol instance was passed in that is already present in - the handle database. - @retval EFI_INVALID_PARAMETER Handle is NULL. - @retval EFI_INVALID_PARAMETER Protocol is already installed on the handle specified by Handle. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES)( - IN OUT EFI_HANDLE *Handle, - ... - ); - -/** - Reinstalls a protocol interface on a device handle. - - @param[in] Handle Handle on which the interface is to be reinstalled. - @param[in] Protocol The numeric ID of the interface. - @param[in] OldInterface A pointer to the old interface. NULL can be used if a structure is not - associated with Protocol. - @param[in] NewInterface A pointer to the new interface. - - @retval EFI_SUCCESS The protocol interface was reinstalled. - @retval EFI_NOT_FOUND The OldInterface on the handle was not found. - @retval EFI_ACCESS_DENIED The protocol interface could not be reinstalled, - because OldInterface is still being used by a - driver that will not release it. - @retval EFI_INVALID_PARAMETER Handle is NULL. - @retval EFI_INVALID_PARAMETER Protocol is NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_REINSTALL_PROTOCOL_INTERFACE)( - IN EFI_HANDLE Handle, - IN EFI_GUID *Protocol, - IN VOID *OldInterface, - IN VOID *NewInterface - ); - -/** - Removes a protocol interface from a device handle. It is recommended that - UninstallMultipleProtocolInterfaces() be used in place of - UninstallProtocolInterface(). - - @param[in] Handle The handle on which the interface was installed. - @param[in] Protocol The numeric ID of the interface. - @param[in] Interface A pointer to the interface. - - @retval EFI_SUCCESS The interface was removed. - @retval EFI_NOT_FOUND The interface was not found. - @retval EFI_ACCESS_DENIED The interface was not removed because the interface - is still being used by a driver. - @retval EFI_INVALID_PARAMETER Handle is NULL. - @retval EFI_INVALID_PARAMETER Protocol is NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_UNINSTALL_PROTOCOL_INTERFACE)( - IN EFI_HANDLE Handle, - IN EFI_GUID *Protocol, - IN VOID *Interface - ); - -/** - Removes one or more protocol interfaces into the boot services environment. - - @param[in] Handle The handle to remove the protocol interfaces from. - @param ... A variable argument list containing pairs of protocol GUIDs and - protocol interfaces. - - @retval EFI_SUCCESS All the protocol interfaces were removed. - @retval EFI_INVALID_PARAMETER One of the protocol interfaces was not previously installed on Handle. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES)( - IN EFI_HANDLE Handle, - ... - ); - -/** - Queries a handle to determine if it supports a specified protocol. - - @param[in] Handle The handle being queried. - @param[in] Protocol The published unique identifier of the protocol. - @param[out] Interface Supplies the address where a pointer to the corresponding Protocol - Interface is returned. - - @retval EFI_SUCCESS The interface information for the specified protocol was returned. - @retval EFI_UNSUPPORTED The device does not support the specified protocol. - @retval EFI_INVALID_PARAMETER Handle is NULL. - @retval EFI_INVALID_PARAMETER Protocol is NULL. - @retval EFI_INVALID_PARAMETER Interface is NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_HANDLE_PROTOCOL)( - IN EFI_HANDLE Handle, - IN EFI_GUID *Protocol, - OUT VOID **Interface - ); - -#define EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL 0x00000001 -#define EFI_OPEN_PROTOCOL_GET_PROTOCOL 0x00000002 -#define EFI_OPEN_PROTOCOL_TEST_PROTOCOL 0x00000004 -#define EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER 0x00000008 -#define EFI_OPEN_PROTOCOL_BY_DRIVER 0x00000010 -#define EFI_OPEN_PROTOCOL_EXCLUSIVE 0x00000020 - -/** - Queries a handle to determine if it supports a specified protocol. If the protocol is supported by the - handle, it opens the protocol on behalf of the calling agent. - - @param[in] Handle The handle for the protocol interface that is being opened. - @param[in] Protocol The published unique identifier of the protocol. - @param[out] Interface Supplies the address where a pointer to the corresponding Protocol - Interface is returned. - @param[in] AgentHandle The handle of the agent that is opening the protocol interface - specified by Protocol and Interface. - @param[in] ControllerHandle If the agent that is opening a protocol is a driver that follows the - UEFI Driver Model, then this parameter is the controller handle - that requires the protocol interface. If the agent does not follow - the UEFI Driver Model, then this parameter is optional and may - be NULL. - @param[in] Attributes The open mode of the protocol interface specified by Handle - and Protocol. - - @retval EFI_SUCCESS An item was added to the open list for the protocol interface, and the - protocol interface was returned in Interface. - @retval EFI_UNSUPPORTED Handle does not support Protocol. - @retval EFI_INVALID_PARAMETER One or more parameters are invalid. - @retval EFI_ACCESS_DENIED Required attributes can't be supported in current environment. - @retval EFI_ALREADY_STARTED Item on the open list already has requierd attributes whose agent - handle is the same as AgentHandle. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_OPEN_PROTOCOL)( - IN EFI_HANDLE Handle, - IN EFI_GUID *Protocol, - OUT VOID **Interface, OPTIONAL - IN EFI_HANDLE AgentHandle, - IN EFI_HANDLE ControllerHandle, - IN UINT32 Attributes - ); - - -/** - Closes a protocol on a handle that was opened using OpenProtocol(). - - @param[in] Handle The handle for the protocol interface that was previously opened - with OpenProtocol(), and is now being closed. - @param[in] Protocol The published unique identifier of the protocol. - @param[in] AgentHandle The handle of the agent that is closing the protocol interface. - @param[in] ControllerHandle If the agent that opened a protocol is a driver that follows the - UEFI Driver Model, then this parameter is the controller handle - that required the protocol interface. - - @retval EFI_SUCCESS The protocol instance was closed. - @retval EFI_INVALID_PARAMETER 1) Handle is NULL. - 2) AgentHandle is NULL. - 3) ControllerHandle is not NULL and ControllerHandle is not a valid EFI_HANDLE. - 4) Protocol is NULL. - @retval EFI_NOT_FOUND 1) Handle does not support the protocol specified by Protocol. - 2) The protocol interface specified by Handle and Protocol is not - currently open by AgentHandle and ControllerHandle. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_CLOSE_PROTOCOL)( - IN EFI_HANDLE Handle, - IN EFI_GUID *Protocol, - IN EFI_HANDLE AgentHandle, - IN EFI_HANDLE ControllerHandle - ); - -/// -/// EFI Oprn Protocol Information Entry -/// -typedef struct { - EFI_HANDLE AgentHandle; - EFI_HANDLE ControllerHandle; - UINT32 Attributes; - UINT32 OpenCount; -} EFI_OPEN_PROTOCOL_INFORMATION_ENTRY; - -/** - Retrieves the list of agents that currently have a protocol interface opened. - - @param[in] Handle The handle for the protocol interface that is being queried. - @param[in] Protocol The published unique identifier of the protocol. - @param[out] EntryBuffer A pointer to a buffer of open protocol information in the form of - EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures. - @param[out] EntryCount A pointer to the number of entries in EntryBuffer. - - @retval EFI_SUCCESS The open protocol information was returned in EntryBuffer, and the - number of entries was returned EntryCount. - @retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate EntryBuffer. - @retval EFI_NOT_FOUND Handle does not support the protocol specified by Protocol. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_OPEN_PROTOCOL_INFORMATION)( - IN EFI_HANDLE Handle, - IN EFI_GUID *Protocol, - OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer, - OUT UINTN *EntryCount - ); - -/** - Retrieves the list of protocol interface GUIDs that are installed on a handle in a buffer allocated - from pool. - - @param[in] Handle The handle from which to retrieve the list of protocol interface - GUIDs. - @param[out] ProtocolBuffer A pointer to the list of protocol interface GUID pointers that are - installed on Handle. - @param[out] ProtocolBufferCount A pointer to the number of GUID pointers present in - ProtocolBuffer. - - @retval EFI_SUCCESS The list of protocol interface GUIDs installed on Handle was returned in - ProtocolBuffer. The number of protocol interface GUIDs was - returned in ProtocolBufferCount. - @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the results. - @retval EFI_INVALID_PARAMETER Handle is NULL. - @retval EFI_INVALID_PARAMETER Handle is not a valid EFI_HANDLE. - @retval EFI_INVALID_PARAMETER ProtocolBuffer is NULL. - @retval EFI_INVALID_PARAMETER ProtocolBufferCount is NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_PROTOCOLS_PER_HANDLE)( - IN EFI_HANDLE Handle, - OUT EFI_GUID ***ProtocolBuffer, - OUT UINTN *ProtocolBufferCount - ); - -/** - Creates an event that is to be signaled whenever an interface is installed for a specified protocol. - - @param[in] Protocol The numeric ID of the protocol for which the event is to be registered. - @param[in] Event Event that is to be signaled whenever a protocol interface is registered - for Protocol. - @param[out] Registration A pointer to a memory location to receive the registration value. - - @retval EFI_SUCCESS The notification event has been registered. - @retval EFI_OUT_OF_RESOURCES Space for the notification event could not be allocated. - @retval EFI_INVALID_PARAMETER Protocol is NULL. - @retval EFI_INVALID_PARAMETER Event is NULL. - @retval EFI_INVALID_PARAMETER Registration is NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_REGISTER_PROTOCOL_NOTIFY)( - IN EFI_GUID *Protocol, - IN EFI_EVENT Event, - OUT VOID **Registration - ); - -/// -/// Enumeration of EFI Locate Search Types -/// -typedef enum { - /// - /// Retrieve all the handles in the handle database. - /// - AllHandles, - /// - /// Retrieve the next handle fron a RegisterProtocolNotify() event. - /// - ByRegisterNotify, - /// - /// Retrieve the set of handles from the handle database that support a - /// specified protocol. - /// - ByProtocol -} EFI_LOCATE_SEARCH_TYPE; - -/** - Returns an array of handles that support a specified protocol. - - @param[in] SearchType Specifies which handle(s) are to be returned. - @param[in] Protocol Specifies the protocol to search by. - @param[in] SearchKey Specifies the search key. - @param[in, out] BufferSize On input, the size in bytes of Buffer. On output, the size in bytes of - the array returned in Buffer (if the buffer was large enough) or the - size, in bytes, of the buffer needed to obtain the array (if the buffer was - not large enough). - @param[out] Buffer The buffer in which the array is returned. - - @retval EFI_SUCCESS The array of handles was returned. - @retval EFI_NOT_FOUND No handles match the search. - @retval EFI_BUFFER_TOO_SMALL The BufferSize is too small for the result. - @retval EFI_INVALID_PARAMETER SearchType is not a member of EFI_LOCATE_SEARCH_TYPE. - @retval EFI_INVALID_PARAMETER SearchType is ByRegisterNotify and SearchKey is NULL. - @retval EFI_INVALID_PARAMETER SearchType is ByProtocol and Protocol is NULL. - @retval EFI_INVALID_PARAMETER One or more matches are found and BufferSize is NULL. - @retval EFI_INVALID_PARAMETER BufferSize is large enough for the result and Buffer is NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LOCATE_HANDLE)( - IN EFI_LOCATE_SEARCH_TYPE SearchType, - IN EFI_GUID *Protocol, OPTIONAL - IN VOID *SearchKey, OPTIONAL - IN OUT UINTN *BufferSize, - OUT EFI_HANDLE *Buffer - ); - -/** - Locates the handle to a device on the device path that supports the specified protocol. - - @param[in] Protocol Specifies the protocol to search for. - @param[in, out] DevicePath On input, a pointer to a pointer to the device path. On output, the device - path pointer is modified to point to the remaining part of the device - path. - @param[out] Device A pointer to the returned device handle. - - @retval EFI_SUCCESS The resulting handle was returned. - @retval EFI_NOT_FOUND No handles match the search. - @retval EFI_INVALID_PARAMETER Protocol is NULL. - @retval EFI_INVALID_PARAMETER DevicePath is NULL. - @retval EFI_INVALID_PARAMETER A handle matched the search and Device is NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LOCATE_DEVICE_PATH)( - IN EFI_GUID *Protocol, - IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath, - OUT EFI_HANDLE *Device - ); - -/** - Adds, updates, or removes a configuration table entry from the EFI System Table. - - @param[in] Guid A pointer to the GUID for the entry to add, update, or remove. - @param[in] Table A pointer to the configuration table for the entry to add, update, or - remove. May be NULL. - - @retval EFI_SUCCESS The (Guid, Table) pair was added, updated, or removed. - @retval EFI_NOT_FOUND An attempt was made to delete a nonexistent entry. - @retval EFI_INVALID_PARAMETER Guid is NULL. - @retval EFI_OUT_OF_RESOURCES There is not enough memory available to complete the operation. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_INSTALL_CONFIGURATION_TABLE)( - IN EFI_GUID *Guid, - IN VOID *Table - ); - -/** - Returns an array of handles that support the requested protocol in a buffer allocated from pool. - - @param[in] SearchType Specifies which handle(s) are to be returned. - @param[in] Protocol Provides the protocol to search by. - This parameter is only valid for a SearchType of ByProtocol. - @param[in] SearchKey Supplies the search key depending on the SearchType. - @param[in, out] NoHandles The number of handles returned in Buffer. - @param[out] Buffer A pointer to the buffer to return the requested array of handles that - support Protocol. - - @retval EFI_SUCCESS The array of handles was returned in Buffer, and the number of - handles in Buffer was returned in NoHandles. - @retval EFI_NOT_FOUND No handles match the search. - @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the matching results. - @retval EFI_INVALID_PARAMETER NoHandles is NULL. - @retval EFI_INVALID_PARAMETER Buffer is NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LOCATE_HANDLE_BUFFER)( - IN EFI_LOCATE_SEARCH_TYPE SearchType, - IN EFI_GUID *Protocol, OPTIONAL - IN VOID *SearchKey, OPTIONAL - IN OUT UINTN *NoHandles, - OUT EFI_HANDLE **Buffer - ); - -/** - Returns the first protocol instance that matches the given protocol. - - @param[in] Protocol Provides the protocol to search for. - @param[in] Registration Optional registration key returned from - RegisterProtocolNotify(). - @param[out] Interface On return, a pointer to the first interface that matches Protocol and - Registration. - - @retval EFI_SUCCESS A protocol instance matching Protocol was found and returned in - Interface. - @retval EFI_NOT_FOUND No protocol instances were found that match Protocol and - Registration. - @retval EFI_INVALID_PARAMETER Interface is NULL. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_LOCATE_PROTOCOL)( - IN EFI_GUID *Protocol, - IN VOID *Registration, OPTIONAL - OUT VOID **Interface - ); - -/// -/// EFI Capsule Block Descriptor -/// -typedef struct { - /// - /// Length in bytes of the data pointed to by DataBlock/ContinuationPointer. - /// - UINT64 Length; - union { - /// - /// Physical address of the data block. This member of the union is - /// used if Length is not equal to zero. - /// - EFI_PHYSICAL_ADDRESS DataBlock; - /// - /// Physical address of another block of - /// EFI_CAPSULE_BLOCK_DESCRIPTOR structures. This - /// member of the union is used if Length is equal to zero. If - /// ContinuationPointer is zero this entry represents the end of the list. - /// - EFI_PHYSICAL_ADDRESS ContinuationPointer; - } Union; -} EFI_CAPSULE_BLOCK_DESCRIPTOR; - -/// -/// EFI Capsule Header. -/// -typedef struct { - /// - /// A GUID that defines the contents of a capsule. - /// - EFI_GUID CapsuleGuid; - /// - /// The size of the capsule header. This may be larger than the size of - /// the EFI_CAPSULE_HEADER since CapsuleGuid may imply - /// extended header entries - /// - UINT32 HeaderSize; - /// - /// Bit-mapped list describing the capsule attributes. The Flag values - /// of 0x0000 - 0xFFFF are defined by CapsuleGuid. Flag values - /// of 0x10000 - 0xFFFFFFFF are defined by this specification - /// - UINT32 Flags; - /// - /// Size in bytes of the capsule. - /// - UINT32 CapsuleImageSize; -} EFI_CAPSULE_HEADER; - -/// -/// The EFI System Table entry must point to an array of capsules -/// that contain the same CapsuleGuid value. The array must be -/// prefixed by a UINT32 that represents the size of the array of capsules. -/// -typedef struct { - /// - /// the size of the array of capsules. - /// - UINT32 CapsuleArrayNumber; - /// - /// Point to an array of capsules that contain the same CapsuleGuid value. - /// - VOID* CapsulePtr[1]; -} EFI_CAPSULE_TABLE; - -#define CAPSULE_FLAGS_PERSIST_ACROSS_RESET 0x00010000 -#define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000 -#define CAPSULE_FLAGS_INITIATE_RESET 0x00040000 - -/** - Passes capsules to the firmware with both virtual and physical mapping. Depending on the intended - consumption, the firmware may process the capsule immediately. If the payload should persist - across a system reset, the reset value returned from EFI_QueryCapsuleCapabilities must - be passed into ResetSystem() and will cause the capsule to be processed by the firmware as - part of the reset process. - - @param[in] CapsuleHeaderArray Virtual pointer to an array of virtual pointers to the capsules - being passed into update capsule. - @param[in] CapsuleCount Number of pointers to EFI_CAPSULE_HEADER in - CaspuleHeaderArray. - @param[in] ScatterGatherList Physical pointer to a set of - EFI_CAPSULE_BLOCK_DESCRIPTOR that describes the - location in physical memory of a set of capsules. - - @retval EFI_SUCCESS Valid capsule was passed. If - CAPSULE_FLAGS_PERSIT_ACROSS_RESET is not set, the - capsule has been successfully processed by the firmware. - @retval EFI_INVALID_PARAMETER CapsuleSize is NULL, or an incompatible set of flags were - set in the capsule header. - @retval EFI_INVALID_PARAMETER CapsuleCount is 0. - @retval EFI_DEVICE_ERROR The capsule update was started, but failed due to a device error. - @retval EFI_UNSUPPORTED The capsule type is not supported on this platform. - @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has been previously called this error indicates the capsule - is compatible with this platform but is not capable of being submitted or processed - in runtime. The caller may resubmit the capsule prior to ExitBootServices(). - @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has not been previously called then this error indicates - the capsule is compatible with this platform but there are insufficient resources to process. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_UPDATE_CAPSULE)( - IN EFI_CAPSULE_HEADER **CapsuleHeaderArray, - IN UINTN CapsuleCount, - IN EFI_PHYSICAL_ADDRESS ScatterGatherList OPTIONAL - ); - -/** - Returns if the capsule can be supported via UpdateCapsule(). - - @param[in] CapsuleHeaderArray Virtual pointer to an array of virtual pointers to the capsules - being passed into update capsule. - @param[in] CapsuleCount Number of pointers to EFI_CAPSULE_HEADER in - CaspuleHeaderArray. - @param[out] MaxiumCapsuleSize On output the maximum size that UpdateCapsule() can - support as an argument to UpdateCapsule() via - CapsuleHeaderArray and ScatterGatherList. - @param[out] ResetType Returns the type of reset required for the capsule update. - - @retval EFI_SUCCESS Valid answer returned. - @retval EFI_UNSUPPORTED The capsule type is not supported on this platform, and - MaximumCapsuleSize and ResetType are undefined. - @retval EFI_INVALID_PARAMETER MaximumCapsuleSize is NULL. - @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has been previously called this error indicates the capsule - is compatible with this platform but is not capable of being submitted or processed - in runtime. The caller may resubmit the capsule prior to ExitBootServices(). - @retval EFI_OUT_OF_RESOURCES When ExitBootServices() has not been previously called then this error indicates - the capsule is compatible with this platform but there are insufficient resources to process. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_QUERY_CAPSULE_CAPABILITIES)( - IN EFI_CAPSULE_HEADER **CapsuleHeaderArray, - IN UINTN CapsuleCount, - OUT UINT64 *MaximumCapsuleSize, - OUT EFI_RESET_TYPE *ResetType - ); - -/** - Returns information about the EFI variables. - - @param[in] Attributes Attributes bitmask to specify the type of variables on - which to return information. - @param[out] MaximumVariableStorageSize On output the maximum size of the storage space - available for the EFI variables associated with the - attributes specified. - @param[out] RemainingVariableStorageSize Returns the remaining size of the storage space - available for the EFI variables associated with the - attributes specified. - @param[out] MaximumVariableSize Returns the maximum size of the individual EFI - variables associated with the attributes specified. - - @retval EFI_SUCCESS Valid answer returned. - @retval EFI_INVALID_PARAMETER An invalid combination of attribute bits was supplied - @retval EFI_UNSUPPORTED The attribute is not supported on this platform, and the - MaximumVariableStorageSize, - RemainingVariableStorageSize, MaximumVariableSize - are undefined. - -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_QUERY_VARIABLE_INFO)( - IN UINT32 Attributes, - OUT UINT64 *MaximumVariableStorageSize, - OUT UINT64 *RemainingVariableStorageSize, - OUT UINT64 *MaximumVariableSize - ); - -// -// Firmware should stop at a firmware user interface on next boot -// -#define EFI_OS_INDICATIONS_BOOT_TO_FW_UI 0x0000000000000001 -#define EFI_OS_INDICATIONS_TIMESTAMP_REVOCATION 0x0000000000000002 -#define EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED 0x0000000000000004 -#define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED 0x0000000000000008 -#define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED 0x0000000000000010 - -// -// EFI Runtime Services Table -// -#define EFI_SYSTEM_TABLE_SIGNATURE SIGNATURE_64 ('I','B','I',' ','S','Y','S','T') -#define EFI_2_50_SYSTEM_TABLE_REVISION ((2 << 16) | (50)) -#define EFI_2_40_SYSTEM_TABLE_REVISION ((2 << 16) | (40)) -#define EFI_2_31_SYSTEM_TABLE_REVISION ((2 << 16) | (31)) -#define EFI_2_30_SYSTEM_TABLE_REVISION ((2 << 16) | (30)) -#define EFI_2_20_SYSTEM_TABLE_REVISION ((2 << 16) | (20)) -#define EFI_2_10_SYSTEM_TABLE_REVISION ((2 << 16) | (10)) -#define EFI_2_00_SYSTEM_TABLE_REVISION ((2 << 16) | (00)) -#define EFI_1_10_SYSTEM_TABLE_REVISION ((1 << 16) | (10)) -#define EFI_1_02_SYSTEM_TABLE_REVISION ((1 << 16) | (02)) -#define EFI_SYSTEM_TABLE_REVISION EFI_2_50_SYSTEM_TABLE_REVISION -#define EFI_SPECIFICATION_VERSION EFI_SYSTEM_TABLE_REVISION - -#define EFI_RUNTIME_SERVICES_SIGNATURE SIGNATURE_64 ('R','U','N','T','S','E','R','V') -#define EFI_RUNTIME_SERVICES_REVISION EFI_SPECIFICATION_VERSION - -/// -/// EFI Runtime Services Table. -/// -typedef struct { - /// - /// The table header for the EFI Runtime Services Table. - /// - EFI_TABLE_HEADER Hdr; - - // - // Time Services - // - EFI_GET_TIME GetTime; - EFI_SET_TIME SetTime; - EFI_GET_WAKEUP_TIME GetWakeupTime; - EFI_SET_WAKEUP_TIME SetWakeupTime; - - // - // Virtual Memory Services - // - EFI_SET_VIRTUAL_ADDRESS_MAP SetVirtualAddressMap; - EFI_CONVERT_POINTER ConvertPointer; - - // - // Variable Services - // - EFI_GET_VARIABLE GetVariable; - EFI_GET_NEXT_VARIABLE_NAME GetNextVariableName; - EFI_SET_VARIABLE SetVariable; - - // - // Miscellaneous Services - // - EFI_GET_NEXT_HIGH_MONO_COUNT GetNextHighMonotonicCount; - EFI_RESET_SYSTEM ResetSystem; - - // - // UEFI 2.0 Capsule Services - // - EFI_UPDATE_CAPSULE UpdateCapsule; - EFI_QUERY_CAPSULE_CAPABILITIES QueryCapsuleCapabilities; - - // - // Miscellaneous UEFI 2.0 Service - // - EFI_QUERY_VARIABLE_INFO QueryVariableInfo; -} EFI_RUNTIME_SERVICES; - - -#define EFI_BOOT_SERVICES_SIGNATURE SIGNATURE_64 ('B','O','O','T','S','E','R','V') -#define EFI_BOOT_SERVICES_REVISION EFI_SPECIFICATION_VERSION - -/// -/// EFI Boot Services Table. -/// -typedef struct { - /// - /// The table header for the EFI Boot Services Table. - /// - EFI_TABLE_HEADER Hdr; - - // - // Task Priority Services - // - EFI_RAISE_TPL RaiseTPL; - EFI_RESTORE_TPL RestoreTPL; - - // - // Memory Services - // - EFI_ALLOCATE_PAGES AllocatePages; - EFI_FREE_PAGES FreePages; - EFI_GET_MEMORY_MAP GetMemoryMap; - EFI_ALLOCATE_POOL AllocatePool; - EFI_FREE_POOL FreePool; - - // - // Event & Timer Services - // - EFI_CREATE_EVENT CreateEvent; - EFI_SET_TIMER SetTimer; - EFI_WAIT_FOR_EVENT WaitForEvent; - EFI_SIGNAL_EVENT SignalEvent; - EFI_CLOSE_EVENT CloseEvent; - EFI_CHECK_EVENT CheckEvent; - - // - // Protocol Handler Services - // - EFI_INSTALL_PROTOCOL_INTERFACE InstallProtocolInterface; - EFI_REINSTALL_PROTOCOL_INTERFACE ReinstallProtocolInterface; - EFI_UNINSTALL_PROTOCOL_INTERFACE UninstallProtocolInterface; - EFI_HANDLE_PROTOCOL HandleProtocol; - VOID *Reserved; - EFI_REGISTER_PROTOCOL_NOTIFY RegisterProtocolNotify; - EFI_LOCATE_HANDLE LocateHandle; - EFI_LOCATE_DEVICE_PATH LocateDevicePath; - EFI_INSTALL_CONFIGURATION_TABLE InstallConfigurationTable; - - // - // Image Services - // - EFI_IMAGE_LOAD LoadImage; - EFI_IMAGE_START StartImage; - EFI_EXIT Exit; - EFI_IMAGE_UNLOAD UnloadImage; - EFI_EXIT_BOOT_SERVICES ExitBootServices; - - // - // Miscellaneous Services - // - EFI_GET_NEXT_MONOTONIC_COUNT GetNextMonotonicCount; - EFI_STALL Stall; - EFI_SET_WATCHDOG_TIMER SetWatchdogTimer; - - // - // DriverSupport Services - // - EFI_CONNECT_CONTROLLER ConnectController; - EFI_DISCONNECT_CONTROLLER DisconnectController; - - // - // Open and Close Protocol Services - // - EFI_OPEN_PROTOCOL OpenProtocol; - EFI_CLOSE_PROTOCOL CloseProtocol; - EFI_OPEN_PROTOCOL_INFORMATION OpenProtocolInformation; - - // - // Library Services - // - EFI_PROTOCOLS_PER_HANDLE ProtocolsPerHandle; - EFI_LOCATE_HANDLE_BUFFER LocateHandleBuffer; - EFI_LOCATE_PROTOCOL LocateProtocol; - EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES InstallMultipleProtocolInterfaces; - EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES UninstallMultipleProtocolInterfaces; - - // - // 32-bit CRC Services - // - EFI_CALCULATE_CRC32 CalculateCrc32; - - // - // Miscellaneous Services - // - EFI_COPY_MEM CopyMem; - EFI_SET_MEM SetMem; - EFI_CREATE_EVENT_EX CreateEventEx; -} EFI_BOOT_SERVICES; - -/// -/// Contains a set of GUID/pointer pairs comprised of the ConfigurationTable field in the -/// EFI System Table. -/// -typedef struct { - /// - /// The 128-bit GUID value that uniquely identifies the system configuration table. - /// - EFI_GUID VendorGuid; - /// - /// A pointer to the table associated with VendorGuid. - /// - VOID *VendorTable; -} EFI_CONFIGURATION_TABLE; - -/// -/// EFI System Table -/// -typedef struct { - /// - /// The table header for the EFI System Table. - /// - EFI_TABLE_HEADER Hdr; - /// - /// A pointer to a null terminated string that identifies the vendor - /// that produces the system firmware for the platform. - /// - CHAR16 *FirmwareVendor; - /// - /// A firmware vendor specific value that identifies the revision - /// of the system firmware for the platform. - /// - UINT32 FirmwareRevision; - /// - /// The handle for the active console input device. This handle must support - /// EFI_SIMPLE_TEXT_INPUT_PROTOCOL and EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL. - /// - EFI_HANDLE ConsoleInHandle; - /// - /// A pointer to the EFI_SIMPLE_TEXT_INPUT_PROTOCOL interface that is - /// associated with ConsoleInHandle. - /// - EFI_SIMPLE_TEXT_INPUT_PROTOCOL *ConIn; - /// - /// The handle for the active console output device. - /// - EFI_HANDLE ConsoleOutHandle; - /// - /// A pointer to the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL interface - /// that is associated with ConsoleOutHandle. - /// - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut; - /// - /// The handle for the active standard error console device. - /// This handle must support the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL. - /// - EFI_HANDLE StandardErrorHandle; - /// - /// A pointer to the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL interface - /// that is associated with StandardErrorHandle. - /// - EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *StdErr; - /// - /// A pointer to the EFI Runtime Services Table. - /// - EFI_RUNTIME_SERVICES *RuntimeServices; - /// - /// A pointer to the EFI Boot Services Table. - /// - EFI_BOOT_SERVICES *BootServices; - /// - /// The number of system configuration tables in the buffer ConfigurationTable. - /// - UINTN NumberOfTableEntries; - /// - /// A pointer to the system configuration tables. - /// The number of entries in the table is NumberOfTableEntries. - /// - EFI_CONFIGURATION_TABLE *ConfigurationTable; -} EFI_SYSTEM_TABLE; - -/** - This is the declaration of an EFI image entry point. This entry point is - the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including - both device drivers and bus drivers. - - @param[in] ImageHandle The firmware allocated handle for the UEFI image. - @param[in] SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The operation completed successfully. - @retval Others An unexpected error occurred. -**/ -typedef -EFI_STATUS -(EFIAPI *EFI_IMAGE_ENTRY_POINT)( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ); - -// -// EFI Load Option. This data structure describes format of UEFI boot option variables. -// -// NOTE: EFI Load Option is a byte packed buffer of variable length fields. -// The first two fields have fixed length. They are declared as members of the -// EFI_LOAD_OPTION structure. All the other fields are variable length fields. -// They are listed in the comment block below for reference purposes. -// -#pragma pack(1) -typedef struct _EFI_LOAD_OPTION { - /// - /// The attributes for this load option entry. All unused bits must be zero - /// and are reserved by the UEFI specification for future growth. - /// - UINT32 Attributes; - /// - /// Length in bytes of the FilePathList. OptionalData starts at offset - /// sizeof(UINT32) + sizeof(UINT16) + StrSize(Description) + FilePathListLength - /// of the EFI_LOAD_OPTION descriptor. - /// - UINT16 FilePathListLength; - /// - /// The user readable description for the load option. - /// This field ends with a Null character. - /// - // CHAR16 Description[]; - /// - /// A packed array of UEFI device paths. The first element of the array is a - /// device path that describes the device and location of the Image for this - /// load option. The FilePathList[0] is specific to the device type. Other - /// device paths may optionally exist in the FilePathList, but their usage is - /// OSV specific. Each element in the array is variable length, and ends at - /// the device path end structure. Because the size of Description is - /// arbitrary, this data structure is not guaranteed to be aligned on a - /// natural boundary. This data structure may have to be copied to an aligned - /// natural boundary before it is used. - /// - // EFI_DEVICE_PATH_PROTOCOL FilePathList[]; - /// - /// The remaining bytes in the load option descriptor are a binary data buffer - /// that is passed to the loaded image. If the field is zero bytes long, a - /// NULL pointer is passed to the loaded image. The number of bytes in - /// OptionalData can be computed by subtracting the starting offset of - /// OptionalData from total size in bytes of the EFI_LOAD_OPTION. - /// - // UINT8 OptionalData[]; -} EFI_LOAD_OPTION; -#pragma pack() - -// -// EFI Load Options Attributes -// -#define LOAD_OPTION_ACTIVE 0x00000001 -#define LOAD_OPTION_FORCE_RECONNECT 0x00000002 -#define LOAD_OPTION_HIDDEN 0x00000008 -#define LOAD_OPTION_CATEGORY 0x00001F00 - -#define LOAD_OPTION_CATEGORY_BOOT 0x00000000 -#define LOAD_OPTION_CATEGORY_APP 0x00000100 - -#define EFI_BOOT_OPTION_SUPPORT_KEY 0x00000001 -#define EFI_BOOT_OPTION_SUPPORT_APP 0x00000002 -#define EFI_BOOT_OPTION_SUPPORT_SYSPREP 0x00000010 -#define EFI_BOOT_OPTION_SUPPORT_COUNT 0x00000300 - -/// -/// EFI Boot Key Data -/// -typedef union { - struct { - /// - /// Indicates the revision of the EFI_KEY_OPTION structure. This revision level should be 0. - /// - UINT32 Revision : 8; - /// - /// Either the left or right Shift keys must be pressed (1) or must not be pressed (0). - /// - UINT32 ShiftPressed : 1; - /// - /// Either the left or right Control keys must be pressed (1) or must not be pressed (0). - /// - UINT32 ControlPressed : 1; - /// - /// Either the left or right Alt keys must be pressed (1) or must not be pressed (0). - /// - UINT32 AltPressed : 1; - /// - /// Either the left or right Logo keys must be pressed (1) or must not be pressed (0). - /// - UINT32 LogoPressed : 1; - /// - /// The Menu key must be pressed (1) or must not be pressed (0). - /// - UINT32 MenuPressed : 1; - /// - /// The SysReq key must be pressed (1) or must not be pressed (0). - /// - UINT32 SysReqPressed : 1; - UINT32 Reserved : 16; - /// - /// Specifies the actual number of entries in EFI_KEY_OPTION.Keys, from 0-3. If - /// zero, then only the shift state is considered. If more than one, then the boot option will - /// only be launched if all of the specified keys are pressed with the same shift state. - /// - UINT32 InputKeyCount : 2; - } Options; - UINT32 PackedValue; -} EFI_BOOT_KEY_DATA; - -/// -/// EFI Key Option. -/// -#pragma pack(1) -typedef struct { - /// - /// Specifies options about how the key will be processed. - /// - EFI_BOOT_KEY_DATA KeyData; - /// - /// The CRC-32 which should match the CRC-32 of the entire EFI_LOAD_OPTION to - /// which BootOption refers. If the CRC-32s do not match this value, then this key - /// option is ignored. - /// - UINT32 BootOptionCrc; - /// - /// The Boot#### option which will be invoked if this key is pressed and the boot option - /// is active (LOAD_OPTION_ACTIVE is set). - /// - UINT16 BootOption; - /// - /// The key codes to compare against those returned by the - /// EFI_SIMPLE_TEXT_INPUT and EFI_SIMPLE_TEXT_INPUT_EX protocols. - /// The number of key codes (0-3) is specified by the EFI_KEY_CODE_COUNT field in KeyOptions. - /// - //EFI_INPUT_KEY Keys[]; -} EFI_KEY_OPTION; -#pragma pack() - -// -// EFI File location to boot from on removable media devices -// -#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA32 L"\\EFI\\BOOT\\BOOTIA32.EFI" -#define EFI_REMOVABLE_MEDIA_FILE_NAME_IA64 L"\\EFI\\BOOT\\BOOTIA64.EFI" -#define EFI_REMOVABLE_MEDIA_FILE_NAME_X64 L"\\EFI\\BOOT\\BOOTX64.EFI" -#define EFI_REMOVABLE_MEDIA_FILE_NAME_ARM L"\\EFI\\BOOT\\BOOTARM.EFI" -#define EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 L"\\EFI\\BOOT\\BOOTAA64.EFI" - -#if defined (MDE_CPU_IA32) - #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_IA32 -#elif defined (MDE_CPU_IPF) - #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_IA64 -#elif defined (MDE_CPU_X64) - #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_X64 -#elif defined (MDE_CPU_EBC) -#elif defined (MDE_CPU_ARM) - #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_ARM -#elif defined (MDE_CPU_AARCH64) - #define EFI_REMOVABLE_MEDIA_FILE_NAME EFI_REMOVABLE_MEDIA_FILE_NAME_AARCH64 -#else - #error Unknown Processor Type -#endif - -#include -#include -#include - -#endif diff --git a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/X64/ProcessorBind.h b/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/X64/ProcessorBind.h deleted file mode 100644 index c0602ef060..0000000000 --- a/src/vendorcode/intel/edk2/UDK2015/MdePkg/Include/X64/ProcessorBind.h +++ /dev/null @@ -1,318 +0,0 @@ -/** @file - Processor or Compiler specific defines and types x64 (Intel 64, AMD64). - - Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
- This file and the accompanying materials are licensed and made available under - the terms and conditions of the BSD License. - The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - - THIS FILE IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __PROCESSOR_BIND_H__ -#define __PROCESSOR_BIND_H__ - -/// -/// Define the processor type so other code can make processor based choices -/// -#define MDE_CPU_X64 - -// -// Make sure we are using the correct packing rules per EFI specification -// -#if !defined(__GNUC__) -#pragma pack() -#endif - - -#if defined(__INTEL_COMPILER) -// -// Disable ICC's remark #869: "Parameter" was never referenced warning. -// This is legal ANSI C code so we disable the remark that is turned on with -Wall -// -#pragma warning ( disable : 869 ) - -// -// Disable ICC's remark #1418: external function definition with no prior declaration. -// This is legal ANSI C code so we disable the remark that is turned on with /W4 -// -#pragma warning ( disable : 1418 ) - -// -// Disable ICC's remark #1419: external declaration in primary source file -// This is legal ANSI C code so we disable the remark that is turned on with /W4 -// -#pragma warning ( disable : 1419 ) - -// -// Disable ICC's remark #593: "Variable" was set but never used. -// This is legal ANSI C code so we disable the remark that is turned on with /W4 -// -#pragma warning ( disable : 593 ) - -#endif - - -#if defined(_MSC_EXTENSIONS) - -// -// Disable warning that make it impossible to compile at /W4 -// This only works for Microsoft* tools -// - -// -// Disabling bitfield type checking warnings. -// -#pragma warning ( disable : 4214 ) - -// -// Disabling the unreferenced formal parameter warnings. -// -#pragma warning ( disable : 4100 ) - -// -// Disable slightly different base types warning as CHAR8 * can not be set -// to a constant string. -// -#pragma warning ( disable : 4057 ) - -// -// ASSERT(FALSE) or while (TRUE) are legal constructes so supress this warning -// -#pragma warning ( disable : 4127 ) - -// -// This warning is caused by functions defined but not used. For precompiled header only. -// -#pragma warning ( disable : 4505 ) - -// -// This warning is caused by empty (after preprocessing) source file. For precompiled header only. -// -#pragma warning ( disable : 4206 ) - -#if _MSC_VER == 1800 || _MSC_VER == 1900 - -// -// Disable these warnings for VS2013. -// - -// -// This warning is for potentially uninitialized local variable, and it may cause false -// positive issues in VS2013 and VS2015 build -// -#pragma warning ( disable : 4701 ) - -// -// This warning is for potentially uninitialized local pointer variable, and it may cause -// false positive issues in VS2013 and VS2015 build -// -#pragma warning ( disable : 4703 ) - -#endif - -#endif - - -#if defined(_MSC_EXTENSIONS) - // - // use Microsoft C complier dependent integer width types - // - - /// - /// 8-byte unsigned value - /// - typedef unsigned __int64 UINT64; - /// - /// 8-byte signed value - /// - typedef __int64 INT64; - /// - /// 4-byte unsigned value - /// - typedef unsigned __int32 UINT32; - /// - /// 4-byte signed value - /// - typedef __int32 INT32; - /// - /// 2-byte unsigned value - /// - typedef unsigned short UINT16; - /// - /// 2-byte Character. Unless otherwise specified all strings are stored in the - /// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards. - /// - typedef unsigned short CHAR16; - /// - /// 2-byte signed value - /// - typedef short INT16; - /// - /// Logical Boolean. 1-byte value containing 0 for FALSE or a 1 for TRUE. Other - /// values are undefined. - /// - typedef unsigned char BOOLEAN; - /// - /// 1-byte unsigned value - /// - typedef unsigned char UINT8; - /// - /// 1-byte Character - /// - typedef char CHAR8; - /// - /// 1-byte signed value - /// - typedef signed char INT8; -#else - /// - /// 8-byte unsigned value - /// - typedef unsigned long long UINT64; - /// - /// 8-byte signed value - /// - typedef long long INT64; - /// - /// 4-byte unsigned value - /// - typedef unsigned int UINT32; - /// - /// 4-byte signed value - /// - typedef int INT32; - /// - /// 2-byte unsigned value - /// - typedef unsigned short UINT16; - /// - /// 2-byte Character. Unless otherwise specified all strings are stored in the - /// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards. - /// - typedef unsigned short CHAR16; - /// - /// 2-byte signed value - /// - typedef short INT16; - /// - /// Logical Boolean. 1-byte value containing 0 for FALSE or a 1 for TRUE. Other - /// values are undefined. - /// - typedef unsigned char BOOLEAN; - /// - /// 1-byte unsigned value - /// - typedef unsigned char UINT8; - /// - /// 1-byte Character - /// - typedef char CHAR8; - /// - /// 1-byte signed value - /// - typedef signed char INT8; -#endif - -/// -/// Unsigned value of native width. (4 bytes on supported 32-bit processor instructions, -/// 8 bytes on supported 64-bit processor instructions) -/// -typedef UINT64 UINTN; -/// -/// Signed value of native width. (4 bytes on supported 32-bit processor instructions, -/// 8 bytes on supported 64-bit processor instructions) -/// -typedef INT64 INTN; - - -// -// Processor specific defines -// - -/// -/// A value of native width with the highest bit set. -/// -#define MAX_BIT 0x8000000000000000ULL -/// -/// A value of native width with the two highest bits set. -/// -#define MAX_2_BITS 0xC000000000000000ULL - -/// -/// Maximum legal x64 address -/// -#define MAX_ADDRESS 0xFFFFFFFFFFFFFFFFULL - -/// -/// Maximum legal x64 INTN and UINTN values. -/// -#define MAX_INTN ((INTN)0x7FFFFFFFFFFFFFFFULL) -#define MAX_UINTN ((UINTN)0xFFFFFFFFFFFFFFFFULL) - -/// -/// The stack alignment required for x64 -/// -#define CPU_STACK_ALIGNMENT 16 - -// -// Modifier to ensure that all protocol member functions and EFI intrinsics -// use the correct C calling convention. All protocol member functions and -// EFI intrinsics are required to modify their member functions with EFIAPI. -// -#ifdef EFIAPI - /// - /// If EFIAPI is already defined, then we use that definition. - /// -#elif defined(_MSC_EXTENSIONS) - /// - /// Microsoft* compiler specific method for EFIAPI calling convention. - /// - #define EFIAPI __cdecl -#elif defined(__GNUC__) - /// - /// Define the standard calling convention regardless of optimization level. - /// The GCC support assumes a GCC compiler that supports the EFI ABI. The EFI - /// ABI is much closer to the x64 Microsoft* ABI than standard x64 (x86-64) - /// GCC ABI. Thus a standard x64 (x86-64) GCC compiler can not be used for - /// x64. Warning the assembly code in the MDE x64 does not follow the correct - /// ABI for the standard x64 (x86-64) GCC. - /// - #define EFIAPI -#else - /// - /// The default for a non Microsoft* or GCC compiler is to assume the EFI ABI - /// is the standard. - /// - #define EFIAPI -#endif - -#if defined(__GNUC__) - /// - /// For GNU assembly code, .global or .globl can declare global symbols. - /// Define this macro to unify the usage. - /// - #define ASM_GLOBAL .globl -#endif - -/** - Return the pointer to the first instruction of a function given a function pointer. - On x64 CPU architectures, these two pointer values are the same, - so the implementation of this macro is very simple. - - @param FunctionPointer A pointer to a function. - - @return The pointer to the first instruction of a function given a function pointer. - -**/ -#define FUNCTION_ENTRY_POINT(FunctionPointer) (VOID *)(UINTN)(FunctionPointer) - -#ifndef __USER_LABEL_PREFIX__ -#define __USER_LABEL_PREFIX__ -#endif - -#endif -