## @file
#  Pcat SingleSegmentPciCfg2Pei Pei Module.
#
#  It installs SingleSegmentPciConfiguration2 PPI to provide read, write and modify access to Pci configuration space in PEI phase.
#  To follow PI specification, these services also support access to the unaligned Pci address.
#
#  Copyright (c) 2006 - 2014, 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                      = PcatSingleSegmentPciCfg2Pei
  MODULE_UNI_FILE                = PcatSingleSegmentPciCfg2Pei.uni
  FILE_GUID                      = 4F1F379F-2A62-48bb-AC34-D3F135C6E2B7
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = PeimInitializePciCfg

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
#

[Sources]
  PciCfg2.c

[Packages]
  MdePkg/MdePkg.dec


[LibraryClasses]
  PeimEntryPoint
  PciLib
  BaseLib
  DebugLib
  PeiServicesLib

[Ppis]
  gEfiPciCfg2PpiGuid                   ## PRODUCES

[Depex]
  TRUE

[UserExtensions.TianoCore."ExtraFiles"]
  PcatSingleSegmentPciCfg2PeiExtra.uni
