mirror of https://github.com/acidanthera/audk.git
ArmPlatformPkg,ArmVirtPkg: delete redundant PL031 functions
Remove the functions now provided by TimeBaseLib from PL031RealTimeClockLib. Add TimeBaseLib resolution to ArmVirtPkg in same commit to prevent breakage. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Leif Lindholm <leif.lindholm@linaro.org> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
This commit is contained in:
parent
b489599571
commit
af5fed90bf
|
@ -42,15 +42,4 @@
|
||||||
|
|
||||||
#define PL031_COUNTS_PER_SECOND 1
|
#define PL031_COUNTS_PER_SECOND 1
|
||||||
|
|
||||||
// Define EPOCH (1970-JANUARY-01) in the Julian Date representation
|
|
||||||
#define EPOCH_JULIAN_DATE 2440588
|
|
||||||
|
|
||||||
// Seconds per unit
|
|
||||||
#define SEC_PER_MIN ((UINTN) 60)
|
|
||||||
#define SEC_PER_HOUR ((UINTN) 3600)
|
|
||||||
#define SEC_PER_DAY ((UINTN) 86400)
|
|
||||||
|
|
||||||
#define SEC_PER_MONTH ((UINTN) 2,592,000)
|
|
||||||
#define SEC_PER_YEAR ((UINTN) 31,536,000)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -36,6 +36,8 @@
|
||||||
|
|
||||||
#include <Drivers/PL031RealTimeClock.h>
|
#include <Drivers/PL031RealTimeClock.h>
|
||||||
|
|
||||||
|
#include <Library/TimeBaseLib.h>
|
||||||
|
|
||||||
#include <ArmPlatform.h>
|
#include <ArmPlatform.h>
|
||||||
|
|
||||||
STATIC CONST CHAR16 mTimeZoneVariableName[] = L"PL031RtcTimeZone";
|
STATIC CONST CHAR16 mTimeZoneVariableName[] = L"PL031RtcTimeZone";
|
||||||
|
@ -109,129 +111,6 @@ InitializePL031 (
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Converts Epoch seconds (elapsed since 1970 JANUARY 01, 00:00:00 UTC) to EFI_TIME
|
|
||||||
**/
|
|
||||||
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 = y - 4800 + ((m + 2) / 12);
|
|
||||||
Time->Month = ((m + 2) % 12) + 1;
|
|
||||||
Time->Day = d + 1;
|
|
||||||
|
|
||||||
ss = EpochSeconds % 60;
|
|
||||||
a = (EpochSeconds - ss) / 60;
|
|
||||||
mm = a % 60;
|
|
||||||
b = (a - mm) / 60;
|
|
||||||
hh = b % 24;
|
|
||||||
|
|
||||||
Time->Hour = hh;
|
|
||||||
Time->Minute = mm;
|
|
||||||
Time->Second = ss;
|
|
||||||
Time->Nanosecond = 0;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Converts EFI_TIME to Epoch seconds (elapsed since 1970 JANUARY 01, 00:00:00 UTC)
|
|
||||||
**/
|
|
||||||
UINTN
|
|
||||||
EfiTimeToEpoch (
|
|
||||||
IN EFI_TIME *Time
|
|
||||||
)
|
|
||||||
{
|
|
||||||
UINTN a;
|
|
||||||
UINTN y;
|
|
||||||
UINTN m;
|
|
||||||
UINTN JulianDate; // Absolute Julian Date representation of the supplied Time
|
|
||||||
UINTN EpochDays; // Number of days elapsed since EPOCH_JULIAN_DAY
|
|
||||||
UINTN EpochSeconds;
|
|
||||||
|
|
||||||
a = (14 - Time->Month) / 12 ;
|
|
||||||
y = Time->Year + 4800 - a;
|
|
||||||
m = Time->Month + (12*a) - 3;
|
|
||||||
|
|
||||||
JulianDate = Time->Day + ((153*m + 2)/5) + (365*y) + (y/4) - (y/100) + (y/400) - 32045;
|
|
||||||
|
|
||||||
ASSERT (JulianDate >= EPOCH_JULIAN_DATE);
|
|
||||||
EpochDays = JulianDate - EPOCH_JULIAN_DATE;
|
|
||||||
|
|
||||||
EpochSeconds = (EpochDays * SEC_PER_DAY) + ((UINTN)Time->Hour * SEC_PER_HOUR) + (Time->Minute * SEC_PER_MIN) + Time->Second;
|
|
||||||
|
|
||||||
return EpochSeconds;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOLEAN
|
|
||||||
DayValid (
|
|
||||||
IN EFI_TIME *Time
|
|
||||||
)
|
|
||||||
{
|
|
||||||
STATIC CONST INTN DayOfMonth[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
|
|
||||||
|
|
||||||
if (Time->Day < 1 ||
|
|
||||||
Time->Day > DayOfMonth[Time->Month - 1] ||
|
|
||||||
(Time->Month == 2 && (!IsLeapYear (Time) && Time->Day > 28))
|
|
||||||
) {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Returns the current time and date information, and the time-keeping capabilities
|
Returns the current time and date information, and the time-keeping capabilities
|
||||||
of the hardware platform.
|
of the hardware platform.
|
||||||
|
@ -431,7 +310,7 @@ LibSetTime (
|
||||||
(Time->Year > 9999) ||
|
(Time->Year > 9999) ||
|
||||||
(Time->Month < 1 ) ||
|
(Time->Month < 1 ) ||
|
||||||
(Time->Month > 12 ) ||
|
(Time->Month > 12 ) ||
|
||||||
(!DayValid (Time) ) ||
|
(!IsDayValid (Time) ) ||
|
||||||
(Time->Hour > 23 ) ||
|
(Time->Hour > 23 ) ||
|
||||||
(Time->Minute > 59 ) ||
|
(Time->Minute > 59 ) ||
|
||||||
(Time->Second > 59 ) ||
|
(Time->Second > 59 ) ||
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
PcdLib
|
PcdLib
|
||||||
ArmPlatformSysConfigLib
|
ArmPlatformSysConfigLib
|
||||||
DxeServicesTableLib
|
DxeServicesTableLib
|
||||||
|
TimeBaseLib
|
||||||
UefiRuntimeLib
|
UefiRuntimeLib
|
||||||
|
|
||||||
[Guids]
|
[Guids]
|
||||||
|
|
|
@ -105,6 +105,7 @@
|
||||||
|
|
||||||
# ARM PL031 RTC Driver
|
# ARM PL031 RTC Driver
|
||||||
RealTimeClockLib|ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf
|
RealTimeClockLib|ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf
|
||||||
|
TimeBaseLib|EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.inf
|
||||||
# ARM PL011 UART Driver
|
# ARM PL011 UART Driver
|
||||||
PL011UartLib|ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.inf
|
PL011UartLib|ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.inf
|
||||||
SerialPortLib|ArmVirtPkg/Library/FdtPL011SerialPortLib/FdtPL011SerialPortLib.inf
|
SerialPortLib|ArmVirtPkg/Library/FdtPL011SerialPortLib/FdtPL011SerialPortLib.inf
|
||||||
|
|
Loading…
Reference in New Issue