/** @file\r
- Supporting functions implementaion for PCI devices management.\r
+ Supporting functions implementation for PCI devices management.\r
\r
-Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
(C) Copyright 2018 Hewlett Packard Enterprise Development LP<BR>\r
-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
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
**/\r
VOID\r
InsertRootBridge (\r
- IN PCI_IO_DEVICE *RootBridge\r
+ IN PCI_IO_DEVICE *RootBridge\r
)\r
{\r
InsertTailList (&mPciDevicePool, &(RootBridge->Link));\r
**/\r
VOID\r
InsertPciDevice (\r
- IN PCI_IO_DEVICE *Bridge,\r
- IN PCI_IO_DEVICE *PciDeviceNode\r
+ IN PCI_IO_DEVICE *Bridge,\r
+ IN PCI_IO_DEVICE *PciDeviceNode\r
)\r
{\r
InsertTailList (&Bridge->ChildList, &(PciDeviceNode->Link));\r
}\r
\r
/**\r
- Destroy root bridge and remove it from deivce tree.\r
+ Destroy root bridge and remove it from device tree.\r
\r
@param RootBridge The bridge want to be removed.\r
\r
**/\r
VOID\r
DestroyRootBridge (\r
- IN PCI_IO_DEVICE *RootBridge\r
+ IN PCI_IO_DEVICE *RootBridge\r
)\r
{\r
DestroyPciDeviceTree (RootBridge);\r
\r
All direct or indirect allocated resource for this node will be freed.\r
\r
- @param PciIoDevice A pointer to the PCI_IO_DEVICE to be destoried.\r
+ @param PciIoDevice A pointer to the PCI_IO_DEVICE to be destroyed.\r
\r
**/\r
VOID\r
FreePciDevice (\r
- IN PCI_IO_DEVICE *PciIoDevice\r
+ IN PCI_IO_DEVICE *PciIoDevice\r
)\r
{\r
ASSERT (PciIoDevice != NULL);\r
**/\r
VOID\r
DestroyPciDeviceTree (\r
- IN PCI_IO_DEVICE *Bridge\r
+ IN PCI_IO_DEVICE *Bridge\r
)\r
{\r
- LIST_ENTRY *CurrentLink;\r
- PCI_IO_DEVICE *Temp;\r
+ LIST_ENTRY *CurrentLink;\r
+ PCI_IO_DEVICE *Temp;\r
\r
while (!IsListEmpty (&Bridge->ChildList)) {\r
-\r
CurrentLink = Bridge->ChildList.ForwardLink;\r
\r
//\r
\r
@param Controller Root bridge handle.\r
\r
- @retval EFI_SUCCESS Destory all devcie nodes successfully.\r
+ @retval EFI_SUCCESS Destroy all device nodes successfully.\r
@retval EFI_NOT_FOUND Cannot find any PCI device under specified\r
root bridge.\r
\r
**/\r
EFI_STATUS\r
DestroyRootBridgeByHandle (\r
- IN EFI_HANDLE Controller\r
+ IN EFI_HANDLE Controller\r
)\r
{\r
-\r
- LIST_ENTRY *CurrentLink;\r
- PCI_IO_DEVICE *Temp;\r
+ LIST_ENTRY *CurrentLink;\r
+ PCI_IO_DEVICE *Temp;\r
\r
CurrentLink = mPciDevicePool.ForwardLink;\r
\r
Temp = PCI_IO_DEVICE_FROM_LINK (CurrentLink);\r
\r
if (Temp->Handle == Controller) {\r
-\r
RemoveEntryList (CurrentLink);\r
\r
DestroyPciDeviceTree (Temp);\r
**/\r
EFI_STATUS\r
RegisterPciDevice (\r
- IN EFI_HANDLE Controller,\r
- IN PCI_IO_DEVICE *PciIoDevice,\r
- OUT EFI_HANDLE *Handle OPTIONAL\r
+ IN EFI_HANDLE Controller,\r
+ IN PCI_IO_DEVICE *PciIoDevice,\r
+ OUT EFI_HANDLE *Handle OPTIONAL\r
)\r
{\r
- EFI_STATUS Status;\r
- VOID *PlatformOpRomBuffer;\r
- UINTN PlatformOpRomSize;\r
- EFI_PCI_IO_PROTOCOL *PciIo;\r
- UINT8 Data8;\r
- BOOLEAN HasEfiImage;\r
+ EFI_STATUS Status;\r
+ VOID *PlatformOpRomBuffer;\r
+ UINTN PlatformOpRomSize;\r
+ EFI_PCI_IO_PROTOCOL *PciIo;\r
+ UINT8 Data8;\r
+ BOOLEAN HasEfiImage;\r
\r
//\r
// Install the pciio protocol, device path protocol\r
// Process OpRom\r
//\r
if (!PciIoDevice->AllOpRomProcessed) {\r
-\r
//\r
// Get the OpRom provided by platform\r
//\r
);\r
if (!EFI_ERROR (Status)) {\r
PciIoDevice->EmbeddedRom = FALSE;\r
- PciIoDevice->RomSize = PlatformOpRomSize;\r
+ PciIoDevice->RomSize = (UINT32)PlatformOpRomSize;\r
PciIoDevice->PciIo.RomSize = PlatformOpRomSize;\r
PciIoDevice->PciIo.RomImage = PlatformOpRomBuffer;\r
//\r
);\r
if (!EFI_ERROR (Status)) {\r
PciIoDevice->EmbeddedRom = FALSE;\r
- PciIoDevice->RomSize = PlatformOpRomSize;\r
+ PciIoDevice->RomSize = (UINT32)PlatformOpRomSize;\r
PciIoDevice->PciIo.RomSize = PlatformOpRomSize;\r
PciIoDevice->PciIo.RomImage = PlatformOpRomBuffer;\r
//\r
);\r
if (EFI_ERROR (Status)) {\r
gBS->UninstallMultipleProtocolInterfaces (\r
- &PciIoDevice->Handle,\r
+ PciIoDevice->Handle,\r
&gEfiDevicePathProtocolGuid,\r
PciIoDevice->DevicePath,\r
&gEfiPciIoProtocolGuid,\r
}\r
}\r
\r
-\r
if (!PciIoDevice->AllOpRomProcessed) {\r
-\r
PciIoDevice->AllOpRomProcessed = TRUE;\r
\r
//\r
);\r
if (EFI_ERROR (Status)) {\r
gBS->UninstallMultipleProtocolInterfaces (\r
- &PciIoDevice->Handle,\r
+ PciIoDevice->Handle,\r
&gEfiDevicePathProtocolGuid,\r
PciIoDevice->DevicePath,\r
&gEfiPciIoProtocolGuid,\r
);\r
if (HasEfiImage) {\r
gBS->UninstallMultipleProtocolInterfaces (\r
- &PciIoDevice->Handle,\r
+ PciIoDevice->Handle,\r
&gEfiLoadFile2ProtocolGuid,\r
&PciIoDevice->LoadFile2,\r
NULL\r
Status = gBS->OpenProtocol (\r
Controller,\r
&gEfiPciRootBridgeIoProtocolGuid,\r
- (VOID **) &(PciIoDevice->PciRootBridgeIo),\r
+ (VOID **)&(PciIoDevice->PciRootBridgeIo),\r
gPciBusDriverBinding.DriverBindingHandle,\r
PciIoDevice->Handle,\r
EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
**/\r
VOID\r
RemoveAllPciDeviceOnBridge (\r
- EFI_HANDLE RootBridgeHandle,\r
- PCI_IO_DEVICE *Bridge\r
+ EFI_HANDLE RootBridgeHandle,\r
+ PCI_IO_DEVICE *Bridge\r
)\r
{\r
- LIST_ENTRY *CurrentLink;\r
- PCI_IO_DEVICE *Temp;\r
+ LIST_ENTRY *CurrentLink;\r
+ PCI_IO_DEVICE *Temp;\r
\r
while (!IsListEmpty (&Bridge->ChildList)) {\r
-\r
CurrentLink = Bridge->ChildList.ForwardLink;\r
Temp = PCI_IO_DEVICE_FROM_LINK (CurrentLink);\r
\r
**/\r
EFI_STATUS\r
DeRegisterPciDevice (\r
- IN EFI_HANDLE Controller,\r
- IN EFI_HANDLE Handle\r
+ IN EFI_HANDLE Controller,\r
+ IN EFI_HANDLE Handle\r
)\r
\r
{\r
- EFI_PCI_IO_PROTOCOL *PciIo;\r
- EFI_STATUS Status;\r
- PCI_IO_DEVICE *PciIoDevice;\r
- PCI_IO_DEVICE *Node;\r
- LIST_ENTRY *CurrentLink;\r
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo;\r
+ EFI_PCI_IO_PROTOCOL *PciIo;\r
+ EFI_STATUS Status;\r
+ PCI_IO_DEVICE *PciIoDevice;\r
+ PCI_IO_DEVICE *Node;\r
+ LIST_ENTRY *CurrentLink;\r
+ EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo;\r
\r
Status = gBS->OpenProtocol (\r
Handle,\r
&gEfiPciIoProtocolGuid,\r
- (VOID **) &PciIo,\r
+ (VOID **)&PciIo,\r
gPciBusDriverBinding.DriverBindingHandle,\r
Controller,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
//\r
\r
if (!IsListEmpty (&PciIoDevice->ChildList)) {\r
-\r
CurrentLink = PciIoDevice->ChildList.ForwardLink;\r
\r
while (CurrentLink != NULL && CurrentLink != &PciIoDevice->ChildList) {\r
- Node = PCI_IO_DEVICE_FROM_LINK (CurrentLink);\r
- Status = DeRegisterPciDevice (Controller, Node->Handle);\r
+ Node = PCI_IO_DEVICE_FROM_LINK (CurrentLink);\r
+ Status = DeRegisterPciDevice (Controller, Node->Handle);\r
\r
if (EFI_ERROR (Status)) {\r
return Status;\r
NULL\r
);\r
}\r
+\r
//\r
// Restore Status\r
//\r
Status = EFI_SUCCESS;\r
}\r
\r
-\r
if (EFI_ERROR (Status)) {\r
gBS->OpenProtocol (\r
- Controller,\r
- &gEfiPciRootBridgeIoProtocolGuid,\r
- (VOID **) &PciRootBridgeIo,\r
- gPciBusDriverBinding.DriverBindingHandle,\r
- Handle,\r
- EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
- );\r
+ Controller,\r
+ &gEfiPciRootBridgeIoProtocolGuid,\r
+ (VOID **)&PciRootBridgeIo,\r
+ gPciBusDriverBinding.DriverBindingHandle,\r
+ Handle,\r
+ EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER\r
+ );\r
return Status;\r
}\r
\r
PciIoDevice->Registered = FALSE;\r
PciIoDevice->Handle = NULL;\r
} else {\r
-\r
//\r
// Handle may be closed before\r
//\r
**/\r
EFI_STATUS\r
StartPciDevicesOnBridge (\r
- IN EFI_HANDLE Controller,\r
- IN PCI_IO_DEVICE *RootBridge,\r
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath,\r
- IN OUT UINT8 *NumberOfChildren,\r
- IN OUT EFI_HANDLE *ChildHandleBuffer\r
+ IN EFI_HANDLE Controller,\r
+ IN PCI_IO_DEVICE *RootBridge,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath,\r
+ IN OUT UINT8 *NumberOfChildren,\r
+ IN OUT EFI_HANDLE *ChildHandleBuffer\r
)\r
\r
{\r
CurrentLink = RootBridge->ChildList.ForwardLink;\r
\r
while (CurrentLink != NULL && CurrentLink != &RootBridge->ChildList) {\r
-\r
PciIoDevice = PCI_IO_DEVICE_FROM_LINK (CurrentLink);\r
if (RemainingDevicePath != NULL) {\r
-\r
Node.DevPath = RemainingDevicePath;\r
\r
- if (Node.Pci->Device != PciIoDevice->DeviceNumber ||\r
- Node.Pci->Function != PciIoDevice->FunctionNumber) {\r
+ if ((Node.Pci->Device != PciIoDevice->DeviceNumber) ||\r
+ (Node.Pci->Function != PciIoDevice->FunctionNumber))\r
+ {\r
CurrentLink = CurrentLink->ForwardLink;\r
continue;\r
}\r
PciIoDevice,\r
NULL\r
);\r
-\r
}\r
\r
- if (NumberOfChildren != NULL && ChildHandleBuffer != NULL && PciIoDevice->Registered) {\r
+ if ((NumberOfChildren != NULL) && (ChildHandleBuffer != NULL) && PciIoDevice->Registered) {\r
ChildHandleBuffer[*NumberOfChildren] = PciIoDevice->Handle;\r
(*NumberOfChildren)++;\r
}\r
\r
return Status;\r
} else {\r
-\r
//\r
// Currently, the PCI bus driver only support PCI-PCI bridge\r
//\r
return EFI_UNSUPPORTED;\r
}\r
-\r
} else {\r
-\r
//\r
// If remaining device path is NULL,\r
// try to enable all the pci devices under this bridge\r
PciIoDevice,\r
NULL\r
);\r
-\r
}\r
\r
- if (NumberOfChildren != NULL && ChildHandleBuffer != NULL && PciIoDevice->Registered) {\r
+ if ((NumberOfChildren != NULL) && (ChildHandleBuffer != NULL) && PciIoDevice->Registered) {\r
ChildHandleBuffer[*NumberOfChildren] = PciIoDevice->Handle;\r
(*NumberOfChildren)++;\r
}\r
Supports,\r
NULL\r
);\r
-\r
}\r
\r
CurrentLink = CurrentLink->ForwardLink;\r
**/\r
EFI_STATUS\r
StartPciDevices (\r
- IN EFI_HANDLE Controller\r
+ IN EFI_HANDLE Controller\r
)\r
{\r
- PCI_IO_DEVICE *RootBridge;\r
- EFI_HANDLE ThisHostBridge;\r
- LIST_ENTRY *CurrentLink;\r
+ PCI_IO_DEVICE *RootBridge;\r
+ EFI_HANDLE ThisHostBridge;\r
+ LIST_ENTRY *CurrentLink;\r
\r
RootBridge = GetRootBridgeByHandle (Controller);\r
ASSERT (RootBridge != NULL);\r
CurrentLink = mPciDevicePool.ForwardLink;\r
\r
while (CurrentLink != NULL && CurrentLink != &mPciDevicePool) {\r
-\r
RootBridge = PCI_IO_DEVICE_FROM_LINK (CurrentLink);\r
//\r
// Locate the right root bridge to start\r
//\r
if (RootBridge->PciRootBridgeIo->ParentHandle == ThisHostBridge) {\r
StartPciDevicesOnBridge (\r
- RootBridge->Handle,\r
- RootBridge,\r
- NULL,\r
- NULL,\r
- NULL\r
- );\r
+ RootBridge->Handle,\r
+ RootBridge,\r
+ NULL,\r
+ NULL,\r
+ NULL\r
+ );\r
}\r
\r
CurrentLink = CurrentLink->ForwardLink;\r
/**\r
Create root bridge device.\r
\r
- @param RootBridgeHandle Specified root bridge hanle.\r
+ @param RootBridgeHandle Specified root bridge handle.\r
\r
@return The crated root bridge device instance, NULL means no\r
root bridge device instance created.\r
**/\r
PCI_IO_DEVICE *\r
CreateRootBridge (\r
- IN EFI_HANDLE RootBridgeHandle\r
+ IN EFI_HANDLE RootBridgeHandle\r
)\r
{\r
- EFI_STATUS Status;\r
- PCI_IO_DEVICE *Dev;\r
- EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;\r
- EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo;\r
+ EFI_STATUS Status;\r
+ PCI_IO_DEVICE *Dev;\r
+ EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath;\r
+ EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *PciRootBridgeIo;\r
\r
Dev = AllocateZeroPool (sizeof (PCI_IO_DEVICE));\r
if (Dev == NULL) {\r
return NULL;\r
}\r
\r
- Dev->Signature = PCI_IO_DEVICE_SIGNATURE;\r
- Dev->Handle = RootBridgeHandle;\r
+ Dev->Signature = PCI_IO_DEVICE_SIGNATURE;\r
+ Dev->Handle = RootBridgeHandle;\r
InitializeListHead (&Dev->ChildList);\r
\r
Status = gBS->OpenProtocol (\r
RootBridgeHandle,\r
&gEfiDevicePathProtocolGuid,\r
- (VOID **) &ParentDevicePath,\r
+ (VOID **)&ParentDevicePath,\r
gPciBusDriverBinding.DriverBindingHandle,\r
RootBridgeHandle,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
Status = gBS->OpenProtocol (\r
RootBridgeHandle,\r
&gEfiPciRootBridgeIoProtocolGuid,\r
- (VOID **) &PciRootBridgeIo,\r
+ (VOID **)&PciRootBridgeIo,\r
gPciBusDriverBinding.DriverBindingHandle,\r
RootBridgeHandle,\r
EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
**/\r
PCI_IO_DEVICE *\r
GetRootBridgeByHandle (\r
- EFI_HANDLE RootBridgeHandle\r
+ EFI_HANDLE RootBridgeHandle\r
)\r
{\r
- PCI_IO_DEVICE *RootBridgeDev;\r
- LIST_ENTRY *CurrentLink;\r
+ PCI_IO_DEVICE *RootBridgeDev;\r
+ LIST_ENTRY *CurrentLink;\r
\r
CurrentLink = mPciDevicePool.ForwardLink;\r
\r
while (CurrentLink != NULL && CurrentLink != &mPciDevicePool) {\r
-\r
RootBridgeDev = PCI_IO_DEVICE_FROM_LINK (CurrentLink);\r
if (RootBridgeDev->Handle == RootBridgeHandle) {\r
return RootBridgeDev;\r
}\r
\r
/**\r
- Judege whether Pci device existed.\r
+ Judge whether Pci device existed.\r
\r
- @param Bridge Parent bridege instance.\r
+ @param Bridge Parent bridge instance.\r
@param PciIoDevice Device instance.\r
\r
@retval TRUE Pci device existed.\r
**/\r
BOOLEAN\r
PciDeviceExisted (\r
- IN PCI_IO_DEVICE *Bridge,\r
- IN PCI_IO_DEVICE *PciIoDevice\r
+ IN PCI_IO_DEVICE *Bridge,\r
+ IN PCI_IO_DEVICE *PciIoDevice\r
)\r
{\r
-\r
- PCI_IO_DEVICE *Temp;\r
- LIST_ENTRY *CurrentLink;\r
+ PCI_IO_DEVICE *Temp;\r
+ LIST_ENTRY *CurrentLink;\r
\r
CurrentLink = Bridge->ChildList.ForwardLink;\r
\r
while (CurrentLink != NULL && CurrentLink != &Bridge->ChildList) {\r
-\r
Temp = PCI_IO_DEVICE_FROM_LINK (CurrentLink);\r
\r
if (Temp == PciIoDevice) {\r
}\r
\r
/**\r
- Get the active VGA device on the same segment.\r
+ Get the active VGA device on the specified Host Bridge.\r
\r
- @param VgaDevice PCI IO instance for the VGA device.\r
+ @param HostBridgeHandle Host Bridge handle.\r
\r
- @return The active VGA device on the same segment.\r
+ @return The active VGA device on the specified Host Bridge.\r
\r
**/\r
PCI_IO_DEVICE *\r
-ActiveVGADeviceOnTheSameSegment (\r
- IN PCI_IO_DEVICE *VgaDevice\r
+LocateVgaDeviceOnHostBridge (\r
+ IN EFI_HANDLE HostBridgeHandle\r
)\r
{\r
- LIST_ENTRY *CurrentLink;\r
- PCI_IO_DEVICE *Temp;\r
+ LIST_ENTRY *CurrentLink;\r
+ PCI_IO_DEVICE *PciIoDevice;\r
\r
CurrentLink = mPciDevicePool.ForwardLink;\r
\r
while (CurrentLink != NULL && CurrentLink != &mPciDevicePool) {\r
+ PciIoDevice = PCI_IO_DEVICE_FROM_LINK (CurrentLink);\r
\r
- Temp = PCI_IO_DEVICE_FROM_LINK (CurrentLink);\r
-\r
- if (Temp->PciRootBridgeIo->SegmentNumber == VgaDevice->PciRootBridgeIo->SegmentNumber) {\r
-\r
- Temp = ActiveVGADeviceOnTheRootBridge (Temp);\r
+ if (PciIoDevice->PciRootBridgeIo->ParentHandle == HostBridgeHandle) {\r
+ PciIoDevice = LocateVgaDevice (PciIoDevice);\r
\r
- if (Temp != NULL) {\r
- return Temp;\r
+ if (PciIoDevice != NULL) {\r
+ return PciIoDevice;\r
}\r
}\r
\r
}\r
\r
/**\r
- Get the active VGA device on the root bridge.\r
+ Locate the active VGA device under the bridge.\r
\r
- @param RootBridge PCI IO instance for the root bridge.\r
+ @param Bridge PCI IO instance for the bridge.\r
\r
@return The active VGA device.\r
\r
**/\r
PCI_IO_DEVICE *\r
-ActiveVGADeviceOnTheRootBridge (\r
- IN PCI_IO_DEVICE *RootBridge\r
+LocateVgaDevice (\r
+ IN PCI_IO_DEVICE *Bridge\r
)\r
{\r
- LIST_ENTRY *CurrentLink;\r
- PCI_IO_DEVICE *Temp;\r
-\r
- CurrentLink = RootBridge->ChildList.ForwardLink;\r
+ LIST_ENTRY *CurrentLink;\r
+ PCI_IO_DEVICE *PciIoDevice;\r
\r
- while (CurrentLink != NULL && CurrentLink != &RootBridge->ChildList) {\r
+ CurrentLink = Bridge->ChildList.ForwardLink;\r
\r
- Temp = PCI_IO_DEVICE_FROM_LINK (CurrentLink);\r
+ while (CurrentLink != NULL && CurrentLink != &Bridge->ChildList) {\r
+ PciIoDevice = PCI_IO_DEVICE_FROM_LINK (CurrentLink);\r
\r
- if (IS_PCI_VGA(&Temp->Pci) &&\r
- (Temp->Attributes &\r
- (EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY |\r
- EFI_PCI_IO_ATTRIBUTE_VGA_IO |\r
- EFI_PCI_IO_ATTRIBUTE_VGA_IO_16)) != 0) {\r
- return Temp;\r
+ if (IS_PCI_VGA (&PciIoDevice->Pci) &&\r
+ ((PciIoDevice->Attributes &\r
+ (EFI_PCI_IO_ATTRIBUTE_VGA_MEMORY |\r
+ EFI_PCI_IO_ATTRIBUTE_VGA_IO |\r
+ EFI_PCI_IO_ATTRIBUTE_VGA_IO_16)) != 0))\r
+ {\r
+ return PciIoDevice;\r
}\r
\r
- if (IS_PCI_BRIDGE (&Temp->Pci)) {\r
+ if (IS_PCI_BRIDGE (&PciIoDevice->Pci)) {\r
+ PciIoDevice = LocateVgaDevice (PciIoDevice);\r
\r
- Temp = ActiveVGADeviceOnTheRootBridge (Temp);\r
-\r
- if (Temp != NULL) {\r
- return Temp;\r
+ if (PciIoDevice != NULL) {\r
+ return PciIoDevice;\r
}\r
}\r
\r
\r
return NULL;\r
}\r
-\r
-\r
-\r
-\r