summaryrefslogtreecommitdiff
path: root/EDK/Foundation/Protocol
diff options
context:
space:
mode:
Diffstat (limited to 'EDK/Foundation/Protocol')
-rw-r--r--EDK/Foundation/Protocol/ConsoleControl/ConsoleControl.c29
-rw-r--r--EDK/Foundation/Protocol/ConsoleControl/ConsoleControl.h122
-rw-r--r--EDK/Foundation/Protocol/CustomizedDecompress/CustomizedDecompress.c28
-rw-r--r--EDK/Foundation/Protocol/CustomizedDecompress/CustomizedDecompress.h139
-rw-r--r--EDK/Foundation/Protocol/DebugAssert/DebugAssert.c30
-rw-r--r--EDK/Foundation/Protocol/DebugAssert/DebugAssert.h89
-rw-r--r--EDK/Foundation/Protocol/DebugMask/DebugMask.c33
-rw-r--r--EDK/Foundation/Protocol/DebugMask/DebugMask.h72
-rw-r--r--EDK/Foundation/Protocol/DiskInfo/DiskInfo.c30
-rw-r--r--EDK/Foundation/Protocol/DiskInfo/DiskInfo.h174
-rw-r--r--EDK/Foundation/Protocol/EdkProtocolLib.cif78
-rw-r--r--EDK/Foundation/Protocol/EdkProtocolLib.inf112
-rw-r--r--EDK/Foundation/Protocol/EdkProtocolLib.mak72
-rw-r--r--EDK/Foundation/Protocol/EdkProtocolLib.sdl26
-rw-r--r--EDK/Foundation/Protocol/EdkProtocolLibIPF.cif11
-rw-r--r--EDK/Foundation/Protocol/EfiOEMBadging/EfiOEMBadging.c30
-rw-r--r--EDK/Foundation/Protocol/EfiOEMBadging/EfiOEMBadging.h79
-rw-r--r--EDK/Foundation/Protocol/ExtendedSalBootService/ExtendedSalBootService.c27
-rw-r--r--EDK/Foundation/Protocol/ExtendedSalBootService/ExtendedSalBootService.h118
-rw-r--r--EDK/Foundation/Protocol/ExtendedSalGuid/ExtendedSalGuid.c74
-rw-r--r--EDK/Foundation/Protocol/ExtendedSalGuid/ExtendedSalGuid.h283
-rw-r--r--EDK/Foundation/Protocol/FastBootException/FastBootException.c27
-rw-r--r--EDK/Foundation/Protocol/FastBootException/FastBootException.h41
-rw-r--r--EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.c29
-rw-r--r--EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.h88
-rw-r--r--EDK/Foundation/Protocol/FirmwarePerformance/FirmwarePerformance.c27
-rw-r--r--EDK/Foundation/Protocol/FirmwarePerformance/FirmwarePerformance.h213
-rw-r--r--EDK/Foundation/Protocol/FirmwareVolumeDispatch/FirmwareVolumeDispatch.c32
-rw-r--r--EDK/Foundation/Protocol/FirmwareVolumeDispatch/FirmwareVolumeDispatch.h35
-rw-r--r--EDK/Foundation/Protocol/Fpdt/Fpdt.c31
-rw-r--r--EDK/Foundation/Protocol/Fpdt/Fpdt.h56
-rw-r--r--EDK/Foundation/Protocol/FvbExtension/FvbExtension.c29
-rw-r--r--EDK/Foundation/Protocol/FvbExtension/FvbExtension.h53
-rw-r--r--EDK/Foundation/Protocol/GenericMemoryTest/GenericMemoryTest.c29
-rw-r--r--EDK/Foundation/Protocol/GenericMemoryTest/GenericMemoryTest.h154
-rw-r--r--EDK/Foundation/Protocol/GuidedSectionExtraction/GuidedSectionExtraction.c35
-rw-r--r--EDK/Foundation/Protocol/GuidedSectionExtraction/GuidedSectionExtraction.h73
-rw-r--r--EDK/Foundation/Protocol/IsaAcpi/IsaAcpi.c30
-rw-r--r--EDK/Foundation/Protocol/IsaAcpi/IsaAcpi.h177
-rw-r--r--EDK/Foundation/Protocol/IsaIo/IsaIo.c30
-rw-r--r--EDK/Foundation/Protocol/IsaIo/IsaIo.h176
-rw-r--r--EDK/Foundation/Protocol/LoadPe32Image/LoadPe32Image.c27
-rw-r--r--EDK/Foundation/Protocol/LoadPe32Image/LoadPe32Image.h64
-rw-r--r--EDK/Foundation/Protocol/NicIp4Config/NicIp4Config.c37
-rw-r--r--EDK/Foundation/Protocol/NicIp4Config/NicIp4Config.h118
-rw-r--r--EDK/Foundation/Protocol/PciHotPlugRequest/PciHotPlugRequest.c27
-rw-r--r--EDK/Foundation/Protocol/PciHotPlugRequest/PciHotPlugRequest.h55
-rw-r--r--EDK/Foundation/Protocol/Performance/Performance.c27
-rw-r--r--EDK/Foundation/Protocol/Performance/Performance.h103
-rw-r--r--EDK/Foundation/Protocol/PlatformMemTest/PlatformMemTest.c30
-rw-r--r--EDK/Foundation/Protocol/PlatformMemTest/PlatformMemTest.h261
-rw-r--r--EDK/Foundation/Protocol/Print/Print.c29
-rw-r--r--EDK/Foundation/Protocol/Print/Print.h51
-rw-r--r--EDK/Foundation/Protocol/Ps2Policy/Ps2Policy.c28
-rw-r--r--EDK/Foundation/Protocol/Ps2Policy/Ps2Policy.h50
-rw-r--r--EDK/Foundation/Protocol/PxeDhcp4/PxeDhcp4.c28
-rw-r--r--EDK/Foundation/Protocol/PxeDhcp4/PxeDhcp4.h350
-rw-r--r--EDK/Foundation/Protocol/PxeDhcp4Callback/PxeDhcp4CallBack.c28
-rw-r--r--EDK/Foundation/Protocol/PxeDhcp4Callback/PxeDhcp4CallBack.h86
-rw-r--r--EDK/Foundation/Protocol/TcgService/TcgService.c31
-rw-r--r--EDK/Foundation/Protocol/TcgService/TcgService.h177
-rw-r--r--EDK/Foundation/Protocol/Tcp/Tcp.c29
-rw-r--r--EDK/Foundation/Protocol/Tcp/Tcp.h110
-rw-r--r--EDK/Foundation/Protocol/TianoDecompress/TianoDecompress.c28
-rw-r--r--EDK/Foundation/Protocol/TianoDecompress/TianoDecompress.h139
-rw-r--r--EDK/Foundation/Protocol/UgaSplash/UgaSplash.c29
-rw-r--r--EDK/Foundation/Protocol/UgaSplash/UgaSplash.h45
-rw-r--r--EDK/Foundation/Protocol/UsbAtapi/usbatapi.c31
-rw-r--r--EDK/Foundation/Protocol/UsbAtapi/usbatapi.h83
-rw-r--r--EDK/Foundation/Protocol/VariableStore/VariableStore.c36
-rw-r--r--EDK/Foundation/Protocol/VariableStore/VariableStore.h105
-rw-r--r--EDK/Foundation/Protocol/VgaMiniPort/VgaMiniPort.c28
-rw-r--r--EDK/Foundation/Protocol/VgaMiniPort/VgaMiniPort.h70
-rw-r--r--EDK/Foundation/Protocol/VirtualMemoryAccess/VirtualMemoryAccess.c27
-rw-r--r--EDK/Foundation/Protocol/VirtualMemoryAccess/VirtualMemoryAccess.h64
75 files changed, 5452 insertions, 0 deletions
diff --git a/EDK/Foundation/Protocol/ConsoleControl/ConsoleControl.c b/EDK/Foundation/Protocol/ConsoleControl/ConsoleControl.c
new file mode 100644
index 0000000..3484668
--- /dev/null
+++ b/EDK/Foundation/Protocol/ConsoleControl/ConsoleControl.c
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2004 - 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ ConsoleControl.c
+
+Abstract:
+
+ Abstraction of a Text mode or GOP/UGA screen
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (ConsoleControl)
+
+
+EFI_GUID gEfiConsoleControlProtocolGuid = EFI_CONSOLE_CONTROL_PROTOCOL_GUID;
+
+EFI_GUID_STRING (&gEfiConsoleControlProtocolGuid, "Console Control Protocol", "Console Control Protocol");
+
diff --git a/EDK/Foundation/Protocol/ConsoleControl/ConsoleControl.h b/EDK/Foundation/Protocol/ConsoleControl/ConsoleControl.h
new file mode 100644
index 0000000..2fc4d6a
--- /dev/null
+++ b/EDK/Foundation/Protocol/ConsoleControl/ConsoleControl.h
@@ -0,0 +1,122 @@
+/*++
+
+Copyright (c) 2004 - 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ ConsoleControl.h
+
+Abstract:
+
+ Abstraction of a Text mode or GOP/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 *GopUgaExists, OPTIONAL
+ OUT BOOLEAN *StdInLocked OPTIONAL
+ )
+/*++
+
+ Routine Description:
+ Return the current video mode information. Also returns info about existence
+ of Graphics Output devices or 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.
+ GopUgaExists - TRUE if Console Spliter has found a GOP or 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
+
+--*/
+;
+
+
+
+typedef 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;
+} EFI_CONSOLE_CONTROL_PROTOCOL;
+
+extern EFI_GUID gEfiConsoleControlProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/CustomizedDecompress/CustomizedDecompress.c b/EDK/Foundation/Protocol/CustomizedDecompress/CustomizedDecompress.c
new file mode 100644
index 0000000..08fd681
--- /dev/null
+++ b/EDK/Foundation/Protocol/CustomizedDecompress/CustomizedDecompress.c
@@ -0,0 +1,28 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ CustomizedDecompress.c
+
+Abstract:
+
+ The GUID for the user Customized Decompress Protocol
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION(CustomizedDecompress)
+
+EFI_GUID gEfiCustomizedDecompressProtocolGuid = EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiCustomizedDecompressProtocolGuid, "Cutomized Decompress", "Customized Decompression Protocol");
+
diff --git a/EDK/Foundation/Protocol/CustomizedDecompress/CustomizedDecompress.h b/EDK/Foundation/Protocol/CustomizedDecompress/CustomizedDecompress.h
new file mode 100644
index 0000000..71815bc
--- /dev/null
+++ b/EDK/Foundation/Protocol/CustomizedDecompress/CustomizedDecompress.h
@@ -0,0 +1,139 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ CustomizedDecompress.h
+
+Abstract:
+
+ The user Customized Decompress Protocol Interface
+
+--*/
+
+#ifndef _CUSTOMIZED_DECOMPRESS_H_
+#define _CUSTOMIZED_DECOMPRESS_H_
+
+#define EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL_GUID \
+ { 0x9a44198e, 0xa4a2, 0x44e6, 0x8a, 0x1f, 0x39, 0xbe, 0xfd, 0xac, 0x89, 0x6f }
+
+EFI_FORWARD_DECLARATION (EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL);
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_CUSTOMIZED_DECOMPRESS_GET_INFO) (
+ IN EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL *This,
+ IN VOID *Source,
+ IN UINT32 SourceSize,
+ OUT UINT32 *DestinationSize,
+ OUT UINT32 *ScratchSize
+ );
+/*++
+
+Routine Description:
+
+ The GetInfo() function retrieves the size of the uncompressed buffer
+ and the temporary scratch buffer required to decompress the buffer
+ specified by Source and SourceSize. If the size of the uncompressed
+ buffer or the size of the scratch buffer cannot be determined from
+ the compressed data specified by Source and SourceData, then
+ EFI_INVALID_PARAMETER is returned. Otherwise, the size of the uncompressed
+ buffer is returned in DestinationSize, the size of the scratch buffer is
+ returned in ScratchSize, and EFI_SUCCESS is returned.
+
+ The GetInfo() function does not have scratch buffer available to perform
+ a thorough checking of the validity of the source data. It just retrieves
+ the 'Original Size' field from the beginning bytes of the source data and
+ output it as DestinationSize. And ScratchSize is specific to the decompression
+ implementation.
+
+Arguments:
+
+ This - The protocol instance pointer
+ Source - The source buffer containing the compressed data.
+ SourceSize - The size, in bytes, of source buffer.
+ DestinationSize - A pointer to the size, in bytes, of the uncompressed buffer
+ that will be generated when the compressed buffer specified
+ by Source and SourceSize is decompressed.
+ ScratchSize - A pointer to the size, in bytes, of the scratch buffer that
+ is required to decompress the compressed buffer specified by
+ Source and SourceSize.
+
+Returns:
+ EFI_SUCCESS - The size of the uncompressed data was returned in DestinationSize
+ and the size of the scratch buffer was returned in ScratchSize.
+ EFI_INVALID_PARAMETER - The size of the uncompressed data or the size of the scratch
+ buffer cannot be determined from the compressed data specified by
+ Source and SourceData.
+
+--*/
+
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_CUSTOMIZED_DECOMPRESS_DECOMPRESS) (
+ IN EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL *This,
+ IN VOID* Source,
+ IN UINT32 SourceSize,
+ IN OUT VOID* Destination,
+ IN UINT32 DestinationSize,
+ IN OUT VOID* Scratch,
+ IN UINT32 ScratchSize
+ );
+/*++
+
+Routine Description:
+
+ The Decompress() function extracts decompressed data to its original form.
+
+ This protocol is designed so that the decompression algorithm can be
+ implemented without using any memory services. As a result, the
+ Decompress() function is not allowed to call AllocatePool() or
+ AllocatePages() in its implementation. It is the caller's responsibility
+ to allocate and free the Destination and Scratch buffers.
+
+ If the compressed source data specified by Source and SourceSize is
+ sucessfully decompressed into Destination, then EFI_SUCCESS is returned.
+ If the compressed source data specified by Source and SourceSize is not in
+ a valid compressed data format, then EFI_INVALID_PARAMETER is returned.
+
+Arguments:
+
+ This - The protocol instance pointer
+ Source - The source buffer containing the compressed data.
+ SourceSize - The size of source data.
+ Destination - On output, the destination buffer that contains
+ the uncompressed data.
+ DestinationSize - The size of destination buffer. The size of destination
+ buffer needed is obtained from GetInfo().
+ Scratch - A temporary scratch buffer that is used to perform the
+ decompression.
+ ScratchSize - The size of scratch buffer. The size of scratch buffer needed
+ is obtained from GetInfo().
+
+Returns:
+
+ EFI_SUCCESS - Decompression completed successfully, and the uncompressed
+ buffer is returned in Destination.
+ EFI_INVALID_PARAMETER
+ - The source buffer specified by Source and SourceSize is
+ corrupted (not in a valid compressed format).
+
+--*/
+
+typedef struct _EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL {
+ EFI_CUSTOMIZED_DECOMPRESS_GET_INFO GetInfo;
+ EFI_CUSTOMIZED_DECOMPRESS_DECOMPRESS Decompress;
+} EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL;
+
+extern EFI_GUID gEfiCustomizedDecompressProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/DebugAssert/DebugAssert.c b/EDK/Foundation/Protocol/DebugAssert/DebugAssert.c
new file mode 100644
index 0000000..529e2b7
--- /dev/null
+++ b/EDK/Foundation/Protocol/DebugAssert/DebugAssert.c
@@ -0,0 +1,30 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ DebugAssert.c
+
+Abstract:
+
+ This protocol allows provides debug services to a driver. This is not
+ debugger support, but things like ASSERT() and DEBUG() macros
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION(DebugAssert)
+
+
+EFI_GUID gEfiDebugAssertProtocolGuid = EFI_DEBUG_ASSERT_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiDebugAssertProtocolGuid, "EFI Debug Assert", "Efi Debug Assert Protocol");
+
diff --git a/EDK/Foundation/Protocol/DebugAssert/DebugAssert.h b/EDK/Foundation/Protocol/DebugAssert/DebugAssert.h
new file mode 100644
index 0000000..83b5c36
--- /dev/null
+++ b/EDK/Foundation/Protocol/DebugAssert/DebugAssert.h
@@ -0,0 +1,89 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ DebugAssert.h
+
+Abstract:
+
+ This protocol allows provides debug services to a driver. This is not
+ debugger support, but things like ASSERT() and DEBUG() macros
+
+--*/
+
+#ifndef _DEBUG_ASSERT_H_
+#define _DEBUG_ASSERT_H_
+
+
+#define EFI_DEBUG_ASSERT_PROTOCOL_GUID \
+ { 0xbe499c92, 0x7d4b, 0x11d4, 0xbc, 0xee, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 }
+
+//
+// Forward reference for pure ANSI compatability
+//
+EFI_FORWARD_DECLARATION (EFI_DEBUG_ASSERT_PROTOCOL);
+
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_DEBUG_ASSERT) (
+ IN EFI_DEBUG_ASSERT_PROTOCOL *This,
+ IN CHAR8 *FileName,
+ IN INTN LineNumber,
+ IN CHAR8 *Description
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_DEBUG_PRINT) (
+ IN EFI_DEBUG_ASSERT_PROTOCOL *This,
+ IN UINTN ErrorLevel,
+ IN CHAR8 *Format,
+ IN VA_LIST Marker
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_POST_CODE) (
+ IN EFI_DEBUG_ASSERT_PROTOCOL *This,
+ IN UINT16 PostCode,
+ IN CHAR8 *PostCodeString OPTIONAL
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_GET_ERROR_LEVEL) (
+ IN EFI_DEBUG_ASSERT_PROTOCOL *This,
+ IN UINTN *ErrorLevel
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SET_ERROR_LEVEL) (
+ IN EFI_DEBUG_ASSERT_PROTOCOL *This,
+ IN UINTN ErrorLevel
+ );
+
+typedef struct _EFI_DEBUG_ASSERT_PROTOCOL {
+
+ EFI_DEBUG_ASSERT Assert;
+ EFI_DEBUG_PRINT Print;
+ EFI_POST_CODE PostCode;
+
+ EFI_GET_ERROR_LEVEL GetErrorLevel;
+ EFI_SET_ERROR_LEVEL SetErrorLevel;
+
+} EFI_DEBUG_ASSERT_PROTOCOL;
+
+extern EFI_GUID gEfiDebugAssertProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/DebugMask/DebugMask.c b/EDK/Foundation/Protocol/DebugMask/DebugMask.c
new file mode 100644
index 0000000..0bfe8ec
--- /dev/null
+++ b/EDK/Foundation/Protocol/DebugMask/DebugMask.c
@@ -0,0 +1,33 @@
+/*++
+
+Copyright (c) 2004 - 2011, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ DebugMask.c
+
+Abstract:
+
+ This protocol is used to abstract the Debug Mask serivces for
+ the specific driver or application image.
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION(DebugMask)
+
+
+EFI_GUID gEfiDebugMaskProtocolGuid = EFI_DEBUG_MASK_PROTOCOL_GUID;
+EFI_GUID gEfiSmmDebugMaskProtocolGuid = EFI_SMM_DEBUG_MASK_PROTOCOL_GUID;
+EFI_GUID gEfiRuntimeDebugMaskProtocolGuid = EFI_RUNTIME_DEBUG_MASK_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiDebugMaskProtocolGuid, "DebugMask Protocol", "Efi Debug Mask Protocol");
+EFI_GUID_STRING(&gEfiSmmDebugMaskProtocolGuid, "Smm DebugMask Protocol", "Efi Smm Debug Mask Protocol");
+EFI_GUID_STRING(&gEfiRuntimeDebugMaskProtocolGuid, "Runtime DebugMask Protocol", "Efi Runtime Debug Mask Protocol"); \ No newline at end of file
diff --git a/EDK/Foundation/Protocol/DebugMask/DebugMask.h b/EDK/Foundation/Protocol/DebugMask/DebugMask.h
new file mode 100644
index 0000000..99a0c25
--- /dev/null
+++ b/EDK/Foundation/Protocol/DebugMask/DebugMask.h
@@ -0,0 +1,72 @@
+/*++
+
+Copyright (c) 2004 - 2011, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ DebugMask.h
+
+Abstract:
+
+ This protocol is used to abstract the Debug Mask serivces for
+ the specific driver or application image.
+
+--*/
+
+#ifndef _DEBUG_MASK_H_
+#define _DEBUG_MASK_H_
+
+#define EFI_DEBUG_MASK_PROTOCOL_GUID \
+ { 0x4c8a2451, 0xc207, 0x405b, 0x96, 0x94, 0x99, 0xea, 0x13, 0x25, 0x13, 0x41 }
+
+#define EFI_SMM_DEBUG_MASK_PROTOCOL_GUID \
+ { 0x3bce1d9f, 0x3b8d, 0x4117, 0x9f, 0x7, 0x5c, 0x4f, 0x79, 0x3e, 0xb0, 0xa4 }
+
+#define EFI_RUNTIME_DEBUG_MASK_PROTOCOL_GUID \
+ { 0x6378fef3, 0xc89f, 0x492f, 0xbd, 0xb1, 0xbf, 0xb4, 0x43, 0x19, 0xcf, 0xda }
+
+#define EFI_DEBUG_MASK_REVISION 0x00010000
+
+//
+// Forward reference for pure ANSI compatability
+//
+EFI_FORWARD_DECLARATION (EFI_DEBUG_MASK_PROTOCOL);
+
+//
+// DebugMask member functions definition
+//
+typedef
+EFI_STATUS
+(EFIAPI * EFI_GET_DEBUG_MASK) (
+ IN EFI_DEBUG_MASK_PROTOCOL *This, // Calling context
+ IN OUT UINTN *CurrentDebugMask // Ptr to store current debug mask
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_SET_DEBUG_MASK) (
+ IN EFI_DEBUG_MASK_PROTOCOL *This, // Calling context
+ IN UINTN NewDebugMask // New Debug Mask value to set
+ );
+
+//
+// DebugMask protocol definition
+//
+typedef struct _EFI_DEBUG_MASK_PROTOCOL {
+ INT64 Revision;
+ EFI_GET_DEBUG_MASK GetDebugMask;
+ EFI_SET_DEBUG_MASK SetDebugMask;
+} EFI_DEBUG_MASK_PROTOCOL;
+
+extern EFI_GUID gEfiDebugMaskProtocolGuid;
+extern EFI_GUID gEfiSmmDebugMaskProtocolGuid;
+extern EFI_GUID gEfiRuntimeDebugMaskProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/DiskInfo/DiskInfo.c b/EDK/Foundation/Protocol/DiskInfo/DiskInfo.c
new file mode 100644
index 0000000..d028a53
--- /dev/null
+++ b/EDK/Foundation/Protocol/DiskInfo/DiskInfo.c
@@ -0,0 +1,30 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ DiskInfo.c
+
+Abstract:
+
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (DiskInfo)
+
+EFI_GUID gEfiDiskInfoProtocolGuid = EFI_DISK_INFO_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiDiskInfoProtocolGuid, "Disk Info Protocol", "Disk Info Protocol");
+
+EFI_GUID gEfiDiskInfoIdeInterfaceGuid = EFI_DISK_INFO_IDE_INTERFACE_GUID;
+EFI_GUID gEfiDiskInfoScsiInterfaceGuid = EFI_DISK_INFO_SCSI_INTERFACE_GUID;
+EFI_GUID gEfiDiskInfoUsbInterfaceGuid = EFI_DISK_INFO_USB_INTERFACE_GUID;
diff --git a/EDK/Foundation/Protocol/DiskInfo/DiskInfo.h b/EDK/Foundation/Protocol/DiskInfo/DiskInfo.h
new file mode 100644
index 0000000..42decf9
--- /dev/null
+++ b/EDK/Foundation/Protocol/DiskInfo/DiskInfo.h
@@ -0,0 +1,174 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ 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 \
+ }
+
+EFI_FORWARD_DECLARATION (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;
+
+typedef 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;
+} EFI_DISK_INFO_PROTOCOL;
+
+extern EFI_GUID gEfiDiskInfoProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/EdkProtocolLib.cif b/EDK/Foundation/Protocol/EdkProtocolLib.cif
new file mode 100644
index 0000000..ae1df13
--- /dev/null
+++ b/EDK/Foundation/Protocol/EdkProtocolLib.cif
@@ -0,0 +1,78 @@
+<component>
+ name = "EdkProtocolLib"
+ category = ModulePart
+ LocalRoot = "Edk\Foundation\Protocol\"
+ RefName = "EdkProtocolLib"
+[files]
+"EdkProtocolLib.sdl"
+"EdkProtocolLib.mak"
+"ConsoleControl\ConsoleControl.h"
+"ConsoleControl\ConsoleControl.c"
+"CustomizedDecompress\CustomizedDecompress.h"
+"CustomizedDecompress\CustomizedDecompress.c"
+"DebugAssert\DebugAssert.h"
+"DebugAssert\DebugAssert.c"
+"DebugMask\DebugMask.h"
+"DebugMask\DebugMask.c"
+"DiskInfo\DiskInfo.h"
+"DiskInfo\DiskInfo.c"
+"EfiOEMBadging\EfiOEMBadging.h"
+"EfiOEMBadging\EfiOEMBadging.c"
+"FaultTolerantWriteLite\FaultTolerantWriteLite.h"
+"FaultTolerantWriteLite\FaultTolerantWriteLite.c"
+"FirmwarePerformance\FirmwarePerformance.h"
+"FirmwarePerformance\FirmwarePerformance.c"
+"FirmwareVolumeDispatch\FirmwareVolumeDispatch.h"
+"FirmwareVolumeDispatch\FirmwareVolumeDispatch.c"
+"FvbExtension\FvbExtension.h"
+"FvbExtension\FvbExtension.c"
+"GenericMemoryTest\GenericMemoryTest.h"
+"GenericMemoryTest\GenericMemoryTest.c"
+"GuidedSectionExtraction\GuidedSectionExtraction.h"
+"GuidedSectionExtraction\GuidedSectionExtraction.c"
+"IsaAcpi\IsaAcpi.h"
+"IsaAcpi\IsaAcpi.c"
+"IsaIo\IsaIo.h"
+"IsaIo\IsaIo.c"
+"LoadPe32Image\LoadPe32Image.h"
+"LoadPe32Image\LoadPe32Image.c"
+"NicIp4Config\NicIp4Config.h"
+"NicIp4Config\NicIp4Config.c"
+"PciHotPlugRequest\PciHotPlugRequest.h"
+"PciHotPlugRequest\PciHotPlugRequest.c"
+"Performance\Performance.h"
+"Performance\Performance.c"
+"Fpdt\Fpdt.h"
+"Fpdt\Fpdt.c"
+"PlatformMemTest\PlatformMemTest.h"
+"PlatformMemTest\PlatformMemTest.c"
+"Print\Print.h"
+"Print\Print.c"
+"PxeDhcp4\PxeDhcp4.h"
+"PxeDhcp4\PxeDhcp4.c"
+"PxeDhcp4Callback\PxeDhcp4CallBack.h"
+"PxeDhcp4Callback\PxeDhcp4CallBack.c"
+"Tcp\Tcp.h"
+"Tcp\Tcp.c"
+"TianoDecompress\TianoDecompress.h"
+"TianoDecompress\TianoDecompress.c"
+"UgaSplash\UgaSplash.h"
+"UgaSplash\UgaSplash.c"
+"UsbAtapi\usbatapi.h"
+"UsbAtapi\usbatapi.c"
+"VariableStore\VariableStore.h"
+"VariableStore\VariableStore.c"
+"VirtualMemoryAccess\VirtualMemoryAccess.h"
+"VirtualMemoryAccess\VirtualMemoryAccess.c"
+"TcgService\TcgService.h"
+"TcgService\TcgService.c"
+"Ps2Policy\Ps2Policy.h"
+"Ps2Policy\Ps2Policy.c"
+"VgaMiniPort\VgaMiniPort.h"
+"VgaMiniPort\VgaMiniPort.c"
+"EdkProtocolLib.inf"
+"FastBootException\FastBootException.c"
+"FastBootException\FastBootException.h"
+[parts]
+"EdkProtocolLibIPF"
+<endComponent>
diff --git a/EDK/Foundation/Protocol/EdkProtocolLib.inf b/EDK/Foundation/Protocol/EdkProtocolLib.inf
new file mode 100644
index 0000000..3d78d29
--- /dev/null
+++ b/EDK/Foundation/Protocol/EdkProtocolLib.inf
@@ -0,0 +1,112 @@
+#/*++
+#
+# Copyright (c) 2004 - 2011, Intel Corporation
+# All rights reserved. This program and the accompanying materials
+# are licensed and made available under the terms and conditions of the BSD License
+# which accompanies this distribution. The full text of the license may be found at
+# http://opensource.org/licenses/bsd-license.php
+#
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+#
+# Module Name:
+#
+# EdkProtocolLib.inf
+#
+# Abstract:
+#
+# Component description file.
+#
+#--*/
+
+[defines]
+BASE_NAME= EdkProtocolLib
+COMPONENT_TYPE= LIBRARY
+
+[includes.common]
+ $(EDK_SOURCE)\Foundation
+ $(EDK_SOURCE)\Foundation\Efi
+ $(EDK_SOURCE)\Foundation\Framework
+ $(EDK_SOURCE)\Foundation\Include
+ $(EDK_SOURCE)\Foundation\Efi\Include
+ $(EDK_SOURCE)\Foundation\Framework\Include
+ $(EDK_SOURCE)\Foundation\Include\IndustryStandard
+ $(EDK_SOURCE)\Foundation\Include\Pei
+ $(EDK_SOURCE)\Foundation\Library\Pei\Include
+ $(EDK_SOURCE)\Foundation\Core\Dxe
+ $(EDK_SOURCE)\Foundation\Library\Dxe\Include
+
+[nmake.common]
+C_STD_INCLUDE=
+
+[sources.common]
+ ConsoleControl\ConsoleControl.h
+ ConsoleControl\ConsoleControl.c
+ CustomizedDecompress\CustomizedDecompress.c
+ CustomizedDecompress\CustomizedDecompress.h
+ DebugAssert\DebugAssert.h
+ DebugAssert\DebugAssert.c
+ DebugMask\DebugMask.h
+ DebugMask\DebugMask.c
+ DiskInfo\DiskInfo.h
+ DiskInfo\DiskInfo.c
+ EfiOemBadging\EfiOemBadging.h
+ EfiOemBadging\EfiOemBadging.c
+ FaultTolerantWriteLite\FaultTolerantWriteLite.h
+ FaultTolerantWriteLite\FaultTolerantWriteLite.c
+ FirmwareVolumeDispatch\FirmwareVolumeDispatch.h
+ FirmwareVolumeDispatch\FirmwareVolumeDispatch.c
+ FvbExtension\FvbExtension.h
+ FvbExtension\FvbExtension.c
+ GenericMemoryTest\GenericMemoryTest.h
+ GenericMemoryTest\GenericMemoryTest.c
+ GuidedSectionExtraction\GuidedSectionExtraction.h
+ GuidedSectionExtraction\GuidedSectionExtraction.c
+ IsaAcpi\IsaAcpi.h
+ IsaAcpi\IsaAcpi.c
+ IsaIo\IsaIo.h
+ IsaIo\IsaIo.c
+ LoadPe32Image\LoadPe32Image.h
+ LoadPe32Image\LoadPe32Image.c
+ NicIp4Config\NicIp4Config.h
+ NicIp4Config\NicIp4Config.c
+ PciHotPlugRequest\PciHotPlugRequest.h
+ PciHotPlugRequest\PciHotPlugRequest.c
+ FirmwarePerformance\FirmwarePerformance.h
+ FirmwarePerformance\FirmwarePerformance.c
+ Fpdt\Fpdt.h
+ Fpdt\Fpdt.c
+ PlatformMemTest\PlatformMemTest.h
+ PlatformMemTest\PlatformMemTest.c
+ Print\Print.h
+ Print\Print.c
+ PxeDhcp4\PxeDhcp4.h
+ PxeDhcp4\PxeDhcp4.c
+ PxeDhcp4Callback\PxeDhcp4Callback.h
+ PxeDhcp4Callback\PxeDhcp4Callback.c
+ Tcp\Tcp.h
+ Tcp\Tcp.c
+ TianoDecompress\TianoDecompress.h
+ TianoDecompress\TianoDecompress.c
+ UgaSplash\UgaSplash.h
+ UgaSplash\UgaSplash.c
+ UsbAtapi\UsbAtapi.h
+ UsbAtapi\UsbAtapi.c
+ VariableStore\VariableStore.h
+ VariableStore\VariableStore.c
+ VirtualMemoryAccess\VirtualMemoryAccess.h
+ VirtualMemoryAccess\VirtualMemoryAccess.c
+ TcgService\TcgService.h
+ TcgService\TcgService.c
+ Ps2Policy\Ps2Policy.h
+ Ps2Policy\Ps2Policy.c
+ VgaMiniPort\VgaMiniPort.h
+ VgaMiniPort\VgaMiniPort.c
+ FastBootException\FastBootException.h
+ FastBootException\FastBootException.c
+
+[sources.ipf]
+ ExtendedSalBootService\ExtendedSalBootService.c
+ ExtendedSalBootService\ExtendedSalBootService.h
+ ExtendedSalGuid\ExtendedSalGuid.c
+ ExtendedSalGuid\ExtendedSalGuid.h
diff --git a/EDK/Foundation/Protocol/EdkProtocolLib.mak b/EDK/Foundation/Protocol/EdkProtocolLib.mak
new file mode 100644
index 0000000..6f06448
--- /dev/null
+++ b/EDK/Foundation/Protocol/EdkProtocolLib.mak
@@ -0,0 +1,72 @@
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2009, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#**********************************************************************
+
+#**********************************************************************
+# $Header: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelEDK/EdkProtocolLib/EdkProtocolLib.mak 1 1/20/12 4:05a Jeffch $
+#
+# $Revision: 1 $
+#
+# $Date: 1/20/12 4:05a $
+#**********************************************************************
+# Revision History
+# ----------------
+# $Log: /Alaska/SOURCE/Modules/SharkBayRefCodes/IntelEDK/EdkProtocolLib/EdkProtocolLib.mak $
+#
+# 1 1/20/12 4:05a Jeffch
+# Create Intel EDK 1117 Patch 7.
+#
+# 1 9/27/11 6:29a Wesleychen
+# Intel EDK initially releases.
+#
+# 2 9/02/09 4:04a Iminglin
+#
+#**********************************************************************
+#<AMI_FHDR_START>
+#
+# Name: EdkProtocolLib.mak
+#
+# Description:
+#
+#<AMI_FHDR_END>
+#**********************************************************************
+$(EDKPROTOCOLLIB) : EdkProtocolLib
+
+$(BUILD_DIR)\EdkProtocolLib.lib : EdkProtocolLib
+
+EdkProtocolLib : $(BUILD_DIR)\EdkProtocolLib.mak EdkProtocolLibBin
+
+!IF "$(PROCESSOR)"=="IPF"
+EDK_PROTOCOL_LIB_PROCESSOR_CIF=$(EdkProtocolLib_DIR)\EdkProtocolLibIPF.cif
+!ENDIF
+
+$(BUILD_DIR)\EdkProtocolLib.mak : $(EdkProtocolLib_DIR)\$(@B).cif $(EdkProtocolLib_DIR)\$(@B).mak $(BUILD_RULES) $(EDK_PROTOCOL_LIB_PROCESSOR_CIF)
+ $(CIF2MAK) $(EdkProtocolLib_DIR)\$(@B).cif $(CIF2MAK_DEFAULTS) $(EDK_PROTOCOL_LIB_PROCESSOR_CIF)
+
+EdkProtocolLibBin :
+ $(MAKE) /$(MAKEFLAGS) $(EDK_DEFAULTS)\
+ /f $(BUILD_DIR)\EdkProtocolLib.mak all\
+ TYPE=LIBRARY\
+#**********************************************************************
+#**********************************************************************
+#** **
+#** (C)Copyright 1985-2009, American Megatrends, Inc. **
+#** **
+#** All Rights Reserved. **
+#** **
+#** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
+#** **
+#** Phone: (770)-246-8600 **
+#** **
+#**********************************************************************
+#********************************************************************** \ No newline at end of file
diff --git a/EDK/Foundation/Protocol/EdkProtocolLib.sdl b/EDK/Foundation/Protocol/EdkProtocolLib.sdl
new file mode 100644
index 0000000..8a8c3e9
--- /dev/null
+++ b/EDK/Foundation/Protocol/EdkProtocolLib.sdl
@@ -0,0 +1,26 @@
+TOKEN
+ Name = "EdkProtocolLib_SUPPORT"
+ Value = "1"
+ Help = "Main switch to enable EdkProtocolLib support in Project"
+ TokenType = Boolean
+ TargetEQU = Yes
+ TargetMAK = Yes
+ Master = Yes
+End
+
+TOKEN
+ Name = "EDKPROTOCOLLIB"
+ Value = "$(BUILD_DIR)\EdkProtocolLib.lib"
+ TokenType = Expression
+ TargetMAK = Yes
+End
+
+PATH
+ Name = "EdkProtocolLib_DIR"
+End
+
+MODULE
+ Help = "Includes EdkProtocolLib.mak to Project"
+ File = "EdkProtocolLib.mak"
+End
+
diff --git a/EDK/Foundation/Protocol/EdkProtocolLibIPF.cif b/EDK/Foundation/Protocol/EdkProtocolLibIPF.cif
new file mode 100644
index 0000000..c119123
--- /dev/null
+++ b/EDK/Foundation/Protocol/EdkProtocolLibIPF.cif
@@ -0,0 +1,11 @@
+<component>
+ name = "EdkProtocolLibIPF"
+ category = ModulePart
+ LocalRoot = "EDK\Foundation\Protocol\"
+ RefName = "EdkProtocolLibIPF"
+[files]
+"ExtendedSalBootService\ExtendedSalBootService.h"
+"ExtendedSalBootService\ExtendedSalBootService.c"
+"ExtendedSalGuid\ExtendedSalGuid.h"
+"ExtendedSalGuid\ExtendedSalGuid.c"
+<endComponent>
diff --git a/EDK/Foundation/Protocol/EfiOEMBadging/EfiOEMBadging.c b/EDK/Foundation/Protocol/EfiOEMBadging/EfiOEMBadging.c
new file mode 100644
index 0000000..bf60211
--- /dev/null
+++ b/EDK/Foundation/Protocol/EfiOEMBadging/EfiOEMBadging.c
@@ -0,0 +1,30 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ EfiOEMBadging.c
+
+Abstract:
+
+ EFI OEM Badging Protocol definition source file
+
+Revision History
+
+--*/
+
+#include "Tiano.h"
+
+#include EFI_PROTOCOL_DEFINITION (EfiOEMBadging)
+
+EFI_GUID gEfiOEMBadgingProtocolGuid = EFI_OEM_BADGING_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiOEMBadgingProtocolGuid, "OEM Badging Protocol", "OEM Badging Protocol");
diff --git a/EDK/Foundation/Protocol/EfiOEMBadging/EfiOEMBadging.h b/EDK/Foundation/Protocol/EfiOEMBadging/EfiOEMBadging.h
new file mode 100644
index 0000000..90b32c6
--- /dev/null
+++ b/EDK/Foundation/Protocol/EfiOEMBadging/EfiOEMBadging.h
@@ -0,0 +1,79 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ 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 }
+
+
+EFI_FORWARD_DECLARATION (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
+);
+
+
+typedef struct _EFI_OEM_BADGING_PROTOCOL {
+ EFI_BADGING_GET_IMAGE GetImage;
+} EFI_OEM_BADGING_PROTOCOL;
+
+
+extern EFI_GUID gEfiOEMBadgingProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/ExtendedSalBootService/ExtendedSalBootService.c b/EDK/Foundation/Protocol/ExtendedSalBootService/ExtendedSalBootService.c
new file mode 100644
index 0000000..6d4d2c4
--- /dev/null
+++ b/EDK/Foundation/Protocol/ExtendedSalBootService/ExtendedSalBootService.c
@@ -0,0 +1,27 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ ExtendedSalBootService.c
+
+Abstract:
+
+ This is a protocol creates infrastructure to register Extended Sal Procs.
+
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION(ExtendedSalBootService)
+
+EFI_GUID gEfiExtendedSalBootServiceProtocolGuid = EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_GUID;
+EFI_GUID_STRING(&gEfiExtendedSalBootServiceProtocolGuid, "EXT SAL", "Extended Sal Protocol");
diff --git a/EDK/Foundation/Protocol/ExtendedSalBootService/ExtendedSalBootService.h b/EDK/Foundation/Protocol/ExtendedSalBootService/ExtendedSalBootService.h
new file mode 100644
index 0000000..af35700
--- /dev/null
+++ b/EDK/Foundation/Protocol/ExtendedSalBootService/ExtendedSalBootService.h
@@ -0,0 +1,118 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ ExtendedSalBootService.h
+
+Abstract:
+
+--*/
+
+#ifndef _EXTENDED_SAL_PROTOCOL_H_
+#define _EXTENDED_SAL_PROTOCOL_H_
+
+#include "SalApi.h"
+#include "LinkedList.h"
+#include EFI_PROTOCOL_CONSUMER (CpuIo)
+
+
+#define EXTENDED_SAL_BOOT_SERVICE_PROTOCOL_GUID \
+ {0xde0ee9a4,0x3c7a,0x44f2,0xb7,0x8b,0xe3,0xcc,0xd6,0x9c,0x3a,0xf7}
+
+#define EXTENDED_SAL_SIGNATURE EFI_SIGNATURE_32('e', 's', 'a', 'l')
+
+#define SAL_MIN_STATE_SIZE 0x400 * 1
+#define PAL_SCARTCH_SIZE 0x400 * 3
+#define ALIGN_MINSTATE_SIZE 512
+#define MAX_SAL_RECORD_SIZE 8*1024
+
+#define SAL_RUNTIMESERVICE
+
+typedef UINT16 EFI_SAL_PROCESSOR_ID;
+
+EFI_FORWARD_DECLARATION (EXTENDED_SAL_BOOT_SERVICE_PROTOCOL);
+
+typedef
+SAL_RUNTIMESERVICE
+SAL_RETURN_REGS
+(EFIAPI *SAL_EXTENDED_SAL_PROC) (
+ IN EFI_GUID *ClassGuid,
+ IN UINT64 FunctionId,
+ IN UINT64 Arg2,
+ IN UINT64 Arg3,
+ IN UINT64 Arg4,
+ IN UINT64 Arg5,
+ IN UINT64 Arg6,
+ IN UINT64 Arg7,
+ IN UINT64 Arg8
+ );
+
+typedef
+SAL_RUNTIMESERVICE
+SAL_RETURN_REGS
+(EFIAPI *SAL_INTERNAL_EXTENDED_SAL_PROC) (
+ IN UINT64 FunctionId,
+ IN UINT64 Arg2,
+ IN UINT64 Arg3,
+ IN UINT64 Arg4,
+ IN UINT64 Arg5,
+ IN UINT64 Arg6,
+ IN UINT64 Arg7,
+ IN UINT64 Arg8,
+ IN SAL_EXTENDED_SAL_PROC ExtendedSalProc,
+ IN BOOLEAN VirtualMode,
+ IN VOID *ModuleGlobal
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EXTENDED_SAL_ADD_SST_INFO) (
+ IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This,
+ IN UINT16 SalAVersion,
+ IN UINT16 SalBVersion,
+ IN CHAR8 *OemId,
+ IN CHAR8 *ProductId
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EXTENDED_SAL_ADD_SST_ENTRY) (
+ IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This,
+ IN UINT8 EntryType,
+ IN UINT8 *TableEntry,
+ IN UINTN EntrySize
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EXTENDED_SAL_REGISTER_INTERNAL_PROC) (
+ IN EXTENDED_SAL_BOOT_SERVICE_PROTOCOL *This,
+ IN EFI_GUID *ClassGuid,
+ IN UINT64 FunctionId,
+ IN SAL_INTERNAL_EXTENDED_SAL_PROC InternalSalProc,
+ IN VOID *PhysicalModuleGlobal
+ );
+
+//
+// Extended Sal Boot Service Protocol Interface
+//
+typedef struct _EXTENDED_SAL_BOOT_SERVICE_PROTOCOL{
+ EXTENDED_SAL_ADD_SST_INFO AddSalSystemTableInfo;
+ EXTENDED_SAL_ADD_SST_ENTRY AddSalSystemTableEntry;
+ EXTENDED_SAL_REGISTER_INTERNAL_PROC AddExtendedSalProc;
+ SAL_EXTENDED_SAL_PROC ExtendedSalProc;
+ SAL_PROC SalProc;
+} EXTENDED_SAL_BOOT_SERVICE_PROTOCOL;
+
+extern EFI_GUID gEfiExtendedSalBootServiceProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/ExtendedSalGuid/ExtendedSalGuid.c b/EDK/Foundation/Protocol/ExtendedSalGuid/ExtendedSalGuid.c
new file mode 100644
index 0000000..ec19a8d
--- /dev/null
+++ b/EDK/Foundation/Protocol/ExtendedSalGuid/ExtendedSalGuid.c
@@ -0,0 +1,74 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ ExtendedSalGuid.c
+
+Abstract:
+
+ The Extended SAL Lock Services protocol as defined in SAL CIS.
+
+ This protocol is installed by the entity that supplies low level
+ lock primitives that work in dual mode. There are 3 functions
+ as defined below.
+
+--*/
+
+
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION(ExtendedSalGuid)
+
+EFI_GUID gEfiExtendedSalBaseIoServicesProtocolGuid = EFI_EXTENDED_SAL_BASE_IO_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalStallServicesProtocolGuid = EFI_EXTENDED_SAL_STALL_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalLockServicesProtocolGuid = EFI_EXTENDED_SAL_LOCK_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalVirtualServicesProtocolGuid = EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalRtcServicesProtocolGuid = EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalVariableServicesProtocolGuid = EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalMtcServicesProtocolGuid = EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalResetServicesProtocolGuid = EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalStatusCodeServicesProtocolGuid = EFI_EXTENDED_SAL_STATUS_CODE_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalFvBlockServicesProtocolGuid = EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalMpServicesProtocolGuid = EFI_EXTENDED_SAL_MP_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalPalServicesProtocolGuid = EFI_EXTENDED_SAL_PAL_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalBaseServicesProtocolGuid = EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalMcaServicesProtocolGuid = EFI_EXTENDED_SAL_MCA_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalPciServicesProtocolGuid = EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalCacheServicesProtocolGuid = EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalMcaLogServicesProtocolGuid = EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalElogServicesProtocolGuid = EFI_EXTENDED_SAL_ELOG_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalSensorServicesProtocolGuid = EFI_EXTENDED_SAL_SENSOR_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalSmComLayerServicesProtocolGuid = EFI_EXTENDED_SAL_SM_COM_LAYER_SERVICES_PROTOCOL_GUID;
+EFI_GUID gEfiExtendedSalSstGuid = EFI_EXTENDED_SAL_SST_GUID;
+
+
+EFI_GUID_STRING(&gEfiExtendedSalBaseIoServicesProtocolGuid, "SAL IO", "Extended SAL Base IO Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalStallServicesProtocolGuid, "SAL STALL", "Extended SAL Stall Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalLockServicesProtocolGuid, "SAL LOCK", "Extended SAL Lock Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalVirtualServicesProtocolGuid, "SAL VIRT", "Extended SAL Virtual Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalRtcServicesProtocolGuid, "SAL RTC", "Extended SAL Lock RTC Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalVariableServicesProtocolGuid, "SAL VARIABLE", "Extended SAL Variable Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalMtcServicesProtocolGuid, "SAL MTC", "Extended SAL MTC Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalResetServicesProtocolGuid, "SAL RESET", "Extended SAL Reset Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalStatusCodeServicesProtocolGuid, "SAL STATUS CODE", "Extended SAL Status Call Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalFvBlockServicesProtocolGuid, "SAL FVB", "Extended SAL FVB Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalMpServicesProtocolGuid, "SAL MP", "Extended SAL MP Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalPalServicesProtocolGuid, "SAL PAL", "Extended SAL PAL Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalBaseServicesProtocolGuid, "SAL BASE", "Extended SAL Base Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalBaseServicesProtocolGuid, "SAL MCA", "Extended SAL MCA Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalPciServicesProtocolGuid, "SAL PCI", "Extended SAL PCI Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalCacheServicesProtocolGuid, "SAL CACHE", "Extended SAL Cache Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalMcaLogServicesProtocolGuid, "MCA LOG", "Extended SAL MCA LOG Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalElogServicesProtocolGuid, "ELOG", "Extended SAL ELOG Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalSensorServicesProtocolGuid, "SENSOR", "Extended SAL SENSOR Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalSmComLayerServicesProtocolGuid, "SAL SM COM", "Extended SAL SM COM Services Protocol");
+EFI_GUID_STRING(&gEfiExtendedSalSstGuid, "SST SET UP", "SAL System Table Header Set up");
diff --git a/EDK/Foundation/Protocol/ExtendedSalGuid/ExtendedSalGuid.h b/EDK/Foundation/Protocol/ExtendedSalGuid/ExtendedSalGuid.h
new file mode 100644
index 0000000..de540e5
--- /dev/null
+++ b/EDK/Foundation/Protocol/ExtendedSalGuid/ExtendedSalGuid.h
@@ -0,0 +1,283 @@
+/*++
+
+Copyright (c) 2004 - 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ ExtendedSalGuid.h
+
+Abstract:
+
+
+--*/
+
+#ifndef _EXTENDED_SAL_GUID_H_
+#define _EXTENDED_SAL_GUID_H_
+
+//
+// Extended SAL Services protocol GUIDs
+//
+
+#define EFI_EXTENDED_SAL_BASE_IO_SERVICES_PROTOCOL_GUID \
+ { 0x5aea42b5, 0x31e1, 0x4515, 0xbc, 0x31, 0xb8, 0xd5, 0x25, 0x75, 0x65, 0xa6 }
+
+#define EFI_EXTENDED_SAL_STALL_SERVICES_PROTOCOL_GUID \
+ { 0x53a58d06, 0xac27, 0x4d8c, 0xb5, 0xe9, 0xf0, 0x8a, 0x80, 0x65, 0x41, 0x70 }
+
+#define EFI_EXTENDED_SAL_LOCK_SERVICES_PROTOCOL_GUID \
+ { 0x76b75c23, 0xfe4f, 0x4e17, 0xa2, 0xad, 0x1a, 0x65, 0x3d, 0xbb, 0x49, 0x4a }
+
+#define EFI_EXTENDED_SAL_VIRTUAL_SERVICES_PROTOCOL_GUID \
+ { 0xc1a74056, 0x260e, 0x4871, 0xa0, 0x31, 0xe6, 0x45, 0xa6, 0x5b, 0x6e, 0x11 }
+
+#define EFI_EXTENDED_SAL_RTC_SERVICES_PROTOCOL_GUID \
+ { 0x7e97a470, 0xefdb, 0x4d02, 0x8f, 0xce, 0x61, 0x90, 0xd2, 0x7b, 0xa2, 0x96 }
+
+#define EFI_EXTENDED_SAL_VARIABLE_SERVICES_PROTOCOL_GUID \
+ { 0x4ecb6c53, 0xc641, 0x4370, 0x8c, 0xb2, 0x3b, 0x0e, 0x49, 0x6e, 0x83, 0x78 }
+
+#define EFI_EXTENDED_SAL_MTC_SERVICES_PROTOCOL_GUID \
+ { 0x899afd18, 0x75e8, 0x408b, 0xa4, 0x1a, 0x6e, 0x2e, 0x7e, 0xcd, 0xf4, 0x54 }
+
+#define EFI_EXTENDED_SAL_RESET_SERVICES_PROTOCOL_GUID \
+ { 0x7d019990, 0x8ce1, 0x46f5, 0xa7, 0x76, 0x3c, 0x51, 0x98, 0x67, 0x6a, 0xa0 }
+
+#define EFI_EXTENDED_SAL_STATUS_CODE_SERVICES_PROTOCOL_GUID \
+ { 0xdbd91d, 0x55e9, 0x420f, 0x96, 0x39, 0x5e, 0x9f, 0x84, 0x37, 0xb4, 0x4f }
+
+#define EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_PROTOCOL_GUID \
+ { 0xa2271df1, 0xbcbb, 0x4f1d, 0x98, 0xa9, 0x06, 0xbc, 0x17, 0x2f, 0x07, 0x1a }
+
+#define EFI_EXTENDED_SAL_MP_SERVICES_PROTOCOL_GUID \
+ { 0x697d81a2, 0xcf18, 0x4dc0, 0x9e, 0x0d, 0x06, 0x11, 0x3b, 0x61, 0x8a, 0x3f }
+
+#define EFI_EXTENDED_SAL_PAL_SERVICES_PROTOCOL_GUID \
+ { 0xe1cd9d21, 0x0fc2, 0x438d, 0x97, 0x03, 0x04, 0xe6, 0x6d, 0x96, 0x1e, 0x57 }
+
+#define EFI_EXTENDED_SAL_BASE_SERVICES_PROTOCOL_GUID \
+ { 0xd9e9fa06, 0x0fe0, 0x41c3, 0x96, 0xfb, 0x83, 0x42, 0x5a, 0x33, 0x94, 0xf8 }
+
+#define EFI_EXTENDED_SAL_MCA_SERVICES_PROTOCOL_GUID \
+ { 0x2a591128, 0x6cc7, 0x42b1, 0x8a, 0xf0, 0x58, 0x93, 0x3b, 0x68, 0x2d, 0xbb }
+
+#define EFI_EXTENDED_SAL_PCI_SERVICES_PROTOCOL_GUID \
+ { 0xa46b1a31, 0xad66, 0x4905, 0x92, 0xf6, 0x2b, 0x46, 0x59, 0xdc, 0x30, 0x63 }
+
+#define EFI_EXTENDED_SAL_CACHE_SERVICES_PROTOCOL_GUID \
+ { 0xedc9494, 0x2743, 0x4ba5, 0x88, 0x18, 0x0a, 0xef, 0x52, 0x13, 0xf1, 0x88 }
+
+#define EFI_EXTENDED_SAL_MCA_LOG_SERVICES_PROTOCOL_GUID \
+ { 0xcb3fd86e, 0x38a3, 0x4c03, 0x9a, 0x5c, 0x90, 0xcf, 0xa3, 0xa2, 0xab, 0x7a }
+
+#define EFI_EXTENDED_SAL_ELOG_SERVICES_PROTOCOL_GUID \
+ { 0xd5e4ee5f, 0x3e0a, 0x453c, 0xa7, 0x25, 0xb6, 0x92, 0xbb, 0x6, 0x36, 0x5a }
+
+#define EFI_EXTENDED_SAL_SENSOR_SERVICES_PROTOCOL_GUID \
+ { 0x4a153b6e, 0x85a1, 0x4982, 0x98, 0xf4, 0x6a, 0x8c, 0xfc, 0xa4, 0xab, 0xa1 }
+
+#define EFI_EXTENDED_SAL_SM_COM_LAYER_SERVICES_PROTOCOL_GUID \
+ { 0x4356799, 0x81b7, 0x4e08, 0xa3, 0x8d, 0xd9, 0x78, 0xfa, 0x47, 0xba, 0x42 }
+
+#define EFI_EXTENDED_SAL_SST_GUID \
+ { 0x38802700, 0x868a, 0x4b4e, 0x81, 0xd4, 0x4f, 0x1b, 0xdc, 0xcf, 0xb4, 0x6f }
+
+//
+// Extended Sal Proc Function IDs.
+//
+
+//
+// BugBug: These enums are name colisions waiting to happen. They should all be
+// prefixed with Esal! It might be better to just make them #define, so
+// they would be all caps.
+//
+
+typedef enum {
+ IoRead,
+ IoWrite,
+ MemRead,
+ MemWrite
+} EFI_EXTENDED_SAL_BASE_IO_SERVICES_FUNC_ID;
+
+typedef enum {
+ Stall
+} EFI_EXTENDED_SAL_STALL_FUNC_ID;
+
+
+typedef enum {
+ InitializeLockService,
+ AcquireLockService,
+ ReleaseLockService,
+ MaxLockServiceFunctionId
+} EFI_EXTENDED_SAL_LOCK_SERVICES_FUNC_ID;
+
+//
+// BugBug : Covert the first 3 functions into a lib functions
+// and move SalRegisterPhysicalAddress to SAL BASE Class
+//
+typedef enum {
+ SetVirtualAddress,
+ IsVirtual,
+ IsEfiRuntime,
+ SalRegisterPhysicalAddress
+} EFI_EXTENDED_SAL_VIRTUAL_SERVICES_FUNC_ID;
+
+typedef enum {
+ GetTime,
+ SetTime,
+ GetWakeupTime,
+ SetWakeupTime,
+ GetRtcFreq,
+ InitializeThreshold,
+ BumpThresholdCount,
+ GetThresholdCount
+} EFI_EXTENDED_SAL_RTC_SERVICES_FUNC_ID;
+
+typedef enum {
+ EsalGetVariable,
+ EsalGetNextVariableName,
+ EsalSetVariable
+#if (EFI_SPECIFICATION_VERSION >= 0x00020000)
+ ,
+ EsalQueryVariableInfo
+#endif
+} EFI_EXTENDED_SAL_VARIABLE_SERVICES_FUNC_ID;
+
+typedef enum {
+ GetNextHighMonotonicCount
+} EFI_EXTENDED_SAL_MTC_SERVICES_FUNC_ID;
+
+typedef enum {
+ ResetSystem
+} EFI_EXTENDED_SAL_RESET_SERVICES_FUNC_ID;
+
+typedef enum {
+ StatusCode
+} EFI_EXTENDED_SAL_STATUS_CODE_FUNC_ID;
+
+typedef enum {
+ ReportStatusCode
+} EFI_EXTENDED_SAL_STATUS_CODE_SERVICES_FUNC_ID;
+
+typedef enum {
+ Read,
+ Write,
+ EraseBlock,
+ GetVolumeAttributes,
+ SetVolumeAttributes,
+ GetPhysicalAddress,
+ GetBlockSize,
+ EraseCustomBlockRange,
+} EFI_EXTENDED_SAL_FV_BLOCK_SERVICES_FUNC_ID;
+
+typedef enum {
+ AddCpuData,
+ RemoveCpuData,
+ ModifyCpuData,
+ GetCpuDataByID,
+ GetCpuDataByIndex,
+ SendIpi,
+ CurrentProcInfo,
+ NumProcessors,
+ SetMinState,
+ GetMinState
+} EFI_EXTENDED_SAL_MP_SERVICES_FUNC_ID;
+
+typedef enum {
+ PalProc,
+ SetNewPalEntry,
+ GetNewPalEntry
+} EFI_EXTENDED_SAL_PAL_SERVICES_FUNC_ID;
+
+typedef enum {
+ SalSetVectors,
+ SalMcRendez,
+ SalMcSetParams,
+ EsalGetVectors,
+ EsalMcGetParams,
+ EsalMcGetMcParams,
+ EsalGetMcCheckinFlags,
+ EsalGetPlatformBaseFreq
+} EFI_EXTENDED_SAL_BASE_SERVICES_FUNC_ID;
+
+typedef enum {
+ McaGetStateInfo,
+ McaRegisterCpu
+} EFI_EXTENDED_SAL_MCA_SERVICES_FUNC_ID;
+
+typedef enum {
+ SalPciConfigRead,
+ SalPciConfigWrite
+} EFI_EXTENDED_SAL_PCI_SERVICES_FUNC_ID;
+
+typedef enum {
+ SalCacheInit,
+ SalCacheFlush
+} EFI_EXTENDED_SAL_CACHE_SERVICES_FUNC_ID;
+
+typedef enum {
+ SalGetStateInfo,
+ SalGetStateInfoSize,
+ SalClearStateInfo,
+ EsalGetStateBuffer,
+ EsalSaveStateBuffer
+} EFI_EXTENDED_SAL_MCA_LOG_SERVICES_FUNC_ID;
+
+typedef enum {
+ SalSetEventLogData,
+ SalGetEventLogData,
+ SalEraseEventLogData,
+ SalActivateEventLogData
+} EFI_EXTENDED_SAL_ELOG_SERVICES_FUNC_ID;
+
+typedef enum {
+ EsalGetComControllerInfo,
+ EsalSendComData,
+ EsalReceiveComData
+} EFI_EXTENDED_SAL_SM_COM_LAYER_SERVICES_FUNC_ID;
+
+typedef enum {
+ SalUpdatePal
+} EFI_EXTENDED_SAL_UPDATE_PAL_SERVICES_FUNC_ID;
+
+typedef enum {
+ EsalReadSensorInfo,
+ EsalReadSensorStatus,
+ EsalRearmSensor,
+ EsalReadSensorData
+} EFI_EXTENDED_SAL_SENSOR_SERVICES_FUNC_ID;
+
+typedef struct {
+ UINT64 ProtoData;
+} ESAL_GUID_DUMMY_PROTOCOL;
+
+extern EFI_GUID gEfiExtendedSalBaseIoServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalStallServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalLockServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalVirtualServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalRtcServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalVariableServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalMtcServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalResetServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalStatusCodeServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalFvBlockServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalMpServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalPalServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalBaseServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalMcaServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalPciServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalCacheServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalMcaLogServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalElogServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalSensorServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalSmComLayerServicesProtocolGuid;
+extern EFI_GUID gEfiExtendedSalSstGuid;
+
+
+#endif
diff --git a/EDK/Foundation/Protocol/FastBootException/FastBootException.c b/EDK/Foundation/Protocol/FastBootException/FastBootException.c
new file mode 100644
index 0000000..5c6bea1
--- /dev/null
+++ b/EDK/Foundation/Protocol/FastBootException/FastBootException.c
@@ -0,0 +1,27 @@
+/*++
+
+Copyright (c) 1999 - 2011 Intel Corporation. All rights reserved
+This software and associated documentation (if any) is furnished
+under a license and may only be used or copied in accordance
+with the terms of the license. Except as permitted by such
+license, no part of this software or documentation may be
+reproduced, stored in a retrieval system, or transmitted in any
+form or by any means without the express written consent of
+Intel Corporation.
+
+Module Name:
+
+ FastBootException.c
+
+Abstract:
+
+
+--*/
+
+#include "Tiano.h"
+
+#include EFI_PROTOCOL_DEFINITION(FastBootException)
+
+EFI_GUID gFastBootExceptionProtocolGuid = FAST_BOOT_EXCEPTION_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gFastBootExceptionProtocolGuid, "FastBootException", "Fast Boot Exception Protocol");
diff --git a/EDK/Foundation/Protocol/FastBootException/FastBootException.h b/EDK/Foundation/Protocol/FastBootException/FastBootException.h
new file mode 100644
index 0000000..4019ceb
--- /dev/null
+++ b/EDK/Foundation/Protocol/FastBootException/FastBootException.h
@@ -0,0 +1,41 @@
+/*++
+
+Copyright (c) 1999 - 2011 Intel Corporation. All rights reserved
+This software and associated documentation (if any) is furnished
+under a license and may only be used or copied in accordance
+with the terms of the license. Except as permitted by such
+license, no part of this software or documentation may be
+reproduced, stored in a retrieval system, or transmitted in any
+form or by any means without the express written consent of
+Intel Corporation.
+
+
+Module Name:
+
+ FastBootException.h
+
+Abstract:
+
+ This file defines Fast Boot Exception abstraction protocol containing the
+ exception type and category, which is the indication of an exception occurrence.
+
+--*/
+
+#ifndef _FAST_BOOT_EXCEPTION_H_
+#define _FAST_BOOT_EXCEPTION_H_
+
+#include <FastBootDataDef.h>
+
+#define FAST_BOOT_EXCEPTION_PROTOCOL_GUID \
+ {0x3da3f62e, 0x291e, 0x4224, 0x80, 0x5f, 0x2d, 0x5e, 0xb6, 0xb2, 0x9c, 0xe2}
+
+EFI_FORWARD_DECLARATION (FAST_BOOT_EXCEPTION_PROTOCOL);
+
+typedef struct _FAST_BOOT_EXCEPTION_PROTOCOL {
+ FAST_BOOT_EXCEPTION_TYPE FbExceptionType;
+ FAST_BOOT_EXCEPTION_CATEGORY FbExceptionCategory;
+} FAST_BOOT_EXCEPTION_PROTOCOL;
+
+extern EFI_GUID gFastBootExceptionProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.c b/EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.c
new file mode 100644
index 0000000..78892ff
--- /dev/null
+++ b/EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.c
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ FaultTolerantWriteLite.c
+
+Abstract:
+
+ This is a simple fault tolerant write driver, based on PlatformFd library.
+ And it only supports write BufferSize <= SpareAreaLength.
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION(FaultTolerantWriteLite)
+
+EFI_GUID gEfiFaultTolerantWriteLiteProtocolGuid = EFI_FTW_LITE_PROTOCOL_GUID;
+
+EFI_GUID_STRING (&gEfiFaultTolerantWriteLiteProtocolGuid, "FaultTolerantWriteLite Protocol",
+ "Fault Tolerant Write Lite protocol");
diff --git a/EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.h b/EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.h
new file mode 100644
index 0000000..90cdf34
--- /dev/null
+++ b/EDK/Foundation/Protocol/FaultTolerantWriteLite/FaultTolerantWriteLite.h
@@ -0,0 +1,88 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ 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
+//
+EFI_FORWARD_DECLARATION (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
+//
+typedef struct _EFI_FTW_LITE_PROTOCOL {
+ EFI_FTW_LITE_WRITE Write;
+} EFI_FTW_LITE_PROTOCOL;
+
+extern EFI_GUID gEfiFaultTolerantWriteLiteProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/FirmwarePerformance/FirmwarePerformance.c b/EDK/Foundation/Protocol/FirmwarePerformance/FirmwarePerformance.c
new file mode 100644
index 0000000..aeec629
--- /dev/null
+++ b/EDK/Foundation/Protocol/FirmwarePerformance/FirmwarePerformance.c
@@ -0,0 +1,27 @@
+/*++
+
+Copyright (c) 2011, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ FirmwarePerformance.c
+
+Abstract:
+
+ Firmware Performance Protocol
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (FirmwarePerformance)
+
+EFI_GUID gFirmwarePerformanceProtocolGuid = FIRMWARE_PERFORMANCE_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gFirmwarePerformanceProtocolGuid, "Firmware Performance Protocol", "Firmware Performance Protocol");
diff --git a/EDK/Foundation/Protocol/FirmwarePerformance/FirmwarePerformance.h b/EDK/Foundation/Protocol/FirmwarePerformance/FirmwarePerformance.h
new file mode 100644
index 0000000..cc6589e
--- /dev/null
+++ b/EDK/Foundation/Protocol/FirmwarePerformance/FirmwarePerformance.h
@@ -0,0 +1,213 @@
+/*++
+
+Copyright (c) 2011 - 2012, 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:
+
+ FirmwarePerformance.h
+
+Abstract:
+
+ Firmware Performance Protocol
+
+--*/
+
+#ifndef _FIRMWARE_PERFORMANCE_H_
+#define _FIRMWARE_PERFORMANCE_H_
+
+#define FIRMWARE_PERFORMANCE_PROTOCOL_GUID \
+ { \
+ 0xbc412d75, 0x2729, 0x4c3a, 0xb1, 0x93, 0x5b, 0x9a, 0x58, 0x8f, 0xf6, 0x6f \
+ }
+
+#define EFI_NULL_GUID \
+ { \
+ 0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 \
+ }
+
+EFI_FORWARD_DECLARATION (FIRMWARE_PERFORMANCE_PROTOCOL);
+
+//
+// FPDT Record types
+//
+typedef enum {
+ BASIC_BOOT_PTR_TYPE = 0x0000,
+ S3_TABLE_PTR_TYPE,
+ BOOT_MODULE_TABLE_PTR_TYPE = 0x1002,
+ RUNTIME_MODULE_TABLE_PTR_TYPE,
+ TIMESTAMP_DELTA_TYPE,
+ HARDWARE_BOOT_TYPE,
+ GUID_EVENT_REC_TYPE = 0x1010,
+ STRING_EVENT_REC_TYPE,
+ BDS_ATTEMPT_EVENT_REC_TYPE,
+ PERFORMANCE_RECORD_TYPE_MAX
+} PERFORMANCE_RECORD_TYPE;
+
+//
+// Progress Identifiers for Event Records
+//
+typedef enum {
+ MODULE_START_ID = 1,
+ MODULE_END_ID,
+ MODULE_LOADIMAGE_START_ID,
+ MODULE_LOADIMAGE_END_ID,
+ MODULE_DRIVERBINDING_START_ID,
+ MODULE_DRIVERBINDING_END_ID
+} EVENT_RECORD_PROGRESS_ID;
+
+//
+// Performance tokens
+//
+#define PEI_TOK L"PEI"
+#define DXE_TOK L"DXE"
+#define BDS_TOK L"BDS"
+#define START_IMAGE_TOK L"StartImage"
+#define LOAD_IMAGE_TOK L"LoadImage"
+#define DRIVERBINDING_START_TOK L"DriverBinding:Start"
+#define DRIVERBINDING_SUPPORT_TOK L"DriverBinding:Support"
+#define BASIC_BOOT_TOK L"BasicBoot"
+#define HARDWARE_BOOT_TOK L"HardwareBoot"
+#define EVENT_REC_TOK L"EventRec"
+#define BDS_ATTEMPT_TOK L"BdsAttempt"
+#define DXE_CORE_DISP_INIT_TOK L"CoreInitializeDispatcher"
+#define COREDISPATCHER_TOK L"CoreDispatcher"
+#define SMM_MODULE_TOK L"SmmModule"
+#define SMM_FUNCTION_TOK L"SmmFunction"
+
+#define FIRMWARE_MAX_BUFFER 0x16800 // pre-defined buffer size of 90K to accomodate all FPDT records
+#define RECORD_REVISION_1 0x1
+#define RECORD_REVISION_2 0x2
+#define STRING_EVENT_RECORD_NAME_LENGTH 24
+#define RMPT_SIG EFI_SIGNATURE_32 ('R', 'M', 'P', 'T')
+#define RUNTIME_MODULE_TABLE_PTR_TYPE 0x1003
+#define RUNTIME_MODULE_REC_TYPE 0x1020
+#define RUNTIME_FUNCTION_REC_TYPE 0x1021
+#define DXE_START_ID 0x7000
+#define DXE_END_ID 0x7001
+#define DXE_CORE_DISP_START_ID 0x7010
+#define DXE_CORE_DISP_END_ID 0x7011
+#define COREDISPATCHER_START_ID 0x7020
+#define COREDISPATCHER_END_ID 0x7021
+//
+// Fpdt record table structures
+//
+#pragma pack(push, 1)
+typedef struct _BASIC_BOOT_REC {
+ UINT16 RecType;
+ UINT8 RecLength;
+ UINT8 Revision;
+ UINT32 Reserved;
+ UINT64 ResetEnd;
+ UINT64 BootLoaderLoadImage;
+ UINT64 BootLoaderStartImage;
+ UINT64 ExitBootServiceEntry;
+ UINT64 ExitBootServiceExit;
+} BASIC_BOOT_REC;
+
+typedef struct _HARDWARE_BOOT_REC {
+ UINT16 RecType;
+ UINT8 RecLength;
+ UINT8 Revision;
+ UINT64 HardwareBoot;
+} HARDWARE_BOOT_REC;
+
+typedef struct _STRING_EVENT_REC {
+ UINT16 RecType;
+ UINT8 RecLength;
+ UINT8 Revision;
+ UINT16 ProgressID;
+ UINT32 ApicID;
+ UINT64 Timestamp;
+ EFI_GUID Guid;
+ UINT8 NameString[STRING_EVENT_RECORD_NAME_LENGTH];
+} STRING_EVENT_REC;
+
+typedef struct _GUID_EVENT_REC {
+ UINT16 RecType;
+ UINT8 RecLength;
+ UINT8 Revision;
+ UINT16 ProgressID;
+ UINT32 ApicID;
+ UINT64 Timestamp;
+ EFI_GUID Guid;
+} GUID_EVENT_REC;
+
+typedef struct _BDS_ATTEMPT_REC {
+ UINT16 RecType;
+ UINT8 RecLength;
+ UINT8 Revision;
+ UINT32 ApicID;
+ UINT16 BdsAttemptNo;
+ UINT64 Timestamp;
+ UINT64 UEFIBootVar;
+ CHAR16 DevicePathString;
+} BDS_ATTEMPT_REC;
+
+typedef struct _RUNTIME_PERF_TABLE_HEADER {
+ UINT32 Signature;
+ UINT32 Length;
+ EFI_GUID Guid;
+} RUNTIME_PERF_TABLE_HEADER;
+
+typedef struct _RUNTIME_MODULE_PERF_RECORD {
+ UINT16 RuntimeRecType;
+ UINT8 Reclength;
+ UINT8 Revision;
+ UINT32 ModuleCallCount;
+ UINT64 ModuleResidency;
+} RUNTIME_MODULE_PERF_RECORD;
+
+typedef struct _RUNTIME_FUNCTION_PERF_RECORD {
+ UINT16 RuntimeRecType;
+ UINT8 Reclength;
+ UINT8 Revision;
+ UINT32 Reserved;
+ UINT32 FunctionId;
+ UINT32 FunctionCallCount;
+ UINT64 FunctionResidency;
+} RUNTIME_FUNCTION_PERF_RECORD;
+
+#pragma pack(pop)
+//
+// Firmware Performance Protocol definition
+//
+typedef
+EFI_STATUS
+(EFIAPI *FIRMWARE_PERFORMANCE_PROTOCOL_INSERT_MEASUREMENT) (
+ IN FIRMWARE_PERFORMANCE_PROTOCOL *This,
+ IN EFI_HANDLE Handle,
+ IN UINT16 RecordType,
+ IN UINT64 Ticker,
+ IN UINT16 Identifier OPTIONAL
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *FIRMWARE_PERFORMANCE_PROTOCOL_GET_PERFBUFFER_ADDR) (
+ IN FIRMWARE_PERFORMANCE_PROTOCOL *This,
+ OUT UINT32 *PerformanceBuffer
+ );
+
+typedef
+UINT32
+(EFIAPI *FIRMWARE_PERFORMANCE_PROTOCOL_GET_PERFBUFFER_LEN) (
+ IN FIRMWARE_PERFORMANCE_PROTOCOL *This
+ );
+
+
+typedef struct _FIRMWARE_PERFORMANCE_PROTOCOL {
+ FIRMWARE_PERFORMANCE_PROTOCOL_INSERT_MEASUREMENT InsertMeasurement;
+ FIRMWARE_PERFORMANCE_PROTOCOL_GET_PERFBUFFER_ADDR GetPerfBufferAddr;
+ FIRMWARE_PERFORMANCE_PROTOCOL_GET_PERFBUFFER_LEN GetPerfBufferLength;
+} FIRMWARE_PERFORMANCE_PROTOCOL;
+
+extern EFI_GUID gFirmwarePerformanceProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/FirmwareVolumeDispatch/FirmwareVolumeDispatch.c b/EDK/Foundation/Protocol/FirmwareVolumeDispatch/FirmwareVolumeDispatch.c
new file mode 100644
index 0000000..04faa1c
--- /dev/null
+++ b/EDK/Foundation/Protocol/FirmwareVolumeDispatch/FirmwareVolumeDispatch.c
@@ -0,0 +1,32 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ FirmwareVolumeDispatch.c
+
+Abstract:
+
+ Firmware Volume Dispatch protocol as defined in the Tiano Firmware Volume
+ specification.
+
+ Presence of this protocol tells the dispatch to dispatch from this Firmware
+ Volume
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (FirmwareVolumeDispatch)
+
+EFI_GUID gEfiFirmwareVolumeDispatchProtocolGuid = EFI_FIRMWARE_VOLUME_DISPATCH_PROTOCOL_GUID;
+
+EFI_GUID_STRING (&gEfiFirmwareVolumeDispatchProtocolGuid, "FirmwareVolumeDispatch Protocol",
+ "Firmware Volume Dispatch protocol");
diff --git a/EDK/Foundation/Protocol/FirmwareVolumeDispatch/FirmwareVolumeDispatch.h b/EDK/Foundation/Protocol/FirmwareVolumeDispatch/FirmwareVolumeDispatch.h
new file mode 100644
index 0000000..0ec478d
--- /dev/null
+++ b/EDK/Foundation/Protocol/FirmwareVolumeDispatch/FirmwareVolumeDispatch.h
@@ -0,0 +1,35 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ FirmwareVolumeDispatch.h
+
+Abstract:
+
+ Firmware Volume Dispatch protocol as defined in the Tiano Firmware Volume
+ specification.
+
+ Presence of this protocol tells the dispatch to dispatch from this Firmware
+ Volume
+
+--*/
+
+#ifndef __FIRMWARE_VOLUME_DISPATCH_H__
+#define __FIRMWARE_VOLUME_DISPATCH_H__
+
+#define EFI_FIRMWARE_VOLUME_DISPATCH_PROTOCOL_GUID \
+ { 0x7aa35a69, 0x506c, 0x444f, 0xa7, 0xaf, 0x69, 0x4b, 0xf5, 0x6f, 0x71, 0xc8 }
+
+
+extern EFI_GUID gEfiFirmwareVolumeDispatchProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/Fpdt/Fpdt.c b/EDK/Foundation/Protocol/Fpdt/Fpdt.c
new file mode 100644
index 0000000..6d4e28d
--- /dev/null
+++ b/EDK/Foundation/Protocol/Fpdt/Fpdt.c
@@ -0,0 +1,31 @@
+/*++
+ This file contains a 'Sample Driver' and is licensed as such
+ under the terms of your license agreement with Intel or your
+ vendor. This file may be modified by the user, subject to
+/*++
+
+Copyright (c) 2011, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ Fpdt.c
+
+Abstract:
+
+ Fpdt Performance Protocol
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (Fpdt)
+
+EFI_GUID gFpdtPerformanceProtocolGuid = FPDT_PERFORMANCE_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gFpdtPerformanceProtocolGuid, "FPDT Performance Protocol", "FPDT Performance Protocol");
diff --git a/EDK/Foundation/Protocol/Fpdt/Fpdt.h b/EDK/Foundation/Protocol/Fpdt/Fpdt.h
new file mode 100644
index 0000000..db243c1
--- /dev/null
+++ b/EDK/Foundation/Protocol/Fpdt/Fpdt.h
@@ -0,0 +1,56 @@
+/*++
+
+Copyright (c) 2011, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ Fpdt.h
+
+Abstract:
+
+ Fpdt Performance Protocol
+
+--*/
+
+#ifndef _FPDT_H
+#define _FPDT_H
+
+#define FPDT_PERFORMANCE_PROTOCOL_GUID \
+ { \
+ 0x444c3203, 0xf8b1, 0x42a7, 0xab, 0xe9, 0x2e, 0x58, 0x2, 0x5b, 0xe1, 0x2a \
+ }
+
+EFI_FORWARD_DECLARATION (FPDT_PERFORMANCE_PROTOCOL);
+
+typedef
+EFI_STATUS
+(EFIAPI *FPDT_PERFORMANCE_PROTOCOL_GET_FPDT_ADDRESS) (
+ IN FPDT_PERFORMANCE_PROTOCOL *This,
+ OUT UINT32 *FpdtAddress
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *FPDT_PERFORMANCE_PROTOCOL_UPDATE_RECORD) (
+ IN FPDT_PERFORMANCE_PROTOCOL *This,
+ IN EFI_HANDLE Handle OPTIONAL,
+ IN UINT16 Recordtype,
+ IN UINT64 Data,
+ IN UINT16 Identifier OPTIONAL
+ );
+
+typedef struct _FPDT_PERFORMANCE_PROTOCOL {
+ FPDT_PERFORMANCE_PROTOCOL_GET_FPDT_ADDRESS GetFpdtAddress;
+ FPDT_PERFORMANCE_PROTOCOL_UPDATE_RECORD UpdateRecord;
+} FPDT_PERFORMANCE_PROTOCOL;
+
+extern EFI_GUID gFpdtPerformanceProtocolGuid;
+
+#endif \ No newline at end of file
diff --git a/EDK/Foundation/Protocol/FvbExtension/FvbExtension.c b/EDK/Foundation/Protocol/FvbExtension/FvbExtension.c
new file mode 100644
index 0000000..6bc312c
--- /dev/null
+++ b/EDK/Foundation/Protocol/FvbExtension/FvbExtension.c
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ FvbExtension.c
+
+Abstract:
+
+ IPMI Extension Protocol to extend the FVB functionality to multiple erase blocks
+ at different block offsets.
+
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION(FvbExtension)
+
+EFI_GUID gEfiFvbExtensionProtocolGuid = EFI_FVB_EXTENSION_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiFvbExtensionProtocolGuid, "FVB EXTENSION", "FVB EXTENSION");
diff --git a/EDK/Foundation/Protocol/FvbExtension/FvbExtension.h b/EDK/Foundation/Protocol/FvbExtension/FvbExtension.h
new file mode 100644
index 0000000..90dac56
--- /dev/null
+++ b/EDK/Foundation/Protocol/FvbExtension/FvbExtension.h
@@ -0,0 +1,53 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ 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 }
+
+EFI_FORWARD_DECLARATION (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
+//
+typedef struct _EFI_FVB_EXTENSION_PROTOCOL {
+ EFI_FV_ERASE_CUSTOM_BLOCK EraseFvbCustomBlock;
+ } EFI_FVB_EXTENSION_PROTOCOL;
+
+extern EFI_GUID gEfiFvbExtensionProtocolGuid;
+
+#endif
+
diff --git a/EDK/Foundation/Protocol/GenericMemoryTest/GenericMemoryTest.c b/EDK/Foundation/Protocol/GenericMemoryTest/GenericMemoryTest.c
new file mode 100644
index 0000000..a80d5f5
--- /dev/null
+++ b/EDK/Foundation/Protocol/GenericMemoryTest/GenericMemoryTest.c
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ GenericMemoryTest.c
+
+Abstract:
+
+ The generic memory test protocol is used to test EFI memory.
+
+ For more information please look at EfiMemoryTest.doc
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (GenericMemoryTest)
+
+EFI_GUID gEfiGenericMemTestProtocolGuid = EFI_GENERIC_MEMORY_TEST_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiGenericMemTestProtocolGuid, "GenericMemoryTest Protocol", "Tiano Generic Memory Test Protocol");
diff --git a/EDK/Foundation/Protocol/GenericMemoryTest/GenericMemoryTest.h b/EDK/Foundation/Protocol/GenericMemoryTest/GenericMemoryTest.h
new file mode 100644
index 0000000..5638616
--- /dev/null
+++ b/EDK/Foundation/Protocol/GenericMemoryTest/GenericMemoryTest.h
@@ -0,0 +1,154 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ 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}
+
+EFI_FORWARD_DECLARATION (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.
+
+--*/
+;
+
+typedef 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;
+} EFI_GENERIC_MEMORY_TEST_PROTOCOL;
+
+extern EFI_GUID gEfiGenericMemTestProtocolGuid;
+#endif \ No newline at end of file
diff --git a/EDK/Foundation/Protocol/GuidedSectionExtraction/GuidedSectionExtraction.c b/EDK/Foundation/Protocol/GuidedSectionExtraction/GuidedSectionExtraction.c
new file mode 100644
index 0000000..b56508e
--- /dev/null
+++ b/EDK/Foundation/Protocol/GuidedSectionExtraction/GuidedSectionExtraction.c
@@ -0,0 +1,35 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ GuidedSectionExtraction.c
+
+Abstract:
+
+ GUIDed section extraction protocol as defined in the Tiano File Image
+ Format specification.
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (GuidedSectionExtraction)
+
+//
+// may add more GUIDed section extraction protocol GUID here.
+//
+EFI_GUID gEfiCrc32GuidedSectionExtractionProtocolGuid = EFI_CRC32_GUIDED_SECTION_EXTRACTION_PROTOCOL_GUID;
+
+EFI_GUID_STRING
+ (
+ &gEfiSectionExtractionProtocolGuid, "CRC32 GUIDed Section Extraction Protocol",
+ "Tiano CRC32 GUIDed Section Extraction Protocol"
+ );
diff --git a/EDK/Foundation/Protocol/GuidedSectionExtraction/GuidedSectionExtraction.h b/EDK/Foundation/Protocol/GuidedSectionExtraction/GuidedSectionExtraction.h
new file mode 100644
index 0000000..2107761
--- /dev/null
+++ b/EDK/Foundation/Protocol/GuidedSectionExtraction/GuidedSectionExtraction.h
@@ -0,0 +1,73 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ GuidedSectionExtraction.h
+
+Abstract:
+
+ GUIDed section extraction protocol as defined in the Tiano File
+ Image Format specification.
+
+ This interface provides a means of decoding a GUID defined encapsulation
+ section. There may be multiple different GUIDs associated with the GUIDed
+ section extraction protocol. That is, all instances of the GUIDed section
+ extraction protocol must have the same interface structure.
+
+--*/
+
+#ifndef _GUIDED_SECTION_EXTRACTION_PROTOCOL_H
+#define _GUIDED_SECTION_EXTRACTION_PROTOCOL_H
+
+#include "EfiFirmwareFileSystem.h"
+
+//
+// Protocol GUID definition. Each GUIDed section extraction protocol has the
+// same interface but with different GUID. All the GUIDs is defined here.
+// May add multiple GUIDs here.
+//
+#define EFI_CRC32_GUIDED_SECTION_EXTRACTION_PROTOCOL_GUID \
+ { \
+ 0xFC1BCDB0, 0x7D31, 0x49aa, 0x93, 0x6A, 0xA4, 0x60, 0x0D, 0x9D, 0xD0, 0x83 \
+ }
+
+//
+// Forward reference for pure ANSI compatability
+//
+EFI_FORWARD_DECLARATION (EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL);
+
+//
+// Protocol member functions
+//
+typedef
+EFI_STATUS
+(EFIAPI *EFI_EXTRACT_GUIDED_SECTION) (
+ IN EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL * This,
+ IN VOID *InputSection,
+ OUT VOID **OutputBuffer,
+ OUT UINTN *OutputSize,
+ OUT UINT32 *AuthenticationStatus
+ );
+
+//
+// Protocol definition
+//
+typedef struct _EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL {
+ EFI_EXTRACT_GUIDED_SECTION ExtractSection;
+} EFI_GUIDED_SECTION_EXTRACTION_PROTOCOL;
+
+//
+// may add other GUID here
+//
+extern EFI_GUID gEfiCrc32GuidedSectionExtractionProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/IsaAcpi/IsaAcpi.c b/EDK/Foundation/Protocol/IsaAcpi/IsaAcpi.c
new file mode 100644
index 0000000..21e7f39
--- /dev/null
+++ b/EDK/Foundation/Protocol/IsaAcpi/IsaAcpi.c
@@ -0,0 +1,30 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ IsaAcpi.c
+
+Abstract:
+
+ EFI ISA ACPI Protocol
+
+Revision History
+
+--*/
+
+#include "Tiano.h"
+
+#include EFI_PROTOCOL_DEFINITION (IsaAcpi)
+
+EFI_GUID gEfiIsaAcpiProtocolGuid = EFI_ISA_ACPI_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiIsaAcpiProtocolGuid, "ISA Acpi Protocol", "ISA Acpi Protocol");
diff --git a/EDK/Foundation/Protocol/IsaAcpi/IsaAcpi.h b/EDK/Foundation/Protocol/IsaAcpi/IsaAcpi.h
new file mode 100644
index 0000000..e4a2618
--- /dev/null
+++ b/EDK/Foundation/Protocol/IsaAcpi/IsaAcpi.h
@@ -0,0 +1,177 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ IsaAcpi.h
+
+Abstract:
+
+ EFI ISA Acpi Protocol
+
+Revision History
+
+--*/
+
+#ifndef _ISA_ACPI_H_
+#define _ISA_ACPI_H_
+
+#define EFI_ISA_ACPI_PROTOCOL_GUID \
+ {0x64a892dc, 0x5561, 0x4536, 0x92, 0xc7, 0x79, 0x9b, 0xfc, 0x18, 0x33, 0x55}
+
+EFI_FORWARD_DECLARATION (EFI_ISA_ACPI);
+
+//
+// Resource Attribute definition
+//
+#define EFI_ISA_ACPI_IRQ_TYPE_HIGH_TRUE_EDGE_SENSITIVE 0x01
+#define EFI_ISA_ACPI_IRQ_TYPE_LOW_TRUE_EDGE_SENSITIVE 0x02
+#define EFI_ISA_ACPI_IRQ_TYPE_HIGH_TRUE_LEVEL_SENSITIVE 0x04
+#define EFI_ISA_ACPI_IRQ_TYPE_LOW_TRUE_LEVEL_SENSITIVE 0x08
+
+#define EFI_ISA_ACPI_DMA_SPEED_TYPE_MASK 0x03
+
+#define EFI_ISA_ACPI_DMA_SPEED_TYPE_COMPATIBILITY 0x00
+#define EFI_ISA_ACPI_DMA_SPEED_TYPE_A 0x01
+#define EFI_ISA_ACPI_DMA_SPEED_TYPE_B 0x02
+#define EFI_ISA_ACPI_DMA_SPEED_TYPE_F 0x03
+#define EFI_ISA_ACPI_DMA_COUNT_BY_BYTE 0x04
+#define EFI_ISA_ACPI_DMA_COUNT_BY_WORD 0x08
+#define EFI_ISA_ACPI_DMA_BUS_MASTER 0x10
+#define EFI_ISA_ACPI_DMA_TRANSFER_TYPE_8_BIT 0x20
+#define EFI_ISA_ACPI_DMA_TRANSFER_TYPE_8_BIT_AND_16_BIT 0x40
+#define EFI_ISA_ACPI_DMA_TRANSFER_TYPE_16_BIT 0x80
+
+#define EFI_ISA_ACPI_MEMORY_WIDTH_MASK 0x03
+
+#define EFI_ISA_ACPI_MEMORY_WIDTH_8_BIT 0x00
+#define EFI_ISA_ACPI_MEMORY_WIDTH_16_BIT 0x01
+#define EFI_ISA_ACPI_MEMORY_WIDTH_8_BIT_AND_16_BIT 0x02
+#define EFI_ISA_ACPI_MEMORY_WRITEABLE 0x04
+#define EFI_ISA_ACPI_MEMORY_CACHEABLE 0x08
+#define EFI_ISA_ACPI_MEMORY_SHADOWABLE 0x10
+#define EFI_ISA_ACPI_MEMORY_EXPANSION_ROM 0x20
+
+#define EFI_ISA_ACPI_IO_DECODE_10_BITS 0x01
+#define EFI_ISA_ACPI_IO_DECODE_16_BITS 0x02
+
+//
+// Resource List definition:
+// at first, the resource was defined as below
+// but in the future, it will be defined again that follow ACPI spec: ACPI resource type
+// so that, in this driver, we can interpret the ACPI table and get the ISA device information.
+//
+
+typedef enum {
+ EfiIsaAcpiResourceEndOfList,
+ EfiIsaAcpiResourceIo,
+ EfiIsaAcpiResourceMemory,
+ EfiIsaAcpiResourceDma,
+ EfiIsaAcpiResourceInterrupt
+} EFI_ISA_ACPI_RESOURCE_TYPE;
+
+typedef struct {
+ EFI_ISA_ACPI_RESOURCE_TYPE Type;
+ UINT32 Attribute;
+ UINT32 StartRange;
+ UINT32 EndRange;
+} EFI_ISA_ACPI_RESOURCE;
+
+typedef struct {
+ UINT32 HID;
+ UINT32 UID;
+} EFI_ISA_ACPI_DEVICE_ID;
+
+typedef struct {
+ EFI_ISA_ACPI_DEVICE_ID Device;
+ EFI_ISA_ACPI_RESOURCE *ResourceItem;
+} EFI_ISA_ACPI_RESOURCE_LIST;
+
+//
+// Prototypes for the ISA ACPI Protocol
+//
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_ACPI_DEVICE_ENUMERATE) (
+ IN EFI_ISA_ACPI *This,
+ OUT EFI_ISA_ACPI_DEVICE_ID **Device
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_ACPI_SET_DEVICE_POWER) (
+ IN EFI_ISA_ACPI *This,
+ IN EFI_ISA_ACPI_DEVICE_ID *Device,
+ IN BOOLEAN OnOff
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_ACPI_GET_CUR_RESOURCE) (
+ IN EFI_ISA_ACPI *This,
+ IN EFI_ISA_ACPI_DEVICE_ID *Device,
+ OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_ACPI_GET_POS_RESOURCE) (
+ IN EFI_ISA_ACPI *This,
+ IN EFI_ISA_ACPI_DEVICE_ID *Device,
+ OUT EFI_ISA_ACPI_RESOURCE_LIST **ResourceList
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_ACPI_SET_RESOURCE) (
+ IN EFI_ISA_ACPI *This,
+ IN EFI_ISA_ACPI_DEVICE_ID *Device,
+ IN EFI_ISA_ACPI_RESOURCE_LIST *ResourceList
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_ACPI_ENABLE_DEVICE) (
+ IN EFI_ISA_ACPI *This,
+ IN EFI_ISA_ACPI_DEVICE_ID *Device,
+ IN BOOLEAN Enable
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_ACPI_INIT_DEVICE) (
+ IN EFI_ISA_ACPI *This,
+ IN EFI_ISA_ACPI_DEVICE_ID *Device
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_ACPI_INTERFACE_INIT) (
+ IN EFI_ISA_ACPI *This
+ );
+
+//
+// Interface structure for the ISA ACPI Protocol
+//
+typedef struct _EFI_ISA_ACPI {
+ EFI_ISA_ACPI_DEVICE_ENUMERATE DeviceEnumerate;
+ EFI_ISA_ACPI_SET_DEVICE_POWER SetPower;
+ EFI_ISA_ACPI_GET_CUR_RESOURCE GetCurResource;
+ EFI_ISA_ACPI_GET_POS_RESOURCE GetPosResource;
+ EFI_ISA_ACPI_SET_RESOURCE SetResource;
+ EFI_ISA_ACPI_ENABLE_DEVICE EnableDevice;
+ EFI_ISA_ACPI_INIT_DEVICE InitDevice;
+ EFI_ISA_ACPI_INTERFACE_INIT InterfaceInit;
+} EFI_ISA_ACPI_PROTOCOL;
+
+extern EFI_GUID gEfiIsaAcpiProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/IsaIo/IsaIo.c b/EDK/Foundation/Protocol/IsaIo/IsaIo.c
new file mode 100644
index 0000000..fcbbafb
--- /dev/null
+++ b/EDK/Foundation/Protocol/IsaIo/IsaIo.c
@@ -0,0 +1,30 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ IsaIo.c
+
+Abstract:
+
+ EFI ISA I/O Protocol
+
+Revision History
+
+--*/
+
+#include "Tiano.h"
+
+#include EFI_PROTOCOL_DEFINITION (IsaIo)
+
+EFI_GUID gEfiIsaIoProtocolGuid = EFI_ISA_IO_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiIsaIoProtocolGuid, "ISA IO Protocol", "ISA IO Protocol");
diff --git a/EDK/Foundation/Protocol/IsaIo/IsaIo.h b/EDK/Foundation/Protocol/IsaIo/IsaIo.h
new file mode 100644
index 0000000..5ddd9eb
--- /dev/null
+++ b/EDK/Foundation/Protocol/IsaIo/IsaIo.h
@@ -0,0 +1,176 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ IsaIo.h
+
+Abstract:
+
+ EFI ISA I/O Protocol
+
+Revision History
+
+--*/
+
+#ifndef _EFI_ISA_IO_H
+#define _EFI_ISA_IO_H
+
+#include EFI_PROTOCOL_DEFINITION(IsaAcpi)
+
+//
+// Global ID for the ISA I/O Protocol
+//
+
+#define EFI_ISA_IO_PROTOCOL_GUID \
+ { 0x7ee2bd44, 0x3da0, 0x11d4, 0x9a, 0x38, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d }
+
+EFI_FORWARD_DECLARATION (EFI_ISA_IO_PROTOCOL);
+
+//
+// Prototypes for the ISA I/O Protocol
+//
+
+typedef enum {
+ EfiIsaIoWidthUint8,
+ EfiIsaIoWidthUint16,
+ EfiIsaIoWidthUint32,
+ EfiIsaIoWidthReserved,
+ EfiIsaIoWidthFifoUint8,
+ EfiIsaIoWidthFifoUint16,
+ EfiIsaIoWidthFifoUint32,
+ EfiIsaIoWidthFifoReserved,
+ EfiIsaIoWidthFillUint8,
+ EfiIsaIoWidthFillUint16,
+ EfiIsaIoWidthFillUint32,
+ EfiIsaIoWidthFillReserved,
+ EfiIsaIoWidthMaximum
+} EFI_ISA_IO_PROTOCOL_WIDTH;
+
+//
+// Attributes for common buffer allocations
+//
+#define EFI_ISA_IO_ATTRIBUTE_MEMORY_WRITE_COMBINE 0x080 // Map a memory range so write are combined
+#define EFI_ISA_IO_ATTRIBUTE_MEMORY_CACHED 0x800 // Map a memory range so all r/w accesses are cached
+#define EFI_ISA_IO_ATTRIBUTE_MEMORY_DISABLE 0x1000 // Disable a memory range
+
+//
+// Channel attribute for DMA operations
+//
+#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_COMPATIBLE 0x001
+#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_A 0x002
+#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_B 0x004
+#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SPEED_C 0x008
+#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_8 0x010
+#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_WIDTH_16 0x020
+#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_SINGLE_MODE 0x040
+#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_DEMAND_MODE 0x080
+#define EFI_ISA_IO_SLAVE_DMA_ATTRIBUTE_AUTO_INITIALIZE 0x100
+
+typedef enum {
+ EfiIsaIoOperationBusMasterRead,
+ EfiIsaIoOperationBusMasterWrite,
+ EfiIsaIoOperationBusMasterCommonBuffer,
+ EfiIsaIoOperationSlaveRead,
+ EfiIsaIoOperationSlaveWrite,
+ EfiIsaIoOperationMaximum
+} EFI_ISA_IO_PROTOCOL_OPERATION;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_IO_PROTOCOL_IO_MEM) (
+ IN EFI_ISA_IO_PROTOCOL *This,
+ IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
+ IN UINT32 Offset,
+ IN UINTN Count,
+ IN OUT VOID *Buffer
+ );
+
+typedef struct {
+ EFI_ISA_IO_PROTOCOL_IO_MEM Read;
+ EFI_ISA_IO_PROTOCOL_IO_MEM Write;
+} EFI_ISA_IO_PROTOCOL_ACCESS;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_IO_PROTOCOL_COPY_MEM) (
+ IN EFI_ISA_IO_PROTOCOL *This,
+ IN EFI_ISA_IO_PROTOCOL_WIDTH Width,
+ IN UINT32 DestOffset,
+ IN UINT32 SrcOffset,
+ IN UINTN Count
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_IO_PROTOCOL_MAP) (
+ IN EFI_ISA_IO_PROTOCOL *This,
+ IN EFI_ISA_IO_PROTOCOL_OPERATION Operation,
+ IN UINT8 ChannelNumber OPTIONAL,
+ IN UINT32 ChannelAttributes,
+ IN VOID *HostAddress,
+ IN OUT UINTN *NumberOfBytes,
+ OUT EFI_PHYSICAL_ADDRESS *DeviceAddress,
+ OUT VOID **Mapping
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_IO_PROTOCOL_UNMAP) (
+ IN EFI_ISA_IO_PROTOCOL *This,
+ IN VOID *Mapping
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_IO_PROTOCOL_ALLOCATE_BUFFER) (
+ IN EFI_ISA_IO_PROTOCOL *This,
+ IN EFI_ALLOCATE_TYPE Type,
+ IN EFI_MEMORY_TYPE MemoryType,
+ IN UINTN Pages,
+ OUT VOID **HostAddress,
+ IN UINT64 Attributes
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_IO_PROTOCOL_FREE_BUFFER) (
+ IN EFI_ISA_IO_PROTOCOL *This,
+ IN UINTN Pages,
+ IN VOID *HostAddress
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_ISA_IO_PROTOCOL_FLUSH) (
+ IN EFI_ISA_IO_PROTOCOL *This
+ );
+
+//
+// Interface structure for the ISA I/O Protocol
+//
+typedef struct _EFI_ISA_IO_PROTOCOL {
+ EFI_ISA_IO_PROTOCOL_ACCESS Mem;
+ EFI_ISA_IO_PROTOCOL_ACCESS Io;
+ EFI_ISA_IO_PROTOCOL_COPY_MEM CopyMem;
+ EFI_ISA_IO_PROTOCOL_MAP Map;
+ EFI_ISA_IO_PROTOCOL_UNMAP Unmap;
+ EFI_ISA_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer;
+ EFI_ISA_IO_PROTOCOL_FREE_BUFFER FreeBuffer;
+ EFI_ISA_IO_PROTOCOL_FLUSH Flush;
+ EFI_ISA_ACPI_RESOURCE_LIST *ResourceList;
+ UINT32 RomSize;
+ VOID *RomImage;
+} EFI_ISA_IO_PROTOCOL;
+
+extern EFI_GUID gEfiIsaIoProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/LoadPe32Image/LoadPe32Image.c b/EDK/Foundation/Protocol/LoadPe32Image/LoadPe32Image.c
new file mode 100644
index 0000000..0600aee
--- /dev/null
+++ b/EDK/Foundation/Protocol/LoadPe32Image/LoadPe32Image.c
@@ -0,0 +1,27 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ LoadPe32Image.c
+
+Abstract:
+
+ Load PE32 Image Protocol
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (LoadPe32Image)
+
+EFI_GUID gEfiLoadPeImageGuid = PE32_IMAGE_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiLoadPeImageGuid, "LoadPe32Image Protocol", "Tiano Load Pe32 Image Protocol");
diff --git a/EDK/Foundation/Protocol/LoadPe32Image/LoadPe32Image.h b/EDK/Foundation/Protocol/LoadPe32Image/LoadPe32Image.h
new file mode 100644
index 0000000..ae54e84
--- /dev/null
+++ b/EDK/Foundation/Protocol/LoadPe32Image/LoadPe32Image.h
@@ -0,0 +1,64 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ LoadPe32Image.h
+
+Abstract:
+
+ Load PE32 Image Protocol
+
+--*/
+
+#ifndef _LOAD_PE32_IMAGE_H_
+#define _LOAD_PE32_IMAGE_H_
+
+#define PE32_IMAGE_PROTOCOL_GUID \
+ {0x5cb5c776,0x60d5,0x45ee,0x88,0x3c,0x45,0x27,0x8,0xcd,0x74,0x3f }
+
+#define EFI_LOAD_PE_IMAGE_ATTRIBUTE_NONE 0x00
+#define EFI_LOAD_PE_IMAGE_ATTRIBUTE_RUNTIME_REGISTRATION 0x01
+#define EFI_LOAD_PE_IMAGE_ATTRIBUTE_DEBUG_IMAGE_INFO_TABLE_REGISTRATION 0x02
+
+EFI_FORWARD_DECLARATION (EFI_PE32_IMAGE_PROTOCOL);
+
+typedef
+EFI_STATUS
+(EFIAPI *LOAD_PE_IMAGE) (
+ IN EFI_PE32_IMAGE_PROTOCOL *This,
+ IN EFI_HANDLE ParentImageHandle,
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath,
+ IN VOID *SourceBuffer OPTIONAL,
+ IN UINTN SourceSize,
+ IN EFI_PHYSICAL_ADDRESS DstBuffer OPTIONAL,
+ OUT UINTN *NumberOfPages OPTIONAL,
+ OUT EFI_HANDLE *ImageHandle,
+ OUT EFI_PHYSICAL_ADDRESS *EntryPoint OPTIONAL,
+ IN UINT32 Attribute
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *UNLOAD_PE_IMAGE) (
+ IN EFI_PE32_IMAGE_PROTOCOL *This,
+ IN EFI_HANDLE ImageHandle
+ );
+
+typedef struct _EFI_PE32_IMAGE_PROTOCOL {
+ LOAD_PE_IMAGE LoadPeImage;
+ UNLOAD_PE_IMAGE UnLoadPeImage;
+} EFI_PE32_IMAGE_PROTOCOL;
+
+extern EFI_GUID gEfiLoadPeImageGuid;
+
+#endif
+
diff --git a/EDK/Foundation/Protocol/NicIp4Config/NicIp4Config.c b/EDK/Foundation/Protocol/NicIp4Config/NicIp4Config.c
new file mode 100644
index 0000000..ced316c
--- /dev/null
+++ b/EDK/Foundation/Protocol/NicIp4Config/NicIp4Config.c
@@ -0,0 +1,37 @@
+/*++
+
+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:
+
+ NicIp4Config.c
+
+Abstract:
+
+--*/
+
+#include "EfiSpec.h"
+#include EFI_PROTOCOL_DEFINITION (NicIp4Config)
+
+EFI_GUID gEfiNicIp4ConfigProtocolGuid = EFI_NIC_IP4_CONFIG_PROTOCOL_GUID;
+
+EFI_GUID_STRING (
+ &gEfiNicIp4ConfigProtocolGuid,
+ "NicIP4Config Protocol",
+ "NicIP4Config Protocol"
+ );
+
+EFI_GUID gEfiNicIp4ConfigVariableGuid = EFI_NIC_IP4_CONFIG_VARIABLE_GUID;
+
+EFI_GUID_STRING(
+ &gEfiNicIp4ConfigVariableGuid,
+ "Ip4 Static Config",
+ "Ip4 Configuration Data"
+ );
diff --git a/EDK/Foundation/Protocol/NicIp4Config/NicIp4Config.h b/EDK/Foundation/Protocol/NicIp4Config/NicIp4Config.h
new file mode 100644
index 0000000..6cd1ec3
--- /dev/null
+++ b/EDK/Foundation/Protocol/NicIp4Config/NicIp4Config.h
@@ -0,0 +1,118 @@
+/*++
+
+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:
+
+ NicIp4Config.h
+
+Abstract:
+
+--*/
+
+#ifndef _NIC_IP4_CONFIG_H_
+#define _NIC_IP4_CONFIG_H_
+
+#include EFI_PROTOCOL_DEFINITION (Ip4Config)
+
+#define EFI_NIC_IP4_CONFIG_PROTOCOL_GUID \
+ {0xdca3d4d, 0x12da, 0x4728, 0xbf, 0x7e, 0x86, 0xce, 0xb9, 0x28, 0xd0, 0x67}
+
+#define EFI_NIC_IP4_CONFIG_VARIABLE_GUID \
+ {0xd8944553, 0xc4dd, 0x41f4, 0x9b, 0x30, 0xe1, 0x39, 0x7c, 0xfb, 0x26, 0x7b}
+
+#define EFI_NIC_IP4_CONFIG_VARIABLE L"EfiNicIp4ConfigVariable"
+
+
+typedef struct _EFI_NIC_IP4_CONFIG_PROTOCOL EFI_NIC_IP4_CONFIG_PROTOCOL;
+
+typedef enum {
+ //
+ // Config source: dhcp or static
+ //
+ IP4_CONFIG_SOURCE_DHCP = 0,
+ IP4_CONFIG_SOURCE_STATIC,
+ IP4_CONFIG_SOURCE_MAX,
+
+ IP4_NIC_NAME_LENGTH = 64,
+ MAX_IP4_CONFIG_IN_VARIABLE = 16,
+};
+
+//
+// The following structures are used by drivers/applications other
+// than EFI_IP4_PROTOCOL, such as ifconfig shell application, to
+// communicate the IP configuration information to EFI_IP4_CONFIG_PROTOCOL.
+// EFI_IP4_CONFIG_PROTOCOL in turn is used by EFI_IP4_PROTOCOL to get
+// the default IP4 configuration. ifconfig can't use the EFI_IP4_PROTOCOL
+// because it don't know how to configure the default IP address even
+// it has got the address.
+//
+// NIC_ADDR contains the interface's type and MAC address to identify
+// a specific NIC. NIC_IP4_CONFIG_INFO contains the IP4 configure
+// parameters for that NIC. IP4_CONFIG_VARIABLE is the EFI variable to
+// save the configuration. NIC_IP4_CONFIG_INFO and IP4_CONFIG_VARIABLE
+// is of variable length.
+//
+// EFI_NIC_IP4_CONFIG_PROTOCOL is a priority protocol, not defined by UEFI2.0
+//
+typedef struct {
+ UINT16 Type;
+ UINT8 Len;
+ EFI_MAC_ADDRESS MacAddr;
+} NIC_ADDR;
+
+typedef struct {
+ NIC_ADDR NicAddr; // Link layer address to identify the NIC
+ UINT32 Source; // Static or DHCP
+ BOOLEAN Perment; // Survive the reboot or not
+ EFI_IP4_IPCONFIG_DATA Ip4Info; // IP addresses
+} NIC_IP4_CONFIG_INFO;
+
+typedef struct {
+ UINT32 Len; // Total length of the variable
+ UINT16 CheckSum; // CheckSum, the same as IP4 head checksum
+ UINT32 Count; // Number of NIC_IP4_CONFIG_INFO follows
+ NIC_IP4_CONFIG_INFO ConfigInfo;
+} IP4_CONFIG_VARIABLE;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_NIC_IP4_CONFIG_GET_INFO) (
+ IN EFI_NIC_IP4_CONFIG_PROTOCOL *This,
+ IN OUT UINTN *Len,
+ OUT NIC_IP4_CONFIG_INFO *NicConfig OPTIONAL
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_NIC_IP4_CONFIG_SET_INFO) (
+ IN EFI_NIC_IP4_CONFIG_PROTOCOL *This,
+ IN NIC_IP4_CONFIG_INFO *NicConfig, OPTIONAL
+ IN BOOLEAN ReConfig
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_NIC_IP4_CONFIG_GET_NAME) (
+ IN EFI_NIC_IP4_CONFIG_PROTOCOL *This,
+ IN UINT16 *Name, OPTIONAL
+ IN NIC_ADDR *NicAddr OPTIONAL
+ );
+
+typedef
+struct _EFI_NIC_IP4_CONFIG_PROTOCOL {
+ EFI_NIC_IP4_CONFIG_GET_NAME GetName;
+ EFI_NIC_IP4_CONFIG_GET_INFO GetInfo;
+ EFI_NIC_IP4_CONFIG_SET_INFO SetInfo;
+};
+
+extern EFI_GUID gEfiNicIp4ConfigVariableGuid;
+extern EFI_GUID gEfiNicIp4ConfigProtocolGuid;
+#endif
diff --git a/EDK/Foundation/Protocol/PciHotPlugRequest/PciHotPlugRequest.c b/EDK/Foundation/Protocol/PciHotPlugRequest/PciHotPlugRequest.c
new file mode 100644
index 0000000..07c41bf
--- /dev/null
+++ b/EDK/Foundation/Protocol/PciHotPlugRequest/PciHotPlugRequest.c
@@ -0,0 +1,27 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ PciHotPlugRequest.c
+
+Abstract:
+
+
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (PciHotPlugRequest)
+
+EFI_GUID gEfiPciHotPlugRequestProtocolGuid = EFI_PCI_HOTPLUG_REQUEST_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiPciHotPlugRequestProtocolGuid, "Pci Hot Plug Request Protocol", "Tiano Hot Plug Request Protocol");
diff --git a/EDK/Foundation/Protocol/PciHotPlugRequest/PciHotPlugRequest.h b/EDK/Foundation/Protocol/PciHotPlugRequest/PciHotPlugRequest.h
new file mode 100644
index 0000000..11b2d66
--- /dev/null
+++ b/EDK/Foundation/Protocol/PciHotPlugRequest/PciHotPlugRequest.h
@@ -0,0 +1,55 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ PciHotPlugRequest.h
+
+Abstract:
+
+
+
+--*/
+
+#ifndef _PCI_HOTPLUG_REQUEST_H_
+#define _PCI_HOTPLUG_REQUEST_H_
+
+#define EFI_PCI_HOTPLUG_REQUEST_PROTOCOL_GUID \
+{0x19cb87ab,0x2cb9,0x4665,0x83,0x60,0xdd,0xcf,0x60,0x54,0xf7,0x9d}
+
+typedef enum {
+ EfiPciHotPlugRequestAdd,
+ EfiPciHotplugRequestRemove
+} EFI_PCI_HOTPLUG_OPERATION;
+
+EFI_FORWARD_DECLARATION (EFI_PCI_HOTPLUG_REQUEST_PROTOCOL);
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_PCI_HOTPLUG_REQUEST_NOTIFY) (
+ IN EFI_PCI_HOTPLUG_REQUEST_PROTOCOL *This,
+ IN EFI_PCI_HOTPLUG_OPERATION Operation,
+ IN EFI_HANDLE Controller,
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL,
+ IN OUT UINT8 *NumberOfChildren,
+ IN OUT EFI_HANDLE *ChildHandleBuffer
+);
+
+
+
+typedef struct _EFI_PCI_HOTPLUG_REQUEST_PROTOCOL {
+ EFI_PCI_HOTPLUG_REQUEST_NOTIFY Notify;
+} EFI_PCI_HOTPLUG_REQUEST_PROTOCOL;
+
+
+extern EFI_GUID gEfiPciHotPlugRequestProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/Performance/Performance.c b/EDK/Foundation/Protocol/Performance/Performance.c
new file mode 100644
index 0000000..faad0ca
--- /dev/null
+++ b/EDK/Foundation/Protocol/Performance/Performance.c
@@ -0,0 +1,27 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ Performance.c
+
+Abstract:
+
+ DXE performance checking infrastructure
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (Performance)
+
+EFI_GUID gEfiPerformanceProtocolGuid = EFI_PERFORMANCE_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiPerformanceProtocolGuid, "Performance Protocol", "Performance Protocol");
diff --git a/EDK/Foundation/Protocol/Performance/Performance.h b/EDK/Foundation/Protocol/Performance/Performance.h
new file mode 100644
index 0000000..0fd5cc9
--- /dev/null
+++ b/EDK/Foundation/Protocol/Performance/Performance.h
@@ -0,0 +1,103 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ Performance.h
+
+Abstract:
+
+
+--*/
+
+#ifndef _EFI_PERFORMANCE_H_
+#define _EFI_PERFORMANCE_H_
+
+#define EFI_PERFORMANCE_PROTOCOL_GUID \
+ { 0xFFECFFFF, 0x923C, 0x14d2, 0x9E, 0x3F, 0x22, 0xA0, 0xC9, 0x69, 0x56, 0x3B }
+
+#define EFI_NULL_GUID \
+ { 0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }
+
+
+EFI_FORWARD_DECLARATION (EFI_PERFORMANCE_PROTOCOL);
+
+#define DXE_TOK L"DXE"
+#define SHELL_TOK L"SHELL"
+#define PEI_TOK L"PEI"
+#define BDS_TOK L"BDS"
+#define DRIVERBINDING_START_TOK L"DriverBinding:Start"
+#define DRIVERBINDING_SUPPORT_TOK L"DriverBinding:Support"
+#define START_IMAGE_TOK L"StartImage"
+#define LOAD_IMAGE_TOK L"LoadImage"
+
+#define DXE_PHASE 0
+#define SHELL_PHASE 1
+#define PEI_PHASE 2
+
+#define EFI_PERF_TOKEN_LENGTH 32
+#define EFI_PERF_HOST_LENGTH 32
+#define EFI_PERF_PDBFILENAME_LENGTH 28
+
+typedef struct {
+ EFI_HANDLE Handle;
+ UINT16 Token[EFI_PERF_TOKEN_LENGTH];
+ UINT16 Host[EFI_PERF_HOST_LENGTH];
+ UINT64 StartTick;
+ UINT64 EndTick;
+ EFI_GUID GuidName;
+ UINT8 PdbFileName[EFI_PERF_PDBFILENAME_LENGTH];
+ UINT8 Phase;
+} EFI_GAUGE_DATA ;
+
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_PERF_START_GAUGE) (
+ IN EFI_PERFORMANCE_PROTOCOL *This,
+ IN EFI_HANDLE Handle,
+ IN UINT16 *Token,
+ IN UINT16 *Host,
+ IN UINT64 Ticker
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_PERF_END_GAUGE) (
+ IN EFI_PERFORMANCE_PROTOCOL *This,
+ IN EFI_HANDLE Handle,
+ IN UINT16 *Token,
+ IN UINT16 *Host,
+ IN UINT64 Ticker
+ );
+
+
+typedef
+EFI_GAUGE_DATA *
+(EFIAPI * EFI_PERF_GET_GAUGE) (
+ IN EFI_PERFORMANCE_PROTOCOL *This,
+ IN EFI_HANDLE Handle,
+ IN UINT16 *Token,
+ IN UINT16 *Host,
+ IN EFI_GAUGE_DATA *PrevGauge
+ );
+
+
+typedef struct _EFI_PERFORMANCE_PROTOCOL{
+ EFI_PERF_START_GAUGE StartGauge;
+ EFI_PERF_END_GAUGE EndGauge;
+ EFI_PERF_GET_GAUGE GetGauge;
+} EFI_PERFORMANCE_PROTOCOL;
+
+extern EFI_GUID gEfiPerformanceProtocolGuid;
+
+#endif
+
diff --git a/EDK/Foundation/Protocol/PlatformMemTest/PlatformMemTest.c b/EDK/Foundation/Protocol/PlatformMemTest/PlatformMemTest.c
new file mode 100644
index 0000000..7789c37
--- /dev/null
+++ b/EDK/Foundation/Protocol/PlatformMemTest/PlatformMemTest.c
@@ -0,0 +1,30 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ PlatformMemTest.c
+
+Abstract:
+
+ // TBD defined in the Tiano specification??
+
+ The Platform memory test protocol is used to provide platform specific
+ information and functionality for memory test
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (PlatformMemTest)
+
+EFI_GUID gEfiPlatformMemTestGuid = EFI_PLATFORM_MEMTEST_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiPlatformMemTestGuid, "Platform Memory Test Protocol", "Platform MemTest protocol");
diff --git a/EDK/Foundation/Protocol/PlatformMemTest/PlatformMemTest.h b/EDK/Foundation/Protocol/PlatformMemTest/PlatformMemTest.h
new file mode 100644
index 0000000..d2270e9
--- /dev/null
+++ b/EDK/Foundation/Protocol/PlatformMemTest/PlatformMemTest.h
@@ -0,0 +1,261 @@
+
+ /*++
+
+Copyright (c) 2004 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ PlatformMemtest.h
+
+Abstract:
+ This files defines the protocol produced by platform memory test driver.
+
+--*/
+
+#ifndef __PLATFORM_MEMTEST_H__
+#define __PLATFORM_MEMTEST_H__
+
+#if (EFI_SPECIFICATION_VERSION >= 0x0002000A)
+#include EFI_PROTOCOL_CONSUMER (HiiDatabase)
+#else
+#include EFI_PROTOCOL_CONSUMER (Hii)
+#endif
+#include EFI_PROTOCOL_CONSUMER (GenericMemoryTest)
+
+
+#define EFI_PLATFORM_MEMTEST_PROTOCOL_GUID \
+ { 0x859ba18, 0x7dd7, 0x4ed7, 0xa8, 0x8e, 0x10, 0x9c, 0x63, 0x91, 0x7b, 0xdd }
+
+//
+// Forward reference for pure ANSI compatability
+//
+EFI_FORWARD_DECLARATION (EFI_PLATFORM_MEMTEST_PROTOCOL);
+
+
+//
+// Basic type definitions
+//
+typedef UINT16 EFI_DIMM_ID;
+#define EFI_INVALID_DIMM_ID 0xFFFF
+
+//
+// This describes the capabilities
+//
+typedef struct {
+ UINT32 HwCap;
+ EFI_PHYSICAL_ADDRESS InitBlockSize;
+ EFI_PHYSICAL_ADDRESS TestBlockSize;
+} EFI_PLATFORM_MEMTEST_CAPABILITIES;
+
+//
+// This defines the platform driver phases to use in notify phase
+//
+typedef enum {
+ EfiMemtestPhaseBegin,
+ EfiMemtestPhaseEnd,
+ EfiMemtestPhaseMaximum
+} EFI_MEMTEST_PHASE ;
+
+
+//
+// Definitions of Capability bits
+//
+#define EFI_MEMTEST_CAP_NONE 0X00000000
+#define EFI_MEMTEST_CAP_ECC 0X00000001
+#define EFI_MEMTEST_CAP_HW_TEST 0X00000002
+#define EFI_MEMTEST_CAP_HW_INIT 0X00000004
+
+//
+// This describes the pattern for testing all memory cells
+//
+typedef struct {
+ UINT32 Count; // Number of patterns
+ UINT32 Width; // Width of patterns
+ VOID *Pattern; // Array of patterns
+}EFI_MEMTEST_DATA_PATTERN;
+
+//
+// This describes the data and address line patterns
+//
+typedef struct {
+ UINT32 Count; // Number of patterns
+ EFI_PHYSICAL_ADDRESS *Address; // Array of addresses
+ EFI_PHYSICAL_ADDRESS *Pattern; // Array of patterns
+} EFI_MEMTEST_ADDRESS_PATTERN;
+
+
+#define EFI_INVALID_DIMM_ID 0xFFFF
+
+//
+// DIMM information exported by the platform driver
+//
+
+typedef struct {
+ EFI_DIMM_ID DimmId;
+ STRING_REF DimmReference;
+} EFI_MEMTEST_DIMM_INFO;
+
+
+//
+// Various types of errors
+//
+typedef enum {
+ EfiMemtestCorrectableError = 1,
+ EfiMemtestUncorrectableError,
+ EfiMemtestErrorMaximum,
+} EFI_DIMM_ERROR;
+
+//
+// Actions to be taken.
+//
+typedef enum {
+ EfiMemtestActionReport = 1,
+ EfiMemtestActionDisableMem,
+ EfiMemtestActionMaximum,
+} EFI_MEMTEST_ERROR_ACTION;
+
+
+//
+// Structure indicating a policy entry.
+//
+
+typedef struct {
+ EFI_DIMM_ERROR ErrorType;
+ UINT32 Threshold;
+ EFI_MEMTEST_ERROR_ACTION Action;
+} EFI_MEMTEST_POLICY_ENTRY;
+
+
+
+//
+// Error Information.
+//
+typedef struct {
+ EFI_DIMM_ERROR Error;
+ EFI_DIMM_ID DimmId;
+} EFI_PLATFORM_MEMTEST_ERROR;
+
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_PLATFORM_MEMTEST_NOTIFY_PHASE) (
+ IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,
+ IN EFI_MEMTEST_PHASE Phase
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_PLATFORM_MEMTEST_GET_PLATFORM_INFO) (
+ IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,
+ OUT EFI_PLATFORM_MEMTEST_CAPABILITIES *Capabilities,
+ OUT EFI_MEMTEST_ADDRESS_PATTERN *AddressPattern,
+ OUT EFI_MEMTEST_DATA_PATTERN *DataPattern,
+ OUT EFI_MEMTEST_DATA_PATTERN *MemoryPattern,
+ OUT UINT32 *EntryCount,
+ OUT EFI_MEMTEST_POLICY_ENTRY **PolicyGrid
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_PLATFORM_MEMTEST_GET_NEXT_DIMM_INFO) (
+ IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,
+ IN OUT EFI_MEMTEST_DIMM_INFO *DimmInfo
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_PLATFORM_MEMTEST_INITIALIZE_MEMORY) (
+ IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,
+ IN EFI_PHYSICAL_ADDRESS Start,
+ IN EFI_PHYSICAL_ADDRESS Size
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_PLATFORM_MEMTEST_HW_MEMORY_TEST) (
+ IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,
+ IN EXTENDMEM_COVERAGE_LEVEL Level,
+ IN EFI_PHYSICAL_ADDRESS Start,
+ IN EFI_PHYSICAL_ADDRESS Size,
+ OUT UINTN *ErrorCount,
+ OUT EFI_PLATFORM_MEMTEST_ERROR **ErrorInfo
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_PLATFORM_MEMTEST_FLUSH_BUFFER) (
+ IN EFI_PLATFORM_MEMTEST_PROTOCOL *This
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_PLATFORM_MEMTEST_CHECK_FOR_ERROR) (
+ IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,
+ OUT UINT32 *ErrorCount,
+ OUT EFI_PLATFORM_MEMTEST_ERROR **ErrorInfo
+
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_PLATFORM_MEMTEST_LOCATE_BAD_DIMM) (
+ IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,
+ IN EFI_PHYSICAL_ADDRESS FailingAddress,
+ IN UINT8 Expected,
+ IN UINT8 Found,
+ OUT UINT32 *ErrorInfoCount,
+ OUT EFI_PLATFORM_MEMTEST_ERROR **ErrorInfoBuffer
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_PLATFORM_MEMTEST_CLEAR_ERROR) (
+ IN EFI_PLATFORM_MEMTEST_PROTOCOL *This
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_PLATFORM_MEMTEST_DISABLE_DIMM) (
+ IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,
+ IN UINT16 *DimmCount,
+ IN EFI_DIMM_ID *DimmIds,
+ IN BOOLEAN RebootRequired
+
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI * EFI_PLATFORM_MEMTEST_OVERLAP) (
+ IN EFI_PLATFORM_MEMTEST_PROTOCOL *This,
+ IN EFI_DIMM_ID DimmId,
+ IN EFI_PHYSICAL_ADDRESS start,
+ IN EFI_PHYSICAL_ADDRESS Size,
+ OUT BOOLEAN *Overlap
+ );
+
+typedef struct _EFI_PLATFORM_MEMTEST_PROTOCOL {
+ EFI_PLATFORM_MEMTEST_NOTIFY_PHASE NotifyPhase;
+ EFI_PLATFORM_MEMTEST_GET_PLATFORM_INFO GetPlatformInfo;
+ EFI_PLATFORM_MEMTEST_GET_NEXT_DIMM_INFO GetNextDimmInfo;
+ EFI_PLATFORM_MEMTEST_INITIALIZE_MEMORY InitializeMem;
+ EFI_PLATFORM_MEMTEST_HW_MEMORY_TEST HwTest;
+ EFI_PLATFORM_MEMTEST_FLUSH_BUFFER FlushBuffer;
+ EFI_PLATFORM_MEMTEST_CHECK_FOR_ERROR CheckError;
+ EFI_PLATFORM_MEMTEST_LOCATE_BAD_DIMM LocateBadDimm;
+ EFI_PLATFORM_MEMTEST_CLEAR_ERROR ClearError;
+ EFI_PLATFORM_MEMTEST_DISABLE_DIMM DisableDimm;
+ EFI_PLATFORM_MEMTEST_OVERLAP Overlap;
+} EFI_PLATFORM_MEMTEST_PROTOCOL;
+
+
+
+extern EFI_GUID gEfiPlatformMemTestGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/Print/Print.c b/EDK/Foundation/Protocol/Print/Print.c
new file mode 100644
index 0000000..d3caecf
--- /dev/null
+++ b/EDK/Foundation/Protocol/Print/Print.c
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ Print.c
+
+Abstract:
+
+ This file defines the Print protocol interface to provide a unified
+ print function
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (Print)
+
+EFI_GUID gEfiPrintProtocolGuid = EFI_PRINT_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiPrintProtocolGuid, "Print Protocol", "Print 1.0 protocol");
+
diff --git a/EDK/Foundation/Protocol/Print/Print.h b/EDK/Foundation/Protocol/Print/Print.h
new file mode 100644
index 0000000..094591f
--- /dev/null
+++ b/EDK/Foundation/Protocol/Print/Print.h
@@ -0,0 +1,51 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ 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
+//
+EFI_FORWARD_DECLARATION (EFI_PRINT_PROTOCOL);
+
+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
+ );
+
+typedef struct _EFI_PRINT_PROTOCOL {
+ EFI_VSPRINT VSPrint;
+} EFI_PRINT_PROTOCOL;
+
+
+extern EFI_GUID gEfiPrintProtocolGuid;
+
+#endif \ No newline at end of file
diff --git a/EDK/Foundation/Protocol/Ps2Policy/Ps2Policy.c b/EDK/Foundation/Protocol/Ps2Policy/Ps2Policy.c
new file mode 100644
index 0000000..cb49b7f
--- /dev/null
+++ b/EDK/Foundation/Protocol/Ps2Policy/Ps2Policy.c
@@ -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:
+
+ Ps2Policy.c
+
+Abstract:
+
+ Protocol used for PS/2 Policy definition.
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (Ps2Policy)
+
+EFI_GUID gEfiPs2PolicyProtocolGuid = EFI_PS2_POLICY_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiPs2PolicyProtocolGuid, "PS2 Policy", "Policy for Configuring PS2");
diff --git a/EDK/Foundation/Protocol/Ps2Policy/Ps2Policy.h b/EDK/Foundation/Protocol/Ps2Policy/Ps2Policy.h
new file mode 100644
index 0000000..89ce6bf
--- /dev/null
+++ b/EDK/Foundation/Protocol/Ps2Policy/Ps2Policy.h
@@ -0,0 +1,50 @@
+/*++
+
+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:
+
+ Ps2Policy.h
+
+Abstract:
+
+ Protocol used for PS/2 Policy definition.
+
+--*/
+
+#ifndef _PS2_POLICY_PROTOCOL_H_
+#define _PS2_POLICY_PROTOCOL_H_
+
+EFI_FORWARD_DECLARATION (EFI_PS2_POLICY_PROTOCOL);
+
+#define EFI_PS2_POLICY_PROTOCOL_GUID \
+ { \
+ 0x4df19259, 0xdc71, 0x4d46, 0xbe, 0xf1, 0x35, 0x7b, 0xb5, 0x78, 0xc4, 0x18 \
+ }
+
+#define EFI_KEYBOARD_CAPSLOCK 0x0004
+#define EFI_KEYBOARD_NUMLOCK 0x0002
+#define EFI_KEYBOARD_SCROLLLOCK 0x0001
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_PS2_INIT_HARDWARE) (
+ IN EFI_HANDLE Handle
+ );
+
+typedef struct _EFI_PS2_POLICY_PROTOCOL {
+ UINT8 KeyboardLight;
+ EFI_PS2_INIT_HARDWARE Ps2InitHardware;
+} EFI_PS2_POLICY_PROTOCOL;
+
+extern EFI_GUID gEfiPs2PolicyProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/PxeDhcp4/PxeDhcp4.c b/EDK/Foundation/Protocol/PxeDhcp4/PxeDhcp4.c
new file mode 100644
index 0000000..d5befac
--- /dev/null
+++ b/EDK/Foundation/Protocol/PxeDhcp4/PxeDhcp4.c
@@ -0,0 +1,28 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+ PxeDhcp4.c
+
+Abstract:
+ PxeDhcp4 GUID declaration
+
+--*/
+
+#include "Tiano.h"
+
+#include EFI_PROTOCOL_DEFINITION (PxeDhcp4)
+
+EFI_GUID gEfiPxeDhcp4ProtocolGuid = EFI_PXE_DHCP4_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiPxeDhcp4ProtocolGuid, "PXE DHCP4 Protocol", "PXE DHCPv4 Protocol");
+
+/* EOF - PxeDhcp4.c */
diff --git a/EDK/Foundation/Protocol/PxeDhcp4/PxeDhcp4.h b/EDK/Foundation/Protocol/PxeDhcp4/PxeDhcp4.h
new file mode 100644
index 0000000..f1ecf42
--- /dev/null
+++ b/EDK/Foundation/Protocol/PxeDhcp4/PxeDhcp4.h
@@ -0,0 +1,350 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+ PxeDhcp4.h
+
+Abstract:
+ EFI PXE DHCPv4 protocol definition
+
+--*/
+
+#ifndef _PXEDHCP4_H_
+#define _PXEDHCP4_H_
+
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+//
+// PXE DHCPv4 GUID definition
+//
+
+#define EFI_PXE_DHCP4_PROTOCOL_GUID \
+ { 0x03c4e624, 0xac28, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x29, 0x3f, 0xc1, 0x4d }
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+//
+// Interface definition
+//
+
+EFI_FORWARD_DECLARATION (EFI_PXE_DHCP4_PROTOCOL);
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+//
+// Descriptions of the DHCP version 4 header and options can be found
+// in RFC-2131 and RFC-2132 at www.ietf.org
+//
+
+#pragma pack(1)
+typedef struct {
+
+ UINT8 op;
+#define BOOTP_REQUEST 1
+#define BOOTP_REPLY 2
+
+ UINT8 htype;
+
+ UINT8 hlen;
+
+ UINT8 hops;
+
+ UINT32 xid;
+
+ UINT16 secs;
+#define DHCP4_INITIAL_SECONDS 4
+
+ UINT16 flags;
+#define DHCP4_BROADCAST_FLAG 0x8000
+
+ UINT32 ciaddr;
+
+ UINT32 yiaddr;
+
+ UINT32 siaddr;
+
+ UINT32 giaddr;
+
+ UINT8 chaddr[16];
+
+ UINT8 sname[64];
+
+ UINT8 fname[128];
+
+//
+// This is the minimum option length as specified in RFC-2131.
+// The packet must be padded out this far with DHCP4_PAD.
+// DHCPv4 packets are usually 576 bytes in length. This length
+// includes the IPv4 and UDPv4 headers but not the media header.
+// Note: Not all DHCP relay agents will forward DHCPv4 packets
+// if they are less than 384 bytes or exceed 576 bytes. Even if
+// the underlying hardware can handle smaller and larger packets,
+// many older relay agents will not accept them.
+//
+ UINT32 magik;
+#define DHCP4_MAGIK_NUMBER 0x63825363
+
+ UINT8 options[308];
+
+} DHCP4_HEADER;
+#pragma pack()
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+//
+// DHCPv4 packet definition. Room for 576 bytes including IP and
+// UDP header.
+//
+
+#define DHCP4_MAX_PACKET_SIZE 576
+#define DHCP4_UDP_HEADER_SIZE 8
+#define DHCP4_IP_HEADER_SIZE 20
+
+#pragma pack(1)
+typedef union _DHCP4_PACKET {
+ UINT32 _force_data_alignment;
+
+ UINT8 raw[1500];
+
+ DHCP4_HEADER dhcp4;
+} DHCP4_PACKET;
+#pragma pack()
+
+#define DHCP4_SERVER_PORT 67
+#define DHCP4_CLIENT_PORT 68
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+//
+// DHCPv4 and PXE option numbers.
+//
+
+#define DHCP4_PAD 0
+#define DHCP4_END 255
+#define DHCP4_SUBNET_MASK 1
+#define DHCP4_TIME_OFFSET 2
+#define DHCP4_ROUTER_LIST 3
+#define DHCP4_TIME_SERVERS 4
+#define DHCP4_NAME_SERVERS 5
+#define DHCP4_DNS_SERVERS 6
+#define DHCP4_LOG_SERVERS 7
+#define DHCP4_COOKIE_SERVERS 8
+#define DHCP4_LPR_SREVERS 9
+#define DHCP4_IMPRESS_SERVERS 10
+#define DHCP4_RESOURCE_LOCATION_SERVERS 11
+#define DHCP4_HOST_NAME 12
+#define DHCP4_BOOT_FILE_SIZE 13
+#define DHCP4_DUMP_FILE 14
+#define DHCP4_DOMAIN_NAME 15
+#define DHCP4_SWAP_SERVER 16
+#define DHCP4_ROOT_PATH 17
+#define DHCP4_EXTENSION_PATH 18
+#define DHCP4_IP_FORWARDING 19
+#define DHCP4_NON_LOCAL_SOURCE_ROUTE 20
+#define DHCP4_POLICY_FILTER 21
+#define DHCP4_MAX_DATAGRAM_SIZE 22
+#define DHCP4_DEFAULT_TTL 23
+#define DHCP4_MTU_AGING_TIMEOUT 24
+#define DHCP4_MTU_SIZES 25
+#define DHCP4_MTU_TO_USE 26
+#define DHCP4_ALL_SUBNETS_LOCAL 27
+#define DHCP4_BROADCAST_ADDRESS 28
+#define DHCP4_PERFORM_MASK_DISCOVERY 29
+#define DHCP4_RESPOND_TO_MASK_REQ 30
+#define DHCP4_PERFORM_ROUTER_DISCOVERY 31
+#define DHCP4_ROUTER_SOLICIT_ADDRESS 32
+#define DHCP4_STATIC_ROUTER_LIST 33
+#define DHCP4_USE_ARP_TRAILERS 34
+#define DHCP4_ARP_CACHE_TIMEOUT 35
+#define DHCP4_ETHERNET_ENCAPSULATION 36
+#define DHCP4_TCP_DEFAULT_TTL 37
+#define DHCP4_TCP_KEEP_ALIVE_INT 38
+#define DHCP4_KEEP_ALIVE_GARBAGE 39
+#define DHCP4_NIS_DOMAIN_NAME 40
+#define DHCP4_NIS_SERVERS 41
+#define DHCP4_NTP_SERVERS 42
+#define DHCP4_VENDOR_SPECIFIC 43
+# define PXE_MTFTP_IP 1
+# define PXE_MTFTP_CPORT 2
+# define PXE_MTFTP_SPORT 3
+# define PXE_MTFTP_TMOUT 4
+# define PXE_MTFTP_DELAY 5
+# define PXE_DISCOVERY_CONTROL 6
+# define PXE_DISABLE_BROADCAST_DISCOVERY 0x01
+# define PXE_DISABLE_MULTICAST_DISCOVERY 0x02
+# define PXE_ACCEPT_ONLY_PXE_BOOT_SERVERS 0x04
+# define PXE_DO_NOT_PROMPT 0x08
+# define PXE_DISCOVERY_MCAST_ADDR 7
+# define PXE_BOOT_SERVERS 8
+# define PXE_BOOT_MENU 9
+# define PXE_BOOT_PROMPT 10
+# define PXE_MCAST_ADDRS_ALLOC 11
+# define PXE_CREDENTIAL_TYPES 12
+# define PXE_BOOT_ITEM 71
+#define DHCP4_NBNS_SERVERS 44
+#define DHCP4_NBDD_SERVERS 45
+#define DHCP4_NETBIOS_NODE_TYPE 46
+#define DHCP4_NETBIOS_SCOPE 47
+#define DHCP4_XWINDOW_SYSTEM_FONT_SERVERS 48
+#define DHCP4_XWINDOW_SYSTEM_DISPLAY_MANAGERS 49
+#define DHCP4_REQUESTED_IP_ADDRESS 50
+#define DHCP4_LEASE_TIME 51
+#define DHCP4_OPTION_OVERLOAD 52
+# define DHCP4_OVERLOAD_FNAME 1
+# define DHCP4_OVERLOAD_SNAME 2
+# define DHCP4_OVERLOAD_FNAME_AND_SNAME 3
+#define DHCP4_MESSAGE_TYPE 53
+# define DHCP4_MESSAGE_TYPE_DISCOVER 1
+# define DHCP4_MESSAGE_TYPE_OFFER 2
+# define DHCP4_MESSAGE_TYPE_REQUEST 3
+# define DHCP4_MESSAGE_TYPE_DECLINE 4
+# define DHCP4_MESSAGE_TYPE_ACK 5
+# define DHCP4_MESSAGE_TYPE_NAK 6
+# define DHCP4_MESSAGE_TYPE_RELEASE 7
+# define DHCP4_MESSAGE_TYPE_INFORM 8
+#define DHCP4_SERVER_IDENTIFIER 54
+#define DHCP4_PARAMETER_REQUEST_LIST 55
+#define DHCP4_ERROR_MESSAGE 56
+#define DHCP4_MAX_MESSAGE_SIZE 57
+# define DHCP4_DEFAULT_MAX_MESSAGE_SIZE 576
+#define DHCP4_RENEWAL_TIME 58
+#define DHCP4_REBINDING_TIME 59
+#define DHCP4_CLASS_IDENTIFIER 60
+#define DHCP4_CLIENT_IDENTIFIER 61
+#define DHCP4_NISPLUS_DOMAIN_NAME 64
+#define DHCP4_NISPLUS_SERVERS 65
+#define DHCP4_TFTP_SERVER_NAME 66
+#define DHCP4_BOOTFILE 67
+#define DHCP4_MOBILE_IP_HOME_AGENTS 68
+#define DHCP4_SMPT_SERVERS 69
+#define DHCP4_POP3_SERVERS 70
+#define DHCP4_NNTP_SERVERS 71
+#define DHCP4_WWW_SERVERS 72
+#define DHCP4_FINGER_SERVERS 73
+#define DHCP4_IRC_SERVERS 74
+#define DHCP4_STREET_TALK_SERVERS 75
+#define DHCP4_STREET_TALK_DIR_ASSIST_SERVERS 76
+#define DHCP4_NDS_SERVERS 85
+#define DHCP4_NDS_TREE_NAME 86
+#define DHCP4_NDS_CONTEXT 87
+#define DHCP4_SYSTEM_ARCHITECTURE 93
+#define DHCP4_NETWORK_ARCHITECTURE 94
+#define DHCP4_PLATFORM_ID 97
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+//
+// DHCP4 option format.
+//
+
+#pragma pack(1)
+typedef struct {
+ UINT8 op;
+ UINT8 len;
+ UINT8 data[1];
+} DHCP4_OP;
+#pragma pack()
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+typedef struct {
+ DHCP4_PACKET Discover;
+ DHCP4_PACKET Offer;
+ DHCP4_PACKET Request;
+ DHCP4_PACKET AckNak;
+ BOOLEAN SetupCompleted;
+ BOOLEAN InitCompleted;
+ BOOLEAN SelectCompleted;
+ BOOLEAN IsBootp;
+ BOOLEAN IsAck;
+} EFI_PXE_DHCP4_DATA;
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+typedef
+EFI_STATUS
+(EFIAPI *EFI_PXE_DHCP4_RUN) (
+ IN EFI_PXE_DHCP4_PROTOCOL *This,
+ IN OPTIONAL UINTN OpLen,
+ IN OPTIONAL VOID *OpList
+ );
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+typedef
+EFI_STATUS
+(EFIAPI *EFI_PXE_DHCP4_SETUP) (
+ IN EFI_PXE_DHCP4_PROTOCOL *This,
+ IN OPTIONAL EFI_PXE_DHCP4_DATA * NewData
+ );
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+typedef
+EFI_STATUS
+(EFIAPI *EFI_PXE_DHCP4_INIT) (
+ IN EFI_PXE_DHCP4_PROTOCOL *This,
+ IN UINTN SecondsTimeout,
+ OUT UINTN *Offers,
+ OUT DHCP4_PACKET **OfferList
+ );
+
+#define DHCP4_MIN_SECONDS 1
+#define DHCP4_MAX_SECONDS 60
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+typedef
+EFI_STATUS
+(EFIAPI *EFI_PXE_DHCP4_SELECT) (
+ IN EFI_PXE_DHCP4_PROTOCOL *This,
+ IN UINTN SecondsTimeout,
+ IN DHCP4_PACKET * offer
+ );
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+typedef
+EFI_STATUS
+(EFIAPI *EFI_PXE_DHCP4_RENEW) (
+ IN EFI_PXE_DHCP4_PROTOCOL *This,
+ UINTN seconds_timeout
+ );
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+typedef
+EFI_STATUS
+(EFIAPI *EFI_PXE_DHCP4_REBIND) (
+ IN EFI_PXE_DHCP4_PROTOCOL *This,
+ UINTN seconds_timeout
+ );
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+typedef
+EFI_STATUS
+(EFIAPI *EFI_PXE_DHCP4_RELEASE) (
+ IN EFI_PXE_DHCP4_PROTOCOL * This
+ );
+
+/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
+
+#define EFI_PXE_DHCP4_PROTOCOL_REVISION 0x00010000
+
+typedef struct _EFI_PXE_DHCP4_PROTOCOL {
+ UINT64 Revision;
+ EFI_PXE_DHCP4_RUN Run;
+ EFI_PXE_DHCP4_SETUP Setup;
+ EFI_PXE_DHCP4_INIT Init;
+ EFI_PXE_DHCP4_SELECT Select;
+ EFI_PXE_DHCP4_RENEW Renew;
+ EFI_PXE_DHCP4_REBIND Rebind;
+ EFI_PXE_DHCP4_RELEASE Release;
+ EFI_PXE_DHCP4_DATA *Data;
+} EFI_PXE_DHCP4_PROTOCOL;
+
+//
+//
+//
+
+extern EFI_GUID gEfiPxeDhcp4ProtocolGuid;
+
+#endif /* _PXEDHCP4_H_ */
+/* EOF - PxeDhcp4.h */
diff --git a/EDK/Foundation/Protocol/PxeDhcp4Callback/PxeDhcp4CallBack.c b/EDK/Foundation/Protocol/PxeDhcp4Callback/PxeDhcp4CallBack.c
new file mode 100644
index 0000000..309b91d
--- /dev/null
+++ b/EDK/Foundation/Protocol/PxeDhcp4Callback/PxeDhcp4CallBack.c
@@ -0,0 +1,28 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+ PxeDhcp4Callback.c
+
+Abstract:
+ PxeDhcp4Callback protocol GUID definition.
+
+--*/
+
+#include "Tiano.h"
+
+#include EFI_PROTOCOL_DEFINITION (PxeDhcp4CallBack)
+
+EFI_GUID gEfiPxeDhcp4CallbackProtocolGuid = EFI_PXE_DHCP4_CALLBACK_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiPxeDhcp4CallbackProtocolGuid, "PXE DHCP4 Callback Protocol", "PXE DHCP IPv4 Callback Protocol");
+
+/* EOF - PxeDhcp4Callback.c */
diff --git a/EDK/Foundation/Protocol/PxeDhcp4Callback/PxeDhcp4CallBack.h b/EDK/Foundation/Protocol/PxeDhcp4Callback/PxeDhcp4CallBack.h
new file mode 100644
index 0000000..8df6026
--- /dev/null
+++ b/EDK/Foundation/Protocol/PxeDhcp4Callback/PxeDhcp4CallBack.h
@@ -0,0 +1,86 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+ PxeDhcp4Callback.h
+
+Abstract:
+ EFI PXE DHCP4 Callback protocol definition.
+
+--*/
+
+#ifndef _PXE_DHCP4CALLBACK_H
+#define _PXE_DHCP4CALLBACK_H
+
+#include "..\PxeDhcp4\PxeDhcp4.h"
+
+//
+// GUID definition
+//
+
+#define EFI_PXE_DHCP4_CALLBACK_PROTOCOL_GUID \
+{ 0xc1544c01, 0x92a4, 0x4198, 0x8a, 0x84, 0x77, 0x85, 0x83, 0xc2, 0x36, 0x21 }
+
+
+//
+// Revision number
+//
+
+#define EFI_PXE_DHCP4_CALLBACK_INTERFACE_REVISION 0x00010000
+
+//
+// Interface definition
+//
+
+EFI_FORWARD_DECLARATION (EFI_PXE_DHCP4_CALLBACK_PROTOCOL);
+
+typedef enum {
+ EFI_PXE_DHCP4_FUNCTION_FIRST,
+ EFI_PXE_DHCP4_FUNCTION_INIT,
+ EFI_PXE_DHCP4_FUNCTION_SELECT,
+ EFI_PXE_DHCP4_FUNCTION_RENEW,
+ EFI_PXE_DHCP4_FUNCTION_REBIND,
+ EFI_PXE_DHCP4_FUNCTION_LAST
+} EFI_PXE_DHCP4_FUNCTION;
+
+typedef enum {
+ EFI_PXE_DHCP4_CALLBACK_STATUS_FIRST,
+ EFI_PXE_DHCP4_CALLBACK_STATUS_ABORT,
+ EFI_PXE_DHCP4_CALLBACK_STATUS_IGNORE_ABORT,
+ EFI_PXE_DHCP4_CALLBACK_STATUS_KEEP_ABORT,
+ EFI_PXE_DHCP4_CALLBACK_STATUS_CONTINUE,
+ EFI_PXE_DHCP4_CALLBACK_STATUS_IGNORE_CONTINUE,
+ EFI_PXE_DHCP4_CALLBACK_STATUS_KEEP_CONTINUE,
+ EFI_PXE_DHCP4_CALLBACK_STATUS_LAST
+} EFI_PXE_DHCP4_CALLBACK_STATUS;
+
+typedef
+EFI_PXE_DHCP4_CALLBACK_STATUS
+(EFIAPI *EFI_PXE_DHCP4_CALLBACK) (
+ IN EFI_PXE_DHCP4_PROTOCOL *This,
+ IN EFI_PXE_DHCP4_FUNCTION Function,
+ IN UINT32 PacketLen,
+ IN DHCP4_PACKET *Packet OPTIONAL
+ );
+
+typedef struct _EFI_PXE_DHCP4_CALLBACK_PROTOCOL {
+ UINT64 Revision;
+ EFI_PXE_DHCP4_CALLBACK Callback;
+} EFI_PXE_DHCP4_CALLBACK_PROTOCOL;
+
+//
+// GUID declaration
+//
+
+extern EFI_GUID gEfiPxeDhcp4CallbackProtocolGuid;
+
+#endif /* _PXE_DHCP4CALLBACK_H */
+/* EOF - PxeDhcp4Callback.h */
diff --git a/EDK/Foundation/Protocol/TcgService/TcgService.c b/EDK/Foundation/Protocol/TcgService/TcgService.c
new file mode 100644
index 0000000..71fae5a
--- /dev/null
+++ b/EDK/Foundation/Protocol/TcgService/TcgService.c
@@ -0,0 +1,31 @@
+/*++
+
+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:
+
+ TcgService.c
+
+Abstract:
+
+ TcgService Protocol GUID as defined in TCG_EFI_Protocol_1_20_Final
+
+ See http://trustedcomputinggroup.org for the latest specification
+
+--*/
+
+#include "Tiano.h"
+
+#include EFI_PROTOCOL_DEFINITION(TcgService)
+
+EFI_GUID gEfiTcgProtocolGuid = EFI_TCG_PROTOCOL_GUID;
+EFI_GUID gEfiTcgPlatformProtocolGuid = EFI_TCG_PLATFORM_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiTcgServiceProtocolGuid, "TcgService", "TCG Services Protocol");
diff --git a/EDK/Foundation/Protocol/TcgService/TcgService.h b/EDK/Foundation/Protocol/TcgService/TcgService.h
new file mode 100644
index 0000000..e03342d
--- /dev/null
+++ b/EDK/Foundation/Protocol/TcgService/TcgService.h
@@ -0,0 +1,177 @@
+/*++
+
+Copyright (c) 2006 - 2009, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ TcgService.h
+
+Abstract:
+
+ TCG Service Protocol as defined in TCG_EFI_Protocol_1_20_Final
+
+ See http://trustedcomputinggroup.org for the latest specification
+
+--*/
+
+#ifndef _TCG_SERVICE_PROTOCOL_H_
+#define _TCG_SERVICE_PROTOCOL_H_
+
+#include "EfiTpm.h"
+
+#define EFI_TCG_PROTOCOL_GUID \
+ {0xf541796d, 0xa62e, 0x4954, 0xa7, 0x75, 0x95, 0x84, 0xf6, 0x1b, 0x9c, 0xdd}
+
+#define EFI_TCG_PLATFORM_PROTOCOL_GUID \
+ { 0x8c4c9a41, 0xbf56, 0x4627, 0x9e, 0xa, 0xc8, 0x38, 0x6d, 0x66, 0x11, 0x5c }
+
+#define TSS_EVENT_DATA_MAX_SIZE 256
+
+#define EFI_CALLING_EFI_APPLICATION \
+ "Calling EFI Application from Boot Option"
+#define EFI_RETURNING_FROM_EFI_APPLICATOIN \
+ "Returning from EFI Application from Boot Option"
+#define EFI_EXIT_BOOT_SERVICES_INVOCATION \
+ "Exit Boot Services Invocation"
+#define EFI_EXIT_BOOT_SERVICES_FAILED \
+ "Exit Boot Services Returned with Failure"
+#define EFI_EXIT_BOOT_SERVICES_SUCCEEDED \
+ "Exit Boot Services Returned with Success"
+
+EFI_FORWARD_DECLARATION (EFI_TCG_PROTOCOL);
+
+//
+// Set structure alignment to 1-byte
+//
+#pragma pack (push, 1)
+
+typedef struct {
+ UINT8 Major;
+ UINT8 Minor;
+ UINT8 RevMajor;
+ UINT8 RevMinor;
+} TCG_VERSION;
+
+typedef struct _TCG_EFI_BOOT_SERVICE_CAPABILITY {
+ UINT8 Size; // Size of this structure
+ TCG_VERSION StructureVersion;
+ TCG_VERSION ProtocolSpecVersion;
+ UINT8 HashAlgorithmBitmap; // Hash algorithms
+ // this protocol is capable of : 01=SHA-1
+ BOOLEAN TPMPresentFlag; // 00h = TPM not present
+ BOOLEAN TPMDeactivatedFlag; // 01h = TPM currently deactivated
+} TCG_EFI_BOOT_SERVICE_CAPABILITY;
+
+typedef UINT32 TCG_ALGORITHM_ID;
+
+//
+// Restore original structure alignment
+//
+#pragma pack (pop)
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TCG_STATUS_CHECK) (
+ IN EFI_TCG_PROTOCOL *This,
+ OUT TCG_EFI_BOOT_SERVICE_CAPABILITY
+ *ProtocolCapability,
+ OUT UINT32 *TCGFeatureFlags,
+ OUT EFI_PHYSICAL_ADDRESS *EventLogLocation,
+ OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TCG_HASH_ALL) (
+ IN EFI_TCG_PROTOCOL *This,
+ IN UINT8 *HashData,
+ IN UINT64 HashDataLen,
+ IN TCG_ALGORITHM_ID AlgorithmId,
+ IN OUT UINT64 *HashedDataLen,
+ IN OUT UINT8 **HashedDataResult
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TCG_LOG_EVENT) (
+ IN EFI_TCG_PROTOCOL *This,
+ IN TCG_PCR_EVENT *TCGLogData,
+ IN OUT UINT32 *EventNumber,
+ IN UINT32 Flags
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TCG_PASS_THROUGH_TO_TPM) (
+ IN EFI_TCG_PROTOCOL *This,
+ IN UINT32 TpmInputParameterBlockSize,
+ IN UINT8 *TpmInputParameterBlock,
+ IN UINT32 TpmOutputParameterBlockSize,
+ IN UINT8 *TpmOutputParameterBlock
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TCG_HASH_LOG_EXTEND_EVENT) (
+ IN EFI_TCG_PROTOCOL *This,
+ IN EFI_PHYSICAL_ADDRESS HashData,
+ IN UINT64 HashDataLen,
+ IN TCG_ALGORITHM_ID AlgorithmId,
+ IN OUT TCG_PCR_EVENT *TCGLogData,
+ IN OUT UINT32 *EventNumber,
+ OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry
+ );
+
+typedef struct _EFI_TCG_PROTOCOL {
+ EFI_TCG_STATUS_CHECK StatusCheck;
+ EFI_TCG_HASH_ALL HashAll;
+ EFI_TCG_LOG_EVENT LogEvent;
+ EFI_TCG_PASS_THROUGH_TO_TPM PassThroughToTpm;
+ EFI_TCG_HASH_LOG_EXTEND_EVENT HashLogExtendEvent;
+} EFI_TCG_PROTOCOL;
+
+extern EFI_GUID gEfiTcgProtocolGuid;
+
+//
+// EFI TCG Platform Protocol
+//
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TCG_MEASURE_PE_IMAGE) (
+ IN BOOLEAN BootPolicy,
+ IN EFI_PHYSICAL_ADDRESS ImageAddress,
+ IN UINTN ImageSize,
+ IN UINTN LinkTimeBase,
+ IN UINT16 ImageType,
+ IN EFI_HANDLE DeviceHandle,
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TCG_MEASURE_ACTION) (
+ IN CHAR8 *ActionString
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TCG_MEASURE_GPT_TABLE) (
+ IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
+ );
+
+typedef struct _EFI_TCG_PLATFORM_PROTOCOL {
+ EFI_TCG_MEASURE_PE_IMAGE MeasurePeImage;
+ EFI_TCG_MEASURE_ACTION MeasureAction;
+ EFI_TCG_MEASURE_GPT_TABLE MeasureGptTable;
+} EFI_TCG_PLATFORM_PROTOCOL;
+
+extern EFI_GUID gEfiTcgPlatformProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/Tcp/Tcp.c b/EDK/Foundation/Protocol/Tcp/Tcp.c
new file mode 100644
index 0000000..08eb225
--- /dev/null
+++ b/EDK/Foundation/Protocol/Tcp/Tcp.c
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ Tcp.c
+
+Abstract:
+
+
+Revision History
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION(Tcp)
+
+
+EFI_GUID gEfiTcpProtocolGuid = EFI_TCP_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiTcpProtocolGuid, "Transmission Control Protocol", "EFI Transmission Control Protocol");
diff --git a/EDK/Foundation/Protocol/Tcp/Tcp.h b/EDK/Foundation/Protocol/Tcp/Tcp.h
new file mode 100644
index 0000000..bfec1cc
--- /dev/null
+++ b/EDK/Foundation/Protocol/Tcp/Tcp.h
@@ -0,0 +1,110 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ tcp.h
+
+Abstract:
+
+ EFI Transmission Control Protocol
+
+
+
+Revision History
+
+--*/
+
+
+#ifndef _EFITCP_H
+#define _EFITCP_H
+
+
+#include EFI_PROTOCOL_DEFINITION(PxeBaseCode)
+
+//
+// PXE Base Code protocol
+//
+
+#define EFI_TCP_PROTOCOL_GUID \
+ { 0x02b3d5f2, 0xac28, 0x11d3, 0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d }
+
+EFI_FORWARD_DECLARATION (EFI_TCP_PROTOCOL);
+
+
+typedef UINT16 EFI_PXE_BASE_CODE_TCP_PORT;
+
+//
+// Port Receive Filter definitions
+//
+#define EFI_PXE_BASE_CODE_MAX_PORTCNT 8
+typedef struct {
+ UINT8 Filters;
+ UINT8 IpCnt;
+ UINT16 reserved;
+ EFI_IP_ADDRESS IpList[EFI_PXE_BASE_CODE_MAX_PORTCNT];
+} EFI_TCP_PORT_FILTER;
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TCP_WRITE) (
+ IN EFI_PXE_BASE_CODE_PROTOCOL *This,
+ IN UINT16 OpFlags,
+ IN UINT16 *UrgentPointer,
+ IN UINT32 *SequenceNumber,
+ IN UINT32 *AckNumber,
+ IN UINT16 *HlenResCode,
+ IN UINT16 *Window,
+ IN EFI_IP_ADDRESS *DestIp,
+ IN UINT16 *DestPort,
+ IN EFI_IP_ADDRESS *GatewayIp, OPTIONAL
+ IN EFI_IP_ADDRESS *SrcIp, OPTIONAL
+ IN UINT16 *SrcPort, OPTIONAL
+ IN UINTN *HeaderSize, OPTIONAL
+ IN VOID *HeaderPtr, OPTIONAL
+ IN UINTN *BufferSize,
+ IN VOID *BufferPtr
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TCP_READ) (
+ IN EFI_PXE_BASE_CODE_PROTOCOL *This,
+ IN UINT16 OpFlags,
+ IN OUT EFI_IP_ADDRESS *DestIp, OPTIONAL
+ IN OUT UINT16 *DestPort, OPTIONAL
+ IN OUT EFI_IP_ADDRESS *SrcIp, OPTIONAL
+ IN OUT UINT16 *SrcPort, OPTIONAL
+ IN UINTN *HeaderSize, OPTIONAL
+ IN VOID *HeaderPtr, OPTIONAL
+ IN OUT UINTN *BufferSize,
+ IN VOID *BufferPtr
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TCP_SET_PORT_FILTER) (
+ IN EFI_PXE_BASE_CODE_PROTOCOL *This,
+ IN EFI_TCP_PORT_FILTER *NewFilter
+ );
+
+//
+// TCP Protocol structure
+//
+typedef struct _EFI_TCP_PROTOCOL {
+ EFI_TCP_WRITE TcpWrite;
+ EFI_TCP_READ TcpRead;
+ EFI_TCP_SET_PORT_FILTER SetPortFilter;
+} EFI_TCP_PROTOCOL;
+
+extern EFI_GUID gEfiTcpProtocolGuid;
+
+#endif /* _EFITCP_H */
diff --git a/EDK/Foundation/Protocol/TianoDecompress/TianoDecompress.c b/EDK/Foundation/Protocol/TianoDecompress/TianoDecompress.c
new file mode 100644
index 0000000..62f035b
--- /dev/null
+++ b/EDK/Foundation/Protocol/TianoDecompress/TianoDecompress.c
@@ -0,0 +1,28 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ TianoDecompress.c
+
+Abstract:
+
+ The GUID for the Tiano Decompress Protocol
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION(TianoDecompress)
+
+EFI_GUID gEfiTianoDecompressProtocolGuid = EFI_TIANO_DECOMPRESS_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiTianoDecompressProtocolGuid, "Tiano Decompress", "Tiano Decompression Protocol");
+
diff --git a/EDK/Foundation/Protocol/TianoDecompress/TianoDecompress.h b/EDK/Foundation/Protocol/TianoDecompress/TianoDecompress.h
new file mode 100644
index 0000000..2c45da4
--- /dev/null
+++ b/EDK/Foundation/Protocol/TianoDecompress/TianoDecompress.h
@@ -0,0 +1,139 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ TianoDecompress.h
+
+Abstract:
+
+ The Tiano Decompress Protocol Interface
+
+--*/
+
+#ifndef _TIANO_DECOMPRESS_H_
+#define _TIANO_DECOMPRESS_H_
+
+#define EFI_TIANO_DECOMPRESS_PROTOCOL_GUID \
+ { 0xe84cf29c, 0x191f, 0x4eae, 0x96, 0xe1, 0xf4, 0x6a, 0xec, 0xea, 0xea, 0x0b }
+
+EFI_FORWARD_DECLARATION (EFI_TIANO_DECOMPRESS_PROTOCOL);
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TIANO_DECOMPRESS_GET_INFO) (
+ IN EFI_TIANO_DECOMPRESS_PROTOCOL *This,
+ IN VOID *Source,
+ IN UINT32 SourceSize,
+ OUT UINT32 *DestinationSize,
+ OUT UINT32 *ScratchSize
+ );
+/*++
+
+Routine Description:
+
+ The GetInfo() function retrieves the size of the uncompressed buffer
+ and the temporary scratch buffer required to decompress the buffer
+ specified by Source and SourceSize. If the size of the uncompressed
+ buffer or the size of the scratch buffer cannot be determined from
+ the compressed data specified by Source and SourceData, then
+ EFI_INVALID_PARAMETER is returned. Otherwise, the size of the uncompressed
+ buffer is returned in DestinationSize, the size of the scratch buffer is
+ returned in ScratchSize, and EFI_SUCCESS is returned.
+
+ The GetInfo() function does not have scratch buffer available to perform
+ a thorough checking of the validity of the source data. It just retrieves
+ the 'Original Size' field from the beginning bytes of the source data and
+ output it as DestinationSize. And ScratchSize is specific to the decompression
+ implementation.
+
+Arguments:
+
+ This - The protocol instance pointer
+ Source - The source buffer containing the compressed data.
+ SourceSize - The size, in bytes, of source buffer.
+ DestinationSize - A pointer to the size, in bytes, of the uncompressed buffer
+ that will be generated when the compressed buffer specified
+ by Source and SourceSize is decompressed.
+ ScratchSize - A pointer to the size, in bytes, of the scratch buffer that
+ is required to decompress the compressed buffer specified by
+ Source and SourceSize.
+
+Returns:
+ EFI_SUCCESS - The size of the uncompressed data was returned in DestinationSize
+ and the size of the scratch buffer was returned in ScratchSize.
+ EFI_INVALID_PARAMETER - The size of the uncompressed data or the size of the scratch
+ buffer cannot be determined from the compressed data specified by
+ Source and SourceData.
+
+--*/
+
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_TIANO_DECOMPRESS_DECOMPRESS) (
+ IN EFI_TIANO_DECOMPRESS_PROTOCOL *This,
+ IN VOID* Source,
+ IN UINT32 SourceSize,
+ IN OUT VOID* Destination,
+ IN UINT32 DestinationSize,
+ IN OUT VOID* Scratch,
+ IN UINT32 ScratchSize
+ );
+/*++
+
+Routine Description:
+
+ The Decompress() function extracts decompressed data to its original form.
+
+ This protocol is designed so that the decompression algorithm can be
+ implemented without using any memory services. As a result, the
+ Decompress() function is not allowed to call AllocatePool() or
+ AllocatePages() in its implementation. It is the caller's responsibility
+ to allocate and free the Destination and Scratch buffers.
+
+ If the compressed source data specified by Source and SourceSize is
+ sucessfully decompressed into Destination, then EFI_SUCCESS is returned.
+ If the compressed source data specified by Source and SourceSize is not in
+ a valid compressed data format, then EFI_INVALID_PARAMETER is returned.
+
+Arguments:
+
+ This - The protocol instance pointer
+ Source - The source buffer containing the compressed data.
+ SourceSize - The size of source data.
+ Destination - On output, the destination buffer that contains
+ the uncompressed data.
+ DestinationSize - The size of destination buffer. The size of destination
+ buffer needed is obtained from GetInfo().
+ Scratch - A temporary scratch buffer that is used to perform the
+ decompression.
+ ScratchSize - The size of scratch buffer. The size of scratch buffer needed
+ is obtained from GetInfo().
+
+Returns:
+
+ EFI_SUCCESS - Decompression completed successfully, and the uncompressed
+ buffer is returned in Destination.
+ EFI_INVALID_PARAMETER
+ - The source buffer specified by Source and SourceSize is
+ corrupted (not in a valid compressed format).
+
+--*/
+
+typedef struct _EFI_TIANO_DECOMPRESS_PROTOCOL {
+ EFI_TIANO_DECOMPRESS_GET_INFO GetInfo;
+ EFI_TIANO_DECOMPRESS_DECOMPRESS Decompress;
+} EFI_TIANO_DECOMPRESS_PROTOCOL;
+
+extern EFI_GUID gEfiTianoDecompressProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/UgaSplash/UgaSplash.c b/EDK/Foundation/Protocol/UgaSplash/UgaSplash.c
new file mode 100644
index 0000000..cc25287
--- /dev/null
+++ b/EDK/Foundation/Protocol/UgaSplash/UgaSplash.c
@@ -0,0 +1,29 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ UgaSplash.c
+
+Abstract:
+
+ UGA Splash protocol.
+
+ Abstraction of a very simple graphics device splash screen.
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (UgaSplash)
+
+EFI_GUID gEfiUgaSplashProtocolGuid = EFI_UGA_SPLASH_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiUgaSplashProtocolGuid, "UGA Splash Protocol", "UGA Splash Protocol");
diff --git a/EDK/Foundation/Protocol/UgaSplash/UgaSplash.h b/EDK/Foundation/Protocol/UgaSplash/UgaSplash.h
new file mode 100644
index 0000000..38a13cf
--- /dev/null
+++ b/EDK/Foundation/Protocol/UgaSplash/UgaSplash.h
@@ -0,0 +1,45 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ UgaSplash.h
+
+Abstract:
+
+ UGA Splash screen protocol.
+
+ Abstraction of a very simple graphics device.
+
+--*/
+
+#ifndef __UGA_SPLASH_H__
+#define __UGA_SPLASH_H__
+
+#include EFI_PROTOCOL_DEFINITION (GraphicsOutput)
+#include EFI_PROTOCOL_DEFINITION (UgaDraw)
+
+
+#define EFI_UGA_SPLASH_PROTOCOL_GUID \
+ { 0xa45b3a0d, 0x2e55, 0x4c03, 0xad, 0x9c, 0x27, 0xd4, 0x82, 0xb, 0x50, 0x7e }
+
+typedef struct _EFI_UGA_SPLASH_PROTOCOL EFI_UGA_SPLASH_PROTOCOL;
+
+
+typedef struct _EFI_UGA_SPLASH_PROTOCOL {
+ UINT32 PixelWidth;
+ UINT32 PixelHeight;
+ EFI_GRAPHICS_OUTPUT_BLT_PIXEL *Image;
+} EFI_UGA_SPLASH_PROTOCOL;
+
+extern EFI_GUID gEfiUgaSplashProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/UsbAtapi/usbatapi.c b/EDK/Foundation/Protocol/UsbAtapi/usbatapi.c
new file mode 100644
index 0000000..850f46d
--- /dev/null
+++ b/EDK/Foundation/Protocol/UsbAtapi/usbatapi.c
@@ -0,0 +1,31 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ UsbAtapi.c
+
+Abstract:
+
+ EFI USB Atapi Protocol
+
+Revision History
+
+--*/
+
+#include "Tiano.h"
+
+#include EFI_PROTOCOL_DEFINITION (UsbIo)
+#include EFI_PROTOCOL_DEFINITION (UsbAtapi)
+
+EFI_GUID gEfiUsbAtapiProtocolGuid = EFI_USB_ATAPI_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiUsbAtapiProtocolGuid, "Usb Atapi Protocol", "Usb Atapi Protocol");
diff --git a/EDK/Foundation/Protocol/UsbAtapi/usbatapi.h b/EDK/Foundation/Protocol/UsbAtapi/usbatapi.h
new file mode 100644
index 0000000..c16954f
--- /dev/null
+++ b/EDK/Foundation/Protocol/UsbAtapi/usbatapi.h
@@ -0,0 +1,83 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ 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 }
+
+EFI_FORWARD_DECLARATION (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
+//
+typedef struct _EFI_USB_ATAPI_PROTOCOL {
+ EFI_USB_ATAPI_PACKET_CMD UsbAtapiPacketCmd;
+ EFI_USB_MASS_STORAGE_RESET UsbAtapiReset;
+ UINT32 CommandProtocol;
+} EFI_USB_ATAPI_PROTOCOL;
+
+extern EFI_GUID gEfiUsbAtapiProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/VariableStore/VariableStore.c b/EDK/Foundation/Protocol/VariableStore/VariableStore.c
new file mode 100644
index 0000000..cf87c1b
--- /dev/null
+++ b/EDK/Foundation/Protocol/VariableStore/VariableStore.c
@@ -0,0 +1,36 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ VariableStore.c
+
+Abstract:
+
+Revision History
+
+--*/
+
+//
+// The variable store protocol interface is specific to the reference
+// implementation. The initialization code adds variable store devices
+// to the system, and the FW connects to the devices to provide the
+// variable store interfaces through these devices.
+//
+//
+// Variable Store Device protocol
+//
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (VariableStore)
+
+EFI_GUID gEfiVariableStoreProtocolGuid = EFI_VARIABLE_STORE_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiVariableStoreProtocolGuid, "Variable Storage Protocol", "Tiano Variable Storage Protocol");
diff --git a/EDK/Foundation/Protocol/VariableStore/VariableStore.h b/EDK/Foundation/Protocol/VariableStore/VariableStore.h
new file mode 100644
index 0000000..0a237b6
--- /dev/null
+++ b/EDK/Foundation/Protocol/VariableStore/VariableStore.h
@@ -0,0 +1,105 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ VariableStore.h
+
+Abstract:
+
+Revision History
+
+--*/
+
+#ifndef _VARIABLE_STORE_H
+#define _VARIABLE_STORE_H
+
+//
+// The variable store protocol interface is specific to the reference
+// implementation. The initialization code adds variable store devices
+// to the system, and the FW connects to the devices to provide the
+// variable store interfaces through these devices.
+//
+
+//
+// Variable Store Device protocol
+//
+#define EFI_VARIABLE_STORE_PROTOCOL_GUID \
+ { 0xf088cd91, 0xa046, 0x11d2, 0x8e, 0x42, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b }
+
+EFI_FORWARD_DECLARATION (EFI_VARIABLE_STORE_PROTOCOL);
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_CLEAR_STORE) (
+ IN EFI_VARIABLE_STORE_PROTOCOL *This,
+ IN OUT VOID *Scratch
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_READ_STORE) (
+ IN EFI_VARIABLE_STORE_PROTOCOL *This,
+ IN UINTN Offset,
+ IN UINTN BufferSize,
+ OUT VOID *Buffer
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_UPDATE_STORE) (
+ IN EFI_VARIABLE_STORE_PROTOCOL *This,
+ IN UINTN Offset,
+ IN UINTN BufferSize,
+ IN VOID *Buffer
+ );
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_CLEANUP_STORE) (
+ IN EFI_VARIABLE_STORE_PROTOCOL *This
+ );
+
+typedef struct _EFI_VARIABLE_STORE_PROTOCOL {
+
+ //
+ // Number of banks and bank size
+ //
+ UINT32 Attributes;
+ UINT32 BankSize;
+
+ //
+ // Functions to access the storage banks
+ //
+ EFI_CLEAR_STORE ClearStore;
+ EFI_READ_STORE ReadStore;
+ EFI_UPDATE_STORE UpdateStore;
+ EFI_CLEANUP_STORE CleanupStore;
+
+} EFI_VARIABLE_STORE_PROTOCOL;
+
+//
+//
+// ClearStore() - A function to clear the requested storage bank. A cleared
+// bank contains all "on" bits.
+//
+// ReadStore() - Read data from the requested store.
+//
+// UpdateStore() - Updates data on the requested store. The FW will only
+// ever issue updates to clear bits in the store. Updates must
+// be performed in LSb to MSb order of the update buffer.
+//
+// CleanupStore() - Do garbage collection and reclaim operation.
+//
+
+extern EFI_GUID gEfiVariableStoreProtocolGuid;
+
+#endif // _VARIABLE_STORE_H
diff --git a/EDK/Foundation/Protocol/VgaMiniPort/VgaMiniPort.c b/EDK/Foundation/Protocol/VgaMiniPort/VgaMiniPort.c
new file mode 100644
index 0000000..1b1e0b9
--- /dev/null
+++ b/EDK/Foundation/Protocol/VgaMiniPort/VgaMiniPort.c
@@ -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:
+
+ VgaMiniPort.c
+
+Abstract:
+
+ EFI VGA Mini Port Protocol
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (VgaMiniPort)
+
+EFI_GUID gEfiVgaMiniPortProtocolGuid = EFI_VGA_MINI_PORT_PROTOCOL_GUID;
+
+EFI_GUID_STRING(&gEfiVgaMiniPortProtocolGuid, "VGA Mini Port Protocol", "EFI VGA Mini Port Protocol");
diff --git a/EDK/Foundation/Protocol/VgaMiniPort/VgaMiniPort.h b/EDK/Foundation/Protocol/VgaMiniPort/VgaMiniPort.h
new file mode 100644
index 0000000..27217e0
--- /dev/null
+++ b/EDK/Foundation/Protocol/VgaMiniPort/VgaMiniPort.h
@@ -0,0 +1,70 @@
+/*++
+
+Copyright (c) 2006, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+
+Module Name:
+
+ VgaMiniPort.h
+
+Abstract:
+
+ Vga Mini port binding for a VGA controller
+
+--*/
+
+#ifndef _VGA_MINI_PORT_H
+#define _VGA_MINI_PORT_H
+
+#define EFI_VGA_MINI_PORT_PROTOCOL_GUID \
+ { \
+ 0xc7735a2f, 0x88f5, 0x4882, 0xae, 0x63, 0xfa, 0xac, 0x8c, 0x8b, 0x86, 0xb3 \
+ }
+
+EFI_FORWARD_DECLARATION (EFI_VGA_MINI_PORT_PROTOCOL);
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_VGA_MINI_PORT_SET_MODE) (
+ IN EFI_VGA_MINI_PORT_PROTOCOL * This,
+ IN UINTN ModeNumber
+ );
+
+/*++
+
+ Routine Description:
+ Sets the text display mode of a VGA controller
+
+ Arguments:
+ This - Protocol instance pointer.
+ Mode - Mode number. 0 - 80x25 1-80x50
+
+ Returns:
+ EFI_SUCCESS - The mode was set
+ EFI_DEVICE_ERROR - The device is not functioning properly.
+
+--*/
+typedef struct _EFI_VGA_MINI_PORT_PROTOCOL {
+ EFI_VGA_MINI_PORT_SET_MODE SetMode;
+
+ UINT64 VgaMemoryOffset;
+ UINT64 CrtcAddressRegisterOffset;
+ UINT64 CrtcDataRegisterOffset;
+
+ UINT8 VgaMemoryBar;
+ UINT8 CrtcAddressRegisterBar;
+ UINT8 CrtcDataRegisterBar;
+
+ UINT8 MaxMode;
+} EFI_VGA_MINI_PORT_PROTOCOL;
+
+extern EFI_GUID gEfiVgaMiniPortProtocolGuid;
+
+#endif
diff --git a/EDK/Foundation/Protocol/VirtualMemoryAccess/VirtualMemoryAccess.c b/EDK/Foundation/Protocol/VirtualMemoryAccess/VirtualMemoryAccess.c
new file mode 100644
index 0000000..ea59d88
--- /dev/null
+++ b/EDK/Foundation/Protocol/VirtualMemoryAccess/VirtualMemoryAccess.c
@@ -0,0 +1,27 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ VirtualMemoryAccess.c
+
+Abstract:
+
+
+--*/
+
+#include "Tiano.h"
+#include EFI_PROTOCOL_DEFINITION (VirtualMemoryAccess)
+
+EFI_GUID gEfiVirtualMemoryAccessProtocolGuid = EFI_VIRTUAL_MEMORY_ACCESS_PROTOCOL_GUID;
+
+EFI_GUID_STRING
+ (&gEfiVirtualMemoryAccessProtocolGuid, "Virtual Memory Access Protocol", "Tiano Virtual Memory Access Protocol");
diff --git a/EDK/Foundation/Protocol/VirtualMemoryAccess/VirtualMemoryAccess.h b/EDK/Foundation/Protocol/VirtualMemoryAccess/VirtualMemoryAccess.h
new file mode 100644
index 0000000..95c017d
--- /dev/null
+++ b/EDK/Foundation/Protocol/VirtualMemoryAccess/VirtualMemoryAccess.h
@@ -0,0 +1,64 @@
+/*++
+
+Copyright (c) 2004, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+Module Name:
+
+ VirtualmemoryAccess.h
+
+Abstract:
+
+
+--*/
+
+#ifndef _VIRTUAL_MEMORY_ACCESS_H_
+#define _VIRTUAL_MEMORY_ACCESS_H_
+
+#define EFI_VIRTUAL_MEMORY_ACCESS_PROTOCOL_GUID \
+ {0x745d377a, 0xb988, 0x47b2, 0xb1, 0x8f, 0xbb, 0xc8, 0xd, 0xc5, 0x66, 0x98}
+
+
+EFI_FORWARD_DECLARATION (EFI_VIRTUAL_MEMORY_ACCESS_PROTOCOL);
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_VIRTUAL_MEMORY_ACCESS_MAP) (
+ IN EFI_VIRTUAL_MEMORY_ACCESS_PROTOCOL *This,
+ IN EFI_PHYSICAL_ADDRESS MappingAddress,
+ IN UINTN NumberOfBytes,
+ IN EFI_PHYSICAL_ADDRESS MappedAddress
+);
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_VIRTUAL_MEMORY_ACCESS_UNMAP) (
+ IN EFI_VIRTUAL_MEMORY_ACCESS_PROTOCOL *This,
+ IN EFI_PHYSICAL_ADDRESS MappedAddress,
+ IN UINTN PageSizeInByte
+);
+
+typedef
+EFI_STATUS
+(EFIAPI *EFI_VIRTUAL_MEMORY_ACCESS_GET_PAGE_SIZE) (
+ IN EFI_VIRTUAL_MEMORY_ACCESS_PROTOCOL *This,
+ IN UINTN *PageSizeInByte
+);
+
+
+typedef struct _EFI_VIRTUAL_MEMORY_ACCESS_PROTOCOL {
+ EFI_VIRTUAL_MEMORY_ACCESS_GET_PAGE_SIZE GetPageSize;
+ EFI_VIRTUAL_MEMORY_ACCESS_MAP Map;
+ EFI_VIRTUAL_MEMORY_ACCESS_UNMAP UnMap;
+} EFI_VIRTUAL_MEMORY_ACCESS_PROTOCOL;
+
+extern EFI_GUID gEfiVirtualMemoryAccessProtocolGuid;
+
+#endif
+