Old code use platfomr. Change PlatfomrSmbiosDriverEntryPoint to PlatformSmbiosDriverEntryPoint. Signed-off-by: Ming Tan <ming.tan@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com>
		
			
				
	
	
		
			131 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Static SMBIOS Table for platform
 | |
| 
 | |
| 
 | |
|   Copyright (c) 2012, Apple Inc. All rights reserved.<BR>
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #include <PiDxe.h>
 | |
| #include <IndustryStandard/SmBios.h>
 | |
| #include <Protocol/Smbios.h>
 | |
| 
 | |
| #include <Library/BaseLib.h>
 | |
| #include <Library/BaseMemoryLib.h>
 | |
| #include <Library/DebugLib.h>
 | |
| #include <Library/SmbiosLib.h>
 | |
| #include <Library/HobLib.h>
 | |
| 
 | |
| extern SMBIOS_TEMPLATE_ENTRY gSmbiosTemplate[];
 | |
| 
 | |
| 
 | |
| 
 | |
| SMBIOS_TABLE_TYPE19 gSmbiosType19Template = {
 | |
|   { EFI_SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS, sizeof (SMBIOS_TABLE_TYPE19), 0 },
 | |
|   0xffffffff, // StartingAddress;
 | |
|   0xffffffff, // EndingAddress;
 | |
|   0,          // MemoryArrayHandle;
 | |
|   1,          // PartitionWidth;
 | |
|   0,          // ExtendedStartingAddress;
 | |
|   0,          // ExtendedEndingAddress;
 | |
| };
 | |
| 
 | |
| VOID
 | |
| CreatePlatformSmbiosMemoryRecords (
 | |
|   VOID
 | |
|   )
 | |
| {
 | |
|   EFI_PEI_HOB_POINTERS        HobPtr;
 | |
|   SMBIOS_STRUCTURE_POINTER    Smbios16;
 | |
|   SMBIOS_STRUCTURE_POINTER    Smbios17;
 | |
|   EFI_SMBIOS_HANDLE           PhyscialMemoryArrayHandle;
 | |
|   EFI_SMBIOS_HANDLE           SmbiosHandle;
 | |
| 
 | |
|   Smbios16.Hdr = SmbiosLibGetRecord (EFI_SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY, 0, &PhyscialMemoryArrayHandle);
 | |
|   if (Smbios16.Hdr == NULL) {
 | |
|     // Only make a Type19 entry if a Type16 entry exists.
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   Smbios17.Hdr = SmbiosLibGetRecord (EFI_SMBIOS_TYPE_MEMORY_DEVICE, 0, &SmbiosHandle);
 | |
|   if (Smbios17.Hdr == NULL) {
 | |
|     // if type17 exits update with type16 Smbios handle
 | |
|     Smbios17.Type17->MemoryArrayHandle = PhyscialMemoryArrayHandle;
 | |
|   }
 | |
| 
 | |
|   // Generate Type16 records
 | |
|   gSmbiosType19Template.MemoryArrayHandle = PhyscialMemoryArrayHandle;
 | |
|   HobPtr.Raw = GetHobList ();
 | |
|   while ((HobPtr.Raw = GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, HobPtr.Raw)) != NULL) {
 | |
|     if (HobPtr.ResourceDescriptor->ResourceType == EFI_RESOURCE_SYSTEM_MEMORY) {
 | |
|       gSmbiosType19Template.ExtendedStartingAddress = HobPtr.ResourceDescriptor->PhysicalStart;
 | |
|       gSmbiosType19Template.ExtendedEndingAddress =
 | |
|         HobPtr.ResourceDescriptor->PhysicalStart +
 | |
|         HobPtr.ResourceDescriptor->ResourceLength - 1;
 | |
| 
 | |
|       SmbiosLibCreateEntry ((SMBIOS_STRUCTURE *)&gSmbiosType19Template, NULL);
 | |
|     }
 | |
|     HobPtr.Raw = GET_NEXT_HOB (HobPtr);
 | |
|   }
 | |
| }
 | |
| 
 | |
| 
 | |
| /**
 | |
|   Main entry for this driver.
 | |
| 
 | |
|   @param ImageHandle     Image handle this driver.
 | |
|   @param SystemTable     Pointer to SystemTable.
 | |
| 
 | |
|   @retval EFI_SUCESS     This function always complete successfully.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| PlatformSmbiosDriverEntryPoint (
 | |
|   IN EFI_HANDLE         ImageHandle,
 | |
|   IN EFI_SYSTEM_TABLE   *SystemTable
 | |
|   )
 | |
| {
 | |
|   EFI_STATUS                  Status;
 | |
|   EFI_SMBIOS_HANDLE           SmbiosHandle;
 | |
|   SMBIOS_STRUCTURE_POINTER    Smbios;
 | |
| 
 | |
|   // Phase 0 - Patch table to make SMBIOS 2.7 structures smaller to conform
 | |
|   //           to an early version of the specification.
 | |
| 
 | |
|   // Phase 1 - Initialize SMBIOS tables from template
 | |
|   Status = SmbiosLibInitializeFromTemplate (gSmbiosTemplate);
 | |
|   ASSERT_EFI_ERROR (Status);
 | |
| 
 | |
|   // Phase 2 - Patch SMBIOS table entries
 | |
| 
 | |
|   Smbios.Hdr = SmbiosLibGetRecord (EFI_SMBIOS_TYPE_BIOS_INFORMATION, 0, &SmbiosHandle);
 | |
|   if (Smbios.Type0 != NULL) {
 | |
|     // 64K * (n+1) bytes
 | |
|     Smbios.Type0->BiosSize = (UINT8)DivU64x32 (FixedPcdGet64 (PcdEmuFirmwareFdSize), 64*1024) - 1;
 | |
| 
 | |
|     SmbiosLibUpdateUnicodeString (
 | |
|       SmbiosHandle,
 | |
|       Smbios.Type0->BiosVersion,
 | |
|       (CHAR16 *) PcdGetPtr (PcdFirmwareVersionString)
 | |
|       );
 | |
|     SmbiosLibUpdateUnicodeString (
 | |
|       SmbiosHandle,
 | |
|       Smbios.Type0->BiosReleaseDate,
 | |
|       (CHAR16 *) PcdGetPtr (PcdFirmwareReleaseDateString)
 | |
|       );
 | |
|   }
 | |
| 
 | |
|   // Phase 3 - Create tables from scratch
 | |
| 
 | |
|   // Create Type 13 record from EFI Variables
 | |
|   // Do we need this record for EFI as the info is available from EFI varaibles
 | |
|   // Also language types don't always match between EFI and SMBIOS
 | |
|   // CreateSmbiosLanguageInformation (1, gSmbiosLangToEfiLang);
 | |
| 
 | |
|   CreatePlatformSmbiosMemoryRecords ();
 | |
| 
 | |
|   return EFI_SUCCESS;
 | |
| }
 |