#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
EFI_STATUS\r
PciDevicePresent (\r
IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo,\r
UINT8 Bus,\r
UINT8 Device,\r
UINT8 Func\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- PciRootBridgeIo - TODO: add argument description\r
- Pci - TODO: add argument description\r
- Bus - TODO: add argument description\r
- Device - TODO: add argument description\r
- Func - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
+ );\r
+\r
+/**\r
+ Collect all the resource information under this root bridge\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
EFI_STATUS\r
PciPciDeviceInfoCollector (\r
IN PCI_IO_DEVICE *Bridge,\r
UINT8 StartBusNumber\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Bridge - TODO: add argument description\r
- StartBusNumber - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\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
+ @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
+**/\r
EFI_STATUS\r
PciSearchDevice (\r
IN PCI_IO_DEVICE *Bridge,\r
UINT8 Device,\r
UINT8 Func,\r
PCI_IO_DEVICE **PciDevice\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Bridge - TODO: add argument description\r
- Pci - TODO: add argument description\r
- Bus - TODO: add argument description\r
- Device - TODO: add argument description\r
- Func - TODO: add argument description\r
- PciDevice - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\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
+**/\r
PCI_IO_DEVICE *\r
GatherDeviceInfo (\r
IN PCI_IO_DEVICE *Bridge,\r
UINT8 Bus,\r
UINT8 Device,\r
UINT8 Func\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Bridge - TODO: add argument description\r
- Pci - TODO: add argument description\r
- Bus - TODO: add argument description\r
- Device - TODO: add argument description\r
- Func - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\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
+**/\r
PCI_IO_DEVICE *\r
GatherPpbInfo (\r
IN PCI_IO_DEVICE *Bridge,\r
UINT8 Bus,\r
UINT8 Device,\r
UINT8 Func\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Bridge - TODO: add argument description\r
- Pci - TODO: add argument description\r
- Bus - TODO: add argument description\r
- Device - TODO: add argument description\r
- Func - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\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
+**/\r
PCI_IO_DEVICE *\r
GatherP2CInfo (\r
IN PCI_IO_DEVICE *Bridge,\r
UINT8 Bus,\r
UINT8 Device,\r
UINT8 Func\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Bridge - TODO: add argument description\r
- Pci - TODO: add argument description\r
- Bus - TODO: add argument description\r
- Device - TODO: add argument description\r
- Func - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\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
+ @return device path protocol instance for specific pci device.\r
+**/\r
EFI_DEVICE_PATH_PROTOCOL *\r
CreatePciDevicePath (\r
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,\r
IN PCI_IO_DEVICE *PciIoDevice\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- ParentDevicePath - TODO: add argument description\r
- PciIoDevice - TODO: add argument description\r
+ );\r
\r
-Returns:\r
+/**\r
+ Check the bar is existed or not.\r
\r
- TODO: add return values\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
\r
---*/\r
-;\r
+ @retval EFI_NOT_FOUND - The bar don'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
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- PciIoDevice - TODO: add argument description\r
- Offset - TODO: add argument description\r
- BarLengthValue - TODO: add argument description\r
- OriginalBarValue - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\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
+**/\r
EFI_STATUS\r
PciTestSupportedAttribute (\r
IN PCI_IO_DEVICE *PciIoDevice,\r
IN UINT16 *BridgeControl,\r
IN UINT16 *OldCommand,\r
IN UINT16 *OldBridgeControl\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- PciIoDevice - TODO: add argument description\r
- Command - TODO: add argument description\r
- BridgeControl - TODO: add argument description\r
- OldCommand - TODO: add argument description\r
- OldBridgeControl - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\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
+**/\r
EFI_STATUS\r
PciSetDeviceAttribute (\r
IN PCI_IO_DEVICE *PciIoDevice,\r
IN UINT16 Command,\r
IN UINT16 BridgeControl,\r
IN UINTN Option\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- PciIoDevice - TODO: add argument description\r
- Command - TODO: add argument description\r
- BridgeControl - TODO: add argument description\r
- Option - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\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
+**/\r
EFI_STATUS\r
GetFastBackToBackSupport (\r
IN PCI_IO_DEVICE *PciIoDevice,\r
IN UINT8 StatusIndex\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- PciIoDevice - TODO: add argument description\r
- StatusIndex - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\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
+**/\r
EFI_STATUS\r
DetermineDeviceAttribute (\r
IN PCI_IO_DEVICE *PciIoDevice\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- PciIoDevice - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\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
+**/\r
EFI_STATUS\r
UpdatePciInfo (\r
IN PCI_IO_DEVICE *PciIoDevice\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- PciIoDevice - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\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
+**/\r
VOID\r
SetNewAlign (\r
IN UINT64 *Alignment,\r
IN UINT64 NewAlignment\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Alignment - TODO: add argument description\r
- NewAlignment - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\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
+**/\r
UINTN\r
PciParseBar (\r
IN PCI_IO_DEVICE *PciIoDevice,\r
IN UINTN Offset,\r
IN UINTN BarIndex\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- PciIoDevice - TODO: add argument description\r
- Offset - TODO: add argument description\r
- BarIndex - TODO: add argument description\r
+ );\r
\r
-Returns:\r
-\r
- TODO: add return values\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
\r
+ @param PciIoDevice Pci device instance\r
+**/\r
EFI_STATUS\r
InitializePciDevice (\r
IN PCI_IO_DEVICE *PciIoDevice\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- PciIoDevice - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
+ );\r
\r
+/**\r
+ Init PPB for bridge device\r
+ \r
+ @param PciIoDevice Pci device instance\r
+**/\r
EFI_STATUS\r
InitializePpb (\r
IN PCI_IO_DEVICE *PciIoDevice\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- PciIoDevice - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
+ );\r
\r
+/**\r
+ Init private data for Hotplug bridge device\r
+ \r
+ @param PciIoDevice hotplug bridge device\r
+**/\r
EFI_STATUS\r
InitializeP2C (\r
IN PCI_IO_DEVICE *PciIoDevice\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- PciIoDevice - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\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
PCI_IO_DEVICE *\r
CreatePciIoDevice (\r
IN EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo,\r
UINT8 Bus,\r
UINT8 Device,\r
UINT8 Func\r
- )\r
-/*++\r
-\r
-Routine Description:\r
+ );\r
\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- PciRootBridgeIo - TODO: add argument description\r
- Pci - TODO: add argument description\r
- Bus - TODO: add argument description\r
- Device - TODO: add argument description\r
- Func - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
+/**\r
+ This routine is used to enumerate entire pci bus system\r
+ in a given platform\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
+**/\r
EFI_STATUS\r
PciEnumeratorLight (\r
IN EFI_HANDLE Controller\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Controller - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
-\r
+ );\r
+\r
+/**\r
+ Get bus range.\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
+**/\r
EFI_STATUS\r
PciGetBusRange (\r
IN EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR **Descriptors,\r
OUT UINT16 *MinBus,\r
OUT UINT16 *MaxBus,\r
OUT UINT16 *BusRange\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- Descriptors - TODO: add argument description\r
- MinBus - TODO: add argument description\r
- MaxBus - TODO: add argument description\r
- BusRange - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
+ );\r
\r
EFI_STATUS\r
StartManagingRootBridge (\r
IN PCI_IO_DEVICE *RootBridgeDev\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- TODO: Add function description\r
+ );\r
\r
-Arguments:\r
+/**\r
+ This routine can be used to check whether a PCI device should be rejected when light enumeration\r
\r
- RootBridgeDev - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
+ @param PciIoDevice Pci device instance\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
-Routine Description:\r
-\r
- TODO: Add function description\r
-\r
-Arguments:\r
-\r
- PciIoDevice - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\r
-\r
---*/\r
-;\r
+ );\r
\r
#endif\r