| /*++ |
| |
| Copyright (c) 2005 - 2006, Intel Corporation. All rights reserved.<BR> |
| This program and the accompanying materials |
| are licensed and made available under the terms and conditions of the BSD License |
| which accompanies this distribution. The full text of the license may be found at |
| http://opensource.org/licenses/bsd-license.php |
| |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. |
| |
| Module Name: |
| PcatPciRootBridgeDevicePath.c |
| |
| Abstract: |
| |
| EFI PCAT PCI Root Bridge Device Path Protocol |
| |
| Revision History |
| |
| --*/ |
| |
| #include "PcatPciRootBridge.h" |
| |
| // |
| // Static device path declarations for this driver. |
| // |
| |
| typedef struct { |
| ACPI_HID_DEVICE_PATH AcpiDevicePath; |
| EFI_DEVICE_PATH_PROTOCOL EndDevicePath; |
| } EFI_PCI_ROOT_BRIDGE_DEVICE_PATH; |
| |
| EFI_PCI_ROOT_BRIDGE_DEVICE_PATH mEfiPciRootBridgeDevicePath = { |
| { |
| { |
| ACPI_DEVICE_PATH, |
| ACPI_DP, |
| { |
| (UINT8) (sizeof(ACPI_HID_DEVICE_PATH)), |
| (UINT8) ((sizeof(ACPI_HID_DEVICE_PATH)) >> 8), |
| } |
| }, |
| EISA_PNP_ID(0x0A03), |
| 0 |
| }, |
| { |
| END_DEVICE_PATH_TYPE, |
| END_ENTIRE_DEVICE_PATH_SUBTYPE, |
| { |
| END_DEVICE_PATH_LENGTH, |
| 0 |
| } |
| } |
| }; |
| |
| EFI_STATUS |
| PcatRootBridgeDevicePathConstructor ( |
| IN EFI_DEVICE_PATH_PROTOCOL **Protocol, |
| IN UINTN RootBridgeNumber, |
| IN BOOLEAN IsPciExpress |
| ) |
| /*++ |
| |
| Routine Description: |
| |
| Construct the device path protocol |
| |
| Arguments: |
| |
| Protocol - protocol to initialize |
| |
| Returns: |
| |
| None |
| |
| --*/ |
| { |
| ACPI_HID_DEVICE_PATH *AcpiDevicePath; |
| |
| *Protocol = DuplicateDevicePath((EFI_DEVICE_PATH_PROTOCOL *)(&mEfiPciRootBridgeDevicePath)); |
| |
| AcpiDevicePath = (ACPI_HID_DEVICE_PATH *)(*Protocol); |
| |
| AcpiDevicePath->UID = (UINT32)RootBridgeNumber; |
| |
| if (IsPciExpress) { |
| AcpiDevicePath->HID = EISA_PNP_ID(0x0A08); |
| } |
| |
| return EFI_SUCCESS; |
| } |
| |