2 Provides Set/Get time operations.
4 Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 PC_RTC_MODULE_GLOBALS mModuleGlobal
;
19 EFI_HANDLE mHandle
= NULL
;
22 Returns the current time and date information, and the time-keeping capabilities
23 of the hardware platform.
25 @param Time A pointer to storage to receive a snapshot of the current time.
26 @param Capabilities An optional pointer to a buffer to receive the real time
27 clock device's capabilities.
29 @retval EFI_SUCCESS The operation completed successfully.
30 @retval EFI_INVALID_PARAMETER Time is NULL.
31 @retval EFI_DEVICE_ERROR The time could not be retrieved due to hardware error.
38 OUT EFI_TIME_CAPABILITIES
*Capabilities OPTIONAL
41 return PcRtcGetTime (Time
, Capabilities
, &mModuleGlobal
);
45 Sets the current local time and date information.
47 @param Time A pointer to the current time.
49 @retval EFI_SUCCESS The operation completed successfully.
50 @retval EFI_INVALID_PARAMETER A time field is out of range.
51 @retval EFI_DEVICE_ERROR The time could not be set due due to hardware error.
60 return PcRtcSetTime (Time
, &mModuleGlobal
);
64 Returns the current wakeup alarm clock setting.
66 @param Enabled Indicates if the alarm is currently enabled or disabled.
67 @param Pending Indicates if the alarm signal is pending and requires acknowledgement.
68 @param Time The current alarm setting.
70 @retval EFI_SUCCESS The alarm settings were returned.
71 @retval EFI_INVALID_PARAMETER Enabled is NULL.
72 @retval EFI_INVALID_PARAMETER Pending is NULL.
73 @retval EFI_INVALID_PARAMETER Time is NULL.
74 @retval EFI_DEVICE_ERROR The wakeup time could not be retrieved due to a hardware error.
75 @retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform.
80 PcRtcEfiGetWakeupTime (
86 return PcRtcGetWakeupTime (Enabled
, Pending
, Time
, &mModuleGlobal
);
91 Sets the system wakeup alarm clock time.
93 @param Enabled Enable or disable the wakeup alarm.
94 @param Time If Enable is TRUE, the time to set the wakeup alarm for.
95 If Enable is FALSE, then this parameter is optional, and may be NULL.
97 @retval EFI_SUCCESS If Enable is TRUE, then the wakeup alarm was enabled.
98 If Enable is FALSE, then the wakeup alarm was disabled.
99 @retval EFI_INVALID_PARAMETER A time field is out of range.
100 @retval EFI_DEVICE_ERROR The wakeup time could not be set due to a hardware error.
101 @retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform.
106 PcRtcEfiSetWakeupTime (
108 IN EFI_TIME
*Time OPTIONAL
111 return PcRtcSetWakeupTime (Enabled
, Time
, &mModuleGlobal
);
115 The user Entry Point for PcRTC module.
117 This is the entrhy point for PcRTC module. It installs the UEFI runtime service
118 including GetTime(),SetTime(),GetWakeupTime(),and SetWakeupTime().
120 @param ImageHandle The firmware allocated handle for the EFI image.
121 @param SystemTable A pointer to the EFI System Table.
123 @retval EFI_SUCCESS The entry point is executed successfully.
124 @retval Others Some error occurs when executing this entry point.
130 IN EFI_HANDLE ImageHandle
,
131 IN EFI_SYSTEM_TABLE
*SystemTable
137 EfiInitializeLock (&mModuleGlobal
.RtcLock
, TPL_CALLBACK
);
138 mModuleGlobal
.CenturyRtcAddress
= GetCenturyRtcAddress ();
140 Status
= PcRtcInit (&mModuleGlobal
);
141 ASSERT_EFI_ERROR (Status
);
143 Status
= gBS
->CreateEventEx (
146 PcRtcAcpiTableChangeCallback
,
148 &gEfiAcpi10TableGuid
,
151 ASSERT_EFI_ERROR (Status
);
153 Status
= gBS
->CreateEventEx (
156 PcRtcAcpiTableChangeCallback
,
161 ASSERT_EFI_ERROR (Status
);
163 gRT
->GetTime
= PcRtcEfiGetTime
;
164 gRT
->SetTime
= PcRtcEfiSetTime
;
165 gRT
->GetWakeupTime
= PcRtcEfiGetWakeupTime
;
166 gRT
->SetWakeupTime
= PcRtcEfiSetWakeupTime
;
168 Status
= gBS
->InstallMultipleProtocolInterfaces (
170 &gEfiRealTimeClockArchProtocolGuid
,
174 ASSERT_EFI_ERROR (Status
);