public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Ni, Ray" <ray.ni@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
	"kaiyau@gmail.com" <kaiyau@gmail.com>
Cc: "Yau, KaiX" <kaix.yau@intel.com>,
	"Jiang, Guomin" <guomin.jiang@intel.com>,
	"Gao, Liming" <liming.gao@intel.com>
Subject: Re: [edk2-devel] [PATCH] PcAtChipsetPkg: Wrong System YEAR displayed in SETUP
Date: Mon, 27 Apr 2020 04:53:42 +0000	[thread overview]
Message-ID: <734D49CCEBEEF84792F5B80ED585239D5C51152B@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <50102ef8b38c0e5287ab4d1cb8fc636213f67299.1584672719.git.kaix.yau@intel.com>

This patch introduces several changes for different purposes.
At least I can see:
1. Default PCD value change
2. Consume century value from HW

Can you separate the patches to 2 patches?


For the purpose #2, can you explain more background/reason?

The PcdMinimalValidYear/ PcdMaximalValidYear value are chosen that when a two-digit year
is read from HW, there is no confusion to convert to 4-digit year.
Are you aware of this when you made the patch?

Thanks,
Ray


> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Yau
> Sent: Friday, March 20, 2020 11:42 AM
> To: devel@edk2.groups.io
> Cc: Yau, KaiX <kaix.yau@intel.com>
> Subject: [edk2-devel] [PATCH] PcAtChipsetPkg: Wrong System YEAR displayed in
> SETUP
> 
> Function ConvertRtcTimeToEfiTime() will reset to Century 19XX when the year
> is set larger than the value of PcdMaximalValidYear outside SETUP.
> 
> Signed-off-by: Yau <kaix.yau@intel.com>
> ---
>  PcAtChipsetPkg/PcAtChipsetPkg.dec             |  7 +++---
>  .../PcatRealTimeClockRuntimeDxe/PcRtc.c       | 25 +++++++++++--------
>  .../PcatRealTimeClockRuntimeDxe/PcRtc.h       | 17 +++++++------
>  3 files changed, 27 insertions(+), 22 deletions(-)
> 
> diff --git a/PcAtChipsetPkg/PcAtChipsetPkg.dec
> b/PcAtChipsetPkg/PcAtChipsetPkg.dec
> index 88de5cceea..660cb5d52e 100644
> --- a/PcAtChipsetPkg/PcAtChipsetPkg.dec
> +++ b/PcAtChipsetPkg/PcAtChipsetPkg.dec
> @@ -4,7 +4,7 @@
>  # This package is designed to public interfaces and implementation which
> follows
>  # PcAt defacto standard.
>  #
> -# Copyright (c) 2009 - 2019, Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) 2009 - 2020, Intel Corporation. All rights reserved.<BR>
>  # Copyright (c) 2017, AMD Inc. All rights reserved.<BR>
>  #
>  # SPDX-License-Identifier: BSD-2-Clause-Patent
> @@ -61,12 +61,13 @@
> 
>    ## This PCD specifies the minimal valid year in RTC.
>    # @Prompt Minimal valid year in RTC.
> -
> gPcAtChipsetPkgTokenSpaceGuid.PcdMinimalValidYear|1998|UINT16|0x00000
> 00D
> +  # @Expression 0x80000001 |
> gPcAtChipsetPkgTokenSpaceGuid.PcdMinimalValidYear >= 2000
> +
> gPcAtChipsetPkgTokenSpaceGuid.PcdMinimalValidYear|2000|UINT16|0x00000
> 00D
> 
>    ## This PCD specifies the maximal valid year in RTC.
>    # @Prompt Maximal valid year in RTC.
>    # @Expression 0x80000001 |
> gPcAtChipsetPkgTokenSpaceGuid.PcdMaximalValidYear <
> gPcAtChipsetPkgTokenSpaceGuid.PcdMinimalValidYear + 100
> -
> gPcAtChipsetPkgTokenSpaceGuid.PcdMaximalValidYear|2097|UINT16|0x00000
> 00E
> +
> gPcAtChipsetPkgTokenSpaceGuid.PcdMaximalValidYear|2099|UINT16|0x00000
> 00E
> 
>  [PcdsFixedAtBuild, PcdsPatchableInModule]
>    ## Defines the ACPI register set base address.
> diff --git a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c
> b/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c
> index 52af179417..38a3521dfc 100644
> --- a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c
> +++ b/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c
> @@ -1,7 +1,7 @@
>  /** @file
>    RTC Architectural Protocol GUID as defined in DxeCis 0.96.
> 
> -Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>
>  Copyright (c) 2017, AMD Inc. All rights reserved.<BR>
> 
>  SPDX-License-Identifier: BSD-2-Clause-Patent
> @@ -441,8 +441,8 @@ PcRtcGetTime (
>  **/
>  EFI_STATUS
>  PcRtcSetTime (
> -  IN EFI_TIME                *Time,
> -  IN PC_RTC_MODULE_GLOBALS   *Global
> +  IN     EFI_TIME                *Time,
> +  IN OUT PC_RTC_MODULE_GLOBALS   *Global
>    )
>  {
>    EFI_STATUS      Status;
> @@ -525,6 +525,8 @@ PcRtcSetTime (
>    //
>    if (Global->CenturyRtcAddress != 0) {
>      RtcWrite (Global->CenturyRtcAddress, DecimalToBcd8 ((UINT8)
> (RtcTime.Year / 100)));
> +  } else {
> +    DEBUG ((EFI_D_INFO, "PcRtc: Century RTC Address is not found\n"));
>    }
> 
>    ConvertEfiTimeToRtcTime (&RtcTime, RegisterB);
> @@ -868,6 +870,9 @@ ConvertRtcTimeToEfiTime (
>  {
>    BOOLEAN IsPM;
>    UINT8   Century;
> +  UINT8   CenturyRtcAddress;
> +
> +  CenturyRtcAddress = GetCenturyRtcAddress ();
> 
>    if ((Time->Hour & 0x80) != 0) {
>      IsPM = TRUE;
> @@ -891,14 +896,12 @@ ConvertRtcTimeToEfiTime (
>      return EFI_INVALID_PARAMETER;
>    }
> 
> -  //
> -  // For minimal/maximum year range [1970, 2069],
> -  //   Century is 19 if RTC year >= 70,
> -  //   Century is 20 otherwise.
> -  //
> -  Century = (UINT8) (PcdGet16 (PcdMinimalValidYear) / 100);
> -  if (Time->Year < PcdGet16 (PcdMinimalValidYear) % 100) {
> -    Century++;
> +  if (CenturyRtcAddress != 0) {
> +    Century = CheckAndConvertBcd8ToDecimal8 ((UINT8) (RtcRead
> (CenturyRtcAddress)));
> +  } else if ((PcdGet16 (PcdMinimalValidYear) / 100) == (PcdGet16
> (PcdMaximalValidYear) / 100)) {
> +    Century = (UINT8)(PcdGet16 (PcdMinimalValidYear) / 100);
> +  } else {
> +    Century = RTC_INIT_CENTURY;
>    }
>    Time->Year = (UINT16) (Century * 100 + Time->Year);
> 
> diff --git a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.h
> b/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.h
> index 47293ce44c..94926fe73e 100644
> --- a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.h
> +++ b/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.h
> @@ -1,7 +1,7 @@
>  /** @file
>    Header file for real time clock driver.
> 
> -Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>
>  Copyright (c) 2017, AMD Inc. All rights reserved.<BR>
> 
>  SPDX-License-Identifier: BSD-2-Clause-Patent
> @@ -62,11 +62,12 @@ extern PC_RTC_MODULE_GLOBALS  mModuleGlobal;
>  // Date and time initial values.
>  // They are used if the RTC values are invalid during driver initialization
>  //
> -#define RTC_INIT_SECOND 0
> -#define RTC_INIT_MINUTE 0
> -#define RTC_INIT_HOUR   0
> -#define RTC_INIT_DAY    1
> -#define RTC_INIT_MONTH  1
> +#define RTC_INIT_SECOND  0
> +#define RTC_INIT_MINUTE  0
> +#define RTC_INIT_HOUR    0
> +#define RTC_INIT_DAY     1
> +#define RTC_INIT_MONTH   1
> +#define RTC_INIT_CENTURY 20
> 
>  #pragma pack(1)
>  //
> @@ -160,8 +161,8 @@ PcRtcInit (
>  **/
>  EFI_STATUS
>  PcRtcSetTime (
> -  IN EFI_TIME               *Time,
> -  IN PC_RTC_MODULE_GLOBALS  *Global
> +  IN     EFI_TIME               *Time,
> +  IN OUT PC_RTC_MODULE_GLOBALS  *Global
>    );
> 
>  /**
> --
> 2.17.1.windows.2
> 
> 
> 


  parent reply	other threads:[~2020-04-27  4:53 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-20  3:42 [PATCH] PcAtChipsetPkg: Wrong System YEAR displayed in SETUP Yau
2020-03-27  5:15 ` [edk2-devel] " Guomin Jiang
2020-04-27  4:53 ` Ni, Ray [this message]
2020-04-27  5:47   ` Yau, KaiX
2020-05-12  1:52     ` Ni, Ray
2020-05-12  2:01       ` Yau, KaiX
2020-05-12  5:41         ` Ni, Ray
2020-05-12  5:51           ` Yau, KaiX
2020-05-13  3:27             ` Ni, Ray
2020-05-13  3:36               ` Yau, KaiX
2020-05-13  4:45                 ` Ni, Ray
2020-05-13  5:45                   ` Yau, KaiX
2020-05-13  9:02                     ` Ni, Ray
2020-05-13 17:13                       ` Yau, KaiX
2020-05-14  2:54                         ` Ni, Ray
2020-05-14  3:35                           ` Yau, KaiX
2020-05-14  5:38                             ` Ni, Ray
     [not found]                               ` <DM6PR11MB3817DAEAB31E0676CF6E41F6F4BC0@DM6PR11MB3817.namprd11.prod.outlook.com>
2020-05-14  7:09                                 ` Ni, Ray
2020-05-14 15:11                                   ` Yau, KaiX

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=734D49CCEBEEF84792F5B80ED585239D5C51152B@SHSMSX104.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox