]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.h
1. Impl PI 1.2 PCI part. Major changes include:
[mirror_edk2.git] / IntelFrameworkModulePkg / Bus / Pci / PciBusDxe / PciResourceSupport.h
diff --git a/IntelFrameworkModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.h b/IntelFrameworkModulePkg/Bus/Pci/PciBusDxe/PciResourceSupport.h
deleted file mode 100644 (file)
index faa6c0d..0000000
+++ /dev/null
@@ -1,492 +0,0 @@
-/** @file\r
-  PCI resouces support functions declaration for PCI Bus module.\r
-\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
-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_RESOURCE_SUPPORT_H_\r
-#define _EFI_PCI_RESOURCE_SUPPORT_H_\r
-\r
-typedef enum {\r
-  PciResUsageTypical            = 0,\r
-  PciResUsagePadding,\r
-  PciResUsageOptionRomProcessing\r
-} PCI_RESOURCE_USAGE;\r
-\r
-#define PCI_RESOURCE_SIGNATURE  SIGNATURE_32 ('p', 'c', 'r', 'c')\r
-\r
-typedef struct {\r
-  UINT32              Signature;\r
-  LIST_ENTRY          Link;\r
-  LIST_ENTRY          ChildList;\r
-  PCI_IO_DEVICE       *PciDev;\r
-  UINT64              Alignment;\r
-  UINT64              Offset;\r
-  UINT8               Bar;\r
-  PCI_BAR_TYPE        ResType;\r
-  UINT64              Length;\r
-  BOOLEAN             Reserved;\r
-  PCI_RESOURCE_USAGE  ResourceUsage;\r
-  BOOLEAN             Virtual;\r
-} PCI_RESOURCE_NODE;\r
-\r
-#define RESOURCE_NODE_FROM_LINK(a) \\r
-  CR (a, PCI_RESOURCE_NODE, Link, PCI_RESOURCE_SIGNATURE)\r
-\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
-  This function is used to skip ISA aliasing aperture.\r
-\r
-  @param Start    Returned start address including ISA aliasing aperture.\r
-  @param Length   The length of ISA aliasing aperture.\r
-\r
-**/\r
-VOID\r
-SkipIsaAliasAperture (\r
-  OUT UINT64   *Start,\r
-  IN  UINT64   Length\r
-  );\r
-\r
-/**\r
-  This function inserts a resource node into the resource list.\r
-  The resource list is sorted in descend order.\r
-\r
-  @param Bridge  PCI resource node for bridge.\r
-  @param ResNode Resource node want to be inserted.\r
-\r
-**/\r
-VOID\r
-InsertResourceNode (\r
-  IN OUT PCI_RESOURCE_NODE   *Bridge,\r
-  IN     PCI_RESOURCE_NODE   *ResNode\r
-  );\r
-\r
-/**\r
-  This routine is used to merge two different resource trees in need of\r
-  resoure degradation.\r
-\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
-  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
-  @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
-**/\r
-VOID\r
-MergeResourceTree (\r
-  IN PCI_RESOURCE_NODE   *Dst,\r
-  IN PCI_RESOURCE_NODE   *Res,\r
-  IN BOOLEAN             TypeMerge\r
-  );\r
-\r
-/**\r
-  This function is used to calculate the IO16 aperture\r
-  for a bridge.\r
-\r
-  @param Bridge    PCI resource node for bridge.\r
-\r
-**/\r
-VOID\r
-CalculateApertureIo16 (\r
-  IN PCI_RESOURCE_NODE    *Bridge\r
-  );\r
-\r
-/**\r
-  This function is used to calculate the resource aperture\r
-  for a given bridge device.\r
-\r
-  @param Bridge      PCI resouce node for given bridge device.\r
-\r
-**/\r
-VOID\r
-CalculateResourceAperture (\r
-  IN PCI_RESOURCE_NODE    *Bridge\r
-  );\r
-\r
-/**\r
-  Get IO/Memory resource infor for given PCI device.\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
-GetResourceFromDevice (\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
-  IN UINT64                Length,\r
-  IN UINT64                Alignment,\r
-  IN UINT8                 Bar,\r
-  IN PCI_BAR_TYPE          ResType,\r
-  IN PCI_RESOURCE_USAGE    ResUsage\r
-  );\r
-\r
-/**\r
-  This function is used to extract resource request from\r
-  IOV VF device node list.\r
-\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
-**/\r
-PCI_RESOURCE_NODE *\r
-CreateVfResourceNode (\r
-  IN PCI_IO_DEVICE         *PciDev,\r
-  IN UINT64                Length,\r
-  IN UINT64                Alignment,\r
-  IN UINT8                 Bar,\r
-  IN PCI_BAR_TYPE          ResType,\r
-  IN PCI_RESOURCE_USAGE    ResUsage\r
-  );\r
-\r
-/**\r
-  This function is used to extract resource request from\r
-  device node list.\r
-\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
-**/\r
-VOID\r
-CreateResourceMap (\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
-  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
-  @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
-**/\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
-  Test whether bridge device support decode resource.\r
-\r
-  @param Bridge    Bridge device instance.\r
-  @param Decode    Decode type according to resource type.\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
-  This function is used to program the resource allocated\r
-  for each resource node under specified bridge.\r
-\r
-  @param Base     Base address of resource to be progammed.\r
-  @param Bridge   PCI resource node for the bridge device.\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
-  Program Bar register for PCI device.\r
-\r
-  @param Base  Base address for PCI device resource to be progammed.\r
-  @param Node  Point to resoure node structure.\r
-\r
-**/\r
-VOID\r
-ProgramBar (\r
-  IN UINT64            Base,\r
-  IN PCI_RESOURCE_NODE *Node\r
-  );\r
-\r
-/**\r
-  Program IOV VF Bar register for PCI device.\r
-\r
-  @param Base  Base address for PCI device resource to be progammed.\r
-  @param Node  Point to resoure node structure.\r
-\r
-**/\r
-EFI_STATUS\r
-ProgramVfBar (\r
-  IN UINT64            Base,\r
-  IN PCI_RESOURCE_NODE *Node\r
-  );\r
-\r
-/**\r
-  Program PCI-PCI bridge apperture.\r
-\r
-  @param Base  Base address for resource.\r
-  @param Node  Point to resoure node structure.\r
-\r
-**/\r
-VOID\r
-ProgramPpbApperture (\r
-  IN UINT64            Base,\r
-  IN PCI_RESOURCE_NODE *Node\r
-  );\r
-\r
-/**\r
-  Program parent bridge for Option Rom.\r
-\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
-VOID\r
-ProgrameUpstreamBridgeForRom (\r
-  IN PCI_IO_DEVICE   *PciDevice,\r
-  IN UINT32          OptionRomBase,\r
-  IN BOOLEAN         Enable\r
-  );\r
-\r
-/**\r
-  Test whether resource exists for a bridge.\r
-\r
-  @param Bridge  Point to resource node for a bridge.\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
-  Initialize resource pool structure.\r
-\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
-**/\r
-VOID\r
-InitializeResourcePool (\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
-**/\r
-VOID\r
-GetResourceMap (\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
-**/\r
-VOID\r
-DestroyResourceTree (\r
-  IN PCI_RESOURCE_NODE *Bridge\r
-  );\r
-\r
-/**\r
-  Insert resource padding for P2C.\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
-ResourcePaddingForCardBusBridge (\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
-  Program PCI Card device register for given resource node.\r
-\r
-  @param Base    Base address of PCI Card device to be programmed.\r
-  @param Node    Given resource node.\r
-\r
-**/\r
-VOID\r
-ProgramP2C (\r
-  IN UINT64            Base,\r
-  IN PCI_RESOURCE_NODE *Node\r
-  );\r
-\r
-/**\r
-  Create padding resource node.\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
-ApplyResourcePadding (\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
-  Get padding resource for PCI-PCI bridge.\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
-#endif\r