]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/PciRootBridgeNoEnumerationDxe/PcatPciRootBridgeDevicePath.c
Porting Duet module from EDKI to EDKII
[mirror_edk2.git] / DuetPkg / PciRootBridgeNoEnumerationDxe / PcatPciRootBridgeDevicePath.c
diff --git a/DuetPkg/PciRootBridgeNoEnumerationDxe/PcatPciRootBridgeDevicePath.c b/DuetPkg/PciRootBridgeNoEnumerationDxe/PcatPciRootBridgeDevicePath.c
new file mode 100644 (file)
index 0000000..ab1b5d8
--- /dev/null
@@ -0,0 +1,87 @@
+/*++\r
+\r
+Copyright (c) 2005 - 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
+    PcatPciRootBridgeDevicePath.c\r
+    \r
+Abstract:\r
+\r
+    EFI PCAT PCI Root Bridge Device Path Protocol\r
+\r
+Revision History\r
+\r
+--*/\r
+\r
+#include "PcatPciRootBridge.h"\r
+\r
+//\r
+// Static device path declarations for this driver.\r
+//\r
+\r
+typedef struct {\r
+  ACPI_HID_DEVICE_PATH              AcpiDevicePath;\r
+  EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;\r
+} EFI_PCI_ROOT_BRIDGE_DEVICE_PATH;\r
+\r
+static EFI_PCI_ROOT_BRIDGE_DEVICE_PATH mEfiPciRootBridgeDevicePath = {\r
+  {\r
+    ACPI_DEVICE_PATH,\r
+    ACPI_DP,\r
+    (UINT8) (sizeof(ACPI_HID_DEVICE_PATH)),\r
+    (UINT8) ((sizeof(ACPI_HID_DEVICE_PATH)) >> 8),\r
+    EISA_PNP_ID(0x0A03),\r
+    0\r
+  },\r
+  {\r
+    END_DEVICE_PATH_TYPE,\r
+    END_ENTIRE_DEVICE_PATH_SUBTYPE,\r
+    END_DEVICE_PATH_LENGTH,\r
+    0\r
+  }\r
+};\r
+\r
+EFI_STATUS\r
+PcatRootBridgeDevicePathConstructor (\r
+  IN EFI_DEVICE_PATH_PROTOCOL  **Protocol,\r
+  IN UINTN                     RootBridgeNumber,\r
+  IN BOOLEAN                   IsPciExpress\r
+  )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+    Construct the device path protocol\r
+\r
+Arguments:\r
+\r
+    Protocol - protocol to initialize\r
+    \r
+Returns:\r
+\r
+    None\r
+\r
+--*/\r
+{\r
+  ACPI_HID_DEVICE_PATH  *AcpiDevicePath;\r
\r
+  *Protocol = DuplicateDevicePath((EFI_DEVICE_PATH_PROTOCOL *)(&mEfiPciRootBridgeDevicePath));\r
+\r
+  AcpiDevicePath = (ACPI_HID_DEVICE_PATH *)(*Protocol);\r
\r
+  AcpiDevicePath->UID = (UINT32)RootBridgeNumber;\r
+\r
+  if (IsPciExpress) {\r
+    AcpiDevicePath->HID = EISA_PNP_ID(0x0A08);\r
+  }\r
+\r
+  return EFI_SUCCESS;\r
+}\r
+\r