]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/DataHubGenDxe/DataHubGen.c
Move to SmmServicesTableLib to IA32, x64 arch sub section to align with SmmLib
[mirror_edk2.git] / DuetPkg / DataHubGenDxe / DataHubGen.c
index 8e59de1c3329b58c6edd28fd65e190d33d2e208b..5d1354a71d6bb9c422c04c9d9fb58e44175f8bd3 100644 (file)
@@ -1,6 +1,6 @@
 /** @file\r
 \r
-Copyright (c) 2006 - 2007, Intel Corporation                                                         \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
@@ -18,8 +18,8 @@ Abstract:
 **/\r
 \r
 #include "DataHubGen.h"\r
+EFI_HII_DATABASE_PROTOCOL        *gHiiDatabase;\r
 \r
-EFI_HII_PROTOCOL            *gHii;\r
 extern UINT8                DataHubGenDxeStrings[];\r
 \r
 EFI_DATA_HUB_PROTOCOL       *gDataHub;\r
@@ -30,45 +30,22 @@ GetSmbiosTablesFromHob (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                  Status;\r
-  EFI_HOB_HANDOFF_INFO_TABLE  *HobList;\r
   EFI_PHYSICAL_ADDRESS       *Table;\r
-\r
+  EFI_PEI_HOB_POINTERS        GuidHob;\r
   //\r
   // Get Hob List\r
   //\r
-  \r
-  Status = EfiGetSystemConfigurationTable (&gEfiHobListGuid, (VOID *) &HobList);\r
-  if (EFI_ERROR (Status)) {\r
-    return NULL;\r
-  }\r
-\r
-  //\r
-  // If there is a SMBIOS table in the HOB add it to the EFI System table\r
-  //\r
-  Table = GetNextGuidHob (&gEfiSmbiosTableGuid, &HobList);\r
-\r
-  if (!EFI_ERROR (Status)) {\r
-    return (VOID *)(UINTN)*Table;\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_STATUS\r
-PrepareHiiPackage (\r
-  VOID\r
-  )\r
-{\r
-  EFI_HII_PACKAGES                  *PackageList;\r
-  EFI_STATUS                        Status;\r
-\r
-  PackageList   = PreparePackages (1, &gEfiMiscProducerGuid, DataHubGenDxeStrings);\r
-  Status        = gHii->NewPack (gHii, PackageList, &gStringHandle);\r
-\r
-  return Status;\r
-}\r
-\r
 EFI_SUBCLASS_TYPE1_HEADER mCpuDataRecordHeader = {\r
   EFI_PROCESSOR_SUBCLASS_VERSION,       // Version\r
   sizeof (EFI_SUBCLASS_TYPE1_HEADER),   // Header Size\r
@@ -113,11 +90,12 @@ InstallProcessorDataHub (
   Status = gDataHub->LogData (\r
                        gDataHub,\r
                        &gEfiProcessorSubClassGuid,\r
-                       &gEfiMiscProducerGuid,\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
@@ -126,10 +104,8 @@ InstallProcessorDataHub (
   ASSERT (UString != NULL);\r
   AsciiStrToUnicodeStr (AString, UString);\r
 \r
-  Token  = 0;\r
-  Status = gHii->NewString (gHii, NULL, gStringHandle, &Token, UString);\r
-\r
-  if (EFI_ERROR (Status)) {\r
+  Token = HiiSetString (gStringHandle, 0, UString, NULL);\r
+  if (Token == 0) {\r
     gBS->FreePool (UString);\r
     return ;\r
   }\r
@@ -141,12 +117,12 @@ InstallProcessorDataHub (
   Status = gDataHub->LogData (\r
                        gDataHub,\r
                        &gEfiProcessorSubClassGuid,\r
-                       &gEfiMiscProducerGuid,\r
+                       &gEfiCallerIdGuid,\r
                        EFI_DATA_RECORD_CLASS_DATA,\r
                        &DataRecord,\r
                        sizeof (DataRecord.DataRecordHeader) + sizeof (DataRecord.VariableRecord.ProcessorVersion)\r
                        );\r
-\r
+  ASSERT_EFI_ERROR (Status);\r
   return ;\r
 }\r
 \r
@@ -171,7 +147,6 @@ InstallMemoryDataHub (
   IN VOID                  *Smbios\r
   )\r
 {\r
-  EFI_STATUS                        Status;\r
   SMBIOS_STRUCTURE_POINTER          SmbiosTable;\r
   EFI_MEMORY_SUBCLASS_DRIVER_DATA   DataRecord;\r
 \r
@@ -196,15 +171,15 @@ InstallMemoryDataHub (
   DataRecord.Record.ArrayStartAddress.MemoryArrayStartAddress = LShiftU64(SmbiosTable.Type19->StartingAddress, 10);\r
   DataRecord.Record.ArrayStartAddress.MemoryArrayEndAddress = LShiftU64((UINT64) SmbiosTable.Type19->EndingAddress + 1, 10) - 1;\r
   \r
-  DataRecord.Record.ArrayStartAddress.PhysicalMemoryArrayLink.ProducerName = gEfiMemoryProducerGuid;\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
-  Status = gDataHub->LogData (\r
+  gDataHub->LogData (\r
                        gDataHub,\r
                        &gEfiMemorySubClassGuid,\r
-                       &gEfiMiscProducerGuid,\r
+                       &gEfiCallerIdGuid,\r
                        EFI_DATA_RECORD_CLASS_DATA,\r
                        &DataRecord,\r
                        sizeof (DataRecord.Header) + sizeof (DataRecord.Record.ArrayStartAddress)\r
@@ -256,10 +231,8 @@ InstallMiscDataHub (
   CopyMem (UString, FIRMWARE_BIOS_VERSIONE, sizeof(FIRMWARE_BIOS_VERSIONE));\r
   AsciiStrToUnicodeStr (AString, UString + sizeof(FIRMWARE_BIOS_VERSIONE) / sizeof(CHAR16) - 1);\r
 \r
-  Token  = 0;\r
-  Status = gHii->NewString (gHii, NULL, gStringHandle, &Token, UString);\r
-\r
-  if (EFI_ERROR (Status)) {\r
+  Token = HiiSetString (gStringHandle, 0, UString, NULL);\r
+  if (Token == 0) {\r
     gBS->FreePool (UString);\r
     return ;\r
   }\r
@@ -282,11 +255,12 @@ InstallMiscDataHub (
   Status = gDataHub->LogData (\r
                        gDataHub,\r
                        &gEfiMiscSubClassGuid,\r
-                       &gEfiMiscProducerGuid,\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
@@ -306,13 +280,8 @@ InstallMiscDataHub (
   CopyMem (UString, FIRMWARE_PRODUCT_NAME, sizeof(FIRMWARE_PRODUCT_NAME));\r
   AsciiStrToUnicodeStr (AString, UString + sizeof(FIRMWARE_PRODUCT_NAME) / sizeof(CHAR16) - 1);\r
 \r
-#if (EFI_SPECIFICATION_VERSION >= 0x0002000A)\r
-  Status = IfrLibNewString (gStringHandle, &Token, UString);\r
-#else\r
-  Token  = 0;\r
-  Status = gHii->NewString (gHii, NULL, gStringHandle, &Token, UString);\r
-#endif\r
-  if (EFI_ERROR (Status)) {\r
+  Token = HiiSetString (gStringHandle, 0, UString, NULL);\r
+  if (Token == 0) {\r
     gBS->FreePool (UString);\r
     return ;\r
   }\r
@@ -324,18 +293,19 @@ InstallMiscDataHub (
   DataRecord.Record.MiscSystemManufacturer.SystemVersion  = 0;\r
   DataRecord.Record.MiscSystemManufacturer.SystemSerialNumber  = 0;\r
 //  DataRecord.Record.MiscSystemManufacturer.SystemUuid  = {0};\r
-  DataRecord.Record.MiscSystemManufacturer.SystemWakeupType  = 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
-                       &gEfiMiscProducerGuid,\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
@@ -350,7 +320,6 @@ DataHubGenEntrypoint (
   EFI_STATUS              Status;\r
   VOID                    *Smbios;\r
 \r
-\r
   Smbios = GetSmbiosTablesFromHob ();\r
   if (Smbios == NULL) {\r
     return EFI_NOT_FOUND;\r
@@ -359,30 +328,29 @@ DataHubGenEntrypoint (
   Status = gBS->LocateProtocol (\r
                   &gEfiDataHubProtocolGuid,\r
                   NULL,\r
-                  &gDataHub\r
+                  (VOID**)&gDataHub\r
                   );\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
 \r
-#if (EFI_SPECIFICATION_VERSION >= 0x0002000A)\r
   Status = gBS->LocateProtocol (\r
                   &gEfiHiiDatabaseProtocolGuid,\r
                   NULL,\r
-                  &gHiiDatabase\r
-                  );\r
-#else\r
-  Status = gBS->LocateProtocol (\r
-                  &gEfiHiiProtocolGuid,\r
-                  NULL,\r
-                  &gHii\r
+                  (VOID**)&gHiiDatabase\r
                   );\r
-#endif\r
+\r
   if (EFI_ERROR (Status)) {\r
     return Status;\r
   }\r
-\r
-  PrepareHiiPackage ();\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