The entrypoint module should do this programmatically using resources passed by the bootloader. Under UPL, bootloaders are expected to pass such ranges in the FDT. Signed-off-by: Benjamin Doron <benjamin.doron@9elements.com>
66 lines
2.2 KiB
C
66 lines
2.2 KiB
C
/** @file
|
|
This driver will setup PCDs for DXE phase from HOBs
|
|
and initialise architecture-specific settings and resources.
|
|
|
|
Copyright (c) 2014 - 2021, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
#include "BlSupportDxe.h"
|
|
|
|
/**
|
|
Main entry for the bootloader support DXE module.
|
|
|
|
@param[in] ImageHandle The firmware allocated handle for the EFI image.
|
|
@param[in] SystemTable A pointer to the EFI System Table.
|
|
|
|
@retval EFI_SUCCESS The entry point is executed successfully.
|
|
@retval other Some error occurs when executing this entry point.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
BlDxeEntryPoint (
|
|
IN EFI_HANDLE ImageHandle,
|
|
IN EFI_SYSTEM_TABLE *SystemTable
|
|
)
|
|
{
|
|
EFI_STATUS Status;
|
|
EFI_HOB_GUID_TYPE *GuidHob;
|
|
EFI_PEI_GRAPHICS_INFO_HOB *GfxInfo;
|
|
ACPI_BOARD_INFO *AcpiBoardInfo;
|
|
|
|
//
|
|
// Find the frame buffer information and update PCDs
|
|
//
|
|
GuidHob = GetFirstGuidHob (&gEfiGraphicsInfoHobGuid);
|
|
if (GuidHob != NULL) {
|
|
GfxInfo = (EFI_PEI_GRAPHICS_INFO_HOB *)GET_GUID_HOB_DATA (GuidHob);
|
|
Status = PcdSet32S (PcdVideoHorizontalResolution, GfxInfo->GraphicsMode.HorizontalResolution);
|
|
ASSERT_EFI_ERROR (Status);
|
|
Status = PcdSet32S (PcdVideoVerticalResolution, GfxInfo->GraphicsMode.VerticalResolution);
|
|
ASSERT_EFI_ERROR (Status);
|
|
Status = PcdSet32S (PcdSetupVideoHorizontalResolution, GfxInfo->GraphicsMode.HorizontalResolution);
|
|
ASSERT_EFI_ERROR (Status);
|
|
Status = PcdSet32S (PcdSetupVideoVerticalResolution, GfxInfo->GraphicsMode.VerticalResolution);
|
|
ASSERT_EFI_ERROR (Status);
|
|
}
|
|
|
|
//
|
|
// Set PcdPciExpressBaseAddress and PcdPciExpressBaseSize by HOB info
|
|
//
|
|
GuidHob = GetFirstGuidHob (&gUefiAcpiBoardInfoGuid);
|
|
if (GuidHob != NULL) {
|
|
AcpiBoardInfo = (ACPI_BOARD_INFO *)GET_GUID_HOB_DATA (GuidHob);
|
|
Status = PcdSet64S (PcdPciExpressBaseAddress, AcpiBoardInfo->PcieBaseAddress);
|
|
ASSERT_EFI_ERROR (Status);
|
|
Status = PcdSet64S (PcdPciExpressBaseSize, AcpiBoardInfo->PcieBaseSize);
|
|
ASSERT_EFI_ERROR (Status);
|
|
}
|
|
|
|
Status = BlArchAdditionalOps (ImageHandle, SystemTable);
|
|
ASSERT_EFI_ERROR (Status);
|
|
|
|
return EFI_SUCCESS;
|
|
}
|