## @file # Module produces PciCfgPpi2 on top of PciCfgPpi. It also updates the # PciCfg2Ppi pointer in the EFI_PEI_SERVICES upon a installation of # EcpPeiPciCfgPpi. # # EcpPeiPciCfgPpi is installed by a framework module which # produce PciCfgPpi originally. Such framework module is updated based on the # following rule to install EcpPeiPciCfgPpi instead of updating the PciCfg pointer # in the Framework PeiServicesTable: # # Search pattern: # PeiServices->PciCfg = <*>; # Replace pattern: # { # static EFI_PEI_PPI_DESCRIPTOR gEcpPeiPciCfgPpiList = { # (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), # &gEcpPeiPciCfgPpiGuid, # <*> # }; # (**PeiServices).InstallPpi (PeiServices, &gEcpPeiPciCfgPpiList); # } # # In addition, the PeiServicesTable definition in PeiApi.h is updated to # # struct _EFI_PEI_SERVICES { # EFI_TABLE_HEADER Hdr; # ... # # // # // Pointer to PPI interface # // # #if (PI_SPECIFICATION_VERSION < 0x00010000) # # PEI_CPU_IO_PPI *CpuIo; # ECP_PEI_PCI_CFG_PPI *PciCfg; //Changed. # #else # ... # #endif # # }; # # This change enable the detection of code segment which invokes PeiServices->PciCfg->Modify. # Such code causes a build break as ECP_PEI_PCI_CFG_PPI does not has "Modify" field. # This should be updated to a call to PeiLibPciCfgModify as shown below: # # Search pattern: # *->Modify(<*>); # Replace pattern: # PeiLibPciCfgModify(<*>); # # PIWG's PI specification replaces Inte's EFI Specification 1.10. # EFI_PEI_PCI_CFG_PPI defined in Inte's EFI Specification 1.10 is replaced by # EFI_PEI_PCI_CFG2_PPI in PI 1.0. # This module produces PciCfgPpi on top of PciCfgPpi2. This module is used on platform when both of # these two conditions are true: # 1) Framework module present that produces PCI CFG PPI AND # 2) PI module that produces PCI CFG2 is not present # # # Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR> # # This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at # http://opensource.org/licenses/bsd-license.php # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. # # ## [Defines] INF_VERSION = 0x00010005 BASE_NAME = PciCfg2OnPciCfgThunk FILE_GUID = 41401688-2862-431b-BAAC-6ECADAC384AB MODULE_TYPE = PEIM VERSION_STRING = 1.0 ENTRY_POINT = PeimInitializePciCfg2 # # The following information is for reference only and not required by the build tools. # # VALID_ARCHITECTURES = IA32 X64 IPF EBC # [Sources] PciCfg2OnPciCfgThunk.c [Packages] MdePkg/MdePkg.dec IntelFrameworkPkg/IntelFrameworkPkg.dec EdkCompatibilityPkg/EdkCompatibilityPkg.dec [LibraryClasses] PeimEntryPoint DebugLib [Ppis] gEfiPciCfgPpiInServiceTableGuid gEfiPciCfg2PpiGuid gEcpPeiPciCfgPpiGuid [Depex] TRUE