Update logic in Suuported() for PCI-ISA Bridges with Positive Decode to avoid false positives on bridges of class PCI_CLASS_BRIDGE_OTHER.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10626 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
mdkinney 2010-07-02 23:20:11 +00:00
parent 4bc6ab83ba
commit 755e4d1184
1 changed files with 23 additions and 4 deletions

View File

@ -73,6 +73,10 @@ PcatIsaAcpiDriverBindingSupported (
EFI_STATUS Status;
EFI_PCI_IO_PROTOCOL *PciIo;
PCI_TYPE00 Pci;
UINTN SegmentNumber;
UINTN BusNumber;
UINTN DeviceNumber;
UINTN FunctionNumber;
//
// Get PciIo protocol instance
@ -110,10 +114,25 @@ PcatIsaAcpiDriverBindingSupported (
//
// See if this is an Intel PCI to ISA bridge in Positive Decode Mode
//
if (Pci.Hdr.ClassCode[1] == PCI_CLASS_BRIDGE_ISA_PDECODE &&
Pci.Hdr.VendorId == 0x8086 &&
(Pci.Hdr.DeviceId & 0xF000) == 0x7000) {
Status = EFI_SUCCESS;
if (Pci.Hdr.ClassCode[1] == PCI_CLASS_BRIDGE_ISA_PDECODE &&
Pci.Hdr.VendorId == 0x8086 ) {
//
// See if this is on Function #0 to avoid false positives on
// PCI_CLASS_BRIDGE_OTHER that has the same value as
// PCI_CLASS_BRIDGE_ISA_PDECODE
//
Status = PciIo->GetLocation (
PciIo,
&SegmentNumber,
&BusNumber,
&DeviceNumber,
&FunctionNumber
);
if (!EFI_ERROR (Status) && FunctionNumber == 0) {
Status = EFI_SUCCESS;
} else {
Status = EFI_UNSUPPORTED;
}
}
}
}