]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Compatibility/PciCfg2OnPciCfgThunk/PciCfg2OnPciCfgThunk.inf
b6695e48a5370466c8b8625769a528491daf0b1c
[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 - 2007, Intel Corporation
62 #
63 # All rights reserved. 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 EDK_RELEASE_VERSION = 0x00020000
80 EFI_SPECIFICATION_VERSION = 0x00020000
81
82 ENTRY_POINT = PeimInitializePciCfg2
83
84 #
85 # The following information is for reference only and not required by the build tools.
86 #
87 # VALID_ARCHITECTURES = IA32 X64 IPF EBC
88 #
89
90 [Sources.common]
91 PciCfg2OnPciCfgThunk.c
92
93 [Packages]
94 MdePkg/MdePkg.dec
95 IntelFrameworkPkg/IntelFrameworkPkg.dec
96 EdkCompatibilityPkg/EdkCompatibilityPkg.dec
97
98 [LibraryClasses]
99 PeimEntryPoint
100 DebugLib
101
102 [Ppis]
103 gEfiPciCfgPpiInServiceTableGuid
104 gEfiPciCfg2PpiGuid
105 gEcpPeiPciCfgPpiGuid
106
107 [Depex]
108 TRUE