/*++ | |
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; | |
} | |