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