--- /dev/null
+/*++\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
+\r
+Module Name:\r
+\r
+ PciResourceSupport.h\r
+ \r
+Abstract:\r
+\r
+ \r
+\r
+Revision History\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
+\r
+#define RESOURCED_LIST_FROM_NODE(a) \\r
+ CR (a, PCI_RESERVED_RESOURCE_LIST, Node, RESERVED_RESOURCE_SIGNATURE)\r
+\r
+#define RESOURCED_LIST_FROM_LINK(a) \\r
+ CR (a, PCI_RESERVED_RESOURCE_LIST, Link, RESERVED_RESOURCE_SIGNATURE)\r
+\r
+typedef enum {\r
+ PciResUsageTypical = 0,\r
+ PciResUsagePadding,\r
+ PciResUsageOptionRomProcessing\r
+} PCI_RESOURCE_USAGE;\r
+\r
+#define PCI_RESOURCE_SIGNATURE EFI_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
+} PCI_RESOURCE_NODE;\r
+\r
+#define RESOURCE_NODE_FROM_LINK(a) \\r
+ CR (a, PCI_RESOURCE_NODE, Link, PCI_RESOURCE_SIGNATURE)\r
+\r
+EFI_STATUS\r
+SkipVGAAperture (\r
+ OUT UINT64 *Start,\r
+ IN UINT64 Length\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ TODO: Add function description\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
+SkipIsaAliasAperture (\r
+ OUT UINT64 *Start,\r
+ IN UINT64 Length\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ TODO: Add function description\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
+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
+\r
+ Bridge - TODO: add argument description\r
+ ResNode - TODO: add argument description\r
+\r
+Returns:\r
+\r
+ TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+MergeResourceTree (\r
+ PCI_RESOURCE_NODE *Dst,\r
+ PCI_RESOURCE_NODE *Res,\r
+ BOOLEAN TypeMerge\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+ TODO: Add function description\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
+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
+\r
+ TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\r
+CalculateResourceAperture (\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
+\r
+ TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\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
+\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
+Routine Description:\r
+\r
+ TODO: Add function description\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
+CreateResourceMap (\r
+ IN PCI_IO_DEVICE *Bridge,\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
+Routine Description:\r
+\r
+ TODO: Add function description\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
+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
+ 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
+Returns:\r
+\r
+ TODO: add return values\r
+\r
+--*/\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
+Returns:\r
+\r
+ TODO: add return values\r
+\r
+--*/\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
+ Base - 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
+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
+ TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\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
+Returns:\r
+\r
+ TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\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
+Arguments:\r
+\r
+ PciDevice - TODO: add argument description\r
+ OptionRomBase - TODO: add argument description\r
+ Enable - TODO: add argument description\r
+\r
+Returns:\r
+\r
+ TODO: add return values\r
+\r
+--*/\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
+\r
+ Bridge - TODO: add argument description\r
+\r
+Returns:\r
+\r
+ TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\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
+\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
+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
+\r
+EFI_STATUS\r
+DestroyResourceTree (\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
+\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
+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
+\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
+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
+Returns:\r
+\r
+ TODO: add return values\r
+\r
+--*/\r
+;\r
+\r
+EFI_STATUS\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
+\r
+ TODO: add return values\r
+\r
+--*/\r
+;\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
+ResetAllPpbBusReg (\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
+#endif\r