From patchwork Wed May 3 21:38:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leif Lindholm X-Patchwork-Id: 98509 Delivered-To: patch@linaro.org Received: by 10.140.89.200 with SMTP id v66csp265514qgd; Wed, 3 May 2017 14:38:25 -0700 (PDT) X-Received: by 10.98.193.65 with SMTP id i62mr6977551pfg.149.1493847505564; Wed, 03 May 2017 14:38:25 -0700 (PDT) Return-Path: Received: from ml01.01.org (ml01.01.org. [2001:19d0:306:5::1]) by mx.google.com with ESMTPS id y27si210266pgc.178.2017.05.03.14.38.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 May 2017 14:38:25 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) client-ip=2001:19d0:306:5::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org; spf=pass (google.com: best guess record for domain of edk2-devel-bounces@lists.01.org designates 2001:19d0:306:5::1 as permitted sender) smtp.mailfrom=edk2-devel-bounces@lists.01.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id D0A3121955D91; Wed, 3 May 2017 14:38:19 -0700 (PDT) X-Original-To: edk2-devel@lists.01.org Delivered-To: edk2-devel@lists.01.org Received: from mail-wr0-x22b.google.com (mail-wr0-x22b.google.com [IPv6:2a00:1450:400c:c0c::22b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id B737A21A13482 for ; Wed, 3 May 2017 14:38:17 -0700 (PDT) Received: by mail-wr0-x22b.google.com with SMTP id z52so1129472wrc.2 for ; Wed, 03 May 2017 14:38:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=B9yc8JJNoLV6e+aUcSUgjXYwwOtaFrM9pl9nFhFG0IE=; b=HUdryZcVPoV/4x9mBl7+Fj8n/3dNgHFcf9An5wn+j4kR6DLe5jJWowh8BpP1CALEGG UhesCbNDiCMvq/kL5Go0FwEbp1I1KaTeFq0YoKJC56tKW4N9JBU3tvjo/QU1y/rKucI5 77YjbRwEkfcrgmAPnTAt1A1CNPQ4f5b0XL4YQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=B9yc8JJNoLV6e+aUcSUgjXYwwOtaFrM9pl9nFhFG0IE=; b=UFB1vdSSJvJ1mOi/OJJ4bpyo711GLIVgQXTenFxyH2DZLfnB4VVV41Pdn7tGDb/giR FfmfnPn7o5atGLqw8XYO21AOu3OHsqNGXzcTPir8YzWJR1EX1tBCsPmCCrJp+QaZVUHK 5QtrsDo2eayY9Mf/MXMh0nQpyME/kp4sw6o5xtXtTLfzRmQF46IfnoArQSFEWc/TyKqV YbGTMuiIzypoEDM0nFDgXR33s+5D4bQ3nPQbBG28kWL3L6NVo3MY4qbwa4VHD94lbu4y 01yLpD14Cp88/MiRCilc3ULtxu8CGJdnhCY4NIQMC2JigxqxvJn1Djtha9r/XZACNzZa qAnQ== X-Gm-Message-State: AN3rC/7ZovVifVRWXWbyu1JK6JQKP6fyE7iMEbnJdDgLQ6Nqn3whirvJ DfVeJ/4GpswFP5rH X-Received: by 10.223.139.20 with SMTP id n20mr20912757wra.169.1493847496336; Wed, 03 May 2017 14:38:16 -0700 (PDT) Received: from mohikan.hemma.eciton.net ([2a01:348:6:8735:e23f:49ff:fe6d:9d26]) by smtp.gmail.com with ESMTPSA id z14sm41380wmz.2.2017.05.03.14.38.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 May 2017 14:38:15 -0700 (PDT) From: Leif Lindholm To: edk2-devel@lists.01.org Date: Wed, 3 May 2017 22:38:12 +0100 Message-Id: <20170503213812.5971-4-leif.lindholm@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170503213812.5971-1-leif.lindholm@linaro.org> References: <20170503213812.5971-1-leif.lindholm@linaro.org> Subject: [edk2] [PATCH 3/3] ArmPlatformPkg, ArmVirtPkg: delete redundant PL031 functions X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Laszlo Ersek , Ard Biesheuvel MIME-Version: 1.0 Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" Remove the functions now provided by EfiTimeBaseLib from PL031RealTimeClockLib. Add EfiTimeBaseLib resolution to ArmVirtPkg in same commit to prevent breakage. Cc: Laszlo Ersek Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Leif Lindholm --- .../Include/Drivers/PL031RealTimeClock.h | 11 -- .../PL031RealTimeClockLib/PL031RealTimeClockLib.c | 127 +-------------------- .../PL031RealTimeClockLib.inf | 1 + ArmVirtPkg/ArmVirt.dsc.inc | 1 + 4 files changed, 5 insertions(+), 135 deletions(-) -- 2.11.0 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel Reviewed-by: Ard Biesheuvel diff --git a/ArmPlatformPkg/Include/Drivers/PL031RealTimeClock.h b/ArmPlatformPkg/Include/Drivers/PL031RealTimeClock.h index 76fbd0eb82..812cd9b397 100644 --- a/ArmPlatformPkg/Include/Drivers/PL031RealTimeClock.h +++ b/ArmPlatformPkg/Include/Drivers/PL031RealTimeClock.h @@ -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 diff --git a/ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.c b/ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.c index 4aa448b528..9f115d383c 100644 --- a/ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.c +++ b/ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.c @@ -36,6 +36,8 @@ #include +#include + #include STATIC CONST CHAR16 mTimeZoneVariableName[] = L"PL031RtcTimeZone"; @@ -110,129 +112,6 @@ InitializePL031 ( } /** - 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. @@ -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 ) || diff --git a/ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf b/ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf index 3a98fc757e..41a4e6d6bd 100644 --- a/ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf +++ b/ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf @@ -36,6 +36,7 @@ PcdLib ArmPlatformSysConfigLib DxeServicesTableLib + EfiTimeBaseLib UefiRuntimeLib [Guids] diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc index e74eaf16e7..bc96709d8a 100644 --- a/ArmVirtPkg/ArmVirt.dsc.inc +++ b/ArmVirtPkg/ArmVirt.dsc.inc @@ -105,6 +105,7 @@ # ARM PL031 RTC Driver RealTimeClockLib|ArmPlatformPkg/Library/PL031RealTimeClockLib/PL031RealTimeClockLib.inf + EfiTimeBaseLib|EmbeddedPkg/Library/EfiTimeBaseLib/EfiTimeBaseLib.inf # ARM PL011 UART Driver PL011UartLib|ArmPlatformPkg/Drivers/PL011Uart/PL011Uart.inf SerialPortLib|ArmVirtPkg/Library/FdtPL011SerialPortLib/FdtPL011SerialPortLib.inf