]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/DataHubGenDxe/DataHubGen.c
1. Remove DataHubGen drive, which is replaced by SmbiosGen.
[mirror_edk2.git] / DuetPkg / DataHubGenDxe / DataHubGen.c
diff --git a/DuetPkg/DataHubGenDxe/DataHubGen.c b/DuetPkg/DataHubGenDxe/DataHubGen.c
deleted file mode 100644 (file)
index 5d1354a..0000000
+++ /dev/null
@@ -1,436 +0,0 @@
-/** @file\r
-\r
-Copyright (c) 2006 - 2010, Intel Corporation                                                         \r
-All rights reserved. This program and the accompanying materials                          \r
-are licensed and made available under the terms and conditions of the BSD License         \r
-which accompanies this distribution.  The full text of the license may be found at        \r
-http://opensource.org/licenses/bsd-license.php                                            \r
-                                                                                          \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
-\r
-Module Name:\r
-\r
-  DataHubGen.c\r
-\r
-Abstract:\r
-\r
-**/\r
-\r
-#include "DataHubGen.h"\r
-EFI_HII_DATABASE_PROTOCOL        *gHiiDatabase;\r
-\r
-extern UINT8                DataHubGenDxeStrings[];\r
-\r
-EFI_DATA_HUB_PROTOCOL       *gDataHub;\r
-EFI_HII_HANDLE              gStringHandle;\r
-\r
-VOID *\r
-GetSmbiosTablesFromHob (\r
-  VOID\r
-  )\r
-{\r
-  EFI_PHYSICAL_ADDRESS       *Table;\r
-  EFI_PEI_HOB_POINTERS        GuidHob;\r
-  //\r
-  // Get Hob List\r
-  //\r
-  GuidHob.Raw = GetFirstGuidHob (&gEfiSmbiosTableGuid);\r
-  if (GuidHob.Raw != NULL) {\r
-    Table = GET_GUID_HOB_DATA (GuidHob.Guid);\r
-    if (Table != NULL) {\r
-      return (VOID *)(UINTN)*Table;\r
-    }\r
-  }\r
-\r
-  return NULL;\r
-}\r
-\r
-EFI_SUBCLASS_TYPE1_HEADER mCpuDataRecordHeader = {\r
-  EFI_PROCESSOR_SUBCLASS_VERSION,       // Version\r
-  sizeof (EFI_SUBCLASS_TYPE1_HEADER),   // Header Size\r
-  0,                                    // Instance, Initialize later\r
-  EFI_SUBCLASS_INSTANCE_NON_APPLICABLE, // SubInstance\r
-  0                                     // RecordType, Initialize later\r
-};\r
-\r
-VOID\r
-InstallProcessorDataHub (\r
-  IN VOID                  *Smbios\r
-  )\r
-{\r
-  EFI_STATUS                        Status;\r
-  SMBIOS_STRUCTURE_POINTER          SmbiosTable;\r
-  EFI_CPU_DATA_RECORD               DataRecord;\r
-  CHAR8                             *AString;\r
-  CHAR16                            *UString;\r
-  STRING_REF                        Token;\r
-\r
-  //\r
-  // Processor info (TYPE 4)\r
-  // \r
-  SmbiosTable = GetSmbiosTableFromType ((SMBIOS_TABLE_ENTRY_POINT *)Smbios, 4, 0);\r
-  if (SmbiosTable.Raw == NULL) {\r
-    DEBUG ((EFI_D_ERROR, "SmbiosTable: Type 4 (Processor Info) not found!\n"));\r
-    return ;\r
-  }\r
-\r
-  //\r
-  // Record Header\r
-  //\r
-  CopyMem (&DataRecord, &mCpuDataRecordHeader, sizeof (DataRecord.DataRecordHeader));\r
-\r
-  //\r
-  // Record Type 1\r
-  //\r
-  DataRecord.DataRecordHeader.RecordType = ProcessorCoreFrequencyRecordType;\r
-  DataRecord.VariableRecord.ProcessorCoreFrequency.Value = SmbiosTable.Type4->CurrentSpeed;\r
-  DataRecord.VariableRecord.ProcessorCoreFrequency.Exponent = 6;\r
-\r
-  Status = gDataHub->LogData (\r
-                       gDataHub,\r
-                       &gEfiProcessorSubClassGuid,\r
-                       &gEfiCallerIdGuid,\r
-                       EFI_DATA_RECORD_CLASS_DATA,\r
-                       &DataRecord,\r
-                       sizeof (DataRecord.DataRecordHeader) + sizeof (DataRecord.VariableRecord.ProcessorCoreFrequency)\r
-                       );\r
-  ASSERT_EFI_ERROR (Status);\r
-  //\r
-  // Record Type 3\r
-  //\r
-  AString = GetSmbiosString (SmbiosTable, SmbiosTable.Type4->ProcessorVersion);\r
-  UString = AllocateZeroPool ((AsciiStrLen(AString) + 1) * sizeof(CHAR16));\r
-  ASSERT (UString != NULL);\r
-  AsciiStrToUnicodeStr (AString, UString);\r
-\r
-  Token = HiiSetString (gStringHandle, 0, UString, NULL);\r
-  if (Token == 0) {\r
-    gBS->FreePool (UString);\r
-    return ;\r
-  }\r
-  gBS->FreePool (UString);\r
-\r
-  DataRecord.DataRecordHeader.RecordType = ProcessorVersionRecordType;\r
-  DataRecord.VariableRecord.ProcessorVersion  = Token;\r
-\r
-  Status = gDataHub->LogData (\r
-                       gDataHub,\r
-                       &gEfiProcessorSubClassGuid,\r
-                       &gEfiCallerIdGuid,\r
-                       EFI_DATA_RECORD_CLASS_DATA,\r
-                       &DataRecord,\r
-                       sizeof (DataRecord.DataRecordHeader) + sizeof (DataRecord.VariableRecord.ProcessorVersion)\r
-                       );\r
-  ASSERT_EFI_ERROR (Status);\r
-  return ;\r
-}\r
-\r
-VOID\r
-InstallCacheDataHub (\r
-  IN VOID                  *Smbios\r
-  )\r
-{\r
-  return ;\r
-}\r
-\r
-EFI_SUBCLASS_TYPE1_HEADER mMemorySubclassDriverDataHeader = {\r
-  EFI_MEMORY_SUBCLASS_VERSION,          // Version\r
-  sizeof (EFI_SUBCLASS_TYPE1_HEADER),   // Header Size\r
-  0,                                    // Instance, Initialize later\r
-  EFI_SUBCLASS_INSTANCE_NON_APPLICABLE, // SubInstance\r
-  0                                     // RecordType, Initialize later\r
-};\r
-\r
-VOID\r
-InstallMemoryDataHub (\r
-  IN VOID                  *Smbios\r
-  )\r
-{\r
-  SMBIOS_STRUCTURE_POINTER          SmbiosTable;\r
-  EFI_MEMORY_SUBCLASS_DRIVER_DATA   DataRecord;\r
-\r
-  //\r
-  // Generate Memory Array Mapped Address info (TYPE 19)\r
-  //\r
-  SmbiosTable = GetSmbiosTableFromType ((SMBIOS_TABLE_ENTRY_POINT *)Smbios, 19, 0);\r
-  if (SmbiosTable.Raw == NULL) {\r
-    DEBUG ((EFI_D_ERROR, "SmbiosTable: Type 19 (Memory Array Mapped Address Info) not found!\n"));\r
-    return ;\r
-  }\r
-\r
-  //\r
-  // Record Header\r
-  //\r
-  CopyMem (&DataRecord, &mMemorySubclassDriverDataHeader, sizeof (DataRecord.Header));\r
-  \r
-  //\r
-  // Record Type 4\r
-  //\r
-  DataRecord.Header.RecordType = EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER;\r
-  DataRecord.Record.ArrayStartAddress.MemoryArrayStartAddress = LShiftU64(SmbiosTable.Type19->StartingAddress, 10);\r
-  DataRecord.Record.ArrayStartAddress.MemoryArrayEndAddress = LShiftU64((UINT64) SmbiosTable.Type19->EndingAddress + 1, 10) - 1;\r
-  \r
-  CopyGuid (&DataRecord.Record.ArrayStartAddress.PhysicalMemoryArrayLink.ProducerName, &gEfiCallerIdGuid);\r
-  DataRecord.Record.ArrayStartAddress.PhysicalMemoryArrayLink.Instance = 0;\r
-  DataRecord.Record.ArrayStartAddress.PhysicalMemoryArrayLink.SubInstance = EFI_SUBCLASS_INSTANCE_NON_APPLICABLE;\r
-  DataRecord.Record.ArrayStartAddress.MemoryArrayPartitionWidth = (UINT16)(SmbiosTable.Type19->PartitionWidth); \r
-\r
-  gDataHub->LogData (\r
-                       gDataHub,\r
-                       &gEfiMemorySubClassGuid,\r
-                       &gEfiCallerIdGuid,\r
-                       EFI_DATA_RECORD_CLASS_DATA,\r
-                       &DataRecord,\r
-                       sizeof (DataRecord.Header) + sizeof (DataRecord.Record.ArrayStartAddress)\r
-                       );\r
-\r
-  return ;\r
-}\r
-\r
-EFI_SUBCLASS_TYPE1_HEADER mMiscSubclassDriverDataHeader = {\r
-  EFI_MISC_SUBCLASS_VERSION,            // Version\r
-  sizeof (EFI_SUBCLASS_TYPE1_HEADER),   // Header Size\r
-  0,                                    // Instance, Initialize later\r
-  EFI_SUBCLASS_INSTANCE_NON_APPLICABLE, // SubInstance\r
-  0                                     // RecordType, Initialize later\r
-};\r
-\r
-VOID\r
-InstallMiscDataHub (\r
-  IN VOID                  *Smbios\r
-  )\r
-{\r
-  EFI_STATUS                        Status;\r
-  SMBIOS_STRUCTURE_POINTER          SmbiosTable;\r
-  EFI_MISC_SUBCLASS_DRIVER_DATA     DataRecord;\r
-  CHAR8                             *AString;\r
-  CHAR16                            *UString;\r
-  STRING_REF                        Token;\r
-\r
-  //\r
-  // BIOS information (TYPE 0)\r
-  // \r
-  SmbiosTable = GetSmbiosTableFromType ((SMBIOS_TABLE_ENTRY_POINT *)Smbios, 0, 0);\r
-  if (SmbiosTable.Raw == NULL) {\r
-    DEBUG ((EFI_D_ERROR, "SmbiosTable: Type 0 (BIOS Information) not found!\n"));\r
-    return ;\r
-  }\r
-\r
-  //\r
-  // Record Header\r
-  //\r
-  CopyMem (&DataRecord, &mMiscSubclassDriverDataHeader, sizeof (DataRecord.Header));\r
-\r
-  //\r
-  // Record Type 2\r
-  //\r
-  AString = GetSmbiosString (SmbiosTable, SmbiosTable.Type0->BiosVersion);\r
-  UString = AllocateZeroPool ((AsciiStrLen(AString) + 1) * sizeof(CHAR16) + sizeof(FIRMWARE_BIOS_VERSIONE));\r
-  ASSERT (UString != NULL);\r
-  CopyMem (UString, FIRMWARE_BIOS_VERSIONE, sizeof(FIRMWARE_BIOS_VERSIONE));\r
-  AsciiStrToUnicodeStr (AString, UString + sizeof(FIRMWARE_BIOS_VERSIONE) / sizeof(CHAR16) - 1);\r
-\r
-  Token = HiiSetString (gStringHandle, 0, UString, NULL);\r
-  if (Token == 0) {\r
-    gBS->FreePool (UString);\r
-    return ;\r
-  }\r
-  gBS->FreePool (UString);\r
-\r
-  DataRecord.Header.RecordType = EFI_MISC_BIOS_VENDOR_RECORD_NUMBER;\r
-  DataRecord.Record.MiscBiosVendor.BiosVendor  = 0;\r
-  DataRecord.Record.MiscBiosVendor.BiosVersion = Token;\r
-  DataRecord.Record.MiscBiosVendor.BiosReleaseDate  = 0;\r
-  DataRecord.Record.MiscBiosVendor.BiosStartingAddress  = 0;\r
-  DataRecord.Record.MiscBiosVendor.BiosPhysicalDeviceSize.Value  = 0;\r
-  DataRecord.Record.MiscBiosVendor.BiosPhysicalDeviceSize.Exponent  = 0;\r
-//  DataRecord.Record.MiscBiosVendor.BiosCharacteristics1  = {0};\r
-//  DataRecord.Record.MiscBiosVendor.BiosCharacteristics2  = {0};\r
-  DataRecord.Record.MiscBiosVendor.BiosMajorRelease  = 0;\r
-  DataRecord.Record.MiscBiosVendor.BiosMinorRelease  = 0;\r
-  DataRecord.Record.MiscBiosVendor.BiosEmbeddedFirmwareMajorRelease  = 0;\r
-  DataRecord.Record.MiscBiosVendor.BiosEmbeddedFirmwareMinorRelease  = 0;\r
-\r
-  Status = gDataHub->LogData (\r
-                       gDataHub,\r
-                       &gEfiMiscSubClassGuid,\r
-                       &gEfiCallerIdGuid,\r
-                       EFI_DATA_RECORD_CLASS_DATA,\r
-                       &DataRecord,\r
-                       sizeof (DataRecord.Header) + sizeof (DataRecord.Record.MiscBiosVendor)\r
-                       );\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  //\r
-  // System information (TYPE 1)\r
-  // \r
-  SmbiosTable = GetSmbiosTableFromType ((SMBIOS_TABLE_ENTRY_POINT *)Smbios, 1, 0);\r
-  if (SmbiosTable.Raw == NULL) {\r
-    DEBUG ((EFI_D_ERROR, "SmbiosTable: Type 1 (System Information) not found!\n"));\r
-    return ;\r
-  }\r
-\r
-  //\r
-  // Record Type 3\r
-  //\r
-  AString = GetSmbiosString (SmbiosTable, SmbiosTable.Type1->ProductName);\r
-  UString = AllocateZeroPool ((AsciiStrLen(AString) + 1) * sizeof(CHAR16) + sizeof(FIRMWARE_PRODUCT_NAME));\r
-  ASSERT (UString != NULL);\r
-  CopyMem (UString, FIRMWARE_PRODUCT_NAME, sizeof(FIRMWARE_PRODUCT_NAME));\r
-  AsciiStrToUnicodeStr (AString, UString + sizeof(FIRMWARE_PRODUCT_NAME) / sizeof(CHAR16) - 1);\r
-\r
-  Token = HiiSetString (gStringHandle, 0, UString, NULL);\r
-  if (Token == 0) {\r
-    gBS->FreePool (UString);\r
-    return ;\r
-  }\r
-  gBS->FreePool (UString);\r
-\r
-  DataRecord.Header.RecordType = EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER;\r
-  DataRecord.Record.MiscSystemManufacturer.SystemManufacturer  = 0;\r
-  DataRecord.Record.MiscSystemManufacturer.SystemProductName = Token;\r
-  DataRecord.Record.MiscSystemManufacturer.SystemVersion  = 0;\r
-  DataRecord.Record.MiscSystemManufacturer.SystemSerialNumber  = 0;\r
-//  DataRecord.Record.MiscSystemManufacturer.SystemUuid  = {0};\r
-  DataRecord.Record.MiscSystemManufacturer.SystemWakeupType  = EfiSystemWakeupTypeReserved;\r
-  DataRecord.Record.MiscSystemManufacturer.SystemSKUNumber  = 0;\r
-  DataRecord.Record.MiscSystemManufacturer.SystemFamily  = 0;\r
-\r
-  Status = gDataHub->LogData (\r
-                       gDataHub,\r
-                       &gEfiMiscSubClassGuid,\r
-                       &gEfiCallerIdGuid,\r
-                       EFI_DATA_RECORD_CLASS_DATA,\r
-                       &DataRecord,\r
-                       sizeof (DataRecord.Header) + sizeof (DataRecord.Record.MiscSystemManufacturer)\r
-                       );\r
-  ASSERT_EFI_ERROR (Status);\r
-\r
-  return ;\r
-}\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DataHubGenEntrypoint (\r
-  IN EFI_HANDLE           ImageHandle,\r
-  IN EFI_SYSTEM_TABLE     *SystemTable\r
-  )\r
-{\r
-  EFI_STATUS              Status;\r
-  VOID                    *Smbios;\r
-\r
-  Smbios = GetSmbiosTablesFromHob ();\r
-  if (Smbios == NULL) {\r
-    return EFI_NOT_FOUND;\r
-  }\r
-\r
-  Status = gBS->LocateProtocol (\r
-                  &gEfiDataHubProtocolGuid,\r
-                  NULL,\r
-                  (VOID**)&gDataHub\r
-                  );\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-\r
-  Status = gBS->LocateProtocol (\r
-                  &gEfiHiiDatabaseProtocolGuid,\r
-                  NULL,\r
-                  (VOID**)&gHiiDatabase\r
-                  );\r
-\r
-  if (EFI_ERROR (Status)) {\r
-    return Status;\r
-  }\r
-  \r
-  gStringHandle = HiiAddPackages (\r
-                    &gEfiCallerIdGuid,\r
-                    NULL,\r
-                    DataHubGenDxeStrings,\r
-                    NULL\r
-                    );\r
-  ASSERT (gStringHandle != NULL);\r
-\r
-  InstallProcessorDataHub (Smbios);\r
-  InstallCacheDataHub     (Smbios);\r
-  InstallMemoryDataHub    (Smbios);\r
-  InstallMiscDataHub      (Smbios);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-//\r
-// Internal function\r
-//\r
-\r
-UINTN\r
-SmbiosTableLength (\r
-  IN SMBIOS_STRUCTURE_POINTER SmbiosTable\r
-  )\r
-{\r
-  CHAR8  *AChar;\r
-  UINTN  Length;\r
-\r
-  AChar = (CHAR8 *)(SmbiosTable.Raw + SmbiosTable.Hdr->Length);\r
-  while ((*AChar != 0) || (*(AChar + 1) != 0)) {\r
-    AChar ++;\r
-  }\r
-  Length = ((UINTN)AChar - (UINTN)SmbiosTable.Raw + 2);\r
-  \r
-  return Length;\r
-}\r
-\r
-SMBIOS_STRUCTURE_POINTER\r
-GetSmbiosTableFromType (\r
-  IN SMBIOS_TABLE_ENTRY_POINT  *Smbios,\r
-  IN UINT8                     Type,\r
-  IN UINTN                     Index\r
-  )\r
-{\r
-  SMBIOS_STRUCTURE_POINTER SmbiosTable;\r
-  UINTN                    SmbiosTypeIndex;\r
-  \r
-  SmbiosTypeIndex = 0;\r
-  SmbiosTable.Raw = (UINT8 *)(UINTN)Smbios->TableAddress;\r
-  if (SmbiosTable.Raw == NULL) {\r
-    return SmbiosTable;\r
-  }\r
-  while ((SmbiosTypeIndex != Index) || (SmbiosTable.Hdr->Type != Type)) {\r
-    if (SmbiosTable.Hdr->Type == 127) {\r
-      SmbiosTable.Raw = NULL;\r
-      return SmbiosTable;\r
-    }\r
-    if (SmbiosTable.Hdr->Type == Type) {\r
-      SmbiosTypeIndex ++;\r
-    }\r
-    SmbiosTable.Raw = (UINT8 *)(SmbiosTable.Raw + SmbiosTableLength (SmbiosTable));\r
-  }\r
-\r
-  return SmbiosTable;\r
-}\r
-\r
-CHAR8 *\r
-GetSmbiosString (\r
-  IN SMBIOS_STRUCTURE_POINTER  SmbiosTable,\r
-  IN SMBIOS_TABLE_STRING       String\r
-  )\r
-{\r
-  CHAR8      *AString;\r
-  UINT8      Index;\r
-\r
-  Index = 1;\r
-  AString = (CHAR8 *)(SmbiosTable.Raw + SmbiosTable.Hdr->Length);\r
-  while (Index != String) {\r
-    while (*AString != 0) {\r
-      AString ++;\r
-    }\r
-    AString ++;\r
-    if (*AString == 0) {\r
-      return AString;\r
-    }\r
-    Index ++;\r
-  }\r
-\r
-  return AString;\r
-}\r