From 9e11e9225a3ecf605e7f360c689f17d91d8115f2 Mon Sep 17 00:00:00 2001 From: Ruiyu Ni Date: Wed, 18 May 2016 13:14:35 +0800 Subject: PcAtChipsetPkg/PcRtc: move ACPI parsing code to GetCenturyRtcAddress The patch moves ACPI parsing code to a separate function GetCenturyRtcAddress() and the next patch will call this function in driver entry point. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni Cc: Anbazhagan Baraneedharan Reviewed-by: Laszlo Ersek Cc: Star Zeng --- PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c | 56 +++++++++++++++------- 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c b/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c index 5143575e31..b86c1f4bed 100644 --- a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c +++ b/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c @@ -1239,20 +1239,13 @@ ScanTableInSDT ( } /** - Notification function of ACPI Table change. - - This is a notification function registered on ACPI Table change event. - It saves the Century address stored in ACPI FADT table. - - @param Event Event whose notification function is being invoked. - @param Context Pointer to the notification function's context. + Get the century RTC address from the ACPI FADT table. + @return The century RTC address or 0 if not found. **/ -VOID -EFIAPI -PcRtcAcpiTableChangeCallback ( - IN EFI_EVENT Event, - IN VOID *Context +UINT8 +GetCenturyRtcAddress ( + VOID ) { EFI_STATUS Status; @@ -1260,8 +1253,6 @@ PcRtcAcpiTableChangeCallback ( EFI_ACPI_DESCRIPTION_HEADER *Rsdt; EFI_ACPI_DESCRIPTION_HEADER *Xsdt; EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *Fadt; - EFI_TIME Time; - UINT8 Century; Status = EfiGetSystemConfigurationTable (&gEfiAcpiTableGuid, (VOID **) &Rsdp); if (EFI_ERROR (Status)) { @@ -1269,7 +1260,7 @@ PcRtcAcpiTableChangeCallback ( } if (EFI_ERROR (Status)) { - return; + return 0; } ASSERT (Rsdp != NULL); @@ -1292,10 +1283,39 @@ PcRtcAcpiTableChangeCallback ( } if ((Fadt != NULL) && - (Fadt->Century > RTC_ADDRESS_REGISTER_D) && (Fadt->Century < 0x80) && - (mModuleGlobal.CenturyRtcAddress != Fadt->Century) + (Fadt->Century > RTC_ADDRESS_REGISTER_D) && (Fadt->Century < 0x80) ) { - mModuleGlobal.CenturyRtcAddress = Fadt->Century; + return Fadt->Century; + } else { + return 0; + } +} + +/** + Notification function of ACPI Table change. + + This is a notification function registered on ACPI Table change event. + It saves the Century address stored in ACPI FADT table. + + @param Event Event whose notification function is being invoked. + @param Context Pointer to the notification function's context. + +**/ +VOID +EFIAPI +PcRtcAcpiTableChangeCallback ( + IN EFI_EVENT Event, + IN VOID *Context + ) +{ + EFI_STATUS Status; + EFI_TIME Time; + UINT8 CenturyRtcAddress; + UINT8 Century; + + CenturyRtcAddress = GetCenturyRtcAddress (); + if ((CenturyRtcAddress != 0) && (mModuleGlobal.CenturyRtcAddress != CenturyRtcAddress)) { + mModuleGlobal.CenturyRtcAddress = CenturyRtcAddress; Status = PcRtcGetTime (&Time, NULL, &mModuleGlobal); if (!EFI_ERROR (Status)) { Century = (UINT8) (Time.Year / 100); -- cgit v1.2.3