summaryrefslogtreecommitdiffstats
path: root/PcAtChipsetPkg
diff options
context:
space:
mode:
authorRuiyu Ni <ruiyu.ni@intel.com>2016-05-18 13:14:35 +0800
committerRuiyu Ni <ruiyu.ni@intel.com>2016-05-23 09:59:11 +0800
commit9e11e9225a3ecf605e7f360c689f17d91d8115f2 (patch)
tree0b7d8f57b8a3330e551d66fde713a47a9385320d /PcAtChipsetPkg
parent6f6bf5c77214ae2449bffbe36c33faeca4663e01 (diff)
downloadedk2-9e11e9225a3ecf605e7f360c689f17d91d8115f2.tar.gz
edk2-9e11e9225a3ecf605e7f360c689f17d91d8115f2.tar.bz2
edk2-9e11e9225a3ecf605e7f360c689f17d91d8115f2.zip
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 <ruiyu.ni@intel.com> Cc: Anbazhagan Baraneedharan <anbazhagan@hp.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Cc: Star Zeng <star.zeng@intel.com>
Diffstat (limited to 'PcAtChipsetPkg')
-rw-r--r--PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c56
1 files 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);