## @file
#  The PCI bus driver will probe all PCI devices and allocate MMIO and IO space for these devices.
#  Please use PCD feature flag PcdPciBusHotplugDeviceSupport to enable hot plug supporting.
#
#  Copyright (c) 2006 - 2021, Intel Corporation. All rights reserved.<BR>
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = PciBusDxe
  MODULE_UNI_FILE                = PciBusDxe.uni
  FILE_GUID                      = 93B80004-9FB3-11d4-9A3A-0090273FC14D
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = PciBusEntryPoint

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC ARM AARCH64
#
#  DRIVER_BINDING                =  gPciBusDriverBinding
#  COMPONENT_NAME                =  gPciBusComponentName
#  COMPONENT_NAME2               =  gPciBusComponentName2
#

[Sources]
  PciLib.c
  PciIo.c
  PciBus.c
  PciDeviceSupport.c
  ComponentName.c
  ComponentName.h
  PciCommand.c
  PciResourceSupport.c
  PciEnumeratorSupport.c
  PciEnumerator.c
  PciOptionRomSupport.c
  PciDriverOverride.c
  PciPowerManagement.c
  PciPowerManagement.h
  PciDriverOverride.h
  PciRomTable.c
  PciHotPlugSupport.c
  PciLib.h
  PciHotPlugSupport.h
  PciRomTable.h
  PciOptionRomSupport.h
  PciEnumeratorSupport.h
  PciEnumerator.h
  PciResourceSupport.h
  PciDeviceSupport.h
  PciCommand.h
  PciIo.h
  PciBus.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  PcdLib
  DevicePathLib
  UefiBootServicesTableLib
  MemoryAllocationLib
  ReportStatusCodeLib
  BaseMemoryLib
  UefiLib
  BaseLib
  UefiDriverEntryPoint
  DebugLib

[Protocols]
  gEfiPciHotPlugRequestProtocolGuid               ## SOMETIMES_PRODUCES
  gEfiPciIoProtocolGuid                           ## BY_START
  gEfiDevicePathProtocolGuid                      ## BY_START
  gEfiBusSpecificDriverOverrideProtocolGuid       ## BY_START
  gEfiLoadedImageProtocolGuid                     ## SOMETIMES_CONSUMES
  gEfiDecompressProtocolGuid                      ## SOMETIMES_CONSUMES
  gEfiPciHotPlugInitProtocolGuid                  ## SOMETIMES_CONSUMES
  gEfiPciHostBridgeResourceAllocationProtocolGuid ## TO_START
  gEfiPciPlatformProtocolGuid                     ## SOMETIMES_CONSUMES
  gEfiPciOverrideProtocolGuid                     ## SOMETIMES_CONSUMES
  gEfiPciEnumerationCompleteProtocolGuid          ## PRODUCES
  gEfiPciRootBridgeIoProtocolGuid                 ## TO_START
  gEfiIncompatiblePciDeviceSupportProtocolGuid    ## SOMETIMES_CONSUMES
  gEfiLoadFile2ProtocolGuid                       ## SOMETIMES_PRODUCES
  gEdkiiIoMmuProtocolGuid                         ## SOMETIMES_CONSUMES
  gEdkiiDeviceSecurityProtocolGuid                ## SOMETIMES_CONSUMES
  gEdkiiDeviceIdentifierTypePciGuid               ## SOMETIMES_CONSUMES
  gEfiLoadedImageDevicePathProtocolGuid           ## CONSUMES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdPciBusHotplugDeviceSupport      ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdPciBridgeIoAlignmentProbe       ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdUnalignedPciIoEnable            ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdPciDegradeResourceForOptionRom  ## CONSUMES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdSrIovSystemPageSize         ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdSrIovSupport                ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdAriSupport                  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMrIovSupport                ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdPciDisableBusEnumeration    ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdPcieResizableBarSupport     ## CONSUMES

[UserExtensions.TianoCore."ExtraFiles"]
  PciBusDxeExtra.uni
