]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OldMdePkg/Include/Protocol/PciHotPlugInit.h
Moved the MdePkg to OldMdePkg so that new code in MdePkg does not break existing...
[mirror_edk2.git] / OldMdePkg / Include / Protocol / PciHotPlugInit.h
diff --git a/OldMdePkg/Include/Protocol/PciHotPlugInit.h b/OldMdePkg/Include/Protocol/PciHotPlugInit.h
new file mode 100644 (file)
index 0000000..efd4c45
--- /dev/null
@@ -0,0 +1,165 @@
+/** @file\r
+  This file declares EFI PCI Hot Plug Init Protocol\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:  PciHotPlugInit.h\r
+\r
+  @par Revision Reference:\r
+  This protocol is defined in Framework of EFI Hot Plug Pci Initialization Protocol Spec\r
+  Version 0.9\r
+\r
+**/\r
+\r
+#ifndef _EFI_PCI_HOT_PLUG_INIT_H\r
+#define _EFI_PCI_HOT_PLUG_INIT_H\r
+\r
+//\r
+// Global ID for the PCI Hot Plug Protocol\r
+//\r
+#define EFI_PCI_HOT_PLUG_INIT_PROTOCOL_GUID \\r
+  { 0xaa0e8bc1, 0xdabc, 0x46b0, {0xa8, 0x44, 0x37, 0xb8, 0x16, 0x9b, 0x2b, 0xea } }\r
+\r
+  \r
+typedef struct _EFI_PCI_HOT_PLUG_INIT_PROTOCOL EFI_PCI_HOT_PLUG_INIT_PROTOCOL;\r
+\r
+#define  EFI_HPC_STATE_INITIALIZED    0x01\r
+#define  EFI_HPC_STATE_ENABLED        0x02\r
+\r
+typedef UINT16 EFI_HPC_STATE;\r
+\r
+\r
+typedef struct{\r
+  EFI_DEVICE_PATH_PROTOCOL  *HpcDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL  *HpbDevicePath;\r
+} EFI_HPC_LOCATION;\r
+\r
+\r
+typedef enum{\r
+  EfiPaddingPciBus,\r
+  EfiPaddingPciRootBridge\r
+} EFI_HPC_PADDING_ATTRIBUTES;\r
+\r
+/**\r
+  Returns a list of root Hot Plug Controllers (HPCs) that require initialization \r
+  during the boot process.\r
+\r
+  @param  This                  Pointer to the EFI_PCI_HOT_PLUG_INIT_PROTOCOL instance.\r
+  @param  HpcCount              The number of root HPCs that were returned.\r
+  @param  HpcList               The list of root HPCs. HpcCount defines the number of\r
+                                elements in this list.\r
+\r
+  @retval EFI_SUCCESS           HpcList was returned.\r
+  @retval EFI_OUT_OF_RESOURCES  HpcList was not returned due to insufficient resources.\r
+  @retval EFI_INVALID_PARAMETER HpcCount is NULL or HpcList is NULL.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_GET_ROOT_HPC_LIST) (\r
+  IN EFI_PCI_HOT_PLUG_INIT_PROTOCOL   *This,\r
+  OUT UINTN                           *HpcCount,\r
+  OUT EFI_HPC_LOCATION                **HpcList\r
+);\r
+\r
+/**\r
+  Initializes one root Hot Plug Controller (HPC). This process may causes \r
+  initialization of its subordinate buses. \r
+\r
+  @param  This                  Pointer to the EFI_PCI_HOT_PLUG_INIT_PROTOCOL instance.\r
+  @param  HpcDevicePath         The device path to the HPC that is being initialized.\r
+  @param  HpcPciAddress         The address of the HPC function on the PCI bus.\r
+  @param  Event                 The event that should be signaled when the HPC initialization\r
+                                is complete.\r
+  @param  HpcState              The state of the HPC hardware.\r
+\r
+  @retval EFI_SUCCESS           If Event is NULL, the specific HPC was successfully\r
+                                initialized. If Event is not NULL, Event will be signaled at a later time\r
+                                when initialization is complete.\r
+  @retval EFI_UNSUPPORTED       This instance of EFI_PCI_HOT_PLUG_INIT_PROTOCOL\r
+                                does not support the specified HPC.\r
+  @retval EFI_OUT_OF_RESOURCES  Initialization failed due to insufficient\r
+                                resources.\r
+  @retval EFI_INVALID_PARAMETER HpcState is NULL.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_INITIALIZE_ROOT_HPC) (\r
+  IN EFI_PCI_HOT_PLUG_INIT_PROTOCOL     *This,\r
+  IN  EFI_DEVICE_PATH_PROTOCOL          *HpcDevicePath,\r
+  IN  UINT64                            HpcPciAddress,\r
+  IN  EFI_EVENT                         Event, OPTIONAL\r
+  OUT EFI_HPC_STATE                     *HpcState\r
+);\r
+\r
+/**\r
+  Returns the resource padding that is required by the PCI bus that is controlled \r
+  by the specified Hot Plug Controller (HPC).\r
+\r
+  @param  This                  Pointer to the EFI_PCI_HOT_PLUG_INIT_PROTOCOL instance.\r
+  @param  HpcDevicePath         The device path to the HPC.\r
+  @param  HpcPciAddress         The address of the HPC function on the PCI bus.\r
+  @param  HpcState              The state of the HPC hardware.\r
+  @param  Padding               The amount of resource padding that is required by the\r
+                                PCI bus under the control of the specified HPC.\r
+  @param  Attributes            Describes how padding is accounted for. The padding\r
+                                is returned in the form of ACPI 2.0 resource descriptors.\r
+\r
+  @retval EFI_SUCCESS           The resource padding was successfully returned.\r
+  @retval EFI_UNSUPPORTED       This instance of the EFI_PCI_HOT_PLUG_INIT_PROTOCOL\r
+                                does not support the specified HPC.\r
+  @retval EFI_NOT_READY         This function was called before HPC initialization is complete.\r
+  @retval EFI_INVALID_PARAMETER HpcState or Padding or Attributes is NULL.\r
+  @retval EFI_OUT_OF_RESOURCES  ACPI 2.0 resource descriptors for Padding\r
+                                cannot be allocated due to insufficient resources.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_GET_PCI_HOT_PLUG_PADDING) (\r
+  IN EFI_PCI_HOT_PLUG_INIT_PROTOCOL     *This,\r
+  IN  EFI_DEVICE_PATH_PROTOCOL          *HpcDevicePath,\r
+  IN  UINT64                            HpcPciAddress,\r
+  OUT EFI_HPC_STATE                     *HpcState,\r
+  OUT VOID                              **Padding,\r
+  OUT EFI_HPC_PADDING_ATTRIBUTES        *Attributes\r
+); \r
+\r
+\r
+//\r
+// Prototypes for the PCI Hot Plug Init Protocol\r
+//\r
+\r
+/**\r
+  @par Protocol Description:\r
+  This protocol provides the necessary functionality to initialize the \r
+  Hot Plug Controllers (HPCs) and the buses that they control. This protocol \r
+  also provides information regarding resource padding. \r
+\r
+  @param GetRootHpcList\r
+  Returns a list of root HPCs and the buses that they control.\r
+\r
+  @param InitializeRootHpc\r
+  Initializes the specified root HPC.\r
+\r
+  @param GetResourcePadding\r
+  Returns the resource padding that is required by the HPC.\r
+\r
+**/\r
+struct _EFI_PCI_HOT_PLUG_INIT_PROTOCOL {\r
+  EFI_GET_ROOT_HPC_LIST                                  GetRootHpcList;\r
+  EFI_INITIALIZE_ROOT_HPC                                InitializeRootHpc;\r
+  EFI_GET_PCI_HOT_PLUG_PADDING                           GetResourcePadding;\r
+};\r
+\r
+extern EFI_GUID gEfiPciHotPlugInitProtocolGuid;\r
+\r
+#endif\r