## @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

[LibraryClasses]
  DebugLib
  DevicePathLib
  MemoryAllocationLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint

[Protocols]
  gEfiPciHotPlugInitProtocolGuid ## SOMETIMES_PRODUCES

[Depex]
  TRUE
