]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.h
Retired PciIncompatibleDeviceSupportLib from IntelFrameworkModulePkg.
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Pci / PciBusDxe / PciResourceSupport.h
index 34a77871961604a0aab7ed0d2447bbc7f399e26a..96396fe8692d60f4f284cfb23aca0b1c619793eb 100644 (file)
@@ -1,38 +1,19 @@
-/**@file\r
+/** @file\r
+  PCI resouces 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
-\r
-#ifndef _EFI_PCI_RESOURCE_SUPPORT_H\r
-#define _EFI_PCI_RESOURCE_SUPPORT_H\r
-\r
-#define RESERVED_RESOURCE_SIGNATURE EFI_SIGNATURE_32 ('r', 's', 'v', 'd')\r
-\r
-typedef struct {\r
-  UINT64        Base;\r
-  UINT64        Length;\r
-  PCI_BAR_TYPE  ResType;\r
-} PCI_RESERVED_RESOURCE_NODE;\r
-\r
-typedef struct {\r
-  UINT32                      Signature;\r
-  LIST_ENTRY                  Link;\r
-  PCI_RESERVED_RESOURCE_NODE  Node;\r
-} PCI_RESERVED_RESOURCE_LIST;\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
-#define RESOURCED_LIST_FROM_NODE(a) \\r
-  CR (a, PCI_RESERVED_RESOURCE_LIST, Node, RESERVED_RESOURCE_SIGNATURE)\r
+**/\r
 \r
-#define RESOURCED_LIST_FROM_LINK(a) \\r
-  CR (a, PCI_RESERVED_RESOURCE_LIST, Link, RESERVED_RESOURCE_SIGNATURE)\r
+#ifndef _EFI_PCI_RESOURCE_SUPPORT_H_\r
+#define _EFI_PCI_RESOURCE_SUPPORT_H_\r
 \r
 typedef enum {\r
   PciResUsageTypical            = 0,\r
@@ -40,7 +21,7 @@ typedef enum {
   PciResUsageOptionRomProcessing\r
 } PCI_RESOURCE_USAGE;\r
 \r
-#define PCI_RESOURCE_SIGNATURE  EFI_SIGNATURE_32 ('p', 'c', 'r', 'c')\r
+#define PCI_RESOURCE_SIGNATURE  SIGNATURE_32 ('p', 'c', 'r', 'c')\r
 \r
 typedef struct {\r
   UINT32              Signature;\r
@@ -59,173 +40,130 @@ typedef struct {
 #define RESOURCE_NODE_FROM_LINK(a) \\r
   CR (a, PCI_RESOURCE_NODE, Link, PCI_RESOURCE_SIGNATURE)\r
 \r
-EFI_STATUS\r
+/**\r
+  The function is used to skip VGA range.\r
+\r
+  @param Start    Returned start address including VGA range.\r
+  @param Length   The length of VGA range.\r
+\r
+**/\r
+VOID\r
 SkipVGAAperture (\r
   OUT UINT64   *Start,\r
   IN  UINT64   Length\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
+  );\r
 \r
-  TODO: Add function description\r
+/**\r
+  This function is used to skip ISA aliasing aperture.\r
 \r
-Arguments:\r
+  @param Start    Returned start address including ISA aliasing aperture.\r
+  @param Length   The length of ISA aliasing aperture.\r
 \r
-  Start   - TODO: add argument description\r
-  Length  - TODO: add argument description\r
-\r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
+**/\r
+VOID\r
 SkipIsaAliasAperture (\r
   OUT UINT64   *Start,\r
   IN  UINT64   Length\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description:\r
+/**\r
+  This function inserts a resource node into the resource list.\r
+  The resource list is sorted in descend order.\r
 \r
-  TODO: Add function description\r
+  @param Bridge  PCI resource node for bridge.\r
+  @param ResNode Resource node want to be inserted.\r
 \r
-Arguments:\r
-\r
-  Start   - TODO: add argument description\r
-  Length  - TODO: add argument description\r
-\r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
+**/\r
+VOID\r
 InsertResourceNode (\r
-  PCI_RESOURCE_NODE *Bridge,\r
-  PCI_RESOURCE_NODE *ResNode\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
+  IN OUT PCI_RESOURCE_NODE   *Bridge,\r
+  IN     PCI_RESOURCE_NODE   *ResNode\r
+  );\r
 \r
-  Bridge  - TODO: add argument description\r
-  ResNode - TODO: add argument description\r
+/**\r
+  This routine is used to merge two different resource trees in need of\r
+  resoure degradation.\r
 \r
-Returns:\r
+  For example, if an upstream PPB doesn't support,\r
+  prefetchable memory decoding, the PCI bus driver will choose to call this function\r
+  to merge prefectchable memory resource list into normal memory list.\r
 \r
-  TODO: add return values\r
+  If the TypeMerge is TRUE, Res resource type is changed to the type of destination resource\r
+  type.\r
+  If Dst is NULL or Res is NULL, ASSERT ().\r
 \r
---*/\r
-;\r
+  @param Dst        Point to destination resource tree.\r
+  @param Res        Point to source resource tree.\r
+  @param TypeMerge  If the TypeMerge is TRUE, Res resource type is changed to the type of\r
+                    destination resource type.\r
 \r
-EFI_STATUS\r
+**/\r
+VOID\r
 MergeResourceTree (\r
-  PCI_RESOURCE_NODE *Dst,\r
-  PCI_RESOURCE_NODE *Res,\r
-  BOOLEAN           TypeMerge\r
-  )\r
-/*++\r
+  IN PCI_RESOURCE_NODE   *Dst,\r
+  IN PCI_RESOURCE_NODE   *Res,\r
+  IN BOOLEAN             TypeMerge\r
+  );\r
 \r
-Routine Description:\r
+/**\r
+  This function is used to calculate the IO16 aperture\r
+  for a bridge.\r
 \r
-  TODO: Add function description\r
+  @param Bridge    PCI resource node for bridge.\r
 \r
-Arguments:\r
-\r
-  Dst       - TODO: add argument description\r
-  Res       - TODO: add argument description\r
-  TypeMerge - TODO: add argument description\r
-\r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
+**/\r
+VOID\r
 CalculateApertureIo16 (\r
-  IN PCI_RESOURCE_NODE *Bridge\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  Bridge  - TODO: add argument description\r
-\r
-Returns:\r
+  IN PCI_RESOURCE_NODE    *Bridge\r
+  );\r
 \r
-  TODO: add return values\r
+/**\r
+  This function is used to calculate the resource aperture\r
+  for a given bridge device.\r
 \r
---*/\r
-;\r
+  @param Bridge      PCI resouce node for given bridge device.\r
 \r
-EFI_STATUS\r
+**/\r
+VOID\r
 CalculateResourceAperture (\r
-  IN PCI_RESOURCE_NODE *Bridge\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
+  IN PCI_RESOURCE_NODE    *Bridge\r
+  );\r
 \r
-Arguments:\r
+/**\r
+  Get IO/Memory resource infor for given PCI device.\r
 \r
-  Bridge  - TODO: add argument description\r
+  @param PciDev     Pci device instance.\r
+  @param IoNode     Resource info node for IO .\r
+  @param Mem32Node  Resource info node for 32-bit memory.\r
+  @param PMem32Node Resource info node for 32-bit Prefetchable Memory.\r
+  @param Mem64Node  Resource info node for 64-bit memory.\r
+  @param PMem64Node Resource info node for 64-bit Prefetchable Memory.\r
 \r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
+**/\r
+VOID\r
 GetResourceFromDevice (\r
-  PCI_IO_DEVICE     *PciDev,\r
-  PCI_RESOURCE_NODE *IoNode,\r
-  PCI_RESOURCE_NODE *Mem32Node,\r
-  PCI_RESOURCE_NODE *PMem32Node,\r
-  PCI_RESOURCE_NODE *Mem64Node,\r
-  PCI_RESOURCE_NODE *PMem64Node\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  PciDev      - TODO: add argument description\r
-  IoNode      - TODO: add argument description\r
-  Mem32Node   - TODO: add argument description\r
-  PMem32Node  - TODO: add argument description\r
-  Mem64Node   - TODO: add argument description\r
-  PMem64Node  - TODO: add argument description\r
-\r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
-;\r
+  IN     PCI_IO_DEVICE     *PciDev,\r
+  IN OUT PCI_RESOURCE_NODE *IoNode,\r
+  IN OUT PCI_RESOURCE_NODE *Mem32Node,\r
+  IN OUT PCI_RESOURCE_NODE *PMem32Node,\r
+  IN OUT PCI_RESOURCE_NODE *Mem64Node,\r
+  IN OUT PCI_RESOURCE_NODE *PMem64Node\r
+  );\r
+\r
+/**\r
+  This function is used to create a resource node.\r
+\r
+  @param PciDev       Pci device instance.\r
+  @param Length       Length of Io/Memory resource.\r
+  @param Alignment    Alignment of resource.\r
+  @param Bar          Bar index.\r
+  @param ResType      Type of resource: IO/Memory.\r
+  @param ResUsage     Resource usage.\r
+\r
+  @return PCI resource node created for given PCI device.\r
+          NULL means PCI resource node is not created.\r
 \r
+**/\r
 PCI_RESOURCE_NODE *\r
 CreateResourceNode (\r
   IN PCI_IO_DEVICE         *PciDev,\r
@@ -234,497 +172,285 @@ CreateResourceNode (
   IN UINT8                 Bar,\r
   IN PCI_BAR_TYPE          ResType,\r
   IN PCI_RESOURCE_USAGE    ResUsage\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description:\r
+/**\r
+  This function is used to extract resource request from\r
+  device node list.\r
 \r
-  TODO: Add function description\r
+  @param Bridge     Pci device instance.\r
+  @param IoNode     Resource info node for IO.\r
+  @param Mem32Node  Resource info node for 32-bit memory.\r
+  @param PMem32Node Resource info node for 32-bit Prefetchable Memory.\r
+  @param Mem64Node  Resource info node for 64-bit memory.\r
+  @param PMem64Node Resource info node for 64-bit Prefetchable Memory.\r
 \r
-Arguments:\r
-\r
-  PciDev    - TODO: add argument description\r
-  Length    - TODO: add argument description\r
-  Alignment - TODO: add argument description\r
-  Bar       - TODO: add argument description\r
-  ResType   - TODO: add argument description\r
-  ResUsage  - TODO: add argument description\r
-\r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
+**/\r
+VOID\r
 CreateResourceMap (\r
-  IN PCI_IO_DEVICE     *Bridge,\r
+  IN     PCI_IO_DEVICE     *Bridge,\r
+  IN OUT PCI_RESOURCE_NODE *IoNode,\r
+  IN OUT PCI_RESOURCE_NODE *Mem32Node,\r
+  IN OUT PCI_RESOURCE_NODE *PMem32Node,\r
+  IN OUT PCI_RESOURCE_NODE *Mem64Node,\r
+  IN OUT PCI_RESOURCE_NODE *PMem64Node\r
+  );\r
+\r
+/**\r
+  This function is used to do the resource padding for a specific platform.\r
+\r
+  @param PciDev     Pci device instance.\r
+  @param IoNode     Resource info node for IO.\r
+  @param Mem32Node  Resource info node for 32-bit memory.\r
+  @param PMem32Node Resource info node for 32-bit Prefetchable Memory.\r
+  @param Mem64Node  Resource info node for 64-bit memory.\r
+  @param PMem64Node Resource info node for 64-bit Prefetchable Memory.\r
+\r
+**/\r
+VOID\r
+ResourcePaddingPolicy (\r
+  IN PCI_IO_DEVICE     *PciDev,\r
   IN PCI_RESOURCE_NODE *IoNode,\r
   IN PCI_RESOURCE_NODE *Mem32Node,\r
   IN PCI_RESOURCE_NODE *PMem32Node,\r
   IN PCI_RESOURCE_NODE *Mem64Node,\r
   IN PCI_RESOURCE_NODE *PMem64Node\r
-  )\r
-/*++\r
+  );\r
 \r
-Routine Description:\r
+/**\r
+  This function is used to degrade resource if the upstream bridge\r
+  doesn't support certain resource. Degradation path is\r
+  PMEM64 -> MEM64  -> MEM32\r
+  PMEM64 -> PMEM32 -> MEM32\r
+  IO32   -> IO16.\r
 \r
-  TODO: Add function description\r
+  @param Bridge     Pci device instance.\r
+  @param Mem32Node  Resource info node for 32-bit memory.\r
+  @param PMem32Node Resource info node for 32-bit Prefetchable Memory.\r
+  @param Mem64Node  Resource info node for 64-bit memory.\r
+  @param PMem64Node Resource info node for 64-bit Prefetchable Memory.\r
 \r
-Arguments:\r
-\r
-  Bridge      - TODO: add argument description\r
-  IoNode      - TODO: add argument description\r
-  Mem32Node   - TODO: add argument description\r
-  PMem32Node  - TODO: add argument description\r
-  Mem64Node   - TODO: add argument description\r
-  PMem64Node  - TODO: add argument description\r
-\r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-ResourcePaddingPolicy (\r
-  PCI_IO_DEVICE     *PciDev,\r
-  PCI_RESOURCE_NODE *IoNode,\r
-  PCI_RESOURCE_NODE *Mem32Node,\r
-  PCI_RESOURCE_NODE *PMem32Node,\r
-  PCI_RESOURCE_NODE *Mem64Node,\r
-  PCI_RESOURCE_NODE *PMem64Node\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  PciDev      - TODO: add argument description\r
-  IoNode      - TODO: add argument description\r
-  Mem32Node   - TODO: add argument description\r
-  PMem32Node  - TODO: add argument description\r
-  Mem64Node   - TODO: add argument description\r
-  PMem64Node  - TODO: add argument description\r
-\r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
+**/\r
+VOID\r
 DegradeResource (\r
   IN PCI_IO_DEVICE     *Bridge,\r
   IN PCI_RESOURCE_NODE *Mem32Node,\r
   IN PCI_RESOURCE_NODE *PMem32Node,\r
   IN PCI_RESOURCE_NODE *Mem64Node,\r
   IN PCI_RESOURCE_NODE *PMem64Node\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
+  );\r
 \r
-  Bridge      - TODO: add argument description\r
-  Mem32Node   - TODO: add argument description\r
-  PMem32Node  - TODO: add argument description\r
-  Mem64Node   - TODO: add argument description\r
-  PMem64Node  - TODO: add argument description\r
+/**\r
+  Test whether bridge device support decode resource.\r
 \r
-Returns:\r
+  @param Bridge    Bridge device instance.\r
+  @param Decode    Decode type according to resource type.\r
 \r
-  TODO: add return values\r
-\r
---*/\r
-;\r
+  @return TRUE     The bridge device support decode resource.\r
+  @return FALSE    The bridge device don't support decode resource.\r
 \r
+**/\r
 BOOLEAN\r
 BridgeSupportResourceDecode (\r
   IN PCI_IO_DEVICE *Bridge,\r
   IN UINT32        Decode\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  Bridge  - TODO: add argument description\r
-  Decode  - TODO: add argument description\r
+  );\r
 \r
-Returns:\r
+/**\r
+  This function is used to program the resource allocated\r
+  for each resource node under specified bridge.\r
 \r
-  TODO: add return values\r
+  @param Base     Base address of resource to be progammed.\r
+  @param Bridge   PCI resource node for the bridge device.\r
 \r
---*/\r
-;\r
+  @retval EFI_SUCCESS            Successfully to program all resouces\r
+                                 on given PCI bridge device.\r
+  @retval EFI_OUT_OF_RESOURCES   Base is all one.\r
 \r
+**/\r
 EFI_STATUS\r
 ProgramResource (\r
   IN UINT64            Base,\r
   IN PCI_RESOURCE_NODE *Bridge\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
+  );\r
 \r
-  Base    - TODO: add argument description\r
-  Bridge  - TODO: add argument description\r
+/**\r
+  Program Bar register for PCI device.\r
 \r
-Returns:\r
+  @param Base  Base address for PCI device resource to be progammed.\r
+  @param Node  Point to resoure node structure.\r
 \r
-  TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
+**/\r
+VOID\r
 ProgramBar (\r
   IN UINT64            Base,\r
   IN PCI_RESOURCE_NODE *Node\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  Base  - TODO: add argument description\r
-  Node  - TODO: add argument description\r
-\r
-Returns:\r
+  );\r
 \r
-  TODO: add return values\r
+/**\r
+  Program PCI-PCI bridge apperture.\r
 \r
---*/\r
-;\r
+  @param Base  Base address for resource.\r
+  @param Node  Point to resoure node structure.\r
 \r
-EFI_STATUS\r
+**/\r
+VOID\r
 ProgramPpbApperture (\r
   IN UINT64            Base,\r
   IN PCI_RESOURCE_NODE *Node\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  Base  - TODO: add argument description\r
-  Node  - TODO: add argument description\r
+  );\r
 \r
-Returns:\r
+/**\r
+  Program parent bridge for Option Rom.\r
 \r
-  TODO: add return values\r
+  @param PciDevice      Pci deivce instance.\r
+  @param OptionRomBase  Base address for Optiona Rom.\r
+  @param Enable         Enable or disable PCI memory.\r
 \r
---*/\r
-;\r
-\r
-EFI_STATUS\r
+**/\r
+VOID\r
 ProgrameUpstreamBridgeForRom (\r
   IN PCI_IO_DEVICE   *PciDevice,\r
   IN UINT32          OptionRomBase,\r
   IN BOOLEAN         Enable\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
+  );\r
 \r
-Arguments:\r
+/**\r
+  Test whether resource exists for a bridge.\r
 \r
-  PciDevice     - TODO: add argument description\r
-  OptionRomBase - TODO: add argument description\r
-  Enable        - TODO: add argument description\r
+  @param Bridge  Point to resource node for a bridge.\r
 \r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
-;\r
+  @retval TRUE   There is resource on the given bridge.\r
+  @retval FALSE  There isn't resource on the given bridge.\r
 \r
+**/\r
 BOOLEAN\r
 ResourceRequestExisted (\r
-  IN PCI_RESOURCE_NODE *Bridge\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
+  IN PCI_RESOURCE_NODE    *Bridge\r
+  );\r
 \r
-  Bridge  - TODO: add argument description\r
+/**\r
+  Initialize resource pool structure.\r
 \r
-Returns:\r
+  @param ResourcePool Point to resource pool structure. This pool\r
+                      is reset to all zero when returned.\r
+  @param ResourceType Type of resource.\r
 \r
-  TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
+**/\r
+VOID\r
 InitializeResourcePool (\r
-  PCI_RESOURCE_NODE   *ResourcePool,\r
-  PCI_BAR_TYPE        ResourceType\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
+  IN OUT PCI_RESOURCE_NODE   *ResourcePool,\r
+  IN     PCI_BAR_TYPE        ResourceType\r
+  );\r
+\r
+/**\r
+  Get all resource information for given Pci device.\r
+\r
+  @param PciDev         Pci device instance.\r
+  @param IoBridge       Io resource node.\r
+  @param Mem32Bridge    32-bit memory node.\r
+  @param PMem32Bridge   32-bit Pmemory node.\r
+  @param Mem64Bridge    64-bit memory node.\r
+  @param PMem64Bridge   64-bit PMemory node.\r
+  @param IoPool         Link list header for Io resource.\r
+  @param Mem32Pool      Link list header for 32-bit memory.\r
+  @param PMem32Pool     Link list header for 32-bit Prefetchable memory.\r
+  @param Mem64Pool      Link list header for 64-bit memory.\r
+  @param PMem64Pool     Link list header for 64-bit Prefetchable memory.\r
 \r
-Arguments:\r
-\r
-  ResourcePool  - TODO: add argument description\r
-  ResourceType  - TODO: add argument description\r
-\r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
+**/\r
+VOID\r
 GetResourceMap (\r
-  PCI_IO_DEVICE      *PciDev,\r
-  PCI_RESOURCE_NODE  **IoBridge,\r
-  PCI_RESOURCE_NODE  **Mem32Bridge,\r
-  PCI_RESOURCE_NODE  **PMem32Bridge,\r
-  PCI_RESOURCE_NODE  **Mem64Bridge,\r
-  PCI_RESOURCE_NODE  **PMem64Bridge,\r
-  PCI_RESOURCE_NODE  *IoPool,\r
-  PCI_RESOURCE_NODE  *Mem32Pool,\r
-  PCI_RESOURCE_NODE  *PMem32Pool,\r
-  PCI_RESOURCE_NODE  *Mem64Pool,\r
-  PCI_RESOURCE_NODE  *PMem64Pool\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  PciDev        - TODO: add argument description\r
-  IoBridge      - TODO: add argument description\r
-  Mem32Bridge   - TODO: add argument description\r
-  PMem32Bridge  - TODO: add argument description\r
-  Mem64Bridge   - TODO: add argument description\r
-  PMem64Bridge  - TODO: add argument description\r
-  IoPool        - TODO: add argument description\r
-  Mem32Pool     - TODO: add argument description\r
-  PMem32Pool    - TODO: add argument description\r
-  Mem64Pool     - TODO: add argument description\r
-  PMem64Pool    - TODO: add argument description\r
-\r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
-;\r
+  IN PCI_IO_DEVICE      *PciDev,\r
+  IN PCI_RESOURCE_NODE  **IoBridge,\r
+  IN PCI_RESOURCE_NODE  **Mem32Bridge,\r
+  IN PCI_RESOURCE_NODE  **PMem32Bridge,\r
+  IN PCI_RESOURCE_NODE  **Mem64Bridge,\r
+  IN PCI_RESOURCE_NODE  **PMem64Bridge,\r
+  IN PCI_RESOURCE_NODE  *IoPool,\r
+  IN PCI_RESOURCE_NODE  *Mem32Pool,\r
+  IN PCI_RESOURCE_NODE  *PMem32Pool,\r
+  IN PCI_RESOURCE_NODE  *Mem64Pool,\r
+  IN PCI_RESOURCE_NODE  *PMem64Pool\r
+  );\r
+\r
+/**\r
+  Destory given resource tree.\r
+\r
+  @param Bridge  PCI resource root node of resource tree.\r
 \r
-EFI_STATUS\r
+**/\r
+VOID\r
 DestroyResourceTree (\r
   IN PCI_RESOURCE_NODE *Bridge\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
+  );\r
 \r
-Arguments:\r
+/**\r
+  Insert resource padding for P2C.\r
 \r
-  Bridge  - TODO: add argument description\r
+  @param PciDev     Pci device instance.\r
+  @param IoNode     Resource info node for IO.\r
+  @param Mem32Node  Resource info node for 32-bit memory.\r
+  @param PMem32Node Resource info node for 32-bit Prefetchable Memory.\r
+  @param Mem64Node  Resource info node for 64-bit memory.\r
+  @param PMem64Node Resource info node for 64-bit Prefetchable Memory.\r
 \r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-RecordReservedResource (\r
-  IN UINT64         Base,\r
-  IN UINT64         Length,\r
-  IN PCI_BAR_TYPE   ResType,\r
-  IN PCI_IO_DEVICE  *Bridge\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  Base    - TODO: add argument description\r
-  Length  - TODO: add argument description\r
-  ResType - TODO: add argument description\r
-  Bridge  - TODO: add argument description\r
-\r
-Returns:\r
-\r
-  TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
+**/\r
+VOID\r
 ResourcePaddingForCardBusBridge (\r
-  PCI_IO_DEVICE     *PciDev,\r
-  PCI_RESOURCE_NODE *IoNode,\r
-  PCI_RESOURCE_NODE *Mem32Node,\r
-  PCI_RESOURCE_NODE *PMem32Node,\r
-  PCI_RESOURCE_NODE *Mem64Node,\r
-  PCI_RESOURCE_NODE *PMem64Node\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
+  IN PCI_IO_DEVICE        *PciDev,\r
+  IN PCI_RESOURCE_NODE    *IoNode,\r
+  IN PCI_RESOURCE_NODE    *Mem32Node,\r
+  IN PCI_RESOURCE_NODE    *PMem32Node,\r
+  IN PCI_RESOURCE_NODE    *Mem64Node,\r
+  IN PCI_RESOURCE_NODE    *PMem64Node\r
+  );\r
 \r
-  PciDev      - TODO: add argument description\r
-  IoNode      - TODO: add argument description\r
-  Mem32Node   - TODO: add argument description\r
-  PMem32Node  - TODO: add argument description\r
-  Mem64Node   - TODO: add argument description\r
-  PMem64Node  - TODO: add argument description\r
+/**\r
+  Program PCI Card device register for given resource node.\r
 \r
-Returns:\r
+  @param Base    Base address of PCI Card device to be programmed.\r
+  @param Node    Given resource node.\r
 \r
-  TODO: add return values\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
+**/\r
+VOID\r
 ProgramP2C (\r
   IN UINT64            Base,\r
   IN PCI_RESOURCE_NODE *Node\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  Base  - TODO: add argument description\r
-  Node  - TODO: add argument description\r
+  );\r
 \r
-Returns:\r
+/**\r
+  Create padding resource node.\r
 \r
-  TODO: add return values\r
+  @param PciDev     Pci device instance.\r
+  @param IoNode     Resource info node for IO.\r
+  @param Mem32Node  Resource info node for 32-bit memory.\r
+  @param PMem32Node Resource info node for 32-bit Prefetchable Memory.\r
+  @param Mem64Node  Resource info node for 64-bit memory.\r
+  @param PMem64Node Resource info node for 64-bit Prefetchable Memory.\r
 \r
---*/\r
-;\r
-\r
-EFI_STATUS\r
+**/\r
+VOID\r
 ApplyResourcePadding (\r
-  PCI_IO_DEVICE     *PciDev,\r
-  PCI_RESOURCE_NODE *IoNode,\r
-  PCI_RESOURCE_NODE *Mem32Node,\r
-  PCI_RESOURCE_NODE *PMem32Node,\r
-  PCI_RESOURCE_NODE *Mem64Node,\r
-  PCI_RESOURCE_NODE *PMem64Node\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  TODO: Add function description\r
-\r
-Arguments:\r
-\r
-  PciDev      - TODO: add argument description\r
-  IoNode      - TODO: add argument description\r
-  Mem32Node   - TODO: add argument description\r
-  PMem32Node  - TODO: add argument description\r
-  Mem64Node   - TODO: add argument description\r
-  PMem64Node  - TODO: add argument description\r
-\r
-Returns:\r
+  IN PCI_IO_DEVICE         *PciDev,\r
+  IN PCI_RESOURCE_NODE     *IoNode,\r
+  IN PCI_RESOURCE_NODE     *Mem32Node,\r
+  IN PCI_RESOURCE_NODE     *PMem32Node,\r
+  IN PCI_RESOURCE_NODE     *Mem64Node,\r
+  IN PCI_RESOURCE_NODE     *PMem64Node\r
+  );\r
 \r
-  TODO: add return values\r
+/**\r
+  Get padding resource for PCI-PCI bridge.\r
 \r
---*/\r
-;\r
+  @param  PciIoDevice     PCI-PCI bridge device instance.\r
 \r
+  @note   Feature flag PcdPciBusHotplugDeviceSupport determines\r
+          whether need to pad resource for them.\r
+**/\r
 VOID\r
 GetResourcePaddingPpb (\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
-EFI_STATUS\r
-ResetAllPpbBusNumber (\r
-  IN PCI_IO_DEVICE                      *Bridge,\r
-  IN UINT8                              StartBusNumber\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Reset bus register\r
-\r
-Arguments:\r
-\r
-  Bridge          - a pointer to the PCI_IO_DEVICE\r
-  StartBusNumber  - the number of bus\r
-\r
-Returns:\r
-\r
-  None\r
-\r
---*/\r
-;\r
+  );\r
 \r
 #endif\r