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 1FD51AC0F18 for ; Wed, 29 May 2024 08:55:55 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=sFE9dkH1HMhzm71JLvQCtpiwYowoUUjH7HitzpUH0ZU=; 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=1716972955; v=1; b=Z6OhoF5LAoi+prI1NpCWO2BuJC9vAhhJ10r/w//X4xNVyFPDFO4YgmFn/MCIg6BdSXjeiqZi K+Gr/wAQ34ZUwPlruImZAfCMpjkLusk+urmvgrtg+9m7i6KiZjuzWP2W4YjAjOZcBU1Uctswgrd u9MMBrV6h1QXof1ZjDWsK9M+CGuxEpI3txcpmxqPTh/lqX3Q7pcKc0Rc15UUf41HNGA/CxLoq+W /Ee8w/1H/S8wpX3bUqXFzVlsOiCMiB9KT33Y0eoYY6imBPzg2DU1NRU5sCIjKRK3Z88nCKkBhrX NHOV/faGx/MYkv+eLop/mLSCONFC/R90/6pGizdKNU15w== X-Received: by 127.0.0.2 with SMTP id 7ggnYY7687511xBRqytryoGs; Wed, 29 May 2024 01:55:54 -0700 X-Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.9254.1716972953504663176 for ; Wed, 29 May 2024 01:55:53 -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 6F1AE2F4; Wed, 29 May 2024 01:56:17 -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 8A7D23F762; Wed, 29 May 2024 01:55:51 -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 V4 12/17] Platform/ARM: Add optional provision to fetch and print NOR Flash info Date: Wed, 29 May 2024 14:25:12 +0530 Message-Id: <20240529085517.1074417-13-Sahil.Kaushal@arm.com> In-Reply-To: <20240529085517.1074417-1-Sahil.Kaushal@arm.com> References: <20240529085517.1074417-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: Wed, 29 May 2024 01:55:53 -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: qgb4WvmErntQBYYukU96aUYfx7686176AA= 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=Z6OhoF5L; 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 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/SgiPk= g/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 @@ [LibraryClasses.common] LcdPlatformLib|Platform/ARM/SgiPkg/Library/HdLcdArmSgiLib/HdLcdArmSgiL= ib.inf NorFlashDeviceLib|Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlas= hDeviceLib.inf NorFlashPlatformLib|Platform/ARM/SgiPkg/Library/NorFlashLib/NorFlashLi= b.inf + # NOR flash identification support + NorFlashInfoLib|EmbeddedPkg/Library/NorFlashInfoLib/NorFlashInfoLib.in= f HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf ResetSystemLib|ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciReset= SystemLib.inf TimerLib|ArmPkg/Library/ArmArchTimerLib/ArmArchTimerLib.inf diff --git a/Platform/ARM/SgiPkg/SgiPlatformMm.dsc.inc b/Platform/ARM/Sgi= Pkg/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 @@ [LibraryClasses.common.MM_STANDALONE] IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf NorFlashDeviceLib|Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlas= hDeviceLib.inf NorFlashPlatformLib|Platform/ARM/SgiPkg/Library/NorFlashLib/Standalone= MmNorFlashLib.inf + # NOR flash identification support + NorFlashInfoLib|EmbeddedPkg/Library/NorFlashInfoLib/NorFlashInfoLib.in= f OpensslLib|CryptoPkg/Library/OpensslLib/OpensslLib.inf RngLib|MdePkg/Library/BaseRngLibTimerLib/BaseRngLibTimerLib.inf PlatformSecureLib|SecurityPkg/Library/PlatformSecureLibNull/PlatformSe= cureLibNull.inf diff --git a/Platform/ARM/VExpressPkg/ArmVExpress.dsc.inc b/Platform/ARM/= VExpressPkg/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 @@ [LibraryClasses.common] ArmPlatformSysConfigLib|Platform/ARM/VExpressPkg/Library/ArmVExpressSy= sConfigLib/ArmVExpressSysConfigLib.inf NorFlashDeviceLib|Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlas= hDeviceLib.inf NorFlashPlatformLib|Platform/ARM/VExpressPkg/Library/NorFlashArmVExpre= ssLib/NorFlashArmVExpressLib.inf + # NOR flash identification support + NorFlashInfoLib|EmbeddedPkg/Library/NorFlashInfoLib/NorFlashInfoLib.in= f ResetSystemLib|ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciReset= SystemLib.inf =20 # ARM PL031 RTC Driver diff --git a/Platform/ARM/JunoPkg/ArmJuno.dsc b/Platform/ARM/JunoPkg/ArmJ= uno.dsc index 81d2cbe4359f..1ca43b9e7dba 100644 --- a/Platform/ARM/JunoPkg/ArmJuno.dsc +++ b/Platform/ARM/JunoPkg/ArmJuno.dsc @@ -42,6 +42,8 @@ [LibraryClasses.common] =20 NorFlashDeviceLib|Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlas= hDeviceLib.inf NorFlashPlatformLib|Platform/ARM/JunoPkg/Library/NorFlashJunoLib/NorFl= ashJunoLib.inf + # NOR flash identification support + NorFlashInfoLib|EmbeddedPkg/Library/NorFlashInfoLib/NorFlashInfoLib.in= f =20 CapsuleLib|MdeModulePkg/Library/DxeCapsuleLibNull/DxeCapsuleLibNull.in= f CustomizedDisplayLib|MdeModulePkg/Library/CustomizedDisplayLib/Customi= zedDisplayLib.inf diff --git a/Platform/ARM/VExpressPkg/PlatformStandaloneMm.dsc b/Platform= /ARM/VExpressPkg/PlatformStandaloneMm.dsc index a5805da49c92..a0a9d9a21a1b 100644 --- a/Platform/ARM/VExpressPkg/PlatformStandaloneMm.dsc +++ b/Platform/ARM/VExpressPkg/PlatformStandaloneMm.dsc @@ -102,6 +102,8 @@ [LibraryClasses.common.MM_STANDALONE] !if $(ENABLE_UEFI_SECURE_VARIABLE) =3D=3D TRUE NorFlashDeviceLib|Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlas= hDeviceLib.inf NorFlashPlatformLib|Platform/ARM/VExpressPkg/Library/NorFlashArmVExpre= ssLib/NorFlashStMmLib.inf + # NOR flash identification support + NorFlashInfoLib|EmbeddedPkg/Library/NorFlashInfoLib/NorFlashInfoLib.in= f VarCheckLib|MdeModulePkg/Library/VarCheckLib/VarCheckLib.inf VariableFlashInfoLib|MdeModulePkg/Library/BaseVariableFlashInfoLib/Bas= eVariableFlashInfoLib.inf AuthVariableLib|SecurityPkg/Library/AuthVariableLib/AuthVariableLib.in= f diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.inf b/Platform/= ARM/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 @@ [LibraryClasses] HobLib IoLib NorFlashDeviceLib + NorFlashInfoLib NorFlashPlatformLib UefiBootServicesTableLib UefiDriverEntryPoint diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.inf b/= Platform/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 @@ [LibraryClasses] MemoryAllocationLib MmServicesTableLib NorFlashDeviceLib + NorFlashInfoLib NorFlashPlatformLib StandaloneMmDriverEntryPoint =20 diff --git a/Platform/ARM/Include/Library/NorFlashDeviceLib.h b/Platform/= ARM/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 ); =20 +/** + Read JEDEC ID of NOR flash device. + + @param[in] Instance NOR flash Instance of variable s= tore region. + @param[out] JedecId JEDEC ID of NOR flash device. + Maximum length of JedecId can be= upto 6 bytes + @retval EFI_SUCCESS The write is completed. + @retval EFI_UNSUPPORTED JEDEC ID retrieval not implement= ed. + @retval EFI_DEVICE_ERROR Failed to fetch JEDEC ID. + @retval EFI_INVALID_PARAMETER Invalid parameters passed. +**/ +EFI_STATUS +NorFlashReadId ( + IN NOR_FLASH_INSTANCE *Instance, + OUT UINT8 *JedecId // Maximum length of JedecId can be = upto 6 bytes. + ); + #endif /* NOR_FLASH_DEVICE_LIB_H_ */ diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c b/Platform/AR= M/Drivers/NorFlashDxe/NorFlashDxe.c index ebe985bdf02b..bfdcfcf557ed 100644 --- a/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c +++ b/Platform/ARM/Drivers/NorFlashDxe/NorFlashDxe.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -112,6 +113,8 @@ NorFlashCreateInstance ( { EFI_STATUS Status; NOR_FLASH_INSTANCE *Instance; + NOR_FLASH_INFO *FlashInfo; + UINT8 JedecId[6]; =20 ASSERT (NorFlashInstance !=3D NULL); =20 @@ -139,6 +142,21 @@ NorFlashCreateInstance ( goto error_handler1; } =20 + Status =3D NorFlashReadId (Instance, JedecId); + if (EFI_ERROR (Status)) { + if (Status !=3D EFI_UNSUPPORTED) { + goto error_handler2; + } + } else { + Status =3D NorFlashGetInfo (JedecId, &FlashInfo, FALSE); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_WARN, "NorFlashCreateInstance: JedecID not supported= \n")); + } else { + NorFlashPrintInfo (FlashInfo); + FreePool (FlashInfo); + } + } + if (SupportFvb) { NorFlashFvbInitialize (Instance); =20 diff --git a/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c b/Pl= atform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c index 6bfbf58f6907..828c09e5975d 100644 --- a/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c +++ b/Platform/ARM/Drivers/NorFlashDxe/NorFlashStandaloneMm.c @@ -10,6 +10,7 @@ #include #include #include +#include =20 #include "NorFlashCommon.h" =20 @@ -106,6 +107,8 @@ NorFlashCreateInstance ( { EFI_STATUS Status; NOR_FLASH_INSTANCE *Instance; + NOR_FLASH_INFO *FlashInfo; + UINT8 JedecId[6]; =20 ASSERT (NorFlashInstance !=3D NULL); =20 @@ -133,6 +136,21 @@ NorFlashCreateInstance ( goto error_handler1; } =20 + Status =3D NorFlashReadId (Instance, JedecId); + if (EFI_ERROR (Status)) { + if (Status !=3D EFI_UNSUPPORTED) { + goto error_handler2; + } + } else { + Status =3D NorFlashGetInfo (JedecId, &FlashInfo, FALSE); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_WARN, "NorFlashCreateInstance: JedecID not supported= \n")); + } else { + NorFlashPrintInfo (FlashInfo); + FreePool (FlashInfo); + } + } + if (SupportFvb) { NorFlashFvbInitialize (Instance); =20 diff --git a/Platform/ARM/Library/P30NorFlashDeviceLib/P30NorFlashDeviceL= ib.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); return EFI_SUCCESS; } + +/** + Read JEDEC ID of NOR flash device. + + @param[in] Instance NOR flash Instance of variable s= tore region. + @param[out] JedecId JEDEC ID of NOR flash device. + Maximum length of JedecId can be= upto 6 bytes. + + @retval EFI_UNSUPPORTED JEDEC ID retrieval not implement= ed. +**/ +EFI_STATUS +NorFlashReadId ( + IN NOR_FLASH_INSTANCE *Instance, + OUT UINT8 *JedecId + ) +{ + return EFI_UNSUPPORTED; +} --=20 2.25.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#119327): https://edk2.groups.io/g/devel/message/119327 Mute This Topic: https://groups.io/mt/106365463/7686176 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io] -=-=-=-=-=-=-=-=-=-=-=-