1/*++ 2 3Copyright (c) 2005 - 2006, Intel Corporation. All rights reserved.<BR> 4This program and the accompanying materials 5are licensed and made available under the terms and conditions of the BSD License 6which accompanies this distribution. The full text of the license may be found at 7http://opensource.org/licenses/bsd-license.php 8 9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 11 12Module Name: 13 PcatPciRootBridgeDevicePath.c 14 15Abstract: 16 17 EFI PCAT PCI Root Bridge Device Path Protocol 18 19Revision History 20 21--*/ 22 23#include "PcatPciRootBridge.h" 24 25// 26// Static device path declarations for this driver. 27// 28 29typedef struct { 30 ACPI_HID_DEVICE_PATH AcpiDevicePath; 31 EFI_DEVICE_PATH_PROTOCOL EndDevicePath; 32} EFI_PCI_ROOT_BRIDGE_DEVICE_PATH; 33 34EFI_PCI_ROOT_BRIDGE_DEVICE_PATH mEfiPciRootBridgeDevicePath = { 35 { 36 { 37 ACPI_DEVICE_PATH, 38 ACPI_DP, 39 { 40 (UINT8) (sizeof(ACPI_HID_DEVICE_PATH)), 41 (UINT8) ((sizeof(ACPI_HID_DEVICE_PATH)) >> 8), 42 } 43 }, 44 EISA_PNP_ID(0x0A03), 45 0 46 }, 47 { 48 END_DEVICE_PATH_TYPE, 49 END_ENTIRE_DEVICE_PATH_SUBTYPE, 50 { 51 END_DEVICE_PATH_LENGTH, 52 0 53 } 54 } 55}; 56 57EFI_STATUS 58PcatRootBridgeDevicePathConstructor ( 59 IN EFI_DEVICE_PATH_PROTOCOL **Protocol, 60 IN UINTN RootBridgeNumber, 61 IN BOOLEAN IsPciExpress 62 ) 63/*++ 64 65Routine Description: 66 67 Construct the device path protocol 68 69Arguments: 70 71 Protocol - protocol to initialize 72 73Returns: 74 75 None 76 77--*/ 78{ 79 ACPI_HID_DEVICE_PATH *AcpiDevicePath; 80 81 *Protocol = DuplicateDevicePath((EFI_DEVICE_PATH_PROTOCOL *)(&mEfiPciRootBridgeDevicePath)); 82 83 AcpiDevicePath = (ACPI_HID_DEVICE_PATH *)(*Protocol); 84 85 AcpiDevicePath->UID = (UINT32)RootBridgeNumber; 86 87 if (IsPciExpress) { 88 AcpiDevicePath->HID = EISA_PNP_ID(0x0A08); 89 } 90 91 return EFI_SUCCESS; 92} 93 94