## @file
# This driver implements EFI_PCI_HOT_PLUG_INIT_PROTOCOL, providing the PCI bus
# driver with resource padding information, for PCIe hotplug purposes.
#
# Copyright (C) 2016, Red Hat, Inc.
#
# 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                      = PciHotPlugInitDxe
  FILE_GUID                      = 11A6EDF6-A9BE-426D-A6CC-B22FE51D9224
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = DriverInitialize

[Sources]
  PciHotPlugInit.c

[Packages]
  MdeModulePkg/MdeModulePkg.dec
  MdePkg/MdePkg.dec
  OvmfPkg/OvmfPkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  DebugLib
  DevicePathLib
  MemoryAllocationLib
  PciCapLib
  PciCapPciSegmentLib
  PciLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint

[Protocols]
  gEfiPciHotPlugInitProtocolGuid ## ALWAYS_PRODUCES

[Pcd]
  gUefiOvmfPkgTokenSpaceGuid.PcdOvmfHostBridgePciDevId ## CONSUMES

[Depex]
  TRUE
