]> git.proxmox.com Git - mirror_edk2.git/commitdiff
PcAtChipsetPkg PcRtc: Use new EfiLocateFirstAcpiTable()
authorStar Zeng <star.zeng@intel.com>
Fri, 8 Jun 2018 08:40:09 +0000 (16:40 +0800)
committerStar Zeng <star.zeng@intel.com>
Thu, 27 Sep 2018 06:25:35 +0000 (14:25 +0800)
https://bugzilla.tianocore.org/show_bug.cgi?id=967
Request to add a library function for GetAcpiTable() in order
to get ACPI table using signature as input.

After evaluation, we found there are many duplicated code to
find ACPI table by signature in different modules.

This patch updates PcatRealTimeClockRuntimeDxe to use new
EfiLocateFirstAcpiTable() and remove the duplicated code.

Cc: Younas khan <pmdyounaskhan786@gmail.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c

index 2105acf35f7b78f75172a18ea14f49e0e1fbd461..7965eb8aa55b92caef7a63834695506123935e2d 100644 (file)
@@ -1202,49 +1202,6 @@ IsWithinOneDay (
   return Adjacent;\r
 }\r
 \r
-/**\r
-  This function find ACPI table with the specified signature in RSDT or XSDT.\r
-\r
-  @param Sdt              ACPI RSDT or XSDT.\r
-  @param Signature        ACPI table signature.\r
-  @param TablePointerSize Size of table pointer: 4 or 8.\r
-\r
-  @return ACPI table or NULL if not found.\r
-**/\r
-VOID *\r
-ScanTableInSDT (\r
-  IN EFI_ACPI_DESCRIPTION_HEADER    *Sdt,\r
-  IN UINT32                         Signature,\r
-  IN UINTN                          TablePointerSize\r
-  )\r
-{\r
-  UINTN                          Index;\r
-  UINTN                          EntryCount;\r
-  UINTN                          EntryBase;\r
-  EFI_ACPI_DESCRIPTION_HEADER    *Table;\r
-\r
-  EntryCount = (Sdt->Length - sizeof (EFI_ACPI_DESCRIPTION_HEADER)) / TablePointerSize;\r
-\r
-  EntryBase = (UINTN) (Sdt + 1);\r
-  for (Index = 0; Index < EntryCount; Index++) {\r
-    //\r
-    // When TablePointerSize is 4 while sizeof (VOID *) is 8, make sure the upper 4 bytes are zero.\r
-    //\r
-    Table = 0;\r
-    CopyMem (&Table, (VOID *) (EntryBase + Index * TablePointerSize), TablePointerSize);\r
-\r
-    if (Table == NULL) {\r
-      continue;\r
-    }\r
-\r
-    if (Table->Signature == Signature) {\r
-      return Table;\r
-    }\r
-  }\r
-\r
-  return NULL;\r
-}\r
-\r
 /**\r
   Get the century RTC address from the ACPI FADT table.\r
 \r
@@ -1255,42 +1212,11 @@ GetCenturyRtcAddress (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                                    Status;\r
-  EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER  *Rsdp;\r
   EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE     *Fadt;\r
 \r
-  Status = EfiGetSystemConfigurationTable (&gEfiAcpiTableGuid, (VOID **) &Rsdp);\r
-  if (EFI_ERROR (Status)) {\r
-    Status = EfiGetSystemConfigurationTable (&gEfiAcpi10TableGuid, (VOID **) &Rsdp);\r
-  }\r
-\r
-  if (EFI_ERROR (Status) || (Rsdp == NULL)) {\r
-    return 0;\r
-  }\r
-\r
-  Fadt = NULL;\r
-\r
-  //\r
-  // Find FADT in XSDT\r
-  //\r
-  if (Rsdp->Revision >= EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER_REVISION && Rsdp->XsdtAddress != 0) {\r
-    Fadt = ScanTableInSDT (\r
-             (EFI_ACPI_DESCRIPTION_HEADER *) (UINTN) Rsdp->XsdtAddress,\r
-             EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,\r
-             sizeof (UINTN)\r
-             );\r
-  }\r
-\r
-  //\r
-  // Find FADT in RSDT\r
-  //\r
-  if (Fadt == NULL && Rsdp->RsdtAddress != 0) {\r
-    Fadt = ScanTableInSDT (\r
-             (EFI_ACPI_DESCRIPTION_HEADER *) (UINTN) Rsdp->RsdtAddress,\r
-             EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,\r
-             sizeof (UINT32)\r
-             );\r
-  }\r
+  Fadt = (EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *) EfiLocateFirstAcpiTable (\r
+                                                         EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE\r
+                                                         );\r
 \r
   if ((Fadt != NULL) &&\r
       (Fadt->Century > RTC_ADDRESS_REGISTER_D) && (Fadt->Century < 0x80)\r