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