Skip to content

Commit

Permalink
ArmPlatformPkg,ArmVirtPkg: delete redundant PL031 functions
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Leif Lindholm committed May 10, 2017
1 parent b489599 commit af5fed9
Show file tree
Hide file tree
Showing 4 changed files with 5 additions and 135 deletions.
11 changes: 0 additions & 11 deletions ArmPlatformPkg/Include/Drivers/PL031RealTimeClock.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,4 @@

#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
127 changes: 3 additions & 124 deletions ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@

#include <Drivers/PL031RealTimeClock.h>

#include <Library/TimeBaseLib.h>

#include <ArmPlatform.h>

STATIC CONST CHAR16 mTimeZoneVariableName[] = L"PL031RtcTimeZone";
Expand Down Expand Up @@ -109,129 +111,6 @@ InitializePL031 (
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
of the hardware platform.
Expand Down Expand Up @@ -431,7 +310,7 @@ LibSetTime (
(Time->Year > 9999) ||
(Time->Month < 1 ) ||
(Time->Month > 12 ) ||
(!DayValid (Time) ) ||
(!IsDayValid (Time) ) ||
(Time->Hour > 23 ) ||
(Time->Minute > 59 ) ||
(Time->Second > 59 ) ||
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
PcdLib
ArmPlatformSysConfigLib
DxeServicesTableLib
TimeBaseLib
UefiRuntimeLib

[Guids]
Expand Down
1 change: 1 addition & 0 deletions ArmVirtPkg/ArmVirt.dsc.inc
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@

# ARM PL031 RTC Driver
RealTimeClockLib|ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf
TimeBaseLib|EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.inf
# ARM PL011 UART Driver
PL011UartLib|ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.inf
SerialPortLib|ArmVirtPkg/Library/FdtPL011SerialPortLib/FdtPL011SerialPortLib.inf
Expand Down

0 comments on commit af5fed9

Please sign in to comment.