X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;ds=sidebyside;f=DuetPkg%2FDataHubGenDxe%2FDataHubGen.c;h=937425fb8f7aa5a18335b209f59708e12243eeda;hb=cb7d01c0c9fd199742d0fed6aa69dab0c79c3338;hp=8e59de1c3329b58c6edd28fd65e190d33d2e208b;hpb=18b84857507fc28b8fbfbcd434f9c48bbcaf4ac5;p=mirror_edk2.git diff --git a/DuetPkg/DataHubGenDxe/DataHubGen.c b/DuetPkg/DataHubGenDxe/DataHubGen.c index 8e59de1c33..937425fb8f 100644 --- a/DuetPkg/DataHubGenDxe/DataHubGen.c +++ b/DuetPkg/DataHubGenDxe/DataHubGen.c @@ -18,8 +18,8 @@ Abstract: **/ #include "DataHubGen.h" +EFI_HII_DATABASE_PROTOCOL *gHiiDatabase; -EFI_HII_PROTOCOL *gHii; extern UINT8 DataHubGenDxeStrings[]; EFI_DATA_HUB_PROTOCOL *gDataHub; @@ -30,45 +30,23 @@ GetSmbiosTablesFromHob ( VOID ) { - EFI_STATUS Status; - EFI_HOB_HANDOFF_INFO_TABLE *HobList; EFI_PHYSICAL_ADDRESS *Table; - + EFI_PEI_HOB_POINTERS GuidHob; // // Get Hob List // - - Status = EfiGetSystemConfigurationTable (&gEfiHobListGuid, (VOID *) &HobList); - if (EFI_ERROR (Status)) { - return NULL; - } - - // - // If there is a SMBIOS table in the HOB add it to the EFI System table - // - Table = GetNextGuidHob (&gEfiSmbiosTableGuid, &HobList); - - if (!EFI_ERROR (Status)) { - return (VOID *)(UINTN)*Table; + GuidHob.Raw = GetHobList (); + GuidHob.Raw = GetNextGuidHob (&gEfiSmbiosTableGuid, GuidHob.Raw); + if (GuidHob.Raw != NULL) { + Table = GET_GUID_HOB_DATA (GuidHob.Guid); + if (Table != NULL) { + return (VOID *)(UINTN)*Table; + } } return NULL; } -EFI_STATUS -PrepareHiiPackage ( - VOID - ) -{ - EFI_HII_PACKAGES *PackageList; - EFI_STATUS Status; - - PackageList = PreparePackages (1, &gEfiMiscProducerGuid, DataHubGenDxeStrings); - Status = gHii->NewPack (gHii, PackageList, &gStringHandle); - - return Status; -} - EFI_SUBCLASS_TYPE1_HEADER mCpuDataRecordHeader = { EFI_PROCESSOR_SUBCLASS_VERSION, // Version sizeof (EFI_SUBCLASS_TYPE1_HEADER), // Header Size @@ -126,10 +104,8 @@ InstallProcessorDataHub ( ASSERT (UString != NULL); AsciiStrToUnicodeStr (AString, UString); - Token = 0; - Status = gHii->NewString (gHii, NULL, gStringHandle, &Token, UString); - - if (EFI_ERROR (Status)) { + Token = HiiSetString (gStringHandle, 0, UString, NULL); + if (Token == 0) { gBS->FreePool (UString); return ; } @@ -171,7 +147,6 @@ InstallMemoryDataHub ( IN VOID *Smbios ) { - EFI_STATUS Status; SMBIOS_STRUCTURE_POINTER SmbiosTable; EFI_MEMORY_SUBCLASS_DRIVER_DATA DataRecord; @@ -196,12 +171,12 @@ InstallMemoryDataHub ( DataRecord.Record.ArrayStartAddress.MemoryArrayStartAddress = LShiftU64(SmbiosTable.Type19->StartingAddress, 10); DataRecord.Record.ArrayStartAddress.MemoryArrayEndAddress = LShiftU64((UINT64) SmbiosTable.Type19->EndingAddress + 1, 10) - 1; - DataRecord.Record.ArrayStartAddress.PhysicalMemoryArrayLink.ProducerName = gEfiMemoryProducerGuid; + CopyGuid (&DataRecord.Record.ArrayStartAddress.PhysicalMemoryArrayLink.ProducerName, &gEfiMemoryProducerGuid); DataRecord.Record.ArrayStartAddress.PhysicalMemoryArrayLink.Instance = 0; DataRecord.Record.ArrayStartAddress.PhysicalMemoryArrayLink.SubInstance = EFI_SUBCLASS_INSTANCE_NON_APPLICABLE; DataRecord.Record.ArrayStartAddress.MemoryArrayPartitionWidth = (UINT16)(SmbiosTable.Type19->PartitionWidth); - Status = gDataHub->LogData ( + gDataHub->LogData ( gDataHub, &gEfiMemorySubClassGuid, &gEfiMiscProducerGuid, @@ -256,10 +231,8 @@ InstallMiscDataHub ( CopyMem (UString, FIRMWARE_BIOS_VERSIONE, sizeof(FIRMWARE_BIOS_VERSIONE)); AsciiStrToUnicodeStr (AString, UString + sizeof(FIRMWARE_BIOS_VERSIONE) / sizeof(CHAR16) - 1); - Token = 0; - Status = gHii->NewString (gHii, NULL, gStringHandle, &Token, UString); - - if (EFI_ERROR (Status)) { + Token = HiiSetString (gStringHandle, 0, UString, NULL); + if (Token == 0) { gBS->FreePool (UString); return ; } @@ -306,13 +279,8 @@ InstallMiscDataHub ( CopyMem (UString, FIRMWARE_PRODUCT_NAME, sizeof(FIRMWARE_PRODUCT_NAME)); AsciiStrToUnicodeStr (AString, UString + sizeof(FIRMWARE_PRODUCT_NAME) / sizeof(CHAR16) - 1); -#if (EFI_SPECIFICATION_VERSION >= 0x0002000A) - Status = IfrLibNewString (gStringHandle, &Token, UString); -#else - Token = 0; - Status = gHii->NewString (gHii, NULL, gStringHandle, &Token, UString); -#endif - if (EFI_ERROR (Status)) { + Token = HiiSetString (gStringHandle, 0, UString, NULL); + if (Token == 0) { gBS->FreePool (UString); return ; } @@ -324,7 +292,7 @@ InstallMiscDataHub ( DataRecord.Record.MiscSystemManufacturer.SystemVersion = 0; DataRecord.Record.MiscSystemManufacturer.SystemSerialNumber = 0; // DataRecord.Record.MiscSystemManufacturer.SystemUuid = {0}; - DataRecord.Record.MiscSystemManufacturer.SystemWakeupType = 0; + DataRecord.Record.MiscSystemManufacturer.SystemWakeupType = EfiSystemWakeupTypeReserved; DataRecord.Record.MiscSystemManufacturer.SystemSKUNumber = 0; DataRecord.Record.MiscSystemManufacturer.SystemFamily = 0; @@ -350,7 +318,6 @@ DataHubGenEntrypoint ( EFI_STATUS Status; VOID *Smbios; - Smbios = GetSmbiosTablesFromHob (); if (Smbios == NULL) { return EFI_NOT_FOUND; @@ -359,30 +326,29 @@ DataHubGenEntrypoint ( Status = gBS->LocateProtocol ( &gEfiDataHubProtocolGuid, NULL, - &gDataHub + (VOID**)&gDataHub ); if (EFI_ERROR (Status)) { return Status; } -#if (EFI_SPECIFICATION_VERSION >= 0x0002000A) Status = gBS->LocateProtocol ( &gEfiHiiDatabaseProtocolGuid, NULL, - &gHiiDatabase - ); -#else - Status = gBS->LocateProtocol ( - &gEfiHiiProtocolGuid, - NULL, - &gHii + (VOID**)&gHiiDatabase ); -#endif + if (EFI_ERROR (Status)) { return Status; } - - PrepareHiiPackage (); + + gStringHandle = HiiAddPackages ( + &gEfiMiscProducerGuid, + NULL, + DataHubGenDxeStrings, + NULL + ); + ASSERT (gStringHandle != NULL); InstallProcessorDataHub (Smbios); InstallCacheDataHub (Smbios);