diff options
author | Ruiyu Ni <ruiyu.ni@intel.com> | 2016-05-18 13:14:35 +0800 |
---|---|---|
committer | Hao Wu <hao.a.wu@intel.com> | 2016-07-27 16:29:37 +0800 |
commit | 6c4499ab1495e86814a0521852f2264ba5ed6a26 (patch) | |
tree | 2ad790ccd62f272a99f42061ee30af52ede8efda /PcAtChipsetPkg | |
parent | ad74c78e8c369387599fc70ee6232e499e5f635e (diff) | |
download | edk2-platforms-6c4499ab1495e86814a0521852f2264ba5ed6a26.tar.xz |
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>
(cherry picked from commit 9e11e9225a3ecf605e7f360c689f17d91d8115f2)
Diffstat (limited to 'PcAtChipsetPkg')
-rw-r--r-- | PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c | 56 |
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);
|