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 D77F7D806DA for ; Thu, 23 May 2024 10:56:18 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=KJnlXvNGoAeevK6AU9GUQnQOtlLY7H62fai5OFOQH4c=; 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=1716461777; v=1; b=oNan/0jFejDS5r3ReDgh2AWHdjE4+msz44hYnKz/eLE2dvD72TSCYjbtJZzg5QZSAodPt470 3tsedjgTa9CtS+O5dUK+W44HyywMEgwCyY8xU3aQp4Q6FsDO5jkGYUSQvGQX1kpjIVCs3IoYWxN fjuykVqKKoX8bDZVUje29Hgrh7g9EQXVN8j/bdq732kcEkNK7Vw2c6AW+J8a7FuMg2BEAr5mRpw K8OXjJ7yF4mjCM4wSNNTZTySwRFeEfqIGNf6C1lOCWXQTTmGtNSo5vu1BopuSymqxIT7seGF8Eg q+mdR8rTNVSAIZC/RDiQcDH6IJqwlW0Jn4def00RSDVFw== X-Received: by 127.0.0.2 with SMTP id CNp2YY7687511x6LbMBZmHbE; Thu, 23 May 2024 03:56:17 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.14095.1716461776679298211 for ; Thu, 23 May 2024 03:56:16 -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 7A62E339; Thu, 23 May 2024 03:56:40 -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 B80703F766; Thu, 23 May 2024 03:56:14 -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] [edk2-platforms][PATCH V3 12/17] Platform/ARM: Add optional provision to fetch and print NOR Flash info Date: Thu, 23 May 2024 16:25:06 +0530 Message-Id: <20240523105511.13189-13-Sahil.Kaushal@arm.com> In-Reply-To: <20240523105511.13189-1-Sahil.Kaushal@arm.com> References: <20240523105511.13189-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: Thu, 23 May 2024 03:56:16 -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: K3uMYG4uUpFkqR2uw3fr5SPFx7686176AA= 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="oNan/0jF"; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=arm.com (policy=none) 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 printed along with the NOR Flash info by 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 | 17 ++++= +++++++++++++ Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c | 18 ++++= ++++++++++++++ Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c | 18 ++++= ++++++++++++++ Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib.c | 18 ++++= ++++++++++++++ 11 files changed, 83 insertions(+) diff --git a/Platform/ARM/SgiPkg/SgiPlatform.dsc.inc b/Platform/ARM/SgiPkg/= SgiPlatform.dsc.inc index 3dcf422eab4b..107a5311b666 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 identification 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..19fd08dd7817 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 identification 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..f7f7b39bbf58 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 identification 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..1ca43b9e7dba 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 identification 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..a0a9d9a21a1b 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 identification 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 348136630e78..db5dfbf39b75 100644 --- a/Platform/ARM/Include/Library/NorFlashDeviceLib.h +++ b/Platform/ARM/Include/Library/NorFlashDeviceLib.h @@ -236,4 +236,21 @@ NorFlashUnlock ( IN EFI_TPL OriginalTPL=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 + @retval EFI_SUCCESS The write is completed.=0D + @retval EFI_UNSUPPORTED JEDEC ID retrieval not implemented= .=0D + @retval EFI_DEVICE_ERROR Failed to fetch JEDEC ID.=0D + @retval EFI_INVALID_PARAMETER Invalid parameters passed.=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 fd47bd9e4c63..11cb95669931 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 @@ -139,6 +142,21 @@ NorFlashCreateInstance ( goto error_handler1;=0D }=0D =0D + Status =3D NorFlashReadId (Instance, JedecId);=0D + if (EFI_ERROR (Status)) {=0D + if (Status !=3D EFI_UNSUPPORTED) {=0D + goto error_handler2;=0D + }=0D + } else {=0D + Status =3D NorFlashGetInfo (JedecId, &FlashInfo, FALSE);=0D + if (EFI_ERROR (Status)) {=0D + DEBUG ((DEBUG_WARN, "NorFlashCreateInstance: JedecID not supported\n= "));=0D + } else {=0D + NorFlashPrintInfo (FlashInfo);=0D + FreePool (FlashInfo);=0D + }=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 17dfe26627dd..6c81c88aba31 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 @@ -133,6 +136,21 @@ NorFlashCreateInstance ( goto error_handler1;=0D }=0D =0D + Status =3D NorFlashReadId (Instance, JedecId);=0D + if (EFI_ERROR (Status)) {=0D + if (Status !=3D EFI_UNSUPPORTED) {=0D + goto error_handler2;=0D + }=0D + } else {=0D + Status =3D NorFlashGetInfo (JedecId, &FlashInfo, FALSE);=0D + if (EFI_ERROR (Status)) {=0D + DEBUG ((DEBUG_WARN, "NorFlashCreateInstance: JedecID not supported\n= "));=0D + } else {=0D + NorFlashPrintInfo (FlashInfo);=0D + FreePool (FlashInfo);=0D + }=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 5af085bdf493..da5df5b77cdb 100644 --- a/Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib.c +++ b/Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashDeviceLib.c @@ -951,3 +951,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 retrieval 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 (#119154): https://edk2.groups.io/g/devel/message/119154 Mute This Topic: https://groups.io/mt/106260152/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-