summaryrefslogtreecommitdiff
path: root/MdeModulePkg
diff options
context:
space:
mode:
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2007-06-26 08:03:14 +0000
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2007-06-26 08:03:14 +0000
commit88f2012778d7a6d6f6d68789d90cc8cd214e6c4a (patch)
treebe2eea56bc0b0645138331e796513d2f746de086 /MdeModulePkg
parentdddf39a96c9bb8d960dc5c5edd8b06ac0eb00e79 (diff)
downloadedk2-platforms-88f2012778d7a6d6f6d68789d90cc8cd214e6c4a.tar.xz
1. added common header files, Guid header filess, Protocol header files, PPI header files.
2. added Guids/Protocols/PPIs/Pcds definitions in .nspd, .dec files. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2744 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'MdeModulePkg')
-rw-r--r--MdeModulePkg/Include/Common/CapsuleName.h28
-rw-r--r--MdeModulePkg/Include/Common/Variable.h87
-rw-r--r--MdeModulePkg/Include/Common/WorkingBlockHeader.h47
-rw-r--r--MdeModulePkg/Include/Guid/AlternateFvBlock.h32
-rw-r--r--MdeModulePkg/Include/Guid/Bmp.h62
-rw-r--r--MdeModulePkg/Include/Guid/BootState.h36
-rw-r--r--MdeModulePkg/Include/Guid/CapsuleVendor.h35
-rw-r--r--MdeModulePkg/Include/Guid/ConsoleInDevice.h29
-rw-r--r--MdeModulePkg/Include/Guid/ConsoleOutDevice.h29
-rw-r--r--MdeModulePkg/Include/Guid/GenericPlatformVariable.h27
-rw-r--r--MdeModulePkg/Include/Guid/HotPlugDevice.h28
-rw-r--r--MdeModulePkg/Include/Guid/MemoryTypeInformation.h35
-rw-r--r--MdeModulePkg/Include/Guid/PeiPerformanceHob.h56
-rw-r--r--MdeModulePkg/Include/Guid/PrimaryConsoleInDevice.h29
-rw-r--r--MdeModulePkg/Include/Guid/PrimaryConsoleOutDevice.h28
-rw-r--r--MdeModulePkg/Include/Guid/PrimaryStandardErrorDevice.h28
-rw-r--r--MdeModulePkg/Include/Guid/StandardErrorDevice.h29
-rw-r--r--MdeModulePkg/Include/Guid/SystemNvDataGuid.h45
-rw-r--r--MdeModulePkg/Include/Ppi/BaseMemoryTest.h56
-rw-r--r--MdeModulePkg/Include/Protocol/Capsule.h39
-rw-r--r--MdeModulePkg/Include/Protocol/ConsoleControl.h121
-rw-r--r--MdeModulePkg/Include/Protocol/DiskInfo.h179
-rw-r--r--MdeModulePkg/Include/Protocol/FaultTolerantWriteLite.h88
-rw-r--r--MdeModulePkg/Include/Protocol/FvbExtension.h53
-rw-r--r--MdeModulePkg/Include/Protocol/GenericMemoryTest.h156
-rw-r--r--MdeModulePkg/Include/Protocol/OEMBadging.h79
-rw-r--r--MdeModulePkg/Include/Protocol/Performance.h166
-rw-r--r--MdeModulePkg/Include/Protocol/Print.h50
-rw-r--r--MdeModulePkg/Include/Protocol/ScsiIo.h241
-rw-r--r--MdeModulePkg/Include/Protocol/usbatapi.h83
-rw-r--r--MdeModulePkg/MdeModulePkg.dec128
-rw-r--r--MdeModulePkg/MdeModulePkg.nspd421
32 files changed, 2525 insertions, 25 deletions
diff --git a/MdeModulePkg/Include/Common/CapsuleName.h b/MdeModulePkg/Include/Common/CapsuleName.h
new file mode 100644
index 0000000000..d446bbdc7e
--- /dev/null
+++ b/MdeModulePkg/Include/Common/CapsuleName.h
@@ -0,0 +1,28 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ CapsuleName.h
+
+Abstract:
+
+--*/
+
+#ifndef __CAPSULE_NAME_H__
+#define __CAPSULE_NAME_H__
+
+//
+// If capsule data is passed via a variable, then this name should be used.
+//
+#define EFI_CAPSULE_VARIABLE_NAME L"CapsuleUpdateData"
+
+#endif
diff --git a/MdeModulePkg/Include/Common/Variable.h b/MdeModulePkg/Include/Common/Variable.h
new file mode 100644
index 0000000000..ef9e4c4993
--- /dev/null
+++ b/MdeModulePkg/Include/Common/Variable.h
@@ -0,0 +1,87 @@
+/**@file
+ Header file for EFI Variable Services.
+
+Copyright (c) 2006 - 2007 Intel Corporation. <BR>
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#ifndef __EFI_VARIABLE_H__
+#define __EFI_VARIABLE_H__
+
+#define VARIABLE_STORE_SIGNATURE EFI_SIGNATURE_32 ('$', 'V', 'S', 'S')
+
+#define MAX_VARIABLE_SIZE 1024
+
+//
+// Enlarges the hardware error record maximum variable size to 32K bytes
+//
+#define MAX_HARDWARE_ERROR_VARIABLE_SIZE 0x8000
+
+#define VARIABLE_DATA 0x55AA
+
+//
+// Variable Store Header flags
+//
+#define VARIABLE_STORE_FORMATTED 0x5a
+#define VARIABLE_STORE_HEALTHY 0xfe
+
+//
+// The alignment of variable's start offset.
+// For IA32/X64 architecture, the alignment is set to 1, and
+// 8 is for IPF archtecture.
+//
+#if defined (MDE_CPU_IPF)
+#define ALIGNMENT 8
+#else
+#define ALIGNMENT 1
+#endif
+
+//
+// Variable Store Status
+//
+typedef enum {
+ EfiRaw,
+ EfiValid,
+ EfiInvalid,
+ EfiUnknown
+} VARIABLE_STORE_STATUS;
+
+//
+// Variable State flags
+//
+#define VAR_IN_DELETED_TRANSITION 0xfe // Variable is in obsolete transistion
+#define VAR_DELETED 0xfd // Variable is obsolete
+#define VAR_ADDED 0x7f // Variable has been completely added
+#define IS_VARIABLE_STATE(_c, _Mask) (BOOLEAN) (((~_c) & (~_Mask)) != 0)
+
+#pragma pack(1)
+
+typedef struct {
+ UINT32 Signature;
+ UINT32 Size;
+ UINT8 Format;
+ UINT8 State;
+ UINT16 Reserved;
+ UINT32 Reserved1;
+} VARIABLE_STORE_HEADER;
+
+typedef struct {
+ UINT16 StartId;
+ UINT8 State;
+ UINT8 Reserved;
+ UINT32 Attributes;
+ UINT32 NameSize;
+ UINT32 DataSize;
+ EFI_GUID VendorGuid;
+} VARIABLE_HEADER;
+
+#pragma pack()
+
+#endif // _EFI_VARIABLE_H_
diff --git a/MdeModulePkg/Include/Common/WorkingBlockHeader.h b/MdeModulePkg/Include/Common/WorkingBlockHeader.h
new file mode 100644
index 0000000000..fc023ffe69
--- /dev/null
+++ b/MdeModulePkg/Include/Common/WorkingBlockHeader.h
@@ -0,0 +1,47 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ EfiWorkingBlockHeader.h
+
+Abstract:
+
+ Defines data structure that is the headers found at the runtime
+ updatable firmware volumes, such as the FileSystemGuid of the
+ working block, the header structure of the variable block, FTW
+ working block, or event log block.
+
+--*/
+
+#ifndef __EFI_WORKING_BLOCK_HEADER_H__
+#define __EFI_WORKING_BLOCK_HEADER_H__
+
+//
+// EFI Fault tolerant working block header
+// The header is immediately followed by the write queue.
+//
+typedef struct {
+ EFI_GUID Signature;
+ UINT32 Crc;
+ UINT8 WorkingBlockValid : 1;
+ UINT8 WorkingBlockInvalid : 1;
+#define WORKING_BLOCK_VALID 0x1
+#define WORKING_BLOCK_INVALID 0x2
+ UINT8 Reserved : 6;
+ UINT8 Reserved3[3];
+ UINT32 WriteQueueSize;
+ //
+ // UINT8 WriteQueue[WriteQueueSize];
+ //
+} EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER;
+
+#endif
diff --git a/MdeModulePkg/Include/Guid/AlternateFvBlock.h b/MdeModulePkg/Include/Guid/AlternateFvBlock.h
new file mode 100644
index 0000000000..5eac2fe620
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/AlternateFvBlock.h
@@ -0,0 +1,32 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ AlternateFvBlock.h
+
+Abstract:
+
+ Tiano Guid used to define the Alternate Firmware Volume Block Guid.
+
+--*/
+
+#ifndef __ALT_FVB_GUID_H__
+#define __ALT_FVB_GUID_H__
+
+#define EFI_ALTERNATE_FV_BLOCK_GUID \
+ { \
+ 0xf496922d, 0x172f, 0x4bbc, {0xa1, 0xeb, 0xe, 0xeb, 0x94, 0x9c, 0x34, 0x86 } \
+ }
+
+extern EFI_GUID gEfiAlternateFvBlockGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Guid/Bmp.h b/MdeModulePkg/Include/Guid/Bmp.h
new file mode 100644
index 0000000000..43c354d411
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/Bmp.h
@@ -0,0 +1,62 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ Bmp.h
+
+Abstract:
+
+--*/
+
+#ifndef __BMP_GUID_H__
+#define __BMP_GUID_H__
+
+
+//
+// Definitions for BMP files
+//
+#pragma pack(1)
+
+typedef struct {
+ UINT8 Blue;
+ UINT8 Green;
+ UINT8 Red;
+ UINT8 Reserved;
+} BMP_COLOR_MAP;
+
+typedef struct {
+ CHAR8 CharB;
+ CHAR8 CharM;
+ UINT32 Size;
+ UINT16 Reserved[2];
+ UINT32 ImageOffset;
+ UINT32 HeaderSize;
+ UINT32 PixelWidth;
+ UINT32 PixelHeight;
+ UINT16 Planes; // Must be 1
+ UINT16 BitPerPixel; // 1, 4, 8, or 24
+ UINT32 CompressionType;
+ UINT32 ImageSize; // Compressed image size in bytes
+ UINT32 XPixelsPerMeter;
+ UINT32 YPixelsPerMeter;
+ UINT32 NumberOfColors;
+ UINT32 ImportantColors;
+} BMP_IMAGE_HEADER;
+
+#pragma pack()
+
+#define EFI_DEFAULT_BMP_LOGO_GUID \
+ {0x7BB28B99,0x61BB,0x11d5,{0x9A,0x5D,0x00,0x90,0x27,0x3F,0xC1,0x4D}}
+
+extern EFI_GUID gEfiDefaultBmpLogoGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Guid/BootState.h b/MdeModulePkg/Include/Guid/BootState.h
new file mode 100644
index 0000000000..5965965c0e
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/BootState.h
@@ -0,0 +1,36 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ BootState.h
+
+Abstract:
+
+ Constants and declarations that are common accross PEI and DXE.
+--*/
+
+#ifndef __BOOT_STATE_H__
+#define __BOOT_STATE_H__
+
+//
+// BOOT STATE
+//
+
+typedef UINT32 EFI_BOOT_STATE;
+
+#define BOOT_STATE_VARIABLE_NAME L"BootState"
+
+#define EFI_BOOT_STATE_VARIABLE_GUID \
+ {0x60b5e939, 0xfcf, 0x4227, {0xba, 0x83, 0x6b, 0xbe, 0xd4, 0x5b, 0xc0, 0xe3} }
+
+extern EFI_GUID gEfiBootStateGuid;
+#endif
diff --git a/MdeModulePkg/Include/Guid/CapsuleVendor.h b/MdeModulePkg/Include/Guid/CapsuleVendor.h
new file mode 100644
index 0000000000..cd48c39dcf
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/CapsuleVendor.h
@@ -0,0 +1,35 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ CapsuleVendor.h
+
+Abstract:
+
+ Capsule update Guid definitions
+
+--*/
+
+#ifndef __EFI_CAPSULE_VENDOR_GUID_H__
+#define __EFI_CAPSULE_VENDOR_GUID_H__
+
+//
+// Note -- This guid is used as a vendor GUID (depending on implementation)
+// for the capsule variable if the capsule pointer is passes through reset
+// via a variable.
+//
+#define EFI_CAPSULE_VENDOR_GUID \
+ { 0x711C703F, 0xC285, 0x4B10, { 0xA3, 0xB0, 0x36, 0xEC, 0xBD, 0x3C, 0x8B, 0xE2 } }
+
+extern EFI_GUID gEfiCapsuleVendorGuid;
+
+#endif // #ifndef _EFI_CAPSULE_VENDOR_GUID_H_
diff --git a/MdeModulePkg/Include/Guid/ConsoleInDevice.h b/MdeModulePkg/Include/Guid/ConsoleInDevice.h
new file mode 100644
index 0000000000..85e487d0e1
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/ConsoleInDevice.h
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ ConsoleInDevice.h
+
+Abstract:
+
+
+--*/
+
+#ifndef __CONSOLE_IN_DEVICE_H__
+#define __CONSOLE_IN_DEVICE_H__
+
+#define EFI_CONSOLE_IN_DEVICE_GUID \
+ { 0xd3b36f2b, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
+
+extern EFI_GUID gEfiConsoleInDeviceGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Guid/ConsoleOutDevice.h b/MdeModulePkg/Include/Guid/ConsoleOutDevice.h
new file mode 100644
index 0000000000..d2103c0e5d
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/ConsoleOutDevice.h
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ ConsoleOutDevice.h
+
+Abstract:
+
+
+--*/
+
+#ifndef __CONSOLE_OUT_DEVICE_H__
+#define __CONSOLE_OUT_DEVICE_H__
+
+#define EFI_CONSOLE_OUT_DEVICE_GUID \
+ { 0xd3b36f2c, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
+
+extern EFI_GUID gEfiConsoleOutDeviceGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Guid/GenericPlatformVariable.h b/MdeModulePkg/Include/Guid/GenericPlatformVariable.h
new file mode 100644
index 0000000000..595ef7830b
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/GenericPlatformVariable.h
@@ -0,0 +1,27 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ GenericPlatformVariable.h
+
+Abstract:
+
+ The variable space Guid to pair with a Unicode string name to tag an EFI variable.
+
+--*/
+
+#ifndef __GENERIC_PLATFORM_VARIABLE_H__
+#define __GENERIC_PLATFORM_VARIABLE_H__
+
+extern EFI_GUID gEfiGenericPlatformVariableGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Guid/HotPlugDevice.h b/MdeModulePkg/Include/Guid/HotPlugDevice.h
new file mode 100644
index 0000000000..b15dc89bbd
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/HotPlugDevice.h
@@ -0,0 +1,28 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ HotPlugDevice.h
+
+Abstract:
+
+
+--*/
+
+#ifndef __HOT_PLUG_DEVICE_H__
+#define __HOT_PLUG_DEVICE_H__
+
+#define HOT_PLUG_DEVICE_GUID \
+ { 0x220ac432, 0x1d43, 0x49e5, {0xa7, 0x4f, 0x4c, 0x9d, 0xa6, 0x7a, 0xd2, 0x3b } }
+
+extern EFI_GUID gEfiHotPlugDeviceGuid;
+#endif
diff --git a/MdeModulePkg/Include/Guid/MemoryTypeInformation.h b/MdeModulePkg/Include/Guid/MemoryTypeInformation.h
new file mode 100644
index 0000000000..ed9270b09d
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/MemoryTypeInformation.h
@@ -0,0 +1,35 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+ MemoryTypeInformation.h
+
+Abstract:
+ GUID used for Memory Type Information entries in the HOB list.
+
+--*/
+
+#ifndef __MEMORY_TYPE_INFORMATION_GUID_H__
+#define __MEMORY_TYPE_INFORMATION_GUID_H__
+
+#define EFI_MEMORY_TYPE_INFORMATION_GUID \
+ { 0x4c19049f,0x4137,0x4dd3, { 0x9c,0x10,0x8b,0x97,0xa8,0x3f,0xfd,0xfa } }
+
+#define EFI_MEMORY_TYPE_INFORMATION_VARIABLE_NAME L"MemoryTypeInformation"
+
+extern EFI_GUID gEfiMemoryTypeInformationGuid;
+
+typedef struct {
+ UINT32 Type;
+ UINT32 NumberOfPages;
+} EFI_MEMORY_TYPE_INFORMATION;
+
+#endif
diff --git a/MdeModulePkg/Include/Guid/PeiPerformanceHob.h b/MdeModulePkg/Include/Guid/PeiPerformanceHob.h
new file mode 100644
index 0000000000..c3bfc1f77a
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/PeiPerformanceHob.h
@@ -0,0 +1,56 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ PeiPerformanceHob.h
+
+Abstract:
+
+ GUIDs used for PEI Performance HOB data structures
+
+--*/
+
+#ifndef __PEI_PERFORMANCE_HOB_H__
+#define __PEI_PERFORMANCE_HOB_H__
+
+//
+// This is the GUID of PEI performance HOB
+//
+#define PEI_PERFORMANCE_HOB_GUID \
+ { 0xec4df5af, 0x4395, 0x4cc9, { 0x94, 0xde, 0x77, 0x50, 0x6d, 0x12, 0xc7, 0xb8 } }
+
+//
+// PEI_PERFORMANCE_STRING_SIZE must be a multiple of 8.
+//
+#define PEI_PERFORMANCE_STRING_SIZE 8
+#define PEI_PERFORMANCE_STRING_LENGTH (PEI_PERFORMANCE_STRING_SIZE - 1)
+
+typedef struct {
+ EFI_PHYSICAL_ADDRESS Handle;
+ CHAR8 Token[PEI_PERFORMANCE_STRING_SIZE];
+ CHAR8 Module[PEI_PERFORMANCE_STRING_SIZE];
+ UINT64 StartTimeStamp;
+ UINT64 EndTimeStamp;
+} PEI_PERFORMANCE_LOG_ENTRY;
+
+//
+// The header must be aligned at 8 bytes.
+//
+typedef struct {
+ UINT32 NumberOfEntries;
+ UINT32 Reserved;
+} PEI_PERFORMANCE_LOG_HEADER;
+
+
+extern EFI_GUID gPeiPerformanceHobGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Guid/PrimaryConsoleInDevice.h b/MdeModulePkg/Include/Guid/PrimaryConsoleInDevice.h
new file mode 100644
index 0000000000..686ffa333c
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/PrimaryConsoleInDevice.h
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ PrimaryConsoleInDevice.h
+
+Abstract:
+
+
+--*/
+
+#ifndef __PRIMARY_CONSOLE_IN_DEVICE_H__
+#define __PRIMARY_CONSOLE_IN_DEVICE_H__
+
+#define EFI_PRIMARY_CONSOLE_IN_DEVICE_GUID \
+ { 0xe451dcbe, 0x96a1, 0x4729, {0xa5, 0xcf, 0x6b, 0x9c, 0x2c, 0xff, 0x47, 0xfd } }
+
+extern EFI_GUID gEfiPrimaryConsoleInDeviceGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Guid/PrimaryConsoleOutDevice.h b/MdeModulePkg/Include/Guid/PrimaryConsoleOutDevice.h
new file mode 100644
index 0000000000..34195b5219
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/PrimaryConsoleOutDevice.h
@@ -0,0 +1,28 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ PrimaryConsoleOutDevice.h
+
+Abstract:
+
+--*/
+
+#ifndef __PRIMARY_CONSOLE_OUT_DEVICE_H__
+#define __PRIMARY_CONSOLE_OUT_DEVICE_H__
+
+#define EFI_PRIMARY_CONSOLE_OUT_DEVICE_GUID \
+ { 0x62bdf38a, 0xe3d5, 0x492c, {0x95, 0xc, 0x23, 0xa7, 0xf6, 0x6e, 0x67, 0x2e } }
+
+extern EFI_GUID gEfiPrimaryConsoleOutDeviceGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Guid/PrimaryStandardErrorDevice.h b/MdeModulePkg/Include/Guid/PrimaryStandardErrorDevice.h
new file mode 100644
index 0000000000..9523d97ac3
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/PrimaryStandardErrorDevice.h
@@ -0,0 +1,28 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ PrimaryStandardErrorDevice.h
+
+Abstract:
+
+--*/
+
+#ifndef __PRIMARY_STANDARD_ERROR_DEVICE_H__
+#define __PRIMARY_STANDARD_ERROR_DEVICE_H__
+
+#define EFI_PRIMARY_STANDARD_ERROR_DEVICE_GUID \
+ { 0x5a68191b, 0x9b97, 0x4752, {0x99, 0x46, 0xe3, 0x6a, 0x5d, 0xa9, 0x42, 0xb1 } }
+
+extern EFI_GUID gEfiPrimaryStandardErrorDeviceGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Guid/StandardErrorDevice.h b/MdeModulePkg/Include/Guid/StandardErrorDevice.h
new file mode 100644
index 0000000000..7806f55d3b
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/StandardErrorDevice.h
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ StandardErrorDevice.h
+
+Abstract:
+
+
+--*/
+
+#ifndef __STANDARD_ERROR_DEVICE_H__
+#define __STANDARD_ERROR_DEVICE_H__
+
+#define EFI_STANDARD_ERROR_DEVICE_GUID \
+ { 0xd3b36f2d, 0xd551, 0x11d4, {0x9a, 0x46, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
+
+extern EFI_GUID gEfiStandardErrorDeviceGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Guid/SystemNvDataGuid.h b/MdeModulePkg/Include/Guid/SystemNvDataGuid.h
new file mode 100644
index 0000000000..946d4d8d03
--- /dev/null
+++ b/MdeModulePkg/Include/Guid/SystemNvDataGuid.h
@@ -0,0 +1,45 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ SystemNvDataGuid.h
+
+Abstract:
+
+ GUIDs used for System Non Volatile HOB entries in the in the HOB list and FV Guids carrying
+ the System specific information.
+
+--*/
+
+#ifndef __SYSTEM_NV_DATA_GUID_H__
+#define __SYSTEM_NV_DATA_GUID_H__
+
+#define EFI_SYSTEM_NV_DATA_FV_GUID \
+ {0xfff12b8d, 0x7696, 0x4c8b, {0xa9, 0x85, 0x27, 0x47, 0x7, 0x5b, 0x4f, 0x50} }
+
+#define EFI_SYSTEM_NV_DATA_HOB_GUID \
+ {0xd6e5092d, 0xc7b2, 0x4872, {0xaf, 0x66, 0xfd, 0xc0, 0xe6, 0xf9, 0x5e, 0x78} }
+
+typedef struct {
+ EFI_GUID SystemNvDataHobGuid;
+ EFI_GUID SystemNvDataFvGuid;
+ EFI_LBA StartLba;
+ UINTN StartLbaOffset;
+ EFI_LBA EndLba;
+ UINTN EndLbaOffset;
+ UINT32 DataTypeSignature;
+} NV_SYSTEM_DATA_GUID_TYPE;
+
+extern EFI_GUID gEfiSystemNvDataHobGuid;
+extern EFI_GUID gEfiSystemNvDataFvGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Ppi/BaseMemoryTest.h b/MdeModulePkg/Include/Ppi/BaseMemoryTest.h
new file mode 100644
index 0000000000..aa9a8ba61a
--- /dev/null
+++ b/MdeModulePkg/Include/Ppi/BaseMemoryTest.h
@@ -0,0 +1,56 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ BaseMemoryTest.h
+
+Abstract:
+
+ Pei memory test PPI as defined in Tiano
+
+ Used to Pei memory test in PEI
+
+--*/
+
+#ifndef __BASE_MEMORY_TEST_H__
+#define __BASE_MEMORY_TEST_H__
+
+#define PEI_BASE_MEMORY_TEST_GUID \
+ { 0xb6ec423c, 0x21d2, 0x490d, {0x85, 0xc6, 0xdd, 0x58, 0x64, 0xea, 0xa6, 0x74 } }
+
+typedef struct _PEI_BASE_MEMORY_TEST_PPI PEI_BASE_MEMORY_TEST_PPI;
+
+typedef enum {
+ Ignore,
+ Quick,
+ Sparse,
+ Extensive
+} PEI_MEMORY_TEST_OP;
+
+typedef
+EFI_STATUS
+(EFIAPI *PEI_BASE_MEMORY_TEST) (
+ IN EFI_PEI_SERVICES **PeiServices,
+ IN PEI_BASE_MEMORY_TEST_PPI * This,
+ IN EFI_PHYSICAL_ADDRESS BeginAddress,
+ IN UINT64 MemoryLength,
+ IN PEI_MEMORY_TEST_OP Operation,
+ OUT EFI_PHYSICAL_ADDRESS * ErrorAddress
+ );
+
+struct _PEI_BASE_MEMORY_TEST_PPI {
+ PEI_BASE_MEMORY_TEST BaseMemoryTest;
+};
+
+extern EFI_GUID gPeiBaseMemoryTestPpiGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Protocol/Capsule.h b/MdeModulePkg/Include/Protocol/Capsule.h
new file mode 100644
index 0000000000..1af0b65f9d
--- /dev/null
+++ b/MdeModulePkg/Include/Protocol/Capsule.h
@@ -0,0 +1,39 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ Capsule.h
+
+Abstract:
+
+ Capsule Architectural Protocol is newly added to produce UEFI2.0 capsule runtime services.
+
+--*/
+
+#ifndef __ARCH_PROTOCOL_CAPSULE_ARCH_H__
+#define __ARCH_PROTOCOL_CAPSULE_ARCH_H__
+
+//
+// Global ID for the Capsule Architectural Protocol
+//
+#define EFI_CAPSULE_ARCH_PROTOCOL_GUID \
+ { 0x5053697e, 0x2ebc, 0x4819, {0x90, 0xd9, 0x05, 0x80, 0xde, 0xee, 0x57, 0x54 }}
+
+extern EFI_GUID gEfiCapsuleArchProtocolGuid;
+
+typedef struct {
+ UINT32 CapsuleArrayNumber;
+ VOID* CapsulePtr[1];
+} EFI_CAPSULE_TABLE;
+
+
+#endif
diff --git a/MdeModulePkg/Include/Protocol/ConsoleControl.h b/MdeModulePkg/Include/Protocol/ConsoleControl.h
new file mode 100644
index 0000000000..c894302c66
--- /dev/null
+++ b/MdeModulePkg/Include/Protocol/ConsoleControl.h
@@ -0,0 +1,121 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ ConsoleControl.h
+
+Abstract:
+
+ Abstraction of a Text mode or UGA screen
+
+--*/
+
+#ifndef __CONSOLE_CONTROL_H__
+#define __CONSOLE_CONTROL_H__
+
+#define EFI_CONSOLE_CONTROL_PROTOCOL_GUID \
+ { 0xf42f7782, 0x12e, 0x4c12, {0x99, 0x56, 0x49, 0xf9, 0x43, 0x4, 0xf7, 0x21 } }
+
+typedef struct _EFI_CONSOLE_CONTROL_PROTOCOL EFI_CONSOLE_CONTROL_PROTOCOL;
+
+
+typedef enum {
+ EfiConsoleControlScreenText,
+ EfiConsoleControlScreenGraphics,
+ EfiConsoleControlScreenMaxValue
+} EFI_CONSOLE_CONTROL_SCREEN_MODE;
+
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_CONSOLE_CONTROL_PROTOCOL_GET_MODE) (
+ IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
+ OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,
+ OUT BOOLEAN *UgaExists, OPTIONAL
+ OUT BOOLEAN *StdInLocked OPTIONAL
+ )
+/*++
+
+ Routine Description:
+ Return the current video mode information. Also returns info about existence
+ of UGA Draw devices in system, and if the Std In device is locked. All the
+ arguments are optional and only returned if a non NULL pointer is passed in.
+
+ Arguments:
+ This - Protocol instance pointer.
+ Mode - Are we in text of grahics mode.
+ UgaExists - TRUE if UGA Spliter has found a UGA device
+ StdInLocked - TRUE if StdIn device is keyboard locked
+
+ Returns:
+ EFI_SUCCESS - Mode information returned.
+
+--*/
+;
+
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_CONSOLE_CONTROL_PROTOCOL_SET_MODE) (
+ IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
+ OUT EFI_CONSOLE_CONTROL_SCREEN_MODE Mode
+ )
+/*++
+
+ Routine Description:
+ Set the current mode to either text or graphics. Graphics is
+ for Quiet Boot.
+
+ Arguments:
+ This - Protocol instance pointer.
+ Mode - Mode to set the
+
+ Returns:
+ EFI_SUCCESS - Mode information returned.
+
+--*/
+;
+
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_CONSOLE_CONTROL_PROTOCOL_LOCK_STD_IN) (
+ IN EFI_CONSOLE_CONTROL_PROTOCOL *This,
+ IN CHAR16 *Password
+ )
+/*++
+
+ Routine Description:
+ Lock Std In devices until Password is typed.
+
+ Arguments:
+ This - Protocol instance pointer.
+ Password - Password needed to unlock screen. NULL means unlock keyboard
+
+ Returns:
+ EFI_SUCCESS - Mode information returned.
+ EFI_DEVICE_ERROR - Std In not locked
+
+--*/
+;
+
+
+
+struct _EFI_CONSOLE_CONTROL_PROTOCOL {
+ EFI_CONSOLE_CONTROL_PROTOCOL_GET_MODE GetMode;
+ EFI_CONSOLE_CONTROL_PROTOCOL_SET_MODE SetMode;
+ EFI_CONSOLE_CONTROL_PROTOCOL_LOCK_STD_IN LockStdIn;
+};
+
+extern EFI_GUID gEfiConsoleControlProtocolGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Protocol/DiskInfo.h b/MdeModulePkg/Include/Protocol/DiskInfo.h
new file mode 100644
index 0000000000..374d41d995
--- /dev/null
+++ b/MdeModulePkg/Include/Protocol/DiskInfo.h
@@ -0,0 +1,179 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ DiskInfo.h
+
+Abstract:
+
+ Disk Info protocol is used to export Inquiry Data for a drive.
+ Its needed to support low level formating of drives in a mannor
+ thats DOS compatible.
+
+--*/
+
+#ifndef __DISK_INFO_H__
+#define __DISK_INFO_H__
+
+#define EFI_DISK_INFO_PROTOCOL_GUID \
+ { \
+ 0xd432a67f, 0x14dc, 0x484b, {0xb3, 0xbb, 0x3f, 0x2, 0x91, 0x84, 0x93, 0x27 } \
+ }
+
+//
+// Forward reference for pure ANSI compatability
+//
+typedef struct _EFI_DISK_INFO_PROTOCOL EFI_DISK_INFO_PROTOCOL;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_DISK_INFO_INQUIRY) (
+ IN EFI_DISK_INFO_PROTOCOL * This,
+ IN OUT VOID *InquiryData,
+ IN OUT UINT32 *IntquiryDataSize
+ )
+/*++
+
+ Routine Description:
+ Return the results of the Inquiry command to a drive in InquiryData.
+ Data format of Inquiry data is defined by the Interface GUID.
+
+ Arguments:
+ This - Protocol instance pointer.
+ InquiryData - Results of Inquiry command to device
+ InquiryDataSize - Size of InquiryData in bytes.
+
+ Returns:
+ EFI_SUCCESS - InquiryData valid
+ EFI_NOT_FOUND - Device does not support this data class
+ EFI_DEVICE_ERROR - Error reading InquiryData from device
+ EFI_BUFFER_TOO_SMALL - IntquiryDataSize not big enough
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_DISK_INFO_IDENTIFY) (
+ IN EFI_DISK_INFO_PROTOCOL * This,
+ IN OUT VOID *IdentifyData,
+ IN OUT UINT32 *IdentifyDataSize
+ )
+/*++
+
+ Routine Description:
+ Return the results of the Identify command to a drive in IdentifyData.
+ Data format of Identify data is defined by the Interface GUID.
+
+ Arguments:
+ This - Protocol instance pointer.
+ IdentifyData - Results of Identify command to device
+ IdentifyDataSize - Size of IdentifyData in bytes.
+
+ Returns:
+ EFI_SUCCESS - IdentifyData valid
+ EFI_NOT_FOUND - Device does not support this data class
+ EFI_DEVICE_ERROR - Error reading IdentifyData from device
+ EFI_BUFFER_TOO_SMALL - IdentifyDataSize not big enough
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_DISK_INFO_SENSE_DATA) (
+ IN EFI_DISK_INFO_PROTOCOL * This,
+ IN OUT VOID *SenseData,
+ IN OUT UINT32 *SenseDataSize,
+ OUT UINT8 *SenseDataNumber
+ )
+/*++
+
+ Routine Description:
+ Return the results of the Request Sense command to a drive in SenseData.
+ Data format of Sense data is defined by the Interface GUID.
+
+ Arguments:
+ This - Protocol instance pointer.
+ SenseData - Results of Request Sense command to device
+ SenseDataSize - Size of SenseData in bytes.
+ SenseDataNumber - Type of SenseData
+
+ Returns:
+ EFI_SUCCESS - InquiryData valid
+ EFI_NOT_FOUND - Device does not support this data class
+ EFI_DEVICE_ERROR - Error reading InquiryData from device
+ EFI_BUFFER_TOO_SMALL - SenseDataSize not big enough
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_DISK_INFO_WHICH_IDE) (
+ IN EFI_DISK_INFO_PROTOCOL * This,
+ OUT UINT32 *IdeChannel,
+ OUT UINT32 *IdeDevice
+ )
+/*++
+
+ Routine Description:
+ Return the results of the Request Sense command to a drive in SenseData.
+ Data format of Sense data is defined by the Interface GUID.
+
+ Arguments:
+ This - Protocol instance pointer.
+ IdeChannel - Primary or Secondary
+ IdeDevice - Master or Slave
+
+ Returns:
+ EFI_SUCCESS - IdeChannel and IdeDevice are valid
+ EFI_UNSUPPORTED - This is not an IDE device
+
+--*/
+;
+
+//
+// GUIDs for EFI_DISK_INFO_PROTOCOL.Interface. Defines the format of the
+// buffers returned by member functions
+//
+#define EFI_DISK_INFO_IDE_INTERFACE_GUID \
+ { \
+ 0x5e948fe3, 0x26d3, 0x42b5, {0xaf, 0x17, 0x61, 0x2, 0x87, 0x18, 0x8d, 0xec } \
+ }
+extern EFI_GUID gEfiDiskInfoIdeInterfaceGuid;
+
+#define EFI_DISK_INFO_SCSI_INTERFACE_GUID \
+ { \
+ 0x8f74baa, 0xea36, 0x41d9, {0x95, 0x21, 0x21, 0xa7, 0xf, 0x87, 0x80, 0xbc } \
+ }
+extern EFI_GUID gEfiDiskInfoScsiInterfaceGuid;
+
+#define EFI_DISK_INFO_USB_INTERFACE_GUID \
+ { \
+ 0xcb871572, 0xc11a, 0x47b5, {0xb4, 0x92, 0x67, 0x5e, 0xaf, 0xa7, 0x77, 0x27 } \
+ }
+extern EFI_GUID gEfiDiskInfoUsbInterfaceGuid;
+
+struct _EFI_DISK_INFO_PROTOCOL {
+ EFI_GUID Interface;
+ EFI_DISK_INFO_INQUIRY Inquiry;
+ EFI_DISK_INFO_IDENTIFY Identify;
+ EFI_DISK_INFO_SENSE_DATA SenseData;
+ EFI_DISK_INFO_WHICH_IDE WhichIde;
+};
+
+extern EFI_GUID gEfiDiskInfoProtocolGuid;
+
+#endif
+
+
diff --git a/MdeModulePkg/Include/Protocol/FaultTolerantWriteLite.h b/MdeModulePkg/Include/Protocol/FaultTolerantWriteLite.h
new file mode 100644
index 0000000000..d345b77a87
--- /dev/null
+++ b/MdeModulePkg/Include/Protocol/FaultTolerantWriteLite.h
@@ -0,0 +1,88 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ FaultTolerantWriteLite.h
+
+Abstract:
+
+ This is a simple fault tolerant write driver, based on PlatformFd library.
+ And it only supports write BufferSize <= SpareAreaLength.
+
+--*/
+
+#ifndef __FW_FAULT_TOLERANT_WRITE_LITE_PROTOCOL_H__
+#define __FW_FAULT_TOLERANT_WRITE_LITE_PROTOCOL_H__
+
+#define EFI_FTW_LITE_PROTOCOL_GUID \
+{ 0x3f557189, 0x8dae, 0x45ae, {0xa0, 0xb3, 0x2b, 0x99, 0xca, 0x7a, 0xa7, 0xa0 } }
+
+//
+// Forward reference for pure ANSI compatability
+//
+typedef struct _EFI_FTW_LITE_PROTOCOL EFI_FTW_LITE_PROTOCOL;
+
+//
+// Protocol API definitions
+//
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_FTW_LITE_WRITE) (
+ IN EFI_FTW_LITE_PROTOCOL *This,
+ IN EFI_HANDLE FvbHandle,
+ IN EFI_LBA Lba,
+ IN UINTN Offset,
+ IN UINTN *NumBytes,
+ IN VOID *Buffer
+ );
+/*++
+
+Routine Description:
+
+ Starts a target block update. This records information about the write
+ in fault tolerant storage and will complete the write in a recoverable
+ manner, ensuring at all times that either the original contents or
+ the modified contents are available.
+
+Arguments:
+
+ This - Calling context
+ FvBlockHandle - The handle of FVB protocol that provides services for
+ reading, writing, and erasing the target block.
+ Lba - The logical block address of the target block.
+ Offset - The offset within the target block to place the data.
+ Length - The number of bytes to write to the target block.
+ Buffer - The data to write.
+
+Returns:
+
+ EFI_SUCCESS - The function completed successfully
+ EFI_ABORTED - The function could not complete successfully.
+ EFI_BAD_BUFFER_SIZE - The write would span a block boundary,
+ which is not a valid action.
+ EFI_ACCESS_DENIED - No writes have been allocated.
+ EFI_NOT_READY - The last write has not been completed.
+ Restart () must be called to complete it.
+
+--*/
+
+//
+// Protocol declaration
+//
+struct _EFI_FTW_LITE_PROTOCOL {
+ EFI_FTW_LITE_WRITE Write;
+};
+
+extern EFI_GUID gEfiFaultTolerantWriteLiteProtocolGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Protocol/FvbExtension.h b/MdeModulePkg/Include/Protocol/FvbExtension.h
new file mode 100644
index 0000000000..8a85d3d905
--- /dev/null
+++ b/MdeModulePkg/Include/Protocol/FvbExtension.h
@@ -0,0 +1,53 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ FvbExtension.h
+
+Abstract:
+
+ FVB Extension protocol that extends the FVB Class in a component fashion.
+
+--*/
+
+#ifndef __FVB_EXTENSION_H__
+#define __FVB_EXTENSION_H__
+
+#define EFI_FVB_EXTENSION_PROTOCOL_GUID \
+ {0x53a4c71b, 0xb581, 0x4170, {0x91, 0xb3, 0x8d, 0xb8, 0x7a, 0x4b, 0x5c, 0x46 } }
+
+typedef struct _EFI_FVB_EXTENSION_PROTOCOL EFI_FVB_EXTENSION_PROTOCOL;
+
+//
+// FVB Extension Function Prototypes
+//
+typedef
+EFI_STATUS
+(EFIAPI * EFI_FV_ERASE_CUSTOM_BLOCK) (
+ IN EFI_FVB_EXTENSION_PROTOCOL *This,
+ IN EFI_LBA StartLba,
+ IN UINTN OffsetStartLba,
+ IN EFI_LBA LastLba,
+ IN UINTN OffsetLastLba
+);
+
+//
+// IPMI TRANSPORT PROTOCOL
+//
+struct _EFI_FVB_EXTENSION_PROTOCOL {
+ EFI_FV_ERASE_CUSTOM_BLOCK EraseFvbCustomBlock;
+};
+
+extern EFI_GUID gEfiFvbExtensionProtocolGuid;
+
+#endif
+
diff --git a/MdeModulePkg/Include/Protocol/GenericMemoryTest.h b/MdeModulePkg/Include/Protocol/GenericMemoryTest.h
new file mode 100644
index 0000000000..8f566d3763
--- /dev/null
+++ b/MdeModulePkg/Include/Protocol/GenericMemoryTest.h
@@ -0,0 +1,156 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ GenericMemoryTest.h
+
+Abstract:
+
+ The EFI generic memory test protocol
+ For more information please look at EfiMemoryTest.doc
+
+--*/
+
+#ifndef __GENERIC_MEMORY_TEST_H__
+#define __GENERIC_MEMORY_TEST_H__
+
+#define EFI_GENERIC_MEMORY_TEST_PROTOCOL_GUID \
+ { 0x309de7f1, 0x7f5e, 0x4ace, {0xb4, 0x9c, 0x53, 0x1b, 0xe5, 0xaa, 0x95, 0xef} }
+
+typedef struct _EFI_GENERIC_MEMORY_TEST_PROTOCOL EFI_GENERIC_MEMORY_TEST_PROTOCOL;
+
+typedef enum {
+ IGNORE,
+ QUICK,
+ SPARSE,
+ EXTENSIVE,
+ MAXLEVEL
+} EXTENDMEM_COVERAGE_LEVEL;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_MEMORY_TEST_INIT) (
+ IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This,
+ IN EXTENDMEM_COVERAGE_LEVEL Level,
+ OUT BOOLEAN *RequireSoftECCInit
+ )
+/*++
+
+ Routine Description:
+ Initialize the generic memory test.
+
+ Arguments:
+ This - Protocol instance pointer.
+ Level - The coverage level of the memory test.
+ RequireSoftECCInit - Indicate if the memory need software ECC init.
+
+ Returns:
+ EFI_SUCCESS - The generic memory test initialized correctly.
+ EFI_NO_MEDIA - There is not any non-tested memory found, in this
+ function if not any non-tesed memory found means
+ that the memory test driver have not detect any
+ non-tested extended memory of current system.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_PERFORM_MEMORY_TEST) (
+ IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This,
+ OUT UINT64 *TestedMemorySize,
+ OUT UINT64 *TotalMemorySize,
+ OUT BOOLEAN *ErrorOut,
+ IN BOOLEAN IfTestAbort
+ )
+/*++
+
+ Routine Description:
+ Perform the memory test.
+
+ Arguments:
+ This - Protocol instance pointer.
+ TestedMemorySize - Return the tested extended memory size.
+ TotalMemorySize - Return the whole system physical memory size, this
+ value may be changed if in some case some error
+ DIMMs be disabled.
+ ErrorOut - Any time the memory error occurs, this will be TRUE.
+ IfTestAbort - Indicate if the user press "ESC" to skip the memory
+ test.
+
+ Returns:
+ EFI_SUCCESS - One block of memory test ok, the block size is hide
+ internally.
+ EFI_NOT_FOUND - Indicate all the non-tested memory blocks have
+ already go through.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_MEMORY_TEST_FINISHED) (
+ IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This
+ )
+/*++
+
+ Routine Description:
+ The memory test finished.
+
+ Arguments:
+ This - Protocol instance pointer.
+
+ Returns:
+ EFI_SUCCESS - Successful free all the generic memory test driver
+ allocated resource and notify to platform memory
+ test driver that memory test finished.
+
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_MEMORY_TEST_COMPATIBLE_RANGE) (
+ IN EFI_GENERIC_MEMORY_TEST_PROTOCOL *This,
+ IN EFI_PHYSICAL_ADDRESS StartAddress,
+ IN UINT64 Length
+ )
+/*++
+
+ Routine Description:
+ Provide capability to test compatible range which used by some sepcial
+ driver required using memory range before BDS perform memory test.
+
+ Arguments:
+ This - Protocol instance pointer.
+ StartAddress - The start address of the memory range.
+ Length - The memory range's length.
+
+ Return:
+ EFI_SUCCESS - The compatible memory range pass the memory test.
+ EFI_DEVICE_ERROR - The compatible memory range test find memory error
+ and also return return the error address.
+
+--*/
+;
+
+struct _EFI_GENERIC_MEMORY_TEST_PROTOCOL {
+ EFI_MEMORY_TEST_INIT MemoryTestInit;
+ EFI_PERFORM_MEMORY_TEST PerformMemoryTest;
+ EFI_MEMORY_TEST_FINISHED Finished;
+ EFI_MEMORY_TEST_COMPATIBLE_RANGE CompatibleRangeTest;
+};
+
+extern EFI_GUID gEfiGenericMemTestProtocolGuid;
+
+#endif
+
diff --git a/MdeModulePkg/Include/Protocol/OEMBadging.h b/MdeModulePkg/Include/Protocol/OEMBadging.h
new file mode 100644
index 0000000000..ec63d00345
--- /dev/null
+++ b/MdeModulePkg/Include/Protocol/OEMBadging.h
@@ -0,0 +1,79 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ EfiOEMBadging.h
+
+Abstract:
+
+ EFI OEM Badging Protocol definition header file
+
+Revision History
+
+--*/
+
+#ifndef __EFI_OEM_BADGING_H__
+#define __EFI_OEM_BADGING_H__
+
+//
+// GUID for EFI OEM Badging Protocol
+//
+#define EFI_OEM_BADGING_PROTOCOL_GUID \
+ { 0x170e13c0, 0xbf1b, 0x4218, {0x87, 0x1d, 0x2a, 0xbd, 0xc6, 0xf8, 0x87, 0xbc } }
+
+
+typedef struct _EFI_OEM_BADGING_PROTOCOL EFI_OEM_BADGING_PROTOCOL;
+
+typedef enum {
+ EfiBadgingFormatBMP,
+ EfiBadgingFormatJPEG,
+ EfiBadgingFormatTIFF,
+ EfiBadgingFormatGIF,
+ EfiBadgingFormatUnknown
+} EFI_BADGING_FORMAT;
+
+typedef enum {
+ EfiBadgingDisplayAttributeLeftTop,
+ EfiBadgingDisplayAttributeCenterTop,
+ EfiBadgingDisplayAttributeRightTop,
+ EfiBadgingDisplayAttributeCenterRight,
+ EfiBadgingDisplayAttributeRightBottom,
+ EfiBadgingDisplayAttributeCenterBottom,
+ EfiBadgingDisplayAttributeLeftBottom,
+ EfiBadgingDisplayAttributeCenterLeft,
+ EfiBadgingDisplayAttributeCenter,
+ EfiBadgingDisplayAttributeCustomized
+} EFI_BADGING_DISPLAY_ATTRIBUTE;
+
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_BADGING_GET_IMAGE) (
+ IN EFI_OEM_BADGING_PROTOCOL *This,
+ IN OUT UINT32 *Instance,
+ OUT EFI_BADGING_FORMAT *Format,
+ OUT UINT8 **ImageData,
+ OUT UINTN *ImageSize,
+ OUT EFI_BADGING_DISPLAY_ATTRIBUTE *Attribute,
+ OUT UINTN *CoordinateX,
+ OUT UINTN *CoordinateY
+);
+
+
+struct _EFI_OEM_BADGING_PROTOCOL {
+ EFI_BADGING_GET_IMAGE GetImage;
+};
+
+
+extern EFI_GUID gEfiOEMBadgingProtocolGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Protocol/Performance.h b/MdeModulePkg/Include/Protocol/Performance.h
new file mode 100644
index 0000000000..84e1cca553
--- /dev/null
+++ b/MdeModulePkg/Include/Protocol/Performance.h
@@ -0,0 +1,166 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ Performance.h
+
+Abstract:
+
+
+--*/
+
+#ifndef __PERFORMANCE_H__
+#define __PERFORMANCE_H__
+
+#define PERFORMANCE_PROTOCOL_GUID \
+ { 0x76b6bdfa, 0x2acd, 0x4462, {0x9E, 0x3F, 0xcb, 0x58, 0xC9, 0x69, 0xd9, 0x37 } }
+
+//
+// Forward reference for pure ANSI compatability
+//
+typedef struct _PERFORMANCE_PROTOCOL PERFORMANCE_PROTOCOL;
+
+#define DXE_TOK "DXE"
+#define SHELL_TOK "SHELL"
+#define PEI_TOK "PEI"
+#define BDS_TOK "BDS"
+#define DRIVERBINDING_START_TOK "DriverBinding:Start"
+#define DRIVERBINDING_SUPPORT_TOK "DriverBinding:Support"
+#define START_IMAGE_TOK "StartImage"
+#define LOAD_IMAGE_TOK "LoadImage"
+
+//
+// DXE_PERFORMANCE_STRING_SIZE must be a multiple of 8.
+//
+#define DXE_PERFORMANCE_STRING_SIZE 32
+#define DXE_PERFORMANCE_STRING_LENGTH (DXE_PERFORMANCE_STRING_SIZE - 1)
+
+//
+// The default guage entries number for DXE phase.
+//
+#define INIT_DXE_GAUGE_DATA_ENTRIES 800
+
+typedef struct {
+ EFI_PHYSICAL_ADDRESS Handle;
+ CHAR8 Token[DXE_PERFORMANCE_STRING_SIZE];
+ CHAR8 Module[DXE_PERFORMANCE_STRING_SIZE];
+ UINT64 StartTimeStamp;
+ UINT64 EndTimeStamp;
+} GAUGE_DATA_ENTRY;
+
+//
+// The header must be aligned at 8 bytes
+//
+typedef struct {
+ UINT32 NumberOfEntries;
+ UINT32 Reserved;
+} GAUGE_DATA_HEADER;
+
+/**
+ Adds a record at the end of the performance measurement log
+ that records the start time of a performance measurement.
+
+ Adds a record to the end of the performance measurement log
+ that contains the Handle, Token, and Module.
+ The end time of the new record must be set to zero.
+ If TimeStamp is not zero, then TimeStamp is used to fill in the start time in the record.
+ If TimeStamp is zero, the start time in the record is filled in with the value
+ read from the current time stamp.
+
+ @param Handle Pointer to environment specific context used
+ to identify the component being measured.
+ @param Token Pointer to a Null-terminated ASCII string
+ that identifies the component being measured.
+ @param Module Pointer to a Null-terminated ASCII string
+ that identifies the module being measured.
+ @param TimeStamp 64-bit time stamp.
+
+ @retval EFI_SUCCESS The data was read correctly from the device.
+ @retval EFI_OUT_OF_RESOURCES There are not enough resources to record the measurement.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI * PERFORMANCE_START_GAUGE) (
+ IN CONST VOID *Handle, OPTIONAL
+ IN CONST CHAR8 *Token, OPTIONAL
+ IN CONST CHAR8 *Module, OPTIONAL
+ IN UINT64 TimeStamp
+ );
+
+/**
+ Searches the performance measurement log from the beginning of the log
+ for the first matching record that contains a zero end time and fills in a valid end time.
+
+ Searches the performance measurement log from the beginning of the log
+ for the first record that matches Handle, Token, and Module and has an end time value of zero.
+ If the record can not be found then return EFI_NOT_FOUND.
+ If the record is found and TimeStamp is not zero,
+ then the end time in the record is filled in with the value specified by TimeStamp.
+ If the record is found and TimeStamp is zero, then the end time in the matching record
+ is filled in with the current time stamp value.
+
+ @param Handle Pointer to environment specific context used
+ to identify the component being measured.
+ @param Token Pointer to a Null-terminated ASCII string
+ that identifies the component being measured.
+ @param Module Pointer to a Null-terminated ASCII string
+ that identifies the module being measured.
+ @param TimeStamp 64-bit time stamp.
+
+ @retval EFI_SUCCESS The end of the measurement was recorded.
+ @retval EFI_NOT_FOUND The specified measurement record could not be found.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI * PERFORMANCE_END_GAUGE) (
+ IN CONST VOID *Handle, OPTIONAL
+ IN CONST CHAR8 *Token, OPTIONAL
+ IN CONST CHAR8 *Module, OPTIONAL
+ IN UINT64 TimeStamp
+ );
+
+/**
+ Retrieves a previously logged performance measurement.
+
+ Retrieves the performance log entry from the performance log specified by LogEntryKey.
+ If it stands for a valid entry, then EFI_SUCCESS is returned and
+ GaugeDataEntry stores the pointer to that entry.
+
+ @param LogEntryKey The key for the previous performance measurement log entry.
+ If 0, then the first performance measurement log entry is retrieved.
+ @param GaugeDataEntry The indirect pointer to the gauge data entry specified by LogEntryKey
+ if the retrieval is successful.
+
+ @retval EFI_SUCCESS The GuageDataEntry is successfuly found based on LogEntryKey.
+ @retval EFI_NOT_FOUND The LogEntryKey is the last entry (equals to the total entry number).
+ @retval EFI_INVALIDE_PARAMETER The LogEntryKey is not a valid entry (greater than the total entry number).
+ @retval EFI_INVALIDE_PARAMETER GaugeDataEntry is NULL.
+
+**/
+typedef
+EFI_STATUS
+(EFIAPI * PERFORMANCE_GET_GAUGE) (
+ IN UINTN LogEntryKey,
+ OUT GAUGE_DATA_ENTRY **GaugeDataEntry
+ );
+
+struct _PERFORMANCE_PROTOCOL {
+ PERFORMANCE_START_GAUGE StartGauge;
+ PERFORMANCE_END_GAUGE EndGauge;
+ PERFORMANCE_GET_GAUGE GetGauge;
+};
+
+extern EFI_GUID gPerformanceProtocolGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Protocol/Print.h b/MdeModulePkg/Include/Protocol/Print.h
new file mode 100644
index 0000000000..c381295f31
--- /dev/null
+++ b/MdeModulePkg/Include/Protocol/Print.h
@@ -0,0 +1,50 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ Print.h
+
+Abstract:
+
+ This file defines the Print protocol
+
+--*/
+
+#ifndef __PPRINT_H__
+#define __PPRINT_H__
+
+#define EFI_PRINT_PROTOCOL_GUID \
+ { 0xdf2d868e, 0x32fc, 0x4cf0, {0x8e, 0x6b, 0xff, 0xd9, 0x5d, 0x13, 0x43, 0xd0 } }
+
+//
+// Forward reference for pure ANSI compatability
+//
+typedef struct _EFI_PRINT_PROTOCOL EFI_PRINT_PROTOCOL;
+
+
+typedef
+UINTN
+(EFIAPI *EFI_VSPRINT) (
+ OUT CHAR16 *StartOfBuffer,
+ IN UINTN BufferSize,
+ IN CONST CHAR16 *FormatString,
+ IN VA_LIST Marker
+ );
+
+struct _EFI_PRINT_PROTOCOL {
+ EFI_VSPRINT VSPrint;
+};
+
+
+extern EFI_GUID gEfiPrintProtocolGuid;
+
+#endif
diff --git a/MdeModulePkg/Include/Protocol/ScsiIo.h b/MdeModulePkg/Include/Protocol/ScsiIo.h
new file mode 100644
index 0000000000..4e3a170de0
--- /dev/null
+++ b/MdeModulePkg/Include/Protocol/ScsiIo.h
@@ -0,0 +1,241 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ ScsiIo.h
+
+Abstract:
+
+ SCSI I/O protocol.
+
+--*/
+
+#ifndef __SCSI_IO_H__
+#define __SCSI_IO_H__
+
+#define EFI_SCSI_IO_PROTOCOL_GUID \
+ { 0x403cd195, 0xf233, 0x48ec, {0x84, 0x55, 0xb2, 0xe5, 0x2f, 0x1d, 0x9e, 0x2 } }
+
+//
+// Forward reference for pure ANSI compatability
+//
+typedef struct _EFI_SCSI_IO_PROTOCOL EFI_SCSI_IO_PROTOCOL;
+
+//
+// SCSI Host Adapter Status definition
+//
+#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_OK 0x00
+#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT_COMMAND 0x09 // timeout when processing the command
+#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_TIMEOUT 0x0b // timeout when waiting for the command processing
+#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_MESSAGE_REJECT 0x0d // a message reject was received when processing command
+#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_RESET 0x0e // a bus reset was detected
+#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_PARITY_ERROR 0x0f
+#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_REQUEST_SENSE_FAILED 0x10 // the adapter failed in issuing request sense command
+#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_SELECTION_TIMEOUT 0x11 // selection timeout
+#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_DATA_OVERRUN_UNDERRUN 0x12 // data overrun or data underrun
+#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_BUS_FREE 0x13 // Unexepected bus free
+#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_PHASE_ERROR 0x14 // Target bus phase sequence failure
+#define EFI_SCSI_IO_STATUS_HOST_ADAPTER_OTHER 0x7f
+
+
+//
+// SCSI Target Status definition
+//
+#define EFI_SCSI_IO_STATUS_TARGET_GOOD 0x00
+#define EFI_SCSI_IO_STATUS_TARGET_CHECK_CONDITION 0x02 // check condition
+#define EFI_SCSI_IO_STATUS_TARGET_CONDITION_MET 0x04 // condition met
+#define EFI_SCSI_IO_STATUS_TARGET_BUSY 0x08 // busy
+#define EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE 0x10 // intermediate
+#define EFI_SCSI_IO_STATUS_TARGET_INTERMEDIATE_CONDITION_MET 0x14 // intermediate-condition met
+#define EFI_SCSI_IO_STATUS_TARGET_RESERVATION_CONFLICT 0x18 // reservation conflict
+#define EFI_SCSI_IO_STATUS_TARGET_COMMOND_TERMINATED 0x22 // command terminated
+#define EFI_SCSI_IO_STATUS_TARGET_QUEUE_FULL 0x28 // queue full
+
+typedef struct {
+ UINT64 Timeout;
+ VOID *DataBuffer;
+ VOID *SenseData;
+ VOID *Cdb;
+ UINT32 TransferLength;
+ UINT8 CdbLength;
+ UINT8 DataDirection;
+ UINT8 HostAdapterStatus;
+ UINT8 TargetStatus;
+ UINT8 SenseDataLength;
+}EFI_SCSI_IO_SCSI_REQUEST_PACKET;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SCSI_IO_PROTOCOL_GET_DEVICE_TYPE) (
+ IN EFI_SCSI_IO_PROTOCOL *This,
+ OUT UINT8 *DeviceType
+ )
+/*++
+
+ Routine Description:
+ Retrieves the device type information of the SCSI Controller.
+
+ Arguments:
+ This - Protocol instance pointer.
+ DeviceType - A pointer to the device type information
+ retrieved from the SCSI Controller.
+
+ Returns:
+ EFI_SUCCESS - Retrieves the device type information successfully.
+ EFI_INVALID_PARAMETER - The DeviceType is NULL.
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SCSI_IO_PROTOCOL_GET_DEVICE_LOCATION) (
+ IN EFI_SCSI_IO_PROTOCOL *This,
+ OUT UINT32 *Target,
+ OUT UINT64 *Lun
+ )
+/*++
+ Routine Description:
+ Retrieves the device location in the SCSI channel.
+
+ Arguments:
+ This - Protocol instance pointer.
+ Target - A pointer to the Target ID of a SCSI device
+ on the SCSI channel.
+ Lun - A pointer to the LUN of the SCSI device on
+ the SCSI channel.
+
+ Returns:
+ EFI_SUCCESS - Retrieves the device location successfully.
+ EFI_INVALID_PARAMETER - The Target or Lun is NULL.
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SCSI_IO_PROTOCOL_RESET_BUS) (
+ IN EFI_SCSI_IO_PROTOCOL *This
+ )
+/*++
+
+ Routine Description:
+ Resets the SCSI Bus that the SCSI Controller is attached to.
+
+ Arguments:
+ This - Protocol instance pointer.
+
+ Returns:
+ EFI_SUCCESS - The SCSI bus is reset successfully.
+ EFI_DEVICE_ERROR - Errors encountered when resetting the SCSI bus.
+ EFI_UNSUPPORTED - The bus reset operation is not supported by the
+ SCSI Host Controller.
+ EFI_TIMEOUT - A timeout occurred while attempting to reset
+ the SCSI bus.
+--*/
+;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SCSI_IO_PROTOCOL_RESET_DEVICE) (
+ IN EFI_SCSI_IO_PROTOCOL *This
+ )
+/*++
+
+ Routine Description:
+ Resets the SCSI Controller that the device handle specifies.
+
+ Arguments:
+ This - Protocol instance pointer.
+
+
+ Returns:
+ EFI_SUCCESS - Reset the SCSI controller successfully.
+ EFI_DEVICE_ERROR - Errors are encountered when resetting the
+ SCSI Controller.
+ EFI_UNSUPPORTED - The SCSI bus does not support a device
+ reset operation.
+ EFI_TIMEOUT - A timeout occurred while attempting to
+ reset the SCSI Controller.
+--*/
+;
+
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SCSI_IO_PROTOCOL_EXEC_SCSI_CMD) (
+ IN EFI_SCSI_IO_PROTOCOL *This,
+ IN OUT EFI_SCSI_IO_SCSI_REQUEST_PACKET *Packet,
+ IN EFI_EVENT Event OPTIONAL
+ )
+/*++
+
+ Routine Description:
+ Sends a SCSI Request Packet to the SCSI Controller for execution.
+
+ Arguments:
+ This - Protocol instance pointer.
+ Packet - The SCSI request packet to send to the SCSI
+ Controller specified by the device handle.
+ Event - If the SCSI bus where the SCSI device is attached
+ does not support non-blocking I/O, then Event is
+ ignored, and blocking I/O is performed.
+ If Event is NULL, then blocking I/O is performed.
+ If Event is not NULL and non-blocking I/O is
+ supported, then non-blocking I/O is performed,
+ and Event will be signaled when the SCSI Request
+ Packet completes.
+ Returns:
+ EFI_SUCCESS - The SCSI Request Packet was sent by the host
+ successfully, and TransferLength bytes were
+ transferred to/from DataBuffer.See
+ HostAdapterStatus, TargetStatus,
+ SenseDataLength, and SenseData in that order
+ for additional status information.
+ EFI_WARN_BUFFER_TOO_SMALL - The SCSI Request Packet was executed,
+ but the entire DataBuffer could not be transferred.
+ The actual number of bytes transferred is returned
+ in TransferLength. See HostAdapterStatus,
+ TargetStatus, SenseDataLength, and SenseData in
+ that order for additional status information.
+ EFI_NOT_READY - The SCSI Request Packet could not be sent because
+ there are too many SCSI Command Packets already
+ queued.The caller may retry again later.
+ EFI_DEVICE_ERROR - A device error occurred while attempting to send
+ the SCSI Request Packet. See HostAdapterStatus,
+ TargetStatus, SenseDataLength, and SenseData in
+ that order for additional status information.
+ EFI_INVALID_PARAMETER - The contents of CommandPacket are invalid.
+ The SCSI Request Packet was not sent, so no
+ additional status information is available.
+ EFI_UNSUPPORTED - The command described by the SCSI Request Packet
+ is not supported by the SCSI initiator(i.e., SCSI
+ Host Controller). The SCSI Request Packet was not
+ sent, so no additional status information is
+ available.
+ EFI_TIMEOUT - A timeout occurred while waiting for the SCSI
+ Request Packet to execute. See HostAdapterStatus,
+ TargetStatus, SenseDataLength, and SenseData in
+ that order for additional status information.
+--*/
+;
+
+struct _EFI_SCSI_IO_PROTOCOL {
+ EFI_SCSI_IO_PROTOCOL_GET_DEVICE_TYPE GetDeviceType;
+ EFI_SCSI_IO_PROTOCOL_GET_DEVICE_LOCATION GetDeviceLocation;
+ EFI_SCSI_IO_PROTOCOL_RESET_BUS ResetBus;
+ EFI_SCSI_IO_PROTOCOL_RESET_DEVICE ResetDevice;
+ EFI_SCSI_IO_PROTOCOL_EXEC_SCSI_CMD ExecuteSCSICommand;
+};
+
+extern EFI_GUID gEfiScsiIoProtocolGuid;
+
+#endif
+
diff --git a/MdeModulePkg/Include/Protocol/usbatapi.h b/MdeModulePkg/Include/Protocol/usbatapi.h
new file mode 100644
index 0000000000..daa05293be
--- /dev/null
+++ b/MdeModulePkg/Include/Protocol/usbatapi.h
@@ -0,0 +1,83 @@
+/*++
+
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ UsbAtapi.h
+
+Abstract:
+
+ EFI Atapi Protocol definition.
+
+Revision History
+
+--*/
+
+#ifndef __EFI_USB_ATAPI_H__
+#define __EFI_USB_ATAPI_H__
+
+//
+// Transfer protocol types
+//
+#define BOT 0x50
+#define CBI0 0x00
+#define CBI1 0x01
+
+//
+// SubClass Code (defines command set)
+//
+#define EFI_USB_SUBCLASS_RBC 0x01
+#define EFI_USB_SUBCLASS_ATAPI 0x02
+#define EFI_USB_SUBCLASS_QIC_157 0x03
+#define EFI_USB_SUBCLASS_UFI 0x04
+#define EFI_USB_SUBCLASS_SFF_8070i 0x05
+#define EFI_USB_SUBCLASS_SCSI 0x06
+#define EFI_USB_SUBCLASS_RESERVED_LOW 0x07
+#define EFI_USB_SUBCLASS_RESERVED_HIGH 0xff
+//
+// Global GUID for transfer protocol interface
+//
+#define EFI_USB_ATAPI_PROTOCOL_GUID \
+ { 0x2B2F68DA, 0x0CD2, 0x44cf, {0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 } }
+
+typedef struct _EFI_USB_ATAPI_PROTOCOL EFI_USB_ATAPI_PROTOCOL;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_USB_ATAPI_PACKET_CMD) (
+ IN EFI_USB_ATAPI_PROTOCOL *This,
+ IN VOID *Command,
+ IN UINT8 CommandSize,
+ IN VOID *DataBuffer,
+ IN UINT32 BufferLength,
+ IN EFI_USB_DATA_DIRECTION Direction,
+ IN UINT16 TimeOutInMilliSeconds
+);
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_USB_MASS_STORAGE_RESET) (
+ IN EFI_USB_ATAPI_PROTOCOL *This,
+ IN BOOLEAN ExtendedVerification
+);
+
+//
+// Protocol Interface Structure
+//
+struct _EFI_USB_ATAPI_PROTOCOL {
+ EFI_USB_ATAPI_PACKET_CMD UsbAtapiPacketCmd;
+ EFI_USB_MASS_STORAGE_RESET UsbAtapiReset;
+ UINT32 CommandProtocol;
+};
+
+extern EFI_GUID gEfiUsbAtapiProtocolGuid;
+
+#endif
diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec
index 31fe01a30e..bf790be59d 100644
--- a/MdeModulePkg/MdeModulePkg.dec
+++ b/MdeModulePkg/MdeModulePkg.dec
@@ -1,15 +1,17 @@
#/** @file
# Mde Module Package Reference Implementations
#
-# This Module provides standard reference information for EFI/PI implementations.
+# This module provides headers and libraries that conform to EFI/PI Industry standards.
# Copyright (c) 2007, Intel Corporation.
#
# All rights reserved.
-# This program and the accompanying materials are licensed and made available
-# under the terms and conditions of the BSD License which accompanies this distribution.
-# The full text of the license may be found at http://opensource.org/licenses/bsd-license.php
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES
-# OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+# This program and the accompanying materials are licensed and made available under
+# the terms and conditions of the BSD License which accompanies this distribution.
+# The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
#**/
@@ -30,43 +32,70 @@
################################################################################
#
-# Include Section - list of Include Paths that are provided by this package.
-# Comments are used for Keywords and Module Types.
-#
-# Supported Module Types:
-# SEC PEI_CORE PEIM DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER DXE_SAL_DRIVER UEFI_DRIVER
+# Global Guid Definition section - list of Global Guid C Name Data Structures
+# that are provided by this package.
#
################################################################################
-[Includes.common]
+[Guids.common]
+ gEfiGenericPlatformVariableGuid = { 0x59d1c24f, 0x50f1, 0x401a, { 0xb1, 0x01, 0xf3, 0x3e, 0x0d, 0xae, 0xd4, 0x43 }}
+ gPeiPerformanceHobGuid = { 0xEC4DF5AF, 0x4395, 0x4CC9, { 0x94, 0xDE, 0x77, 0x50, 0x6D, 0x12, 0xC7, 0xB8 }}
+ gEfiCapsuleVendorGuid = { 0x711C703F, 0xC285, 0x4B10, { 0xA3, 0xB0, 0x36, 0xEC, 0xBD, 0x3C, 0x8B, 0xE2 }}
+ gEfiPciHotplugDeviceGuid = { 0x0B280816, 0x52E7, 0x4E51, { 0xAA, 0x57, 0x11, 0xBD, 0x41, 0xCB, 0xEF, 0xC3 }}
+ gEfiBootStateGuid = { 0x60B5E939, 0x0FCF, 0x4227, { 0xBA, 0x83, 0x6B, 0xBE, 0xD4, 0x5B, 0xC0, 0xE3 }}
+ gEfiDefaultBmpLogoGuid = { 0x7BB28B99, 0x61BB, 0x11D5, { 0x9A, 0x5D, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
+ gEfiPrimaryConsoleOutDeviceGuid = { 0x62BDF38A, 0xE3D5, 0x492C, { 0x95, 0x0C, 0x23, 0xA7, 0xF6, 0x6E, 0x67, 0x2E }}
+ gEfiPrimaryConsoleInDeviceGuid = { 0xE451DCBE, 0x96A1, 0x4729, { 0xA5, 0xCF, 0x6B, 0x9C, 0x2C, 0xFF, 0x47, 0xFD }}
+ gEfiPrimaryStandardErrorDeviceGuid = { 0x5A68191B, 0x9B97, 0x4752, { 0x99, 0x46, 0xE3, 0x6A, 0x5D, 0xA9, 0x42, 0xB1 }}
+ gEfiHotPlugDeviceGuid = { 0x220AC432, 0x1D43, 0x49E5, { 0xA7, 0x4F, 0x4C, 0x9D, 0xA6, 0x7A, 0xD2, 0x3B }}
+ gEfiStandardErrorDeviceGuid = { 0xD3B36F2D, 0xD551, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
+ gEfiConsoleOutDeviceGuid = { 0xD3B36F2C, 0xD551, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
+ gEfiConsoleInDeviceGuid = { 0xD3B36F2B, 0xD551, 0x11D4, { 0x9A, 0x46, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D }}
+ gEfiAlternateFvBlockGuid = { 0xF496922D, 0x172F, 0x4BBC, { 0xA1, 0xEB, 0x0E, 0xEB, 0x94, 0x9C, 0x34, 0x86 }}
+ gEfiDiskInfoUsbInterfaceGuid = { 0xCB871572, 0xC11A, 0x47B5, { 0xB4, 0x92, 0x67, 0x5E, 0xAF, 0xA7, 0x77, 0x27 }}
+ gEfiDiskInfoScsiInterfaceGuid = { 0x08F74BAA, 0xEA36, 0x41D9, { 0x95, 0x21, 0x21, 0xA7, 0x0F, 0x87, 0x80, 0xBC }}
+ gEfiDiskInfoIdeInterfaceGuid = { 0x5E948FE3, 0x26D3, 0x42B5, { 0xAF, 0x17, 0x61, 0x02, 0x87, 0x18, 0x8D, 0xEC }}
+ gEfiSystemNvDataFvGuid = { 0xFFF12B8D, 0x7696, 0x4C8B, { 0xA9, 0x85, 0x27, 0x47, 0x07, 0x5B, 0x4F, 0x50 }}
+ gEfiSystemNvDataHobGuid = { 0xD6E5092D, 0xC7B2, 0x4872, { 0xAF, 0x66, 0xFD, 0xC0, 0xE6, 0xF9, 0x5E, 0x78 }}
+ gPcdPeiCallbackFnTableHobGuid = { 0xC625F4B2, 0xEA09, 0x4675, { 0x82, 0xD7, 0xBA, 0x36, 0x82, 0x15, 0x7A, 0x14 }}
+ gPcdDataBaseHobGuid = { 0xEA296D92, 0x0B69, 0x423C, { 0x8C, 0x28, 0x33, 0xB4, 0xE0, 0xA9, 0x12, 0x68 }}
+ gEfiMdePkgTokenSpaceGuid = { 0xA1AFF049, 0xFDEB, 0x442a, { 0xB3, 0x20, 0x13, 0xAB, 0x4C, 0xB7, 0x2B, 0xBC }}
+
################################################################################
#
-# Library Class Header section - list of Library Class header files that are
-# provided by this package.
+# Global Protocols Definition section - list of Global Protocols C Name Data
+# Structures that are provided by this package.
#
################################################################################
-[LibraryClasses.common]
+[Protocols.common]
+ gEfiScsiIoProtocolGuid = { 0x403CD195, 0xF233, 0x48EC, { 0x84, 0x55, 0xB2, 0xE5, 0x2F, 0x1D, 0x9E, 0x02 }}
+ gPerformanceProtocolGuid = { 0x76B6BDFA, 0x2ACD, 0x4462, { 0x9E, 0x3F, 0xCB, 0x58, 0xC9, 0x69, 0xD9, 0x37 }}
+ gEfiUsbAtapiProtocolGuid = { 0x2B2F68DA, 0x0CD2, 0x44CF, { 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 }}
+ gEfiOEMBadgingProtocolGuid = { 0x170E13C0, 0xBF1B, 0x4218, { 0x87, 0x1D, 0x2A, 0xBD, 0xC6, 0xF8, 0x87, 0xBC }}
+ gEfiConsoleControlProtocolGuid = { 0xF42F7782, 0x012E, 0x4C12, { 0x99, 0x56, 0x49, 0xF9, 0x43, 0x04, 0xF7, 0x21 }}
+ gEfiFaultTolerantWriteLiteProtocolGuid = { 0x3F557189, 0x8DAE, 0x45AE, { 0xA0, 0xB3, 0x2B, 0x99, 0xCA, 0x7A, 0xA7, 0xA0 }}
+ gEfiFvbExtensionProtocolGuid = { 0x53A4C71B, 0xB581, 0x4170, { 0x91, 0xB3, 0x8D, 0xB8, 0x7A, 0x4B, 0x5C, 0x46 }}
+ gEfiDiskInfoProtocolGuid = { 0xD432A67F, 0x14DC, 0x484B, { 0xB3, 0xBB, 0x3F, 0x02, 0x91, 0x84, 0x93, 0x27 }}
+ gEfiGenericMemTestProtocolGuid = { 0x309DE7F1, 0x7F5E, 0x4ACE, { 0xB4, 0x9C, 0x53, 0x1B, 0xE5, 0xAA, 0x95, 0xEF }}
+ gEfiPrintProtocolGuid = { 0xDF2D868E, 0x32FC, 0x4CF0, { 0x8E, 0x6B, 0xFF, 0xD9, 0x5D, 0x13, 0x43, 0xD0 }}
+ gEfiLoadPeImageProtocolGuid = { 0x5CB5C776, 0x60D5, 0x45EE, { 0x88, 0x3C, 0x45, 0x27, 0x08, 0xCD, 0x74, 0x3F }}
+ gEfiCapsuleArchProtocolGuid = { 0x5053697E, 0x2EBC, 0x4819, { 0x90, 0xD9, 0x05, 0x80, 0xDE, 0xEE, 0x57, 0x54 }}
+
################################################################################
#
-# Global Guid Definition section - list of Global Guid C Name Data Structures
+# Global Ppis Definition section - list of Global Ppis C Name Data Structures
# that are provided by this package.
#
################################################################################
-[Guids.common]
+[Ppis.common]
+ gPeiBaseMemoryTestPpiGuid = { 0xB6EC423C, 0x21D2, 0x490D, { 0x85, 0xC6, 0xDD, 0x58, 0x64, 0xEA, 0xA6, 0x74 }}
-################################################################################
-#
-# Global Protocols Definition section - list of Global Protocols C Name Data
-# Structures that are provided by this package.
-#
-################################################################################
-[Protocols.common]
################################################################################
@@ -77,5 +106,54 @@
#
################################################################################
-[PcdsFeatureFlag.common]
+[PcdFeatureFlag.common]
+ PcdSupportUpdateCapsuleRest|0x0001001d|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|FALSE
+ PcdPeiPcdDatabaseTraverseEnabled|0x00010020|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
+ PcdDxePcdDatabaseTraverseEnabled|0x00010021|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
+ PcdPeiPcdDatabaseSetEnabled|0x00010030|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
+ PcdPeiPcdDatabaseGetSizeEnabled|0x00010031|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
+ PcdPeiPcdDatabaseCallbackOnSetEnabled|0x00010032|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
+ PcdPeiPcdDatabaseExEnabled|0x00010033|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
+ PcdDxeIplSupportEfiDecompress|0x00010034|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
+ PcdDxeIplSupportTianoDecompress|0x00010035|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
+ PcdDxeIplSupportCustomDecompress|0x00010036|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
+ PcdDevicePathSupportDevicePathToText|0x00010037|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|FALSE
+ PcdDevicePathSupportDevicePathFromText|0x00010038|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|FALSE
+ PcdDxeIplBuildShareCodeHobs|0x0001003c|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|FALSE
+ PcdNtEmulatorEnable|0x0001003e|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|FALSE
+
+[PcdFixedAtBuild.common]
+ PcdMaxPeiPcdCallBackNumberPerPcdEntry|0x0001000f|gEfiEdkModulePkgTokenSpaceGuid|UINT32|0x08
+ PcdVpdBaseAddress|0x00010010|gEfiEdkModulePkgTokenSpaceGuid|UINT32|0x0
+ PcdMaxSizePopulateCapsule|0x0001001e|gEfiEdkModulePkgTokenSpaceGuid|UINT32|0x0
+ PcdMaxSizeNonPopulateCapsule|0x0001001f|gEfiEdkModulePkgTokenSpaceGuid|UINT32|0x0
+ PcdMaxPeiPerformanceLogEntries|0x0001002f|gEfiEdkModulePkgTokenSpaceGuid|UINT8|28
+ PcdFlashNvStorageVariableBase|0x30000001|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageVariableSize|0x30000002|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageFtwSpareBase|0x30000013|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageFtwSpareSize|0x30000014|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageFtwWorkingBase|0x30000010|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageFtwWorkingSize|0x30000011|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+
+[PcdDynamic.common]
+ PcdFlashNvStorageVariableBase|0x30000001|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageVariableSize|0x30000002|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageFtwSpareBase|0x30000013|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageFtwSpareSize|0x30000014|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageFtwWorkingBase|0x30000010|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageFtwWorkingSize|0x30000011|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+
+[PcdPatchableInModule.common]
+ PcdMaxPeiPerformanceLogEntries|0x0001002f|gEfiEdkModulePkgTokenSpaceGuid|UINT8|28
+ PcdFlashNvStorageVariableBase|0x30000001|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageVariableSize|0x30000002|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageFtwSpareBase|0x30000013|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageFtwSpareSize|0x30000014|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageFtwWorkingBase|0x30000010|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+ PcdFlashNvStorageFtwWorkingSize|0x30000011|gEfiGenericPlatformTokenSpaceGuid|UINT32|0x0
+
+
+[PcdFeatureFlag.IA32]
+ PcdDxeIplSwitchToLongMode|0x0001003b|gEfiEdkModulePkgTokenSpaceGuid|BOOLEAN|TRUE
+
diff --git a/MdeModulePkg/MdeModulePkg.nspd b/MdeModulePkg/MdeModulePkg.nspd
index 79287dd871..44214f4661 100644
--- a/MdeModulePkg/MdeModulePkg.nspd
+++ b/MdeModulePkg/MdeModulePkg.nspd
@@ -27,4 +27,425 @@
<Filename>Universal/Disk/Partition/Dxe/Partition.msa</Filename>
<Filename>Universal/Security/SecurityStub/SecurityStub.msa</Filename>
</MsaFiles>
+ <GuidDeclarations>
+ <Entry Name="MdeModulePkgTokenSpace">
+ <C_Name>gEfiMdePkgTokenSpaceGuid</C_Name>
+ <GuidValue>A1AFF049-FDEB-442a-B320-13AB4CB72BBC</GuidValue>
+ <HelpText>All PCD define in MdeModulePkg is in this token space scope</HelpText>
+ </Entry>
+ <Entry Name="PcdDataBaseHob">
+ <C_Name>gPcdDataBaseHobGuid</C_Name>
+ <GuidValue>EA296D92-0B69-423C-8C28-33B4E0A91268</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="PcdPeiCallbackFnTable">
+ <C_Name>gPcdPeiCallbackFnTableHobGuid</C_Name>
+ <GuidValue>C625F4B2-EA09-4675-82D7-BA3682157A14</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="SystemNvDataHob">
+ <C_Name>gEfiSystemNvDataHobGuid</C_Name>
+ <GuidValue>D6E5092D-C7B2-4872-AF66-FDC0E6F95E78</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="SystemNvDataFv">
+ <C_Name>gEfiSystemNvDataFvGuid</C_Name>
+ <GuidValue>FFF12B8D-7696-4C8B-A985-2747075B4F50</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="DiskInfoIde">
+ <C_Name>gEfiDiskInfoIdeInterfaceGuid</C_Name>
+ <GuidValue>5E948FE3-26D3-42B5-AF17-610287188DEC</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="DiskInfoScsi">
+ <C_Name>gEfiDiskInfoScsiInterfaceGuid</C_Name>
+ <GuidValue>08F74BAA-EA36-41D9-9521-21A70F8780BC</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="DiskInfoUsb">
+ <C_Name>gEfiDiskInfoUsbInterfaceGuid</C_Name>
+ <GuidValue>CB871572-C11A-47B5-B492-675EAFA77727</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="AlternateFvBlock">
+ <C_Name>gEfiAlternateFvBlockGuid</C_Name>
+ <GuidValue>F496922D-172F-4BBC-A1EB-0EEB949C3486</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="ConsoleInDevice">
+ <C_Name>gEfiConsoleInDeviceGuid</C_Name>
+ <GuidValue>D3B36F2B-D551-11D4-9A46-0090273FC14D</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="ConsoleOutDevice">
+ <C_Name>gEfiConsoleOutDeviceGuid</C_Name>
+ <GuidValue>D3B36F2C-D551-11D4-9A46-0090273FC14D</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="StandardErrorDevice">
+ <C_Name>gEfiStandardErrorDeviceGuid</C_Name>
+ <GuidValue>D3B36F2D-D551-11D4-9A46-0090273FC14D</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="HotPlugDevice">
+ <C_Name>gEfiHotPlugDeviceGuid</C_Name>
+ <GuidValue>220AC432-1D43-49E5-A74F-4C9DA67AD23B</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="PrimaryStandardErrorDevice">
+ <C_Name>gEfiPrimaryStandardErrorDeviceGuid</C_Name>
+ <GuidValue>5A68191B-9B97-4752-9946-E36A5DA942B1</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="PrimaryConsoleInDevice">
+ <C_Name>gEfiPrimaryConsoleInDeviceGuid</C_Name>
+ <GuidValue>E451DCBE-96A1-4729-A5CF-6B9C2CFF47FD</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="PrimaryConsoleOutDevice">
+ <C_Name>gEfiPrimaryConsoleOutDeviceGuid</C_Name>
+ <GuidValue>62BDF38A-E3D5-492C-950C-23A7F66E672E</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="Bmp">
+ <C_Name>gEfiDefaultBmpLogoGuid</C_Name>
+ <GuidValue>7BB28B99-61BB-11D5-9A5D-0090273FC14D</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="BootState">
+ <C_Name>gEfiBootStateGuid</C_Name>
+ <GuidValue>60B5E939-0FCF-4227-BA83-6BBED45BC0E3</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="PciHotplugDevice">
+ <C_Name>gEfiPciHotplugDeviceGuid</C_Name>
+ <GuidValue>0B280816-52E7-4E51-AA57-11BD41CBEFC3</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="CapsuleVendor">
+ <C_Name>gEfiCapsuleVendorGuid</C_Name>
+ <GuidValue>711C703F-C285-4B10-A3B0-36ECBD3C8BE2</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="PeiPerformanceHob">
+ <C_Name>gPeiPerformanceHobGuid</C_Name>
+ <GuidValue>EC4DF5AF-4395-4CC9-94DE-77506D12C7B8</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="GenericPlatformVariable" GuidTypeList="EFI_VARIABLE">
+ <C_Name>gEfiGenericPlatformVariableGuid</C_Name>
+ <GuidValue>59d1c24f-50f1-401a-b101-f33e0daed443</GuidValue>
+ <HelpText>The variable space Guid to pair with a Unicode string name to tag an EFI variable</HelpText>
+ </Entry>
+ </GuidDeclarations>
+ <ProtocolDeclarations>
+ <Entry Name="Capsule">
+ <C_Name>gEfiCapsuleArchProtocolGuid</C_Name>
+ <GuidValue>5053697E-2EBC-4819-90D9-0580DEEE5754</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="LoadPeImage">
+ <C_Name>gEfiLoadPeImageProtocolGuid</C_Name>
+ <GuidValue>5CB5C776-60D5-45EE-883C-452708CD743F</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="Print">
+ <C_Name>gEfiPrintProtocolGuid</C_Name>
+ <GuidValue>DF2D868E-32FC-4CF0-8E6B-FFD95D1343D0</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="GenericMemTest">
+ <C_Name>gEfiGenericMemTestProtocolGuid</C_Name>
+ <GuidValue>309DE7F1-7F5E-4ACE-B49C-531BE5AA95EF</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="DiskInfo">
+ <C_Name>gEfiDiskInfoProtocolGuid</C_Name>
+ <GuidValue>D432A67F-14DC-484B-B3BB-3F0291849327</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="FvbExtension">
+ <C_Name>gEfiFvbExtensionProtocolGuid</C_Name>
+ <GuidValue>53A4C71B-B581-4170-91B3-8DB87A4B5C46</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="FaultTolerantWriteLite">
+ <C_Name>gEfiFaultTolerantWriteLiteProtocolGuid</C_Name>
+ <GuidValue>3F557189-8DAE-45AE-A0B3-2B99CA7AA7A0</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="ConsoleControl">
+ <C_Name>gEfiConsoleControlProtocolGuid</C_Name>
+ <GuidValue>F42F7782-012E-4C12-9956-49F94304F721</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="OEMBadging">
+ <C_Name>gEfiOEMBadgingProtocolGuid</C_Name>
+ <GuidValue>170E13C0-BF1B-4218-871D-2ABDC6F887BC</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="UsbAtapi">
+ <C_Name>gEfiUsbAtapiProtocolGuid</C_Name>
+ <GuidValue>2B2F68DA-0CD2-44CF-8E8B-BBA20B1B5B75</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="Performance">
+ <C_Name>gPerformanceProtocolGuid</C_Name>
+ <GuidValue>76B6BDFA-2ACD-4462-9E3F-CB58C969D937</GuidValue>
+ <HelpText/>
+ </Entry>
+ <Entry Name="ScsiIo">
+ <C_Name>gEfiScsiIoProtocolGuid</C_Name>
+ <GuidValue>403CD195-F233-48EC-8455-B2E52F1D9E02</GuidValue>
+ <HelpText/>
+ </Entry>
+ </ProtocolDeclarations>
+ <PpiDeclarations>
+ <Entry Name="BaseMemoryTest">
+ <C_Name>gPeiBaseMemoryTestPpiGuid</C_Name>
+ <GuidValue>B6EC423C-21D2-490D-85C6-DD5864EAA674</GuidValue>
+ <HelpText/>
+ </Entry>
+ </PpiDeclarations>
+ <PcdDeclarations>
+ <PcdEntry>
+ <C_Name>PcdMaxPeiPcdCallBackNumberPerPcdEntry</C_Name>
+ <Token>0x0001000f</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>UINT32</DatumType>
+ <ValidUsage>FIXED_AT_BUILD</ValidUsage>
+ <DefaultValue>0x08</DefaultValue>
+ <HelpText>The maximum number of callback function, which will be triggered when
+ a PCD entry is been set, can be registered for a single PCD entry in PEI phase.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdVpdBaseAddress</C_Name>
+ <Token>0x00010010</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>UINT32</DatumType>
+ <ValidUsage>FIXED_AT_BUILD</ValidUsage>
+ <DefaultValue>0x0</DefaultValue>
+ <HelpText>The base address of the VPD (Vital Product Data) region. It is
+ normally a region reserved on flash.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdSupportUpdateCapsuleRest</C_Name>
+ <Token>0x0001001d</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>FALSE</DefaultValue>
+ <HelpText>Indicate whether platform can support update capsule across a system reset</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdMaxSizePopulateCapsule</C_Name>
+ <Token>0x0001001e</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>UINT32</DatumType>
+ <ValidUsage>FIXED_AT_BUILD</ValidUsage>
+ <DefaultValue>0x0</DefaultValue>
+ <HelpText>Indicate the max size the platform can support in case of populated capsules</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdMaxSizeNonPopulateCapsule</C_Name>
+ <Token>0x0001001f</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>UINT32</DatumType>
+ <ValidUsage>FIXED_AT_BUILD</ValidUsage>
+ <DefaultValue>0x0</DefaultValue>
+ <HelpText>Indicate the max size the platform can support in case of non-populated capsules</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdPeiPcdDatabaseTraverseEnabled</C_Name>
+ <Token>0x00010020</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>TRUE</DefaultValue>
+ <HelpText>This feature flag can be used to enable or disable the Pcd PEIM database
+ traverse capability. Disable it can reduce the size of final image generated.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdDxePcdDatabaseTraverseEnabled</C_Name>
+ <Token>0x00010021</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>TRUE</DefaultValue>
+ <HelpText>This feature flag can be used to enable or disable the Pcd DXE database
+ traverse capability. Disable it can reduce the size of final image generated.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdMaxPeiPerformanceLogEntries</C_Name>
+ <Token>0x0001002f</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>UINT8</DatumType>
+ <ValidUsage>FIXED_AT_BUILD PATCHABLE_IN_MODULE</ValidUsage>
+ <DefaultValue>28</DefaultValue>
+ <HelpText>Maximun number of performance log entries during PEI phase.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdPeiPcdDatabaseSetEnabled</C_Name>
+ <Token>0x00010030</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>TRUE</DefaultValue>
+ <HelpText>This feature flag can be used to enable or disable the SET capability of PCD service PEIM. If a platform does not do PCD SET operation in PEI phase. This flag can be set to DISABLE to save size.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdPeiPcdDatabaseGetSizeEnabled</C_Name>
+ <Token>0x00010031</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>TRUE</DefaultValue>
+ <HelpText>This feature flag can be used to enable or disable the GET size capability of PCD service PEIM. If a platform does not do PCD get size operation in PEI phase. This flag can be set to DISABLE to save size.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdPeiPcdDatabaseCallbackOnSetEnabled</C_Name>
+ <Token>0x00010032</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>TRUE</DefaultValue>
+ <HelpText>This feature flag can be used to enable or disable the Callback On SET capability of PCD service PEIM. If a platform does not register any callback on set in PEI phase. This flag can be set to DISABLE to save size.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdPeiPcdDatabaseExEnabled</C_Name>
+ <Token>0x00010033</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>TRUE</DefaultValue>
+ <HelpText>This feature flag can be used to enable or disable the PCD service PEIM to handle DynamicEX PCD. If a platform has no module to use DynamicEX in PEI phase. This flag can be set to DISABLE to save size.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdFlashNvStorageVariableBase</C_Name>
+ <Token>0x30000001</Token>
+ <TokenSpaceGuidCName>gEfiGenericPlatformTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>UINT32</DatumType>
+ <ValidUsage>FIXED_AT_BUILD PATCHABLE_IN_MODULE DYNAMIC</ValidUsage>
+ <DefaultValue>0x0</DefaultValue>
+ <HelpText>Base address of the variable section in NV firmware volume.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdFlashNvStorageVariableSize</C_Name>
+ <Token>0x30000002</Token>
+ <TokenSpaceGuidCName>gEfiGenericPlatformTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>UINT32</DatumType>
+ <ValidUsage>FIXED_AT_BUILD PATCHABLE_IN_MODULE DYNAMIC</ValidUsage>
+ <DefaultValue>0x0</DefaultValue>
+ <HelpText>Size of the variable section in NV firmware volume..</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdFlashNvStorageFtwSpareBase</C_Name>
+ <Token>0x30000013</Token>
+ <TokenSpaceGuidCName>gEfiGenericPlatformTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>UINT32</DatumType>
+ <ValidUsage>FIXED_AT_BUILD PATCHABLE_IN_MODULE DYNAMIC</ValidUsage>
+ <DefaultValue>0x0</DefaultValue>
+ <HelpText>Base address of the FTW spare block section in NV firmware volume.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdFlashNvStorageFtwSpareSize</C_Name>
+ <Token>0x30000014</Token>
+ <TokenSpaceGuidCName>gEfiGenericPlatformTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>UINT32</DatumType>
+ <ValidUsage>FIXED_AT_BUILD PATCHABLE_IN_MODULE DYNAMIC</ValidUsage>
+ <DefaultValue>0x0</DefaultValue>
+ <HelpText>Size of the FTW spare block section in NV firmware volume.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdFlashNvStorageFtwWorkingBase</C_Name>
+ <Token>0x30000010</Token>
+ <TokenSpaceGuidCName>gEfiGenericPlatformTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>UINT32</DatumType>
+ <ValidUsage>FIXED_AT_BUILD PATCHABLE_IN_MODULE DYNAMIC</ValidUsage>
+ <DefaultValue>0x0</DefaultValue>
+ <HelpText>Base address of the FTW working block section in NV firmware volume.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdFlashNvStorageFtwWorkingSize</C_Name>
+ <Token>0x30000011</Token>
+ <TokenSpaceGuidCName>gEfiGenericPlatformTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>UINT32</DatumType>
+ <ValidUsage>FIXED_AT_BUILD PATCHABLE_IN_MODULE DYNAMIC</ValidUsage>
+ <DefaultValue>0x0</DefaultValue>
+ <HelpText>Size of the FTW working block section in NV firmware volume.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdDxeIplSupportEfiDecompress</C_Name>
+ <Token>0x00010034</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>TRUE</DefaultValue>
+ <HelpText>If this feature is enabled, then the DXE IPL must support decompressing files compressed with the EFI Compression algorithm</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdDxeIplSupportTianoDecompress</C_Name>
+ <Token>0x00010035</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>TRUE</DefaultValue>
+ <HelpText>If this feature is enabled, then the DXE IPL must support decompressing files compressed with the Tiano Compression algorithm</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdDxeIplSupportCustomDecompress</C_Name>
+ <Token>0x00010036</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>TRUE</DefaultValue>
+ <HelpText>If this feature is enabled, then the DXE IPL must support decompressing files compressed with the Custom Compression algorithm</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdDevicePathSupportDevicePathToText</C_Name>
+ <Token>0x00010037</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>FALSE</DefaultValue>
+ <HelpText>If TRUE, then the Device Path To Text Protocol should be produced by the platform</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdDevicePathSupportDevicePathFromText</C_Name>
+ <Token>0x00010038</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>FALSE</DefaultValue>
+ <HelpText>If TRUE, then the Device Path From Text Protocol should be produced by the platform</HelpText>
+ </PcdEntry>
+ <PcdEntry SupArchList="IA32">
+ <C_Name>PcdDxeIplSwitchToLongMode</C_Name>
+ <Token>0x0001003b</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>TRUE</DefaultValue>
+ <HelpText>If this feature is enabled, then the DXE IPL will load a 64-bit DxeCore.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdDxeIplBuildShareCodeHobs</C_Name>
+ <Token>0x0001003c</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>FALSE</DefaultValue>
+ <HelpText>If this feature is enabled, DXE IPL will build a series of HOBs to share code with DXE Core.</HelpText>
+ </PcdEntry>
+ <PcdEntry>
+ <C_Name>PcdNtEmulatorEnable</C_Name>
+ <Token>0x0001003e</Token>
+ <TokenSpaceGuidCName>gEfiEdkModulePkgTokenSpaceGuid</TokenSpaceGuidCName>
+ <DatumType>BOOLEAN</DatumType>
+ <ValidUsage>FEATURE_FLAG</ValidUsage>
+ <DefaultValue>FALSE</DefaultValue>
+ <HelpText>If this PCD is set as TRUE, NT emulator will be endabled.</HelpText>
+ </PcdEntry>
+ </PcdDeclarations>
</PackageSurfaceArea>