]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Bus/Pci/PciBusDxe/PciEnumeratorSupport.h
add SR-IOV support in EDK II.
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Pci / PciBusDxe / PciEnumeratorSupport.h
index 19adc047548870ed3e8d0e279c77a779de8fb56f..31238b45cf5b22172b6e35d5a4440a094781531b 100644 (file)
-/**@file\r
+/** @file\r
+  PCI emumeration support functions declaration for PCI Bus module.\r
 \r
-Copyright (c) 2006, Intel Corporation                                                         \r
-All rights reserved. This program and the accompanying materials                          \r
-are licensed and made available under the terms and conditions of the BSD License         \r
-which accompanies this distribution.  The full text of the license may be found at        \r
-http://opensource.org/licenses/bsd-license.php                                            \r
-                                                                                          \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+Copyright (c) 2006 - 2009, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
 \r
-**/\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
+**/\r
 \r
-#ifndef _EFI_PCI_ENUMERATOR_SUPPORT_H\r
-#define _EFI_PCI_ENUMERATOR_SUPPORT_H\r
+#ifndef _EFI_PCI_ENUMERATOR_SUPPORT_H_\r
+#define _EFI_PCI_ENUMERATOR_SUPPORT_H_\r
 \r
 /**\r
   This routine is used to check whether the pci device is present.\r
-  \r
-  @param PciRootBridgeIo   Pointer to instance of EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL\r
-  @param Pci               Output buffer for PCI device structure\r
-  @param Bus               PCI bus NO\r
-  @param Device            PCI device NO\r
-  @param Func              PCI Func NO\r
-  \r
-  @retval EFI_NOT_FOUND device not present\r
-  @retval EFI_SUCCESS   device is found.\r
+\r
+  @param PciRootBridgeIo   Pointer to instance of EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.\r
+  @param Pci               Output buffer for PCI device configuration space.\r
+  @param Bus               PCI bus NO.\r
+  @param Device            PCI device NO.\r
+  @param Func              PCI Func NO.\r
+\r
+  @retval EFI_NOT_FOUND    PCI device not present.\r
+  @retval EFI_SUCCESS      PCI device is found.\r
+\r
 **/\r
 EFI_STATUS\r
 PciDevicePresent (\r
-  IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *PciRootBridgeIo,\r
-  PCI_TYPE00                          *Pci,\r
-  UINT8                               Bus,\r
-  UINT8                               Device,\r
-  UINT8                               Func\r
-  )\r
-;\r
+  IN  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL     *PciRootBridgeIo,\r
+  OUT PCI_TYPE00                          *Pci,\r
+  IN  UINT8                               Bus,\r
+  IN  UINT8                               Device,\r
+  IN  UINT8                               Func\r
+  );\r
 \r
 /**\r
-  Collect all the resource information under this root bridge\r
+  Collect all the resource information under this root bridge.\r
+\r
   A database that records all the information about pci device subject to this\r
   root bridge will then be created.\r
-    \r
-  @param Bridge         Parent bridge instance\r
-  @param StartBusNumer  Bus number of begining \r
+\r
+  @param Bridge         Parent bridge instance.\r
+  @param StartBusNumber Bus number of begining.\r
+\r
+  @retval EFI_SUCCESS   PCI device is found.\r
+  @retval other         Some error occurred when reading PCI bridge information.\r
+\r
 **/\r
 EFI_STATUS\r
 PciPciDeviceInfoCollector (\r
   IN PCI_IO_DEVICE                      *Bridge,\r
-  UINT8                                 StartBusNumber\r
-  )\r
-;\r
+  IN UINT8                              StartBusNumber\r
+  );\r
 \r
 /**\r
-  Seach required device and get PCI device info block\r
-  \r
-  @param Bridge     Parent bridge instance\r
-  @param Pci        Output of PCI device info block\r
+  Seach required device and create PCI device instance.\r
+\r
+  @param Bridge     Parent bridge instance.\r
+  @param Pci        Input PCI device information block.\r
   @param Bus        PCI bus NO.\r
   @param Device     PCI device NO.\r
   @param Func       PCI func  NO.\r
-  @param PciDevice  output of searched PCI device instance\r
+  @param PciDevice  Output of searched PCI device instance.\r
+\r
+  @retval EFI_SUCCESS           Successfully created PCI device instance.\r
+  @retval EFI_OUT_OF_RESOURCES  Cannot get PCI device information.\r
+\r
 **/\r
 EFI_STATUS\r
 PciSearchDevice (\r
-  IN PCI_IO_DEVICE                      *Bridge,\r
-  PCI_TYPE00                            *Pci,\r
-  UINT8                                 Bus,\r
-  UINT8                                 Device,\r
-  UINT8                                 Func,\r
-  PCI_IO_DEVICE                         **PciDevice\r
-  )\r
-;\r
+  IN  PCI_IO_DEVICE                         *Bridge,\r
+  IN  PCI_TYPE00                            *Pci,\r
+  IN  UINT8                                 Bus,\r
+  IN  UINT8                                 Device,\r
+  IN  UINT8                                 Func,\r
+  OUT PCI_IO_DEVICE                         **PciDevice\r
+  );\r
 \r
 /**\r
-  Create PCI private data for PCI device\r
-  \r
-  @param Bridge Parent bridge instance\r
-  @param Pci    PCI bar block\r
-  @param Bus    PCI device Bus NO.\r
-  @param Device PCI device DeviceNO.\r
-  @param Func   PCI device's func NO.\r
-  \r
-  @return new PCI device's private date structure.\r
+  Create PCI device instance for PCI device.\r
+\r
+  @param Bridge   Parent bridge instance.\r
+  @param Pci      Input PCI device information block.\r
+  @param Bus      PCI device Bus NO.\r
+  @param Device   PCI device Device NO.\r
+  @param Func     PCI device's func NO.\r
+\r
+  @return  Created PCI device instance.\r
+\r
 **/\r
-PCI_IO_DEVICE             *\r
+PCI_IO_DEVICE *\r
 GatherDeviceInfo (\r
   IN PCI_IO_DEVICE                    *Bridge,\r
   IN PCI_TYPE00                       *Pci,\r
-  UINT8                               Bus,\r
-  UINT8                               Device,\r
-  UINT8                               Func\r
-  )\r
-;\r
+  IN UINT8                            Bus,\r
+  IN UINT8                            Device,\r
+  IN UINT8                            Func\r
+  );\r
 \r
 /**\r
-  Create private data for bridge device's PPB.\r
-  \r
-  @param Bridge     Parent bridge \r
-  @param Pci        Pci device block\r
-  @param Bus        Bridge device's bus NO.\r
-  @param Device     Bridge device's device NO.\r
-  @param Func       Bridge device's func NO.\r
-  \r
-  @return bridge device instance\r
+  Create PCI device instance for PCI-PCI bridge.\r
+\r
+  @param Bridge   Parent bridge instance.\r
+  @param Pci      Input PCI device information block.\r
+  @param Bus      PCI device Bus NO.\r
+  @param Device   PCI device Device NO.\r
+  @param Func     PCI device's func NO.\r
+\r
+  @return  Created PCI device instance.\r
+\r
 **/\r
-PCI_IO_DEVICE             *\r
+PCI_IO_DEVICE *\r
 GatherPpbInfo (\r
   IN PCI_IO_DEVICE                    *Bridge,\r
   IN PCI_TYPE00                       *Pci,\r
-  UINT8                               Bus,\r
-  UINT8                               Device,\r
-  UINT8                               Func\r
-  )\r
-;\r
+  IN UINT8                            Bus,\r
+  IN UINT8                            Device,\r
+  IN UINT8                            Func\r
+  );\r
 \r
 /**\r
-  Create private data for hotplug bridge device\r
-  \r
-  @param Bridge Parent bridge instance\r
-  @param Pci    PCI bar block\r
-  @param Bus    hotplug bridge device's bus NO.\r
-  @param Device hotplug bridge device's device NO.\r
-  @param Func   hotplug bridge device's Func NO.\r
-  \r
-  @return hotplug bridge device instance\r
+  Create PCI device instance for PCI Card bridge device.\r
+\r
+  @param Bridge   Parent bridge instance.\r
+  @param Pci      Input PCI device information block.\r
+  @param Bus      PCI device Bus NO.\r
+  @param Device   PCI device Device NO.\r
+  @param Func     PCI device's func NO.\r
+\r
+  @return  Created PCI device instance.\r
+\r
 **/\r
-PCI_IO_DEVICE             *\r
+PCI_IO_DEVICE *\r
 GatherP2CInfo (\r
   IN PCI_IO_DEVICE                    *Bridge,\r
   IN PCI_TYPE00                       *Pci,\r
-  UINT8                               Bus,\r
-  UINT8                               Device,\r
-  UINT8                               Func\r
-  )\r
-;\r
+  IN UINT8                            Bus,\r
+  IN UINT8                            Device,\r
+  IN UINT8                            Func\r
+  );\r
 \r
 /**\r
-  Create device path for pci deivce\r
-  \r
-  @param ParentDevicePath  Parent bridge's path\r
-  @param PciIoDevice       Pci device instance\r
-  \r
+  Create device path for pci deivce.\r
+\r
+  @param ParentDevicePath  Parent bridge's path.\r
+  @param PciIoDevice       Pci device instance.\r
+\r
   @return device path protocol instance for specific pci device.\r
+\r
 **/\r
-EFI_DEVICE_PATH_PROTOCOL  *\r
+EFI_DEVICE_PATH_PROTOCOL *\r
 CreatePciDevicePath (\r
   IN  EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,\r
   IN  PCI_IO_DEVICE            *PciIoDevice\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
-  Check the bar is existed or not.\r
+  Check whether the PCI IOV VF bar is existed or not.\r
 \r
-  @param PciIoDevice       A pointer to the PCI_IO_DEVICE.\r
-  @param Offset            The offset.\r
-  @param BarLengthValue    - The bar length value.\r
-  @param OriginalBarValue  - The original bar value.\r
+  @param PciIoDevice       A pointer to the PCI_IO_DEVICE.\r
+  @param Offset            The offset.\r
+  @param BarLengthValue    The bar length value returned.\r
+  @param OriginalBarValue  The original bar value returned.\r
 \r
-  @retval EFI_NOT_FOUND     - The bar don't exist.\r
-  @retval EFI_SUCCESS       - The bar exist.\r
+  @retval EFI_NOT_FOUND    The bar doesn't exist.\r
+  @retval EFI_SUCCESS      The bar exist.\r
 \r
 **/\r
 EFI_STATUS\r
-BarExisted (\r
+VfBarExisted (\r
   IN PCI_IO_DEVICE *PciIoDevice,\r
   IN UINTN         Offset,\r
   OUT UINT32       *BarLengthValue,\r
   OUT UINT32       *OriginalBarValue\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
-  Test whether the device can support attributes \r
-  \r
-  @param PciIoDevice   Pci device instance\r
-  @param Command       Command register value.\r
-  @param BridgeControl Bridge control value for PPB or P2C.\r
-  @param OldCommand    Old command register offset\r
-  @param OldBridgeControl Old Bridge control value for PPB or P2C.\r
-  \r
-  @return EFI_SUCCESS\r
+  Check whether the bar is existed or not.\r
+\r
+  @param PciIoDevice       A pointer to the PCI_IO_DEVICE.\r
+  @param Offset            The offset.\r
+  @param BarLengthValue    The bar length value returned.\r
+  @param OriginalBarValue  The original bar value returned.\r
+\r
+  @retval EFI_NOT_FOUND    The bar doesn't exist.\r
+  @retval EFI_SUCCESS      The bar exist.\r
+\r
 **/\r
 EFI_STATUS\r
+BarExisted (\r
+  IN  PCI_IO_DEVICE *PciIoDevice,\r
+  IN  UINTN         Offset,\r
+  OUT UINT32        *BarLengthValue,\r
+  OUT UINT32        *OriginalBarValue\r
+  );\r
+\r
+/**\r
+  Test whether the device can support given attributes.\r
+\r
+  @param PciIoDevice      Pci device instance.\r
+  @param Command          Input command register value, and\r
+                          returned supported register value.\r
+  @param BridgeControl    Inout bridge control value for PPB or P2C, and\r
+                          returned supported bridge control value.\r
+  @param OldCommand       Returned and stored old command register offset.\r
+  @param OldBridgeControl Returned and stored old Bridge control value for PPB or P2C.\r
+\r
+**/\r
+VOID\r
 PciTestSupportedAttribute (\r
-  IN PCI_IO_DEVICE                      *PciIoDevice,\r
-  IN UINT16                             *Command,\r
-  IN UINT16                             *BridgeControl,\r
-  IN UINT16                             *OldCommand,\r
-  IN UINT16                             *OldBridgeControl\r
-  )\r
-;\r
+  IN     PCI_IO_DEVICE                      *PciIoDevice,\r
+  IN OUT UINT16                             *Command,\r
+  IN OUT UINT16                             *BridgeControl,\r
+     OUT UINT16                             *OldCommand,\r
+     OUT UINT16                             *OldBridgeControl\r
+  );\r
 \r
 /**\r
-  Set the supported or current attributes of a PCI device\r
-  \r
-  @param PciIoDevice   - Structure pointer for PCI device.\r
-  @param Command       - Command register value.\r
-  @param BridgeControl - Bridge control value for PPB or P2C.\r
-  @param Option        - Make a choice of EFI_SET_SUPPORTS or EFI_SET_ATTRIBUTES.\r
-  \r
+  Set the supported or current attributes of a PCI device.\r
+\r
+  @param PciIoDevice    Structure pointer for PCI device.\r
+  @param Command        Command register value.\r
+  @param BridgeControl  Bridge control value for PPB or P2C.\r
+  @param Option         Make a choice of EFI_SET_SUPPORTS or EFI_SET_ATTRIBUTES.\r
+\r
 **/\r
-EFI_STATUS\r
+VOID\r
 PciSetDeviceAttribute (\r
   IN PCI_IO_DEVICE                      *PciIoDevice,\r
   IN UINT16                             Command,\r
   IN UINT16                             BridgeControl,\r
   IN UINTN                              Option\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
-  Determine if the device can support Fast Back to Back attribute\r
-  \r
-  @param PciIoDevice  Pci device instance\r
-  @param StatusIndex  Status register value\r
+  Determine if the device can support Fast Back to Back attribute.\r
+\r
+  @param PciIoDevice  Pci device instance.\r
+  @param StatusIndex  Status register value.\r
+\r
+  @retval EFI_SUCCESS       This device support Fast Back to Back attribute.\r
+  @retval EFI_UNSUPPORTED   This device doesn't support Fast Back to Back attribute.\r
+\r
 **/\r
 EFI_STATUS\r
 GetFastBackToBackSupport (\r
   IN PCI_IO_DEVICE                      *PciIoDevice,\r
   IN UINT8                              StatusIndex\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
- Determine the related attributes of all devices under a Root Bridge\r
\r
- @param PciIoDevice   PCI device instance\r
\r
+  Determine the related attributes of all devices under a Root Bridge.\r
+\r
+  @param PciIoDevice   PCI device instance.\r
+\r
 **/\r
 EFI_STATUS\r
 DetermineDeviceAttribute (\r
   IN PCI_IO_DEVICE                      *PciIoDevice\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
-  This routine is used to update the bar information for those incompatible PCI device\r
-  \r
-  @param PciIoDevice      Pci device instance\r
-  @return EFI_UNSUPPORTED failed to update Pci Info\r
+  This routine is used to update the bar information for those incompatible PCI device.\r
+\r
+  @param PciIoDevice      Input Pci device instance. Output Pci device instance with updated\r
+                          Bar information.\r
+\r
+  @retval EFI_SUCCESS     Successfully updated bar information.\r
+  @retval EFI_UNSUPPORTED Given PCI device doesn't belong to incompatible PCI device list.\r
+\r
 **/\r
 EFI_STATUS\r
 UpdatePciInfo (\r
-  IN PCI_IO_DEVICE  *PciIoDevice\r
-  )\r
-;\r
+  IN OUT PCI_IO_DEVICE    *PciIoDevice\r
+  );\r
 \r
 /**\r
-  This routine will update the alignment with the new alignment\r
-  \r
-  @param Alignment old alignment\r
-  @param NewAlignment new alignment\r
-  \r
+  This routine will update the alignment with the new alignment.\r
+\r
+  @param Alignment    Input Old alignment. Output updated alignment.\r
+  @param NewAlignment New alignment.\r
+\r
 **/\r
 VOID\r
 SetNewAlign (\r
-  IN UINT64 *Alignment,\r
-  IN UINT64 NewAlignment\r
-  )\r
-;\r
+  IN OUT UINT64     *Alignment,\r
+  IN     UINT64     NewAlignment\r
+  );\r
 \r
 /**\r
-  Parse PCI bar bit.\r
-  \r
-  @param PciIoDevice  Pci device instance\r
-  @param Offset       bar offset\r
-  @param BarIndex     bar index\r
-  \r
-  @return next bar offset.\r
+  Parse PCI bar information and fill them into PCI device instance.\r
+\r
+  @param PciIoDevice  Pci device instance.\r
+  @param Offset       Bar offset.\r
+  @param BarIndex     Bar index.\r
+\r
+  @return Next bar offset.\r
+\r
 **/\r
 UINTN\r
 PciParseBar (\r
   IN PCI_IO_DEVICE  *PciIoDevice,\r
   IN UINTN          Offset,\r
   IN UINTN          BarIndex\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
-  This routine is used to initialize the bar of a PCI device\r
-  It can be called typically when a device is going to be rejected\r
+  Parse PCI IOV VF bar information and fill them into PCI device instance.\r
+\r
+  @param PciIoDevice  Pci device instance.\r
+  @param Offset       Bar offset.\r
+  @param BarIndex     Bar index.\r
+\r
+  @return Next bar offset.\r
 \r
-  @param PciIoDevice Pci device instance\r
 **/\r
-EFI_STATUS\r
+UINTN\r
+PciIovParseVfBar (\r
+  IN PCI_IO_DEVICE  *PciIoDevice,\r
+  IN UINTN          Offset,\r
+  IN UINTN          BarIndex\r
+  );\r
+\r
+/**\r
+  This routine is used to initialize the bar of a PCI device.\r
+\r
+  @param PciIoDevice Pci device instance.\r
+\r
+  @note It can be called typically when a device is going to be rejected.\r
+\r
+**/\r
+VOID\r
 InitializePciDevice (\r
-  IN PCI_IO_DEVICE *PciIoDevice\r
-  )\r
-;\r
+  IN PCI_IO_DEVICE    *PciIoDevice\r
+  );\r
 \r
 /**\r
-  Init PPB for bridge device\r
-  \r
-  @param  PciIoDevice Pci device instance\r
+  This routine is used to initialize the bar of a PCI-PCI Bridge device.\r
+\r
+  @param  PciIoDevice PCI-PCI bridge device instance.\r
+\r
 **/\r
-EFI_STATUS\r
+VOID\r
 InitializePpb (\r
-  IN PCI_IO_DEVICE *PciIoDevice\r
-  )\r
-;\r
+  IN PCI_IO_DEVICE    *PciIoDevice\r
+  );\r
 \r
 /**\r
-  Init private data for Hotplug bridge device\r
-  \r
-  @param PciIoDevice hotplug bridge device\r
+  This routine is used to initialize the bar of a PCI Card Bridge device.\r
+\r
+  @param PciIoDevice  PCI Card bridge device.\r
+\r
 **/\r
-EFI_STATUS\r
+VOID\r
 InitializeP2C (\r
-  IN PCI_IO_DEVICE *PciIoDevice\r
-  )\r
-;\r
+  IN PCI_IO_DEVICE    *PciIoDevice\r
+  );\r
 \r
 /**\r
   Create and initiliaze general PCI I/O device instance for\r
   PCI device/bridge device/hotplug bridge device.\r
-  \r
-  @param PciRootBridgeIo   Pointer to instance of EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL\r
-  @param Pci               Pci bar block\r
-  @param Bus               device Bus NO.\r
-  @param Device            device device NO.\r
-  @param Func              device func NO.\r
-  \r
-  @return instance of PCI device\r
+\r
+  @param PciRootBridgeIo   Pointer to instance of EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL.\r
+  @param Pci               Input Pci information block.\r
+  @param Bus               Device Bus NO.\r
+  @param Device            Device device NO.\r
+  @param Func              Device func NO.\r
+\r
+  @return Instance of PCI device. NULL means no instance created.\r
+\r
 **/\r
-PCI_IO_DEVICE             *\r
+PCI_IO_DEVICE *\r
 CreatePciIoDevice (\r
   IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL  *PciRootBridgeIo,\r
   IN PCI_TYPE00                       *Pci,\r
-  UINT8                               Bus,\r
-  UINT8                               Device,\r
-  UINT8                               Func\r
-  )\r
-;\r
+  IN UINT8                            Bus,\r
+  IN UINT8                            Device,\r
+  IN UINT8                            Func\r
+  );\r
 \r
 /**\r
   This routine is used to enumerate entire pci bus system\r
-  in a given platform\r
+  in a given platform.\r
+\r
   It is only called on the second start on the same Root Bridge.\r
 \r
-  @param Controller  Parent bridge handler\r
-  \r
-  @return status of operation.\r
+  @param  Controller     Parent bridge handler.\r
+\r
+  @retval EFI_SUCCESS    PCI enumeration finished successfully.\r
+  @retval other          Some error occurred when enumerating the pci bus system.\r
+\r
 **/\r
 EFI_STATUS\r
 PciEnumeratorLight (\r
   IN EFI_HANDLE                    Controller\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
-  Get bus range.\r
-  \r
+  Get bus range from PCI resource descriptor list.\r
+\r
   @param Descriptors  A pointer to the address space descriptor.\r
-  @param MinBus       The min bus.\r
-  @param MaxBus       The max bus.\r
-  @param BusRange     The bus range.\r
-  \r
-  @retval EFI_SUCCESS Success operation.\r
-  @retval EFI_NOT_FOUND  can not find the specific bus.\r
+  @param MinBus       The min bus returned.\r
+  @param MaxBus       The max bus returned.\r
+  @param BusRange     The bus range returned.\r
+\r
+  @retval EFI_SUCCESS    Successfully got bus range.\r
+  @retval EFI_NOT_FOUND  Can not find the specific bus.\r
+\r
 **/\r
 EFI_STATUS\r
 PciGetBusRange (\r
@@ -367,28 +417,47 @@ PciGetBusRange (
   OUT    UINT16                             *MinBus,\r
   OUT    UINT16                             *MaxBus,\r
   OUT    UINT16                             *BusRange\r
-  )\r
-;\r
+  );\r
 \r
+/**\r
+  This routine can be used to start the root bridge.\r
+\r
+  @param RootBridgeDev     Pci device instance.\r
+\r
+  @retval EFI_SUCCESS      This device started.\r
+  @retval other            Failed to get PCI Root Bridge I/O protocol.\r
+\r
+**/\r
 EFI_STATUS\r
 StartManagingRootBridge (\r
   IN PCI_IO_DEVICE *RootBridgeDev\r
-  )\r
-;\r
+  );\r
 \r
 /**\r
-  This routine can be used to check whether a PCI device should be rejected when light enumeration\r
+  This routine can be used to check whether a PCI device should be rejected when light enumeration.\r
+\r
+  @param PciIoDevice  Pci device instance.\r
 \r
-  @param PciIoDevice  Pci device instance\r
+  @retval TRUE      This device should be rejected.\r
+  @retval FALSE     This device shouldn't be rejected.\r
 \r
-  @retval TRUE      This device should be rejected\r
-  @retval FALSE     This device shouldn't be rejected\r
-  \r
 **/\r
 BOOLEAN\r
 IsPciDeviceRejected (\r
   IN PCI_IO_DEVICE *PciIoDevice\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Reset all bus number from specific bridge.\r
+\r
+  @param Bridge           Parent specific bridge.\r
+  @param StartBusNumber   Start bus number.\r
+\r
+**/\r
+VOID\r
+ResetAllPpbBusNumber (\r
+  IN PCI_IO_DEVICE                      *Bridge,\r
+  IN UINT8                              StartBusNumber\r
+  );\r
 \r
 #endif\r