Home | History | Annotate | Download | only in PciRootBridgeNoEnumerationDxe
      1 /*++
      2 
      3 Copyright (c) 2005 - 2006, Intel Corporation. All rights reserved.<BR>
      4 This program and the accompanying materials
      5 are licensed and made available under the terms and conditions of the BSD License
      6 which accompanies this distribution.  The full text of the license may be found at
      7 http://opensource.org/licenses/bsd-license.php
      8 
      9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     11 
     12 Module Name:
     13     PcatPciRootBridgeDevicePath.c
     14 
     15 Abstract:
     16 
     17     EFI PCAT PCI Root Bridge Device Path Protocol
     18 
     19 Revision History
     20 
     21 --*/
     22 
     23 #include "PcatPciRootBridge.h"
     24 
     25 //
     26 // Static device path declarations for this driver.
     27 //
     28 
     29 typedef struct {
     30   ACPI_HID_DEVICE_PATH              AcpiDevicePath;
     31   EFI_DEVICE_PATH_PROTOCOL          EndDevicePath;
     32 } EFI_PCI_ROOT_BRIDGE_DEVICE_PATH;
     33 
     34 EFI_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 
     57 EFI_STATUS
     58 PcatRootBridgeDevicePathConstructor (
     59   IN EFI_DEVICE_PATH_PROTOCOL  **Protocol,
     60   IN UINTN                     RootBridgeNumber,
     61   IN BOOLEAN                   IsPciExpress
     62   )
     63 /*++
     64 
     65 Routine Description:
     66 
     67     Construct the device path protocol
     68 
     69 Arguments:
     70 
     71     Protocol - protocol to initialize
     72 
     73 Returns:
     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