From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail05.groups.io (mail05.groups.io [45.79.224.7]) by spool.mail.gandi.net (Postfix) with ESMTPS id 5EFE57803E0 for ; Tue, 23 Apr 2024 14:56:06 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=I/uMC5+pcmrungk+Wmo7c9yVYrdOnRu+b7jAI/gu4iw=; c=relaxed/simple; d=groups.io; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Resent-From:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Transfer-Encoding; s=20240206; t=1713884165; v=1; b=WdQgicHWGOMcsZmCm1SEGwr1NrWXpYmsIjX3Pk03UbneH3Yfqf3xqsoebjnhVfx/7jnk1che 6ZTTG9PnNOTKyHLwRo66xsk/GWrkdMyp74ydGKhqtDOomM4TuR4VzRW+Fg4j5Du/6n+DF9inEDt pZCeKPdDZrFMW8xRKUkYZd9jJddRrAhRYAC52X3630p9NcWF48TdjCN+FRE+aqESAD+NUM7JsYY Cvs/nq56umTJJT//O4yUToximeMyIXxtjY6ouNom678ckEMEyXtPuzxO4NQCimv8rdR2C/523t4 Dq25P4PlElBlRGhqC3K//GoxSMK/Z43OsOaXxpXIpPVXA== X-Received: by 127.0.0.2 with SMTP id yXi5YY7687511x3Iba3jXsK7; Tue, 23 Apr 2024 07:56:05 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.11905.1713851830407285837 for ; Mon, 22 Apr 2024 22:57:10 -0700 X-Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 25E7E339; Mon, 22 Apr 2024 22:57:38 -0700 (PDT) X-Received: from usa.arm.com (a077434.arm.com [10.162.46.143]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 6C9903F7BD; Mon, 22 Apr 2024 22:57:08 -0700 (PDT) From: "Sahil Kaushal" To: devel@edk2.groups.io Cc: Ard Biesheuvel , =?UTF-8?q?Leif=20Lindholm=20=C2=A0?= , Sami Mujawar , =?UTF-8?q?sahil=20=C2=A0?= Subject: [edk2-devel] [PATCH RESEND edk2-platforms][PATCH V2 09/14] Platform/ARM: Add optional provision to fetch and print NOR Flash info Date: Tue, 23 Apr 2024 11:26:33 +0530 Message-Id: <20240423055638.1271531-10-Sahil.Kaushal@arm.com> In-Reply-To: <20240423055638.1271531-1-Sahil.Kaushal@arm.com> References: <20240423055638.1271531-1-Sahil.Kaushal@arm.com> MIME-Version: 1.0 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Tue, 23 Apr 2024 07:55:50 -0700 Resent-From: sahil.kaushal@arm.com Reply-To: devel@edk2.groups.io,sahil.kaushal@arm.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: ROLX2p9d7aTRfvhuA8i6TbCJx7686176AA= Content-Transfer-Encoding: quoted-printable X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=WdQgicHW; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=arm.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io From: sahil This patch adds an optional functionality in NorFlashDxe to fetch and print NOR Flash information from NorFlashInfoLib using its JEDEC ID. NOR Flash libraries will implement a function "NorFlashReadID" which will fetch and return JEDEC ID. This JEDEC ID can be then used to print NOR Flash info using NorFlashInfoLib. If this functionality is not needed then the function can just return EFI_UNSUPPORTED. Signed-off-by: sahil --- Platform/ARM/SgiPkg/SgiPlatform.dsc.inc | 2 ++ Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc | 2 ++ Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc | 2 ++ Platform/ARM/JunoPkg/ArmJuno.dsc | 2 ++ Platform/ARM/VExpressPkg/PlatformStandaloneMm.dsc | 2 ++ Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.inf | 1 + Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf | 1 + Platform/ARM/Include/Library/NorFlashDeviceLib.h | 6 ++++= ++ Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c | 19 ++++= +++++++++++++++ Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c | 19 ++++= +++++++++++++++ Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib.c | 18 ++++= ++++++++++++++ 11 files changed, 74 insertions(+) diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dsc.inc b/Platform/ARM/SgiPkg/= SgiPlatform.dsc.inc index 3dcf422eab4b..aef7cba5449e 100644 --- a/Platform/ARM/SgiPkg/SgiPlatform.dsc.inc +++ b/Platform/ARM/SgiPkg/SgiPlatform.dsc.inc @@ -36,6 +36,8 @@ LcdPlatformLib|Platform/ARM/SgiPkg/Library/HdLcdArmSgiLib/HdLcdArmSgiLib= .inf=0D NorFlashDeviceLib|Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashD= eviceLib.inf=0D NorFlashPlatformLib|Platform/ARM/SgiPkg/Library/NorFlashLib/NorFlashLib.= inf=0D + # NOR flash support=0D + NorFlashInfoLib|EmbeddedPkg/Library/NorFlashInfoLib/NorFlashInfoLib.inf= =0D HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf=0D ResetSystemLib|ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSy= stemLib.inf=0D TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf=0D diff --git a/Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc b/Platform/ARM/SgiPk= g/SgiPlatformMm.dsc.inc index ab0e2a957a1b..02d684adaebd 100644 --- a/Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc +++ b/Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc @@ -65,6 +65,8 @@ IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf=0D NorFlashDeviceLib|Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashD= eviceLib.inf=0D NorFlashPlatformLib|Platform/ARM/SgiPkg/Library/NorFlashLib/StandaloneMm= NorFlashLib.inf=0D + # NOR flash support=0D + NorFlashInfoLib|EmbeddedPkg/Library/NorFlashInfoLib/NorFlashInfoLib.inf= =0D OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf=0D RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf=0D PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/PlatformSecu= reLibNull.inf=0D diff --git a/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc b/Platform/ARM/VE= xpressPkg/ArmVExpress.dsc.inc index 70ff049d3248..4e208c539a88 100644 --- a/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc +++ b/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc @@ -95,6 +95,8 @@ ArmPlatformSysConfigLib|Platform/ARM/VExpressPkg/Library/ArmVExpressSysC= onfigLib/ArmVExpressSysConfigLib.inf=0D NorFlashDeviceLib|Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashD= eviceLib.inf=0D NorFlashPlatformLib|Platform/ARM/VExpressPkg/Library/NorFlashArmVExpress= Lib/NorFlashArmVExpressLib.inf=0D + # NOR flash support=0D + NorFlashInfoLib|EmbeddedPkg/Library/NorFlashInfoLib/NorFlashInfoLib.inf= =0D ResetSystemLib|ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSy= stemLib.inf=0D =0D # ARM PL031 RTC Driver=0D diff --git a/Platform/ARM/JunoPkg/ArmJuno.dsc b/Platform/ARM/JunoPkg/ArmJun= o.dsc index 81d2cbe4359f..946b8680c8c2 100644 --- a/Platform/ARM/JunoPkg/ArmJuno.dsc +++ b/Platform/ARM/JunoPkg/ArmJuno.dsc @@ -42,6 +42,8 @@ =0D NorFlashDeviceLib|Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashD= eviceLib.inf=0D NorFlashPlatformLib|Platform/ARM/JunoPkg/Library/NorFlashJunoLib/NorFlas= hJunoLib.inf=0D + # NOR flash support=0D + NorFlashInfoLib|EmbeddedPkg/Library/NorFlashInfoLib/NorFlashInfoLib.inf= =0D =0D CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.inf= =0D CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/Customize= dDisplayLib.inf=0D diff --git a/Platform/ARM/VExpressPkg/PlatformStandaloneMm.dsc b/Platform/A= RM/VExpressPkg/PlatformStandaloneMm.dsc index a5805da49c92..ee71bbb1fc09 100644 --- a/Platform/ARM/VExpressPkg/PlatformStandaloneMm.dsc +++ b/Platform/ARM/VExpressPkg/PlatformStandaloneMm.dsc @@ -102,6 +102,8 @@ !if $(ENABLE_UEFI_SECURE_VARIABLE) =3D=3D TRUE=0D NorFlashDeviceLib|Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashD= eviceLib.inf=0D NorFlashPlatformLib|Platform/ARM/VExpressPkg/Library/NorFlashArmVExpress= Lib/NorFlashStMmLib.inf=0D + # NOR flash support=0D + NorFlashInfoLib|EmbeddedPkg/Library/NorFlashInfoLib/NorFlashInfoLib.inf= =0D VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf=0D VariableFlashInfoLib|MdeModulePkg/Library/BaseVariableFlashInfoLib/BaseV= ariableFlashInfoLib.inf=0D AuthVariableLib|SecurityPkg/Library/AuthVariableLib/AuthVariableLib.inf= =0D diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.inf b/Platform/AR= M/Drivers/NorFlashDxe/NorFlashDxe.inf index 6522968d6c5a..4ab4d6a26926 100644 --- a/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.inf +++ b/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.inf @@ -35,6 +35,7 @@ HobLib=0D IoLib=0D NorFlashDeviceLib=0D + NorFlashInfoLib=0D NorFlashPlatformLib=0D UefiBootServicesTableLib=0D UefiDriverEntryPoint=0D diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf b/Pl= atform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf index eb86d423f106..8b583f77d927 100644 --- a/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf +++ b/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf @@ -37,6 +37,7 @@ MemoryAllocationLib=0D MmServicesTableLib=0D NorFlashDeviceLib=0D + NorFlashInfoLib=0D NorFlashPlatformLib=0D StandaloneMmDriverEntryPoint=0D =0D diff --git a/Platform/ARM/Include/Library/NorFlashDeviceLib.h b/Platform/AR= M/Include/Library/NorFlashDeviceLib.h index 29b8b8901525..1e61f7c935ae 100644 --- a/Platform/ARM/Include/Library/NorFlashDeviceLib.h +++ b/Platform/ARM/Include/Library/NorFlashDeviceLib.h @@ -154,4 +154,10 @@ NorFlashUnlock ( IN EFI_TPL OriginalTPL=0D );=0D =0D +EFI_STATUS=0D +NorFlashReadID (=0D + IN NOR_FLASH_INSTANCE *Instance,=0D + OUT UINT8 *JedecId // Maximum length of JedecId can be up= to 6 bytes.=0D + );=0D +=0D #endif /* NOR_FLASH_DEVICE_LIB_H_ */=0D diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c b/Platform/ARM/= Drivers/NorFlashDxe/NorFlashDxe.c index f5c0dadf84e0..1084f4731ce4 100644 --- a/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c +++ b/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c @@ -9,6 +9,7 @@ #include =0D #include =0D #include =0D +#include =0D #include =0D #include =0D #include =0D @@ -112,6 +113,8 @@ NorFlashCreateInstance ( {=0D EFI_STATUS Status;=0D NOR_FLASH_INSTANCE *Instance;=0D + NOR_FLASH_INFO *FlashInfo;=0D + UINT8 JedecId[6];=0D =0D ASSERT (NorFlashInstance !=3D NULL);=0D =0D @@ -138,6 +141,22 @@ NorFlashCreateInstance ( return EFI_OUT_OF_RESOURCES;=0D }=0D =0D + Status =3D NorFlashReadID (Instance, JedecId);=0D + if (EFI_ERROR (Status) && (Status !=3D EFI_UNSUPPORTED)) {=0D + FreePool (Instance);=0D + return Status;=0D + }=0D +=0D + if (Status =3D=3D EFI_SUCCESS) {=0D + Status =3D NorFlashGetInfo (JedecId, &FlashInfo, TRUE);=0D + if (EFI_ERROR (Status)) {=0D + FreePool (Instance);=0D + return Status;=0D + }=0D +=0D + NorFlashPrintInfo (FlashInfo);=0D + }=0D +=0D if (SupportFvb) {=0D NorFlashFvbInitialize (Instance);=0D =0D diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c b/Plat= form/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c index ef9bed37d140..a621b29f34e2 100644 --- a/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c +++ b/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c @@ -10,6 +10,7 @@ #include =0D #include =0D #include =0D +#include =0D =0D #include "NorFlashCommon.h"=0D =0D @@ -106,6 +107,8 @@ NorFlashCreateInstance ( {=0D EFI_STATUS Status;=0D NOR_FLASH_INSTANCE *Instance;=0D + NOR_FLASH_INFO *FlashInfo;=0D + UINT8 JedecId[6];=0D =0D ASSERT (NorFlashInstance !=3D NULL);=0D =0D @@ -132,6 +135,22 @@ NorFlashCreateInstance ( return EFI_OUT_OF_RESOURCES;=0D }=0D =0D + Status =3D NorFlashReadID (Instance, JedecId);=0D + if (EFI_ERROR (Status) && (Status !=3D EFI_UNSUPPORTED)) {=0D + FreePool (Instance);=0D + return Status;=0D + }=0D +=0D + if (Status =3D=3D EFI_SUCCESS) {=0D + Status =3D NorFlashGetInfo (JedecId, &FlashInfo, TRUE);=0D + if (EFI_ERROR (Status)) {=0D + FreePool (Instance);=0D + return Status;=0D + }=0D +=0D + NorFlashPrintInfo (FlashInfo);=0D + }=0D +=0D if (SupportFvb) {=0D NorFlashFvbInitialize (Instance);=0D =0D diff --git a/Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib= .c b/Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib.c index d68e237e2e26..5f8f137482ee 100644 --- a/Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib.c +++ b/Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib.c @@ -947,3 +947,21 @@ NorFlashReset ( SEND_NOR_COMMAND (Instance->DeviceBaseAddress, 0, P30_CMD_READ_ARRAY);=0D return EFI_SUCCESS;=0D }=0D +=0D +/**=0D + Read JEDEC ID of NOR flash device.=0D +=0D + @param[in] Instance NOR flash Instance of variable sto= re region.=0D + @param[out] JedecId JEDEC ID of NOR flash device.=0D + Maximum length of JedecId can be u= pto 6 bytes.=0D +=0D + @retval EFI_UNSUPPORTED JEDEC ID retrievel not implemented= .=0D +**/=0D +EFI_STATUS=0D +NorFlashReadID (=0D + IN NOR_FLASH_INSTANCE *Instance,=0D + OUT UINT8 *JedecId=0D + )=0D +{=0D + return EFI_UNSUPPORTED;=0D +}=0D --=20 2.25.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#118159): https://edk2.groups.io/g/devel/message/118159 Mute This Topic: https://groups.io/mt/105690944/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-