\r
typedef struct _ECP_PEI_PCI_CFG_PPI ECP_PEI_PCI_CFG_PPI;\r
\r
+/**\r
+ PCI read and write operation.\r
+ \r
+ Write to/read from a given location in the PCI configuration space.\r
\r
+ @param PeiServices An indirect pointer to the PEI Services Table published by the PEI Foundation.\r
+ @param This Pointer to local data for the interface.\r
+ @param Width The width of the access. Enumerated in bytes.\r
+ See EFI_PEI_PCI_CFG_PPI_WIDTH above.\r
+ @param Address The physical address of the access. The format of\r
+ the address is described by EFI_PEI_PCI_CFG_PPI_PCI_ADDRESS.\r
+ @param Buffer A pointer to the buffer of data..\r
+ @retval EFI_SUCCESS The function completed successfully.\r
+ @retval EFI_DEVICE_ERROR There was a problem with the transaction.\r
+ @retval EFI_DEVICE_NOT_READY The device is not capable of supporting the operation at this\r
+ time.\r
+**/\r
typedef\r
EFI_STATUS\r
(EFIAPI *ECP_PEI_PCI_CFG_PPI_IO) (\r
IN OUT VOID *Buffer\r
);\r
\r
+/**\r
+ The ECP_PEI_PCI_CFG_PPI interfaces are used to abstract accesses to PCI \r
+ controllers behind a PCI root bridge controller.\r
+ @param Read\r
+ PCI read services. See the Read() function description.\r
+ @param Write\r
+ PCI write services. See the Write() function description.\r
+\r
+**/\r
+\r
struct _ECP_PEI_PCI_CFG_PPI {\r
ECP_PEI_PCI_CFG_PPI_IO Read;\r
ECP_PEI_PCI_CFG_PPI_IO Write;\r
+++ /dev/null
-/** @file\r
- PPI published by the ReadOnlyVariable to ReadOnlyVariable2 or ReadOnlyVariable2 to ReadOnlyVariable\r
- thunking PEIM to mark that such module has already been excuted.\r
-\r
- This PPI is referenced in Edk2/EdkCompatibility/Compatibility/ReadOnlyVariable2ToReadOnlyVariable \r
- and Edk2/EdkCompatibility/Compatibility/ReadOnlyVariable2ToReadOnlyVariable.\r
-\r
-Copyright (c) 2006 - 2008, Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#ifndef _PEI_READONLY_VARIABLE_THUNK_PRESENT_H_\r
-#define _PEI_READONLY_VARIABLE_THUNK_PRESENT_H_\r
-\r
-#define PEI_READONLY_VARIABLE_THUNK_PRESENT_GUID \\r
- { 0xe84e9e0b, 0xb5dd, 0x4d08, { 0x9e, 0x46, 0x82, 0x1f, 0xf, 0x14, 0xe9, 0x1b } }\r
-\r
-extern EFI_GUID gPeiReadonlyVariableThunkPresentPpiGuid;\r
-\r
-#endif\r
-\r
IN VA_LIST Marker\r
);\r
\r
-\r
+/**\r
+ The EFI_PRINT_PROTOCOL provides one service to produce a Null-terminated Unicode string\r
+ based on a Null-terminated Unicode format string and a VA_LIST argument list and fill into \r
+ the buffer as output\r
+**/\r
struct _EFI_PRINT_PROTOCOL {\r
UNI_VSPRINT VSPrint;\r
};\r
#include <PiPei.h>\r
#include <Ppi/ReadOnlyVariable2.h>\r
#include <Ppi/ReadOnlyVariable.h>\r
-#include <Ppi/ReadOnlyVariableThunkPresent.h>\r
#include <Library/DebugLib.h>\r
#include <Library/PeiServicesTablePointerLib.h>\r
#include <Library/PeiServicesLib.h>\r
};\r
\r
\r
-EFI_PEI_PPI_DESCRIPTOR mReadOnlyVariableThunkPresent = {\r
- (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
- &gPeiReadonlyVariableThunkPresentPpiGuid,\r
- NULL\r
-};\r
-\r
/**\r
User entry for this PEIM driver.\r
\r
IN CONST EFI_PEI_SERVICES **PeiServices\r
)\r
{\r
- VOID *Interface;\r
- EFI_STATUS Status;\r
//\r
// This thunk module can only be used together with a PI PEI core, as we \r
// assume PeiServices Pointer Table can be located in a standard way defined\r
ASSERT ((*PeiServices)->Hdr.Revision >= 0x00010000);\r
\r
//\r
- // Make sure ReadOnlyVariable2ToReadOnlyVariable module is not present. If so, the call chain will form a\r
- // infinite loop: ReadOnlyVariable2 -> ReadOnlyVariable -> ReadOnlyVariable2 -> ....\r
+ // Developer should make sure ReadOnlyVariable2ToReadOnlyVariable module is not present. or else, the call chain will form a\r
+ // infinite loop: ReadOnlyVariable2 -> ReadOnlyVariable -> ReadOnlyVariable2 -> .....\r
//\r
- Status = PeiServicesLocatePpi (&gPeiReadonlyVariableThunkPresentPpiGuid, 0, NULL, &Interface);\r
- ASSERT (Status == EFI_NOT_FOUND);\r
- \r
- Status = PeiServicesInstallPpi (&mReadOnlyVariableThunkPresent);\r
- ASSERT_EFI_ERROR (Status);\r
- \r
//\r
// Publish the variable capability to other modules\r
//\r
[Ppis]\r
gEfiPeiReadOnlyVariablePpiGuid # PPI ALWAYS_CONSUMED\r
gEfiPeiReadOnlyVariable2PpiGuid # PPI ALWAYS_PRODUCED\r
- gPeiReadonlyVariableThunkPresentPpiGuid\r
\r
[Depex]\r
gEfiPeiReadOnlyVariablePpiGuid\r
#include <PiPei.h>\r
#include <Ppi/ReadOnlyVariable.h>\r
#include <Ppi/ReadOnlyVariable2.h>\r
-#include <Ppi/ReadOnlyVariableThunkPresent.h>\r
#include <Library/DebugLib.h>\r
#include <Library/PeiServicesLib.h>\r
\r
&mVariablePpi\r
};\r
\r
-EFI_PEI_PPI_DESCRIPTOR mReadOnlyVariableThunkPresent = {\r
- (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
- &gPeiReadonlyVariableThunkPresentPpiGuid,\r
- NULL\r
-};\r
\r
\r
/**\r
IN CONST EFI_PEI_SERVICES **PeiServices\r
)\r
{\r
- VOID *Interface;\r
- EFI_STATUS Status;\r
-\r
//\r
- // Make sure ReadOnlyVariableToReadOnlyVariable2 module is not present. If so, the call chain will form a\r
+ //Developer should make sure ReadOnlyVariableToReadOnlyVariable2 module is not present. If so, the call chain will form a\r
// infinite loop: ReadOnlyVariable -> ReadOnlyVariable2 -> ReadOnlyVariable -> ....\r
//\r
- Status = PeiServicesLocatePpi (&gPeiReadonlyVariableThunkPresentPpiGuid, 0, NULL, &Interface);\r
- ASSERT (Status == EFI_NOT_FOUND);\r
-\r
- Status = PeiServicesInstallPpi (&mReadOnlyVariableThunkPresent);\r
- ASSERT_EFI_ERROR (Status);\r
-\r
//\r
// Publish the variable capability to other modules\r
//\r
[Ppis]\r
gEfiPeiReadOnlyVariable2PpiGuid # PPI ALWAYS_CONSUMED\r
gEfiPeiReadOnlyVariablePpiGuid # PPI ALWAYS_PRODUCED\r
- gPeiReadonlyVariableThunkPresentPpiGuid\r
\r
[Depex]\r
gEfiPeiReadOnlyVariable2PpiGuid\r
[LibraryClasses.common]\r
\r
[Ppis.common]\r
- gPeiReadonlyVariableThunkPresentPpiGuid = { 0xe84e9e0b, 0xb5dd, 0x4d08, { 0x9e, 0x46, 0x82, 0x1f, 0xf, 0x14, 0xe9, 0x1b }} \r
gEcpPeiPciCfgPpiGuid = { 0xb0ee53d4, 0xa049, 0x4a79, { 0xb2, 0xff, 0x19, 0xd9, 0xfa, 0xef, 0xaa, 0x94 }} \r
\r
[Protocols.common]\r