-/*++\r
+/** @file\r
\r
Copyright (c) 2006, Intel Corporation \r
All rights reserved. This program and the accompanying materials \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
-Module Name:\r
+**/\r
\r
- PciEnumeratorSupport.h\r
- \r
-Abstract:\r
-\r
- PCI Bus Driver\r
-\r
-Revision History\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
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 StartBusNumber 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
+ 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
- PCI_TYPE00 *Pci,\r
- UINT8 Bus,\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
+ 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
+**/\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
+ 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
+ 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
+ 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
\r
-Routine Description:\r
+/**\r
+ Check the bar is existed or not.\r
\r
- TODO: Add function description\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
-Arguments:\r
-\r
- ParentDevicePath - TODO: add argument description\r
- PciIoDevice - TODO: add argument description\r
-\r
-Returns:\r
-\r
- TODO: add return values\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
+ 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
+ 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
+/**\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
+ 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
+ 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
\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
-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
+ 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
\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
+ 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
+ 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
\r
-Arguments:\r
+/**\r
+ This routine can be used to start the root bridge.\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
+ @param RootBridgeDev Pci device instance.\r
\r
+ @retval EFI_SUCCESS This device started.\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