Enhanced the PCI Bus DXE module

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4844 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
zliu3 2008-03-13 08:44:09 +00:00
parent e92d66f280
commit 31bbf49fa7
3 changed files with 18 additions and 1 deletions

View File

@ -490,6 +490,12 @@ Returns:
} else { } else {
PciIoDevice->Decodes |= EFI_BRIDGE_IO16_DECODE_SUPPORTED; PciIoDevice->Decodes |= EFI_BRIDGE_IO16_DECODE_SUPPORTED;
} }
//
// changed to support En1K for IO Bridge Device
//
if( (Value & 0x0c) == 0x0c ){
PciIoDevice->Decodes |= EFI_BRIDGE_IOEN1K_DECODE_SUPPORTED;
}
} }
Status = BarExisted ( Status = BarExisted (

View File

@ -653,6 +653,13 @@ Returns:
Node->PciDev = PciDev; Node->PciDev = PciDev;
Node->Length = Length; Node->Length = Length;
Node->Alignment = Alignment; Node->Alignment = Alignment;
if(((ResType == PciBarTypeIo16) || (ResType == PciBarTypeIo32)) && ( Alignment == 0x0FFF))
{
if((PciDev->Decodes & EFI_BRIDGE_IOEN1K_DECODE_SUPPORTED) == EFI_BRIDGE_IOEN1K_DECODE_SUPPORTED)
Node->Alignment = 0x3FF;
else
Node->Alignment = 0xFFF;
}
Node->Bar = Bar; Node->Bar = Bar;
Node->ResType = ResType; Node->ResType = ResType;
Node->Reserved = FALSE; Node->Reserved = FALSE;
@ -1013,7 +1020,10 @@ Returns:
// //
// if no PMem32 request, still keep PMem64. Otherwise degrade to PMem32 // if no PMem32 request, still keep PMem64. Otherwise degrade to PMem32
// //
if (PMem32Node != NULL) { if (PMem32Node != NULL && PMem32Node->Length != 0 && Bridge->Parent != NULL ) {
//
// Fixed the issue that there is no resource for 64-bit (above 4G)
//
MergeResourceTree ( MergeResourceTree (
PMem32Node, PMem32Node,
PMem64Node, PMem64Node,

View File

@ -110,6 +110,7 @@ typedef struct {
#define EFI_BRIDGE_PMEM_MEM_COMBINE_SUPPORTED 0x0010 #define EFI_BRIDGE_PMEM_MEM_COMBINE_SUPPORTED 0x0010
#define EFI_BRIDGE_MEM64_DECODE_SUPPORTED 0x0020 #define EFI_BRIDGE_MEM64_DECODE_SUPPORTED 0x0020
#define EFI_BRIDGE_MEM32_DECODE_SUPPORTED 0x0040 #define EFI_BRIDGE_MEM32_DECODE_SUPPORTED 0x0040
#define EFI_BRIDGE_IOEN1K_DECODE_SUPPORTED 0x0080
#define PCI_MAX_HOST_BRIDGE_NUM 0x0010 #define PCI_MAX_HOST_BRIDGE_NUM 0x0010
// //