Fix detection of framebuffer BAR
This commit is contained in:
committed by
Tim Crawford
parent
2dc1e51593
commit
8c80e407f5
@@ -320,14 +320,14 @@ GraphicsOutputDriverBindingStart (
|
||||
VOID *HobStart;
|
||||
EFI_PEI_GRAPHICS_INFO_HOB *GraphicsInfo;
|
||||
EFI_PEI_GRAPHICS_DEVICE_INFO_HOB *DeviceInfo;
|
||||
EFI_PHYSICAL_ADDRESS FrameBufferBase;
|
||||
|
||||
FrameBufferBase = 0;
|
||||
|
||||
HobStart = GetFirstGuidHob (&gEfiGraphicsInfoHobGuid);
|
||||
ASSERT ((HobStart != NULL) && (GET_GUID_HOB_DATA_SIZE (HobStart) == sizeof (EFI_PEI_GRAPHICS_INFO_HOB)));
|
||||
GraphicsInfo = (EFI_PEI_GRAPHICS_INFO_HOB *)(GET_GUID_HOB_DATA (HobStart));
|
||||
|
||||
DEBUG ((DEBUG_INFO, "[%a]: GraphicsInfo HOB: FrameBufferBase = %lx, FrameBufferSize = %lx\n",
|
||||
gEfiCallerBaseName, GraphicsInfo->FrameBufferBase, GraphicsInfo->FrameBufferSize));
|
||||
|
||||
HobStart = GetFirstGuidHob (&gEfiGraphicsDeviceInfoHobGuid);
|
||||
if ((HobStart == NULL) || (GET_GUID_HOB_DATA_SIZE (HobStart) < sizeof (*DeviceInfo))) {
|
||||
//
|
||||
@@ -424,25 +424,10 @@ GraphicsOutputDriverBindingStart (
|
||||
Resources->AddrRangeMin,
|
||||
Resources->AddrLen
|
||||
));
|
||||
if ((Resources->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR) &&
|
||||
(Resources->Len == (UINT16)(sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3)) &&
|
||||
(Resources->ResType == ACPI_ADDRESS_SPACE_TYPE_MEM) &&
|
||||
(Resources->AddrLen >= GraphicsInfo->FrameBufferSize)
|
||||
)
|
||||
{
|
||||
if (FrameBufferBase == 0) {
|
||||
FrameBufferBase = Resources->AddrRangeMin;
|
||||
}
|
||||
|
||||
if (DeviceInfo->BarIndex == MAX_UINT8) {
|
||||
if (Resources->AddrRangeMin == GraphicsInfo->FrameBufferBase) {
|
||||
FrameBufferBase = Resources->AddrRangeMin;
|
||||
if (Resources->AddrRangeMin <= GraphicsInfo->FrameBufferBase &&
|
||||
(Resources->AddrRangeMin + Resources->AddrLen) >= (GraphicsInfo->FrameBufferBase + GraphicsInfo->FrameBufferSize)) {
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -468,7 +453,7 @@ GraphicsOutputDriverBindingStart (
|
||||
goto CloseProtocols;
|
||||
}
|
||||
|
||||
Private->GraphicsOutputMode.FrameBufferBase = FrameBufferBase;
|
||||
Private->GraphicsOutputMode.FrameBufferBase = GraphicsInfo->FrameBufferBase;
|
||||
Private->GraphicsOutputMode.FrameBufferSize = GraphicsInfo->FrameBufferSize;
|
||||
Private->GraphicsOutputMode.Info = &GraphicsInfo->GraphicsMode;
|
||||
|
||||
|
Reference in New Issue
Block a user