mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-30 16:44:28 +00:00 
			
		
		
		
	 e5efcf8be8
			
		
	
	
		e5efcf8be8
		
	
	
	
	
		
			
			REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the UefiPayloadPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
		
			
				
	
	
		
			149 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   This driver will report some MMIO/IO resources to dxe core, extract smbios and acpi
 | |
|   tables from bootloader.
 | |
| 
 | |
|   Copyright (c) 2014 - 2021, Intel Corporation. All rights reserved.<BR>
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| #include "BlSupportDxe.h"
 | |
| 
 | |
| /**
 | |
|   Reserve MMIO/IO resource in GCD
 | |
| 
 | |
|   @param  IsMMIO        Flag of whether it is mmio resource or io resource.
 | |
|   @param  GcdType       Type of the space.
 | |
|   @param  BaseAddress   Base address of the space.
 | |
|   @param  Length        Length of the space.
 | |
|   @param  Alignment     Align with 2^Alignment
 | |
|   @param  ImageHandle   Handle for the image of this driver.
 | |
| 
 | |
|   @retval EFI_SUCCESS   Reserve successful
 | |
| **/
 | |
| EFI_STATUS
 | |
| ReserveResourceInGcd (
 | |
|   IN BOOLEAN               IsMMIO,
 | |
|   IN UINTN                 GcdType,
 | |
|   IN EFI_PHYSICAL_ADDRESS  BaseAddress,
 | |
|   IN UINT64                Length,
 | |
|   IN UINTN                 Alignment,
 | |
|   IN EFI_HANDLE            ImageHandle
 | |
|   )
 | |
| {
 | |
|   EFI_STATUS  Status;
 | |
| 
 | |
|   if (IsMMIO) {
 | |
|     Status = gDS->AddMemorySpace (
 | |
|                     GcdType,
 | |
|                     BaseAddress,
 | |
|                     Length,
 | |
|                     EFI_MEMORY_UC
 | |
|                     );
 | |
|     if (EFI_ERROR (Status)) {
 | |
|       DEBUG ((
 | |
|         DEBUG_WARN,
 | |
|         "Failed to add memory space :0x%lx 0x%lx\n",
 | |
|         BaseAddress,
 | |
|         Length
 | |
|         ));
 | |
|     }
 | |
| 
 | |
|     Status = gDS->AllocateMemorySpace (
 | |
|                     EfiGcdAllocateAddress,
 | |
|                     GcdType,
 | |
|                     Alignment,
 | |
|                     Length,
 | |
|                     &BaseAddress,
 | |
|                     ImageHandle,
 | |
|                     NULL
 | |
|                     );
 | |
|   } else {
 | |
|     Status = gDS->AddIoSpace (
 | |
|                     GcdType,
 | |
|                     BaseAddress,
 | |
|                     Length
 | |
|                     );
 | |
|     if (EFI_ERROR (Status)) {
 | |
|       DEBUG ((
 | |
|         DEBUG_WARN,
 | |
|         "Failed to add IO space :0x%lx 0x%lx\n",
 | |
|         BaseAddress,
 | |
|         Length
 | |
|         ));
 | |
|     }
 | |
| 
 | |
|     Status = gDS->AllocateIoSpace (
 | |
|                     EfiGcdAllocateAddress,
 | |
|                     GcdType,
 | |
|                     Alignment,
 | |
|                     Length,
 | |
|                     &BaseAddress,
 | |
|                     ImageHandle,
 | |
|                     NULL
 | |
|                     );
 | |
|   }
 | |
| 
 | |
|   return Status;
 | |
| }
 | |
| 
 | |
| /**
 | |
|   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;
 | |
| 
 | |
|   Status = EFI_SUCCESS;
 | |
|   //
 | |
|   // Report MMIO/IO Resources
 | |
|   //
 | |
|   ReserveResourceInGcd (TRUE, EfiGcdMemoryTypeMemoryMappedIo, 0xFEC00000, SIZE_4KB, 0, ImageHandle); // IOAPIC
 | |
| 
 | |
|   ReserveResourceInGcd (TRUE, EfiGcdMemoryTypeMemoryMappedIo, 0xFED00000, SIZE_1KB, 0, ImageHandle); // HPET
 | |
| 
 | |
|   //
 | |
|   // 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);
 | |
|   }
 | |
| 
 | |
|   return EFI_SUCCESS;
 | |
| }
 |