]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Compatibility/PciCfg2OnPciCfgThunk/PciCfg2OnPciCfgThunk.inf
Clean up EFI_SPECIFICATION_VERSION and PI_SPECIFICATION_VERSION.
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / PciCfg2OnPciCfgThunk / PciCfg2OnPciCfgThunk.inf
CommitLineData
6bfbb5f0 1## @file\r
c98d6f47 2# Module produces PciCfgPpi2 on top of PciCfgPpi. It also updates the \r
3# PciCfg2Ppi pointer in the EFI_PEI_SERVICES upon a installation of\r
0004d140 4# EcpPeiPciCfgPpi. \r
5#\r
6# EcpPeiPciCfgPpi is installed by a framework module which\r
7# produce PciCfgPpi originally. Such framework module is updated based on the \r
8# following rule to install EcpPeiPciCfgPpi instead of updating the PciCfg pointer\r
9# in the Framework PeiServicesTable: \r
10# \r
c98d6f47 11# Search pattern:\r
12# PeiServices->PciCfg = <*>;\r
13# Replace pattern:\r
14# {\r
15# static EFI_PEI_PPI_DESCRIPTOR gEcpPeiPciCfgPpiList = {\r
16# (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
17# &gEcpPeiPciCfgPpiGuid,\r
18# <*>\r
19# };\r
64cd21af 20# (**PeiServices).InstallPpi (PeiServices, &gEcpPeiPciCfgPpiList);\r
c98d6f47 21# }\r
0004d140 22# \r
23# In addition, the PeiServicesTable definition in PeiApi.h is updated to\r
24# \r
25# struct _EFI_PEI_SERVICES {\r
26# EFI_TABLE_HEADER Hdr;\r
27# ...\r
28# \r
29# //\r
30# // Pointer to PPI interface\r
31# //\r
32# #if (PI_SPECIFICATION_VERSION < 0x00010000)\r
33# \r
34# PEI_CPU_IO_PPI *CpuIo;\r
35# ECP_PEI_PCI_CFG_PPI *PciCfg; //Changed.\r
36# #else\r
37# ...\r
38# #endif\r
39# \r
40# };\r
41# \r
42# This change enable the detection of code segment which invokes PeiServices->PciCfg->Modify.\r
43# Such code causes a build break as ECP_PEI_PCI_CFG_PPI does not has "Modify" field. \r
44# This should be updated to a call to PeiLibPciCfgModify as shown below:\r
45# \r
46# Search pattern:\r
47# *->Modify(<*>); \r
48# Replace pattern:\r
49# PeiLibPciCfgModify(<*>);\r
50#\r
c98d6f47 51# PIWG's PI specification replaces Inte's EFI Specification 1.10.\r
52# EFI_PEI_PCI_CFG_PPI defined in Inte's EFI Specification 1.10 is replaced by\r
53# EFI_PEI_PCI_CFG2_PPI in PI 1.0.\r
54# This module produces PciCfgPpi on top of PciCfgPpi2. This module is used on platform when both of\r
55# these two conditions are true:\r
56# 1) Framework module present that produces PCI CFG PPI AND\r
57# 2) PI module that produces PCI CFG2 is not present\r
58\r
4259256b 59#\r
60# PEIM to provide the Variable functionality.\r
6bfbb5f0 61# Copyright (c) 2006 - 2010, Intel Corporation\r
4259256b 62#\r
63# All rights reserved. This program and the accompanying materials\r
64# are licensed and made available under the terms and conditions of the BSD License\r
65# which accompanies this distribution. The full text of the license may be found at\r
66# http://opensource.org/licenses/bsd-license.php\r
67# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
68# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
69#\r
70#\r
6bfbb5f0 71##\r
4259256b 72\r
73[Defines]\r
74 INF_VERSION = 0x00010005\r
f275c91c 75 BASE_NAME = PciCfg2OnPciCfgThunk\r
4259256b 76 FILE_GUID = 41401688-2862-431b-BAAC-6ECADAC384AB\r
77 MODULE_TYPE = PEIM\r
78 VERSION_STRING = 1.0\r
4259256b 79\r
80 ENTRY_POINT = PeimInitializePciCfg2\r
81\r
82#\r
83# The following information is for reference only and not required by the build tools.\r
84#\r
85# VALID_ARCHITECTURES = IA32 X64 IPF EBC\r
86#\r
87\r
6bfbb5f0 88[Sources]\r
f275c91c 89 PciCfg2OnPciCfgThunk.c\r
4259256b 90\r
91[Packages]\r
92 MdePkg/MdePkg.dec\r
93 IntelFrameworkPkg/IntelFrameworkPkg.dec\r
94 EdkCompatibilityPkg/EdkCompatibilityPkg.dec\r
95\r
96[LibraryClasses]\r
97 PeimEntryPoint\r
98 DebugLib\r
99\r
100[Ppis]\r
101 gEfiPciCfgPpiInServiceTableGuid\r
102 gEfiPciCfg2PpiGuid\r
103 gEcpPeiPciCfgPpiGuid\r
104\r
105[Depex]\r
106 TRUE\r