forked from xt-sys/exectos
Provide only necessary framebuffer information to the kernel
This commit is contained in:
@@ -38,17 +38,18 @@ XTBL_BOOT_PROTOCOL XtBootProtocol;
|
||||
XTCDECL
|
||||
VOID
|
||||
XtGetDisplayInformation(OUT PLOADER_GRAPHICS_INFORMATION_BLOCK InformationBlock,
|
||||
IN PXTBL_FRAMEBUFFER_INFORMATION FrameBufferInfo)
|
||||
IN PEFI_PHYSICAL_ADDRESS FrameBufferBase,
|
||||
IN PULONG_PTR FrameBufferSize,
|
||||
IN PXTBL_FRAMEBUFFER_MODE_INFORMATION FrameBufferModeInfo)
|
||||
{
|
||||
InformationBlock->Initialized = FrameBufferInfo->Initialized;
|
||||
InformationBlock->Protocol = FrameBufferInfo->Protocol;
|
||||
InformationBlock->Address = (PVOID)FrameBufferInfo->FrameBufferBase;
|
||||
InformationBlock->BufferSize = FrameBufferInfo->FrameBufferSize;
|
||||
InformationBlock->Width = FrameBufferInfo->ModeInfo.Width;
|
||||
InformationBlock->Height = FrameBufferInfo->ModeInfo.Height;
|
||||
InformationBlock->BitsPerPixel = FrameBufferInfo->ModeInfo.BitsPerPixel;
|
||||
InformationBlock->PixelsPerScanLine = FrameBufferInfo->ModeInfo.PixelsPerScanLine;
|
||||
InformationBlock->Pitch = FrameBufferInfo->ModeInfo.Pitch;
|
||||
InformationBlock->Initialized = TRUE;
|
||||
InformationBlock->Address = (PVOID)*FrameBufferBase;
|
||||
InformationBlock->BufferSize = *FrameBufferSize;
|
||||
InformationBlock->Width = FrameBufferModeInfo->Width;
|
||||
InformationBlock->Height = FrameBufferModeInfo->Height;
|
||||
InformationBlock->BitsPerPixel = FrameBufferModeInfo->BitsPerPixel;
|
||||
InformationBlock->PixelsPerScanLine = FrameBufferModeInfo->PixelsPerScanLine;
|
||||
InformationBlock->Pitch = FrameBufferModeInfo->Pitch;
|
||||
}
|
||||
|
||||
XTCDECL
|
||||
@@ -417,10 +418,11 @@ XtpInitializeLoaderBlock(IN PXTBL_PAGE_MAPPING PageMap,
|
||||
{
|
||||
EFI_GUID FrameBufGuid = XT_FRAMEBUFFER_PROTOCOL_GUID;
|
||||
PXTBL_FRAMEBUFFER_PROTOCOL FrameBufProtocol;
|
||||
PXTBL_FRAMEBUFFER_INFORMATION FrameBufInfo = NULL;
|
||||
XTBL_FRAMEBUFFER_MODE_INFORMATION FbModeInfo;
|
||||
PKERNEL_INITIALIZATION_BLOCK LoaderBlock;
|
||||
EFI_PHYSICAL_ADDRESS Address;
|
||||
EFI_PHYSICAL_ADDRESS Address, FbAddress;
|
||||
// PVOID RuntimeServices;
|
||||
ULONG_PTR FbSize;
|
||||
EFI_STATUS Status;
|
||||
EFI_HANDLE ProtocolHandle;
|
||||
UINT BlockPages, FrameBufferPages;
|
||||
@@ -453,16 +455,17 @@ XtpInitializeLoaderBlock(IN PXTBL_PAGE_MAPPING PageMap,
|
||||
if(Status == STATUS_EFI_SUCCESS)
|
||||
{
|
||||
/* Get FrameBuffer information */
|
||||
FrameBufProtocol->GetDisplayInformation(FrameBufInfo);
|
||||
|
||||
/* Store information about FrameBuffer device */
|
||||
XtGetDisplayInformation(&LoaderBlock->LoaderInformation.FrameBuffer, FrameBufInfo);
|
||||
Status = FrameBufProtocol->GetDisplayInformation(&FbAddress, &FbSize, &FbModeInfo);
|
||||
if(Status == STATUS_EFI_SUCCESS)
|
||||
{
|
||||
/* Store information about FrameBuffer device */
|
||||
XtGetDisplayInformation(&LoaderBlock->LoaderInformation.FrameBuffer, &FbAddress, &FbSize, &FbModeInfo);
|
||||
}
|
||||
}
|
||||
else
|
||||
if(Status != STATUS_EFI_SUCCESS)
|
||||
{
|
||||
/* No FrameBuffer available */
|
||||
LoaderBlock->LoaderInformation.FrameBuffer.Initialized = FALSE;
|
||||
LoaderBlock->LoaderInformation.FrameBuffer.Protocol = NONE;
|
||||
}
|
||||
|
||||
/* Close FrameBuffer protocol */
|
||||
|
Reference in New Issue
Block a user