In an effort to clean the documentation of the above package, remove duplicated words. Signed-off-by: Pierre Gondois <pierre.gondois@arm.com> Reviewed-by: Jiewen Yao <Jiewen.yao@intel.com>
		
			
				
	
	
		
			189 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Implement EFI RealTimeClock runtime services via Xen shared info page
 | |
| 
 | |
|   Copyright (c) 2015, Linaro Ltd. All rights reserved.<BR>
 | |
| 
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #include <Uefi.h>
 | |
| #include <PiDxe.h>
 | |
| #include <Library/BaseLib.h>
 | |
| #include <Library/DebugLib.h>
 | |
| 
 | |
| /**
 | |
|   Converts Epoch seconds (elapsed since 1970 JANUARY 01, 00:00:00 UTC) to EFI_TIME
 | |
|  **/
 | |
| STATIC
 | |
| VOID
 | |
| EpochToEfiTime (
 | |
|   IN  UINTN     EpochSeconds,
 | |
|   OUT EFI_TIME  *Time
 | |
|   )
 | |
| {
 | |
|   UINTN  a;
 | |
|   UINTN  b;
 | |
|   UINTN  c;
 | |
|   UINTN  d;
 | |
|   UINTN  g;
 | |
|   UINTN  j;
 | |
|   UINTN  m;
 | |
|   UINTN  y;
 | |
|   UINTN  da;
 | |
|   UINTN  db;
 | |
|   UINTN  dc;
 | |
|   UINTN  dg;
 | |
|   UINTN  hh;
 | |
|   UINTN  mm;
 | |
|   UINTN  ss;
 | |
|   UINTN  J;
 | |
| 
 | |
|   J  = (EpochSeconds / 86400) + 2440588;
 | |
|   j  = J + 32044;
 | |
|   g  = j / 146097;
 | |
|   dg = j % 146097;
 | |
|   c  = (((dg / 36524) + 1) * 3) / 4;
 | |
|   dc = dg - (c * 36524);
 | |
|   b  = dc / 1461;
 | |
|   db = dc % 1461;
 | |
|   a  = (((db / 365) + 1) * 3) / 4;
 | |
|   da = db - (a * 365);
 | |
|   y  = (g * 400) + (c * 100) + (b * 4) + a;
 | |
|   m  = (((da * 5) + 308) / 153) - 2;
 | |
|   d  = da - (((m + 4) * 153) / 5) + 122;
 | |
| 
 | |
|   Time->Year  = (UINT16)(y - 4800 + ((m + 2) / 12));
 | |
|   Time->Month = ((m + 2) % 12) + 1;
 | |
|   Time->Day   = (UINT8)(d + 1);
 | |
| 
 | |
|   ss = EpochSeconds % 60;
 | |
|   a  = (EpochSeconds - ss) / 60;
 | |
|   mm = a % 60;
 | |
|   b  = (a - mm) / 60;
 | |
|   hh = b % 24;
 | |
| 
 | |
|   Time->Hour       = (UINT8)hh;
 | |
|   Time->Minute     = (UINT8)mm;
 | |
|   Time->Second     = (UINT8)ss;
 | |
|   Time->Nanosecond = 0;
 | |
| }
 | |
| 
 | |
| /**
 | |
|   Returns the current time and date information, and the time-keeping capabilities
 | |
|   of the hardware platform.
 | |
| 
 | |
|   @param  Time                  A pointer to storage to receive a snapshot of the current time.
 | |
|   @param  Capabilities          An optional pointer to a buffer to receive the real time clock
 | |
|                                 device's capabilities.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The operation completed successfully.
 | |
|   @retval EFI_INVALID_PARAMETER Time is NULL.
 | |
|   @retval EFI_DEVICE_ERROR      The time could not be retrieved due to hardware error.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| LibGetTime (
 | |
|   OUT EFI_TIME                *Time,
 | |
|   OUT  EFI_TIME_CAPABILITIES  *Capabilities
 | |
|   )
 | |
| {
 | |
|   ASSERT (Time != NULL);
 | |
| 
 | |
|   //
 | |
|   // For now, there is nothing that we can do besides returning a bogus time,
 | |
|   // as Xen's timekeeping uses a shared info page which cannot be shared
 | |
|   // between UEFI and the OS
 | |
|   //
 | |
|   EpochToEfiTime (1421770011, Time);
 | |
| 
 | |
|   return EFI_SUCCESS;
 | |
| }
 | |
| 
 | |
| /**
 | |
|   Sets the current local time and date information.
 | |
| 
 | |
|   @param  Time                  A pointer to the current time.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The operation completed successfully.
 | |
|   @retval EFI_INVALID_PARAMETER A time field is out of range.
 | |
|   @retval EFI_DEVICE_ERROR      The time could not be set due to hardware error.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| LibSetTime (
 | |
|   IN EFI_TIME  *Time
 | |
|   )
 | |
| {
 | |
|   return EFI_DEVICE_ERROR;
 | |
| }
 | |
| 
 | |
| /**
 | |
|   Returns the current wakeup alarm clock setting.
 | |
| 
 | |
|   @param  Enabled               Indicates if the alarm is currently enabled or disabled.
 | |
|   @param  Pending               Indicates if the alarm signal is pending and requires acknowledgement.
 | |
|   @param  Time                  The current alarm setting.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The alarm settings were returned.
 | |
|   @retval EFI_INVALID_PARAMETER Any parameter is NULL.
 | |
|   @retval EFI_DEVICE_ERROR      The wakeup time could not be retrieved due to a hardware error.
 | |
|   @retval EFI_UNSUPPORTED       A wakeup timer is not supported on this platform.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| LibGetWakeupTime (
 | |
|   OUT BOOLEAN   *Enabled,
 | |
|   OUT BOOLEAN   *Pending,
 | |
|   OUT EFI_TIME  *Time
 | |
|   )
 | |
| {
 | |
|   return EFI_UNSUPPORTED;
 | |
| }
 | |
| 
 | |
| /**
 | |
|   Sets the system wakeup alarm clock time.
 | |
| 
 | |
|   @param  Enabled               Enable or disable the wakeup alarm.
 | |
|   @param  Time                  If Enable is TRUE, the time to set the wakeup alarm for.
 | |
| 
 | |
|   @retval EFI_SUCCESS           If Enable is TRUE, then the wakeup alarm was enabled. If
 | |
|                                 Enable is FALSE, then the wakeup alarm was disabled.
 | |
|   @retval EFI_INVALID_PARAMETER A time field is out of range.
 | |
|   @retval EFI_DEVICE_ERROR      The wakeup time could not be set due to a hardware error.
 | |
|   @retval EFI_UNSUPPORTED       A wakeup timer is not supported on this platform.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| LibSetWakeupTime (
 | |
|   IN BOOLEAN    Enabled,
 | |
|   OUT EFI_TIME  *Time
 | |
|   )
 | |
| {
 | |
|   return EFI_UNSUPPORTED;
 | |
| }
 | |
| 
 | |
| /**
 | |
|   This is the declaration of an EFI image entry point. This can be the entry point to an application
 | |
|   written to this specification, an EFI boot service driver, or an EFI runtime driver.
 | |
| 
 | |
|   @param  ImageHandle           Handle that identifies the loaded image.
 | |
|   @param  SystemTable           System Table for this image.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The operation completed successfully.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| LibRtcInitialize (
 | |
|   IN EFI_HANDLE        ImageHandle,
 | |
|   IN EFI_SYSTEM_TABLE  *SystemTable
 | |
|   )
 | |
| {
 | |
|   return EFI_SUCCESS;
 | |
| }
 |