/** @file\r
Implement EFI RealTimeClock runtime services via RTC Lib.\r
\r
- Currently this driver does not support runtime virtual calling.\r
-\r
Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>\r
Copyright (c) 2011 - 2014, ARM Ltd. All rights reserved.<BR>\r
\r
\r
#include <ArmPlatform.h>\r
\r
-STATIC CONST CHAR16 mTimeZoneVariableName[] = L"PL031RtcTimeZone";\r
-STATIC CONST CHAR16 mDaylightVariableName[] = L"PL031RtcDaylight";\r
-STATIC BOOLEAN mPL031Initialized = FALSE;\r
-STATIC EFI_EVENT mRtcVirtualAddrChangeEvent;\r
-STATIC UINTN mPL031RtcBase;\r
+STATIC CONST CHAR16 mTimeZoneVariableName[] = L"PL031RtcTimeZone";\r
+STATIC CONST CHAR16 mDaylightVariableName[] = L"PL031RtcDaylight";\r
+STATIC BOOLEAN mPL031Initialized = FALSE;\r
+STATIC EFI_EVENT mRtcVirtualAddrChangeEvent;\r
+STATIC UINTN mPL031RtcBase;\r
+STATIC EFI_RUNTIME_SERVICES *mRT;\r
\r
EFI_STATUS\r
IdentifyPL031 (\r
IN EFI_TIME *Time\r
)\r
{\r
- INTN DayOfMonth[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };\r
+ STATIC CONST INTN DayOfMonth[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };\r
\r
if (Time->Day < 1 ||\r
Time->Day > DayOfMonth[Time->Month - 1] ||\r
\r
// Get the current time zone information from non-volatile storage\r
Size = sizeof (TimeZone);\r
- Status = gRT->GetVariable (\r
+ Status = mRT->GetVariable (\r
(CHAR16 *)mTimeZoneVariableName,\r
&gEfiCallerIdGuid,\r
NULL,\r
// The time zone variable does not exist in non-volatile storage, so create it.\r
Time->TimeZone = EFI_UNSPECIFIED_TIMEZONE;\r
// Store it\r
- Status = gRT->SetVariable (\r
+ Status = mRT->SetVariable (\r
(CHAR16 *)mTimeZoneVariableName,\r
&gEfiCallerIdGuid,\r
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,\r
\r
// Get the current daylight information from non-volatile storage\r
Size = sizeof (Daylight);\r
- Status = gRT->GetVariable (\r
+ Status = mRT->GetVariable (\r
(CHAR16 *)mDaylightVariableName,\r
&gEfiCallerIdGuid,\r
NULL,\r
// The daylight variable does not exist in non-volatile storage, so create it.\r
Time->Daylight = 0;\r
// Store it\r
- Status = gRT->SetVariable (\r
+ Status = mRT->SetVariable (\r
(CHAR16 *)mDaylightVariableName,\r
&gEfiCallerIdGuid,\r
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,\r
// Do this after having set the RTC.\r
\r
// Save the current time zone information into non-volatile storage\r
- Status = gRT->SetVariable (\r
+ Status = mRT->SetVariable (\r
(CHAR16 *)mTimeZoneVariableName,\r
&gEfiCallerIdGuid,\r
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,\r
}\r
\r
// Save the current daylight information into non-volatile storage\r
- Status = gRT->SetVariable (\r
+ Status = mRT->SetVariable (\r
(CHAR16 *)mDaylightVariableName,\r
&gEfiCallerIdGuid,\r
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,\r
// runtime calls will be made in virtual mode.\r
//\r
EfiConvertPointer (0x0, (VOID**)&mPL031RtcBase);\r
+ EfiConvertPointer (0x0, (VOID**)&mRT);\r
return;\r
}\r
\r
gRT->GetWakeupTime = LibGetWakeupTime;\r
gRT->SetWakeupTime = LibSetWakeupTime;\r
\r
+ mRT = gRT;\r
+\r
// Install the protocol\r
Handle = NULL;\r
Status = gBS->InstallMultipleProtocolInterfaces (\r