From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mx.groups.io with SMTP id smtpd.web11.3789.1684721696505517694 for ; Sun, 21 May 2023 19:14:57 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=n2YmrHf1; spf=pass (domain: intel.com, ip: 192.55.52.120, mailfrom: gua.guo@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1684721697; x=1716257697; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=xApPQV7YbiwnjOse66JG3ra6rRZop76LrE7B/wnR5oA=; b=n2YmrHf1BHcCyh7LbNme/7qsbH0KjJvmbbreuwuZFVqvkKF3J9LLvXBH JmB3bmSDHrXxGW5LD8SwCNJ18V6ghR5EsPAiSVPZ/68vSWyK8ZaJWDJl0 bXzfeJeFFjWDPUc2iIXNCiuspoIY6SpisK86CNfJJnN3itHCJh2H7IeVb JgGS/gj4sRxlrRDNKkKGp0FHwZ3N3Bx0THyzmEjFn6UCT1TFlGbpZj9mX 2m8ff1rXqlo+v3HUTUPWbxgqGIKf3xmcBdJkICdb0S9IUA8Os08HTJ4kp TmX2bxHp75+H48tTheUahIpdQsISRDodkG4G7AePxuO3pyOV3Nu/mA4bU g==; X-IronPort-AV: E=McAfee;i="6600,9927,10717"; a="351654984" X-IronPort-AV: E=Sophos;i="6.00,183,1681196400"; d="scan'208";a="351654984" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 May 2023 19:14:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10717"; a="1033428067" X-IronPort-AV: E=Sophos;i="6.00,183,1681196400"; d="scan'208";a="1033428067" Received: from gguo-desk.gar.corp.intel.com ([10.5.215.23]) by fmsmga005.fm.intel.com with ESMTP; 21 May 2023 19:14:56 -0700 From: "Guo, Gua" To: devel@edk2.groups.io Cc: gua.guo@intel.com, Ray Ni , Michael D Kinney Subject: [PATCH v1 1/1] PcAtChipsetPkg: RTC Runtime unable to get correct IO port by PCD Date: Mon, 22 May 2023 10:14:51 +0800 Message-Id: <20230522021451.439-2-gua.guo@intel.com> X-Mailer: git-send-email 2.39.2.windows.1 In-Reply-To: <20230522021451.439-1-gua.guo@intel.com> References: <20230522021451.439-1-gua.guo@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Gua Guo RTC runtime is unable to get dynamic PCD value after booting to OS using runtime services. Resolution: Cache the dynamic PCD value in RTC driver entry point Cc: Ray Ni Cc: Michael D Kinney Signed-off-by: Gua Guo --- .../PcatRealTimeClockRuntimeDxe/PcRtc.c | 15 ++++++++------- .../PcatRealTimeClockRuntimeDxe/PcRtcEntry.c | 5 +++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c b/PcAtChips= etPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c index d8b9fa8376..3f114dce5d 100644 --- a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c +++ b/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtc.c @@ -13,7 +13,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent =0D extern UINTN mRtcIndexRegister;=0D extern UINTN mRtcTargetRegister;=0D -=0D +extern UINTN mRtcIndexRegisterIo;=0D +extern UINTN mRtcTargetRegisterIo;=0D //=0D // Days of month.=0D //=0D @@ -72,10 +73,10 @@ IoRtcRead ( )=0D {=0D IoWrite8 (=0D - PcdGet8 (PcdRtcIndexRegister),=0D - (UINT8)(Address | (UINT8)(IoRead8 (PcdGet8 (PcdRtcIndexRegister)) & 0x= 80))=0D + mRtcIndexRegisterIo,=0D + (UINT8)(Address | (UINT8)(IoRead8 (mRtcIndexRegisterIo) & 0x80))=0D );=0D - return IoRead8 (PcdGet8 (PcdRtcTargetRegister));=0D + return IoRead8 (mRtcTargetRegisterIo);=0D }=0D =0D /**=0D @@ -94,10 +95,10 @@ IoRtcWrite ( )=0D {=0D IoWrite8 (=0D - PcdGet8 (PcdRtcIndexRegister),=0D - (UINT8)(Address | (UINT8)(IoRead8 (PcdGet8 (PcdRtcIndexRegister)) & 0x= 80))=0D + mRtcIndexRegisterIo,=0D + (UINT8)(Address | (UINT8)(IoRead8 (mRtcIndexRegisterIo) & 0x80))=0D );=0D - IoWrite8 (PcdGet8 (PcdRtcTargetRegister), Data);=0D + IoWrite8 (mRtcTargetRegisterIo, Data);=0D }=0D =0D /**=0D diff --git a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtcEntry.c b/PcAt= ChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtcEntry.c index e6e9458d75..23e87978bf 100644 --- a/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtcEntry.c +++ b/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcRtcEntry.c @@ -18,6 +18,8 @@ STATIC EFI_EVENT mVirtualAddrChangeEvent; =0D UINTN mRtcIndexRegister;=0D UINTN mRtcTargetRegister;=0D +UINTN mRtcIndexRegisterIo;=0D +UINTN mRtcTargetRegisterIo;=0D =0D /**=0D Returns the current time and date information, and the time-keeping capa= bilities=0D @@ -164,6 +166,9 @@ InitializePcRtc ( if (FeaturePcdGet (PcdRtcUseMmio)) {=0D mRtcIndexRegister =3D (UINTN)PcdGet64 (PcdRtcIndexRegister64);=0D mRtcTargetRegister =3D (UINTN)PcdGet64 (PcdRtcTargetRegister64);=0D + } else {=0D + mRtcIndexRegisterIo =3D (UINTN)PcdGet8 (PcdRtcIndexRegister);=0D + mRtcTargetRegisterIo =3D (UINTN)PcdGet8 (PcdRtcTargetRegister);=0D }=0D =0D Status =3D PcRtcInit (&mModuleGlobal);=0D --=20 2.39.2.windows.1