EmbeddedPkg/RealTimeClockRuntimeDxe: Use helper functions from TimeBaseLib

This patch replaces all time checking functions and leverage the helper
functions in TimeBaseLib library.

Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>
Signed-off-by: Nhi Pham <nhi@os.amperecomputing.com>
Reviewed-by: Leif Lindholm <leif@nuviainc.com>
This commit is contained in:
Nhi Pham 2021-01-06 23:09:03 +07:00 committed by mergify[bot]
parent e31dc4717c
commit 55ee36b0c4
2 changed files with 4 additions and 86 deletions

View File

@ -3,6 +3,7 @@
Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
Copyright (c) 2017, Linaro, Ltd. All rights reserved.<BR>
Copyright (c) 2021, Ampere Computing LLC. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
@ -11,6 +12,7 @@
#include <PiDxe.h>
#include <Library/DebugLib.h>
#include <Library/RealTimeClockLib.h>
#include <Library/TimeBaseLib.h>
#include <Library/UefiLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeLib.h>
@ -31,92 +33,6 @@ typedef struct {
STATIC CONST CHAR16 mTimeSettingsVariableName[] = L"RtcTimeSettings";
STATIC NON_VOLATILE_TIME_SETTINGS mTimeSettings;
STATIC
BOOLEAN
IsValidTimeZone (
IN INT16 TimeZone
)
{
return TimeZone == EFI_UNSPECIFIED_TIMEZONE ||
(TimeZone >= -1440 && TimeZone <= 1440);
}
STATIC
BOOLEAN
IsValidDaylight (
IN INT8 Daylight
)
{
return Daylight == 0 ||
Daylight == EFI_TIME_ADJUST_DAYLIGHT ||
Daylight == (EFI_TIME_ADJUST_DAYLIGHT | EFI_TIME_IN_DAYLIGHT);
}
STATIC
BOOLEAN
EFIAPI
IsLeapYear (
IN EFI_TIME *Time
)
{
if (Time->Year % 4 == 0) {
if (Time->Year % 100 == 0) {
if (Time->Year % 400 == 0) {
return TRUE;
} else {
return FALSE;
}
} else {
return TRUE;
}
} else {
return FALSE;
}
}
STATIC CONST INTN mDayOfMonth[12] = {
31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};
STATIC
BOOLEAN
EFIAPI
IsDayValid (
IN EFI_TIME *Time
)
{
if (Time->Day < 1 ||
Time->Day > mDayOfMonth[Time->Month - 1] ||
(Time->Month == 2 && !IsLeapYear (Time) && Time->Day > 28)) {
return FALSE;
}
return TRUE;
}
STATIC
BOOLEAN
EFIAPI
IsTimeValid(
IN EFI_TIME *Time
)
{
// Check the input parameters are within the range specified by UEFI
if (Time->Year < 1900 ||
Time->Year > 9999 ||
Time->Month < 1 ||
Time->Month > 12 ||
!IsDayValid (Time) ||
Time->Hour > 23 ||
Time->Minute > 59 ||
Time->Second > 59 ||
Time->Nanosecond > 999999999 ||
!IsValidTimeZone (Time->TimeZone) ||
!IsValidDaylight (Time->Daylight)) {
return FALSE;
}
return TRUE;
}
/**
Returns the current time and date information, and the time-keeping capabilities
of the hardware platform.

View File

@ -3,6 +3,7 @@
#
# Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2017, Linaro, Ltd. All rights reserved.<BR>
# Copyright (c) 2021, Ampere Computing LLC. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
@ -28,6 +29,7 @@
[LibraryClasses]
DebugLib
RealTimeClockLib
TimeBaseLib
UefiBootServicesTableLib
UefiDriverEntryPoint
UefiRuntimeLib