From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mx.groups.io with SMTP id smtpd.web09.934.1635459054625259780 for ; Thu, 28 Oct 2021 15:10:54 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@linux.microsoft.com header.s=default header.b=pb6uuGuV; spf=pass (domain: linux.microsoft.com, ip: 13.77.154.182, mailfrom: mikuback@linux.microsoft.com) Received: from localhost.localdomain (c-73-27-179-174.hsd1.fl.comcast.net [73.27.179.174]) by linux.microsoft.com (Postfix) with ESMTPSA id E8AFA208F4E9; Thu, 28 Oct 2021 15:10:53 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com E8AFA208F4E9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1635459054; bh=/6fpOvMiP0joNC0ATWJ2ecCHuVbtrB74MGQai7VSdaM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pb6uuGuVUTuJAP0sDVSmQi0tqZpm2HIU/NpnqLUIi3sWU0mXRMGNZWaigYZL3SZ4d agtKYihjg6/l46cV7ugoyYg0yGXxYmXz3NINv2GMh+YTOl6TzHCPJTCZfbuTp7ZjFz U2Jhns1T/PFKG5pgOkDXqzgPC15IJH6X/1XvOyCI= From: "Michael Kubacki" To: devel@edk2.groups.io Cc: Agyeman Prince , Nate DeSimone Subject: [PATCH v6 48/52] SimicsIch10Pkg/BasePchSpiCommonLib: Identify flash regions by GUID Date: Thu, 28 Oct 2021 18:08:42 -0400 Message-Id: <20211028220846.753-13-mikuback@linux.microsoft.com> X-Mailer: git-send-email 2.28.0.windows.1 In-Reply-To: <20211028220846.753-1-mikuback@linux.microsoft.com> References: <20211028220846.753-1-mikuback@linux.microsoft.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Michael Kubacki REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D3307 Updates the library to identify flash regions by GUID and internally map the GUID entries to values specific to SimicsIch10Pkg. Cc: Agyeman Prince Cc: Nate DeSimone Signed-off-by: Michael Kubacki Reviewed-by: Nate DeSimone --- Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLib/SpiCommo= n.c | 187 +++++++++++++++----- Silicon/Intel/SimicsIch10Pkg/IncludePrivate/Library/PchSpiCommonLib.h = | 68 +++---- Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLib/BasePchS= piCommonLib.inf | 11 ++ 3 files changed, 185 insertions(+), 81 deletions(-) diff --git a/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommon= Lib/SpiCommon.c b/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiC= ommonLib/SpiCommon.c index fc2a8be76b6a..22eb57cdec03 100644 --- a/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLib/Spi= Common.c +++ b/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLib/Spi= Common.c @@ -2,20 +2,106 @@ PCH SPI Common Driver implements the SPI Host Controller Compatibility= Interface. =20 Copyright (c) 2019 Intel Corporation. All rights reserved.
+ Copyright (c) Microsoft Corporation.
=20 SPDX-License-Identifier: BSD-2-Clause-Patent **/ =20 #include +#include #include #include #include #include #include -#include +#include #include #include =20 +typedef enum { + FlashRegionDescriptor, + FlashRegionBios, + FlashRegionMe, + FlashRegionGbe, + FlashRegionPlatformData, + FlashRegionDer, + FlashRegionAll, + FlashRegionMax +} FLASH_REGION_TYPE; + +typedef struct { + EFI_GUID *Guid; + FLASH_REGION_TYPE Type; +} FLASH_REGION_MAPPING; + +FLASH_REGION_MAPPING mFlashRegionTypes[] =3D { + { + &gFlashRegionDescriptorGuid, + FlashRegionDescriptor + }, + { + &gFlashRegionBiosGuid, + FlashRegionBios + }, + { + &gFlashRegionMeGuid, + FlashRegionMe + }, + { + &gFlashRegionGbeGuid, + FlashRegionGbe + }, + { + &gFlashRegionPlatformDataGuid, + FlashRegionPlatformData + }, + { + &gFlashRegionDerGuid, + FlashRegionDer + }, + { + &gFlashRegionAllGuid, + FlashRegionAll + }, + { + &gFlashRegionMaxGuid, + FlashRegionMax + } +}; + +/** + Returns the type of a flash region given its GUID. + + @param[in] FlashRegionGuid Pointer to the flash region GUID. + @param[out] FlashRegionType Pointer to a buffer that will be set t= o the flash region type value. + + @retval EFI_SUCCESS The flash region type was found = for the given flash region GUID. + @retval EFI_INVALID_PARAMETER A pointer argument passed to the= function is NULL. + @retval EFI_NOT_FOUND The flash region type was not fo= und for the given flash region GUID. + +**/ +EFI_STATUS +GetFlashRegionType ( + IN EFI_GUID *FlashRegionGuid, + OUT FLASH_REGION_TYPE *FlashRegionType + ) +{ + UINTN Index; + + if (FlashRegionGuid =3D=3D NULL || FlashRegionType =3D=3D NULL) { + return EFI_INVALID_PARAMETER; + } + + for (Index =3D 0; Index < ARRAY_SIZE (mFlashRegionTypes); Index++) { + if (CompareGuid (mFlashRegionTypes[Index].Guid, FlashRegionGuid)) { + *FlashRegionType =3D mFlashRegionTypes[Index].Type; + return EFI_SUCCESS; + } + } + + return EFI_NOT_FOUND; +} + /** Initialize an SPI protocol instance. =20 @@ -144,8 +230,8 @@ PchPmTimerStallRuntimeSafe ( /** Read data from the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. - @param[in] FlashRegionType The Flash Region type for flash cycle = which is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle = which corresponds to the type in the descriptor. @param[in] Address The Flash Linear Address must fall wit= hin a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of= the SPI cycle. @param[out] Buffer The Pointer to caller-allocated buffer= containing the dada received. @@ -158,8 +244,8 @@ PchPmTimerStallRuntimeSafe ( EFI_STATUS EFIAPI SpiProtocolFlashRead ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN UINT32 Address, IN UINT32 ByteCount, OUT UINT8 *Buffer @@ -172,7 +258,7 @@ SpiProtocolFlashRead ( // Status =3D SendSpiCmd ( This, - FlashRegionType, + FlashRegionGuid, FlashCycleRead, Address, ByteCount, @@ -184,8 +270,8 @@ SpiProtocolFlashRead ( /** Write data to the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. - @param[in] FlashRegionType The Flash Region type for flash cycle = which is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle = which corresponds to the type in the descriptor. @param[in] Address The Flash Linear Address must fall wit= hin a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of= the SPI cycle. @param[in] Buffer Pointer to caller-allocated buffer con= taining the data sent during the SPI cycle. @@ -197,8 +283,8 @@ SpiProtocolFlashRead ( EFI_STATUS EFIAPI SpiProtocolFlashWrite ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN UINT32 Address, IN UINT32 ByteCount, IN UINT8 *Buffer @@ -211,7 +297,7 @@ SpiProtocolFlashWrite ( // Status =3D SendSpiCmd ( This, - FlashRegionType, + FlashRegionGuid, FlashCycleWrite, Address, ByteCount, @@ -223,8 +309,8 @@ SpiProtocolFlashWrite ( /** Erase some area on the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. - @param[in] FlashRegionType The Flash Region type for flash cycle = which is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle = which corresponds to the type in the descriptor. @param[in] Address The Flash Linear Address must fall wit= hin a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of= the SPI cycle. =20 @@ -235,8 +321,8 @@ SpiProtocolFlashWrite ( EFI_STATUS EFIAPI SpiProtocolFlashErase ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN UINT32 Address, IN UINT32 ByteCount ) @@ -248,7 +334,7 @@ SpiProtocolFlashErase ( // Status =3D SendSpiCmd ( This, - FlashRegionType, + FlashRegionGuid, FlashCycleErase, Address, ByteCount, @@ -260,7 +346,7 @@ SpiProtocolFlashErase ( /** Read SFDP data from the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. @param[in] ComponentNumber The Componen Number for chip select @param[in] Address The starting byte address for SFDP dat= a read. @param[in] ByteCount Number of bytes in SFDP data portion o= f the SPI cycle @@ -274,7 +360,7 @@ SpiProtocolFlashErase ( EFI_STATUS EFIAPI SpiProtocolFlashReadSfdp ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT8 ComponentNumber, IN UINT32 Address, IN UINT32 ByteCount, @@ -303,7 +389,7 @@ SpiProtocolFlashReadSfdp ( // Status =3D SendSpiCmd ( This, - FlashRegionAll, + &gFlashRegionAllGuid, FlashCycleReadSfdp, FlashAddress, ByteCount, @@ -315,7 +401,7 @@ SpiProtocolFlashReadSfdp ( /** Read Jedec Id from the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. @param[in] ComponentNumber The Componen Number for chip select @param[in] ByteCount Number of bytes in JedecId data portio= n of the SPI cycle, the data size is 3 typically @param[out] JedecId The Pointer to caller-allocated buffer= containing JEDEC ID received @@ -328,7 +414,7 @@ SpiProtocolFlashReadSfdp ( EFI_STATUS EFIAPI SpiProtocolFlashReadJedecId ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT8 ComponentNumber, IN UINT32 ByteCount, OUT UINT8 *JedecId @@ -356,7 +442,7 @@ SpiProtocolFlashReadJedecId ( // Status =3D SendSpiCmd ( This, - FlashRegionAll, + &gFlashRegionAllGuid, FlashCycleReadJedecId, Address, ByteCount, @@ -368,7 +454,7 @@ SpiProtocolFlashReadJedecId ( /** Write the status register in the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. @param[in] ByteCount Number of bytes in Status data portion= of the SPI cycle, the data size is 1 typically @param[in] StatusValue The Pointer to caller-allocated buffer= containing the value of Status register writing =20 @@ -379,7 +465,7 @@ SpiProtocolFlashReadJedecId ( EFI_STATUS EFIAPI SpiProtocolFlashWriteStatus ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 ByteCount, IN UINT8 *StatusValue ) @@ -391,7 +477,7 @@ SpiProtocolFlashWriteStatus ( // Status =3D SendSpiCmd ( This, - FlashRegionAll, + &gFlashRegionAllGuid, FlashCycleWriteStatus, 0, ByteCount, @@ -403,7 +489,7 @@ SpiProtocolFlashWriteStatus ( /** Read status register in the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. @param[in] ByteCount Number of bytes in Status data portion= of the SPI cycle, the data size is 1 typically @param[out] StatusValue The Pointer to caller-allocated buffer= containing the value of Status register received. =20 @@ -414,7 +500,7 @@ SpiProtocolFlashWriteStatus ( EFI_STATUS EFIAPI SpiProtocolFlashReadStatus ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 ByteCount, OUT UINT8 *StatusValue ) @@ -426,7 +512,7 @@ SpiProtocolFlashReadStatus ( // Status =3D SendSpiCmd ( This, - FlashRegionAll, + &gFlashRegionAllGuid, FlashCycleReadStatus, 0, ByteCount, @@ -438,8 +524,8 @@ SpiProtocolFlashReadStatus ( /** Get the SPI region base and size, based on the enum type =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. - @param[in] FlashRegionType The Flash Region type for for the base= address which is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. + @param[in] FlashRegionGuid The Flash Region GUID for the base add= ress which corresponds to the type in the descriptor. @param[out] BaseAddress The Flash Linear Address for the Regio= n 'n' Base @param[out] RegionSize The size for the Region 'n' =20 @@ -450,18 +536,25 @@ SpiProtocolFlashReadStatus ( EFI_STATUS EFIAPI SpiProtocolGetRegionAddress ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, OUT UINT32 *BaseAddress, OUT UINT32 *RegionSize ) { - SPI_INSTANCE *SpiInstance; - UINTN PchSpiBar0; - UINT32 ReadValue; + EFI_STATUS Status; + FLASH_REGION_TYPE FlashRegionType; + SPI_INSTANCE *SpiInstance; + UINTN PchSpiBar0; + UINT32 ReadValue; =20 SpiInstance =3D SPI_INSTANCE_FROM_SPIPROTOCOL (This); =20 + Status =3D GetFlashRegionType (FlashRegionGuid, &FlashRegionType); + if (EFI_ERROR (Status)) { + return EFI_INVALID_PARAMETER; + } + if (FlashRegionType >=3D FlashRegionMax) { return EFI_INVALID_PARAMETER; } @@ -496,7 +589,7 @@ SpiProtocolGetRegionAddress ( /** Read PCH Soft Strap Values =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. @param[in] SoftStrapAddr PCH Soft Strap address offset from FPS= BA. @param[in] ByteCount Number of bytes in SoftStrap data port= ion of the SPI cycle @param[out] SoftStrapValue The Pointer to caller-allocated buffer= containing PCH Soft Strap Value. @@ -510,7 +603,7 @@ SpiProtocolGetRegionAddress ( EFI_STATUS EFIAPI SpiProtocolReadPchSoftStrap ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 SoftStrapAddr, IN UINT32 ByteCount, OUT VOID *SoftStrapValue @@ -542,7 +635,7 @@ SpiProtocolReadPchSoftStrap ( // Status =3D SendSpiCmd ( This, - FlashRegionDescriptor, + &gFlashRegionDescriptorGuid, FlashCycleRead, StrapFlashAddr, ByteCount, @@ -554,7 +647,7 @@ SpiProtocolReadPchSoftStrap ( /** Read CPU Soft Strap Values =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. @param[in] SoftStrapAddr CPU Soft Strap address offset from FCP= USBA. @param[in] ByteCount Number of bytes in SoftStrap data port= ion of the SPI cycle. @param[out] SoftStrapValue The Pointer to caller-allocated buffer= containing CPU Soft Strap Value. @@ -568,7 +661,7 @@ SpiProtocolReadPchSoftStrap ( EFI_STATUS EFIAPI SpiProtocolReadCpuSoftStrap ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 SoftStrapAddr, IN UINT32 ByteCount, OUT VOID *SoftStrapValue @@ -600,7 +693,7 @@ SpiProtocolReadCpuSoftStrap ( // Status =3D SendSpiCmd ( This, - FlashRegionDescriptor, + &gFlashRegionDescriptorGuid, FlashCycleRead, StrapFlashAddr, ByteCount, @@ -612,8 +705,8 @@ SpiProtocolReadCpuSoftStrap ( /** This function sends the programmed SPI command to the slave device. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. - @param[in] SpiRegionType The SPI Region type for flash cycle wh= ich is listed in the Descriptor + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle = which corresponds to the type in the descriptor. @param[in] FlashCycleType The Flash SPI cycle type list in HSFC = (Hardware Sequencing Flash Control Register) register @param[in] Address The Flash Linear Address must fall wit= hin a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of= the SPI cycle. @@ -626,8 +719,8 @@ SpiProtocolReadCpuSoftStrap ( **/ EFI_STATUS SendSpiCmd ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN FLASH_CYCLE_TYPE FlashCycleType, IN UINT32 Address, IN UINT32 ByteCount, @@ -682,7 +775,7 @@ SendSpiCmd ( goto SendSpiCmdEnd; } =20 - Status =3D SpiProtocolGetRegionAddress (This, FlashRegionType, &Hardwa= reSpiAddr, &FlashRegionSize); + Status =3D SpiProtocolGetRegionAddress (This, FlashRegionGuid, &Hardwa= reSpiAddr, &FlashRegionSize); if (EFI_ERROR (Status)) { goto SendSpiCmdEnd; } @@ -897,7 +990,7 @@ SendSpiCmd ( **/ BOOLEAN WaitForSpiCycleComplete ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINTN PchSpiBar0, IN BOOLEAN ErrorCheck ) diff --git a/Silicon/Intel/SimicsIch10Pkg/IncludePrivate/Library/PchSpiCo= mmonLib.h b/Silicon/Intel/SimicsIch10Pkg/IncludePrivate/Library/PchSpiCom= monLib.h index 2c8162ac8170..00586e9c9aef 100644 --- a/Silicon/Intel/SimicsIch10Pkg/IncludePrivate/Library/PchSpiCommonLib= .h +++ b/Silicon/Intel/SimicsIch10Pkg/IncludePrivate/Library/PchSpiCommonLib= .h @@ -48,7 +48,7 @@ typedef enum { typedef struct { UINT32 Signature; EFI_HANDLE Handle; - PCH_SPI_PROTOCOL SpiProtocol; + PCH_SPI2_PROTOCOL SpiProtocol; UINT16 PchAcpiBase; UINTN PchSpiBase; UINT16 ReadPermission; @@ -134,8 +134,8 @@ ReleaseSpiBar0 ( /** Read data from the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. - @param[in] FlashRegionType The Flash Region type for flash cycle = which is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle = which corresponds to the type in the descriptor. @param[in] Address The Flash Linear Address must fall wit= hin a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of= the SPI cycle. @param[out] Buffer The Pointer to caller-allocated buffer= containing the dada received. @@ -148,8 +148,8 @@ ReleaseSpiBar0 ( EFI_STATUS EFIAPI SpiProtocolFlashRead ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN UINT32 Address, IN UINT32 ByteCount, OUT UINT8 *Buffer @@ -158,8 +158,8 @@ SpiProtocolFlashRead ( /** Write data to the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. - @param[in] FlashRegionType The Flash Region type for flash cycle = which is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle = which corresponds to the type in the descriptor. @param[in] Address The Flash Linear Address must fall wit= hin a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of= the SPI cycle. @param[in] Buffer Pointer to caller-allocated buffer con= taining the data sent during the SPI cycle. @@ -171,8 +171,8 @@ SpiProtocolFlashRead ( EFI_STATUS EFIAPI SpiProtocolFlashWrite ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN UINT32 Address, IN UINT32 ByteCount, IN UINT8 *Buffer @@ -181,8 +181,8 @@ SpiProtocolFlashWrite ( /** Erase some area on the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. - @param[in] FlashRegionType The Flash Region type for flash cycle = which is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle = which corresponds to the type in the descriptor. @param[in] Address The Flash Linear Address must fall wit= hin a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of= the SPI cycle. =20 @@ -193,8 +193,8 @@ SpiProtocolFlashWrite ( EFI_STATUS EFIAPI SpiProtocolFlashErase ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN UINT32 Address, IN UINT32 ByteCount ); @@ -202,7 +202,7 @@ SpiProtocolFlashErase ( /** Read SFDP data from the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. @param[in] ComponentNumber The Componen Number for chip select @param[in] Address The starting byte address for SFDP dat= a read. @param[in] ByteCount Number of bytes in SFDP data portion o= f the SPI cycle @@ -216,7 +216,7 @@ SpiProtocolFlashErase ( EFI_STATUS EFIAPI SpiProtocolFlashReadSfdp ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT8 ComponentNumber, IN UINT32 Address, IN UINT32 ByteCount, @@ -226,7 +226,7 @@ SpiProtocolFlashReadSfdp ( /** Read Jedec Id from the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. @param[in] ComponentNumber The Componen Number for chip select @param[in] ByteCount Number of bytes in JedecId data portio= n of the SPI cycle, the data size is 3 typically @param[out] JedecId The Pointer to caller-allocated buffer= containing JEDEC ID received @@ -239,7 +239,7 @@ SpiProtocolFlashReadSfdp ( EFI_STATUS EFIAPI SpiProtocolFlashReadJedecId ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT8 ComponentNumber, IN UINT32 ByteCount, OUT UINT8 *JedecId @@ -248,7 +248,7 @@ SpiProtocolFlashReadJedecId ( /** Write the status register in the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. @param[in] ByteCount Number of bytes in Status data portion= of the SPI cycle, the data size is 1 typically @param[in] StatusValue The Pointer to caller-allocated buffer= containing the value of Status register writing =20 @@ -259,7 +259,7 @@ SpiProtocolFlashReadJedecId ( EFI_STATUS EFIAPI SpiProtocolFlashWriteStatus ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 ByteCount, IN UINT8 *StatusValue ); @@ -267,7 +267,7 @@ SpiProtocolFlashWriteStatus ( /** Read status register in the flash part. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. @param[in] ByteCount Number of bytes in Status data portion= of the SPI cycle, the data size is 1 typically @param[out] StatusValue The Pointer to caller-allocated buffer= containing the value of Status register received. =20 @@ -278,7 +278,7 @@ SpiProtocolFlashWriteStatus ( EFI_STATUS EFIAPI SpiProtocolFlashReadStatus ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 ByteCount, OUT UINT8 *StatusValue ); @@ -286,8 +286,8 @@ SpiProtocolFlashReadStatus ( /** Get the SPI region base and size, based on the enum type =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. - @param[in] FlashRegionType The Flash Region type for for the base= address which is listed in the Descriptor. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. + @param[in] FlashRegionGuid The Flash Region GUID for the base add= ress which corresponds to the type in the descriptor. @param[out] BaseAddress The Flash Linear Address for the Regio= n 'n' Base @param[out] RegionSize The size for the Region 'n' =20 @@ -298,8 +298,8 @@ SpiProtocolFlashReadStatus ( EFI_STATUS EFIAPI SpiProtocolGetRegionAddress ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, OUT UINT32 *BaseAddress, OUT UINT32 *RegionSize ); @@ -307,7 +307,7 @@ SpiProtocolGetRegionAddress ( /** Read PCH Soft Strap Values =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. @param[in] SoftStrapAddr PCH Soft Strap address offset from FPS= BA. @param[in] ByteCount Number of bytes in SoftStrap data port= ion of the SPI cycle @param[out] SoftStrapValue The Pointer to caller-allocated buffer= containing PCH Soft Strap Value. @@ -321,7 +321,7 @@ SpiProtocolGetRegionAddress ( EFI_STATUS EFIAPI SpiProtocolReadPchSoftStrap ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 SoftStrapAddr, IN UINT32 ByteCount, OUT VOID *SoftStrapValue @@ -330,7 +330,7 @@ SpiProtocolReadPchSoftStrap ( /** Read CPU Soft Strap Values =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. @param[in] SoftStrapAddr CPU Soft Strap address offset from FCP= USBA. @param[in] ByteCount Number of bytes in SoftStrap data port= ion of the SPI cycle. @param[out] SoftStrapValue The Pointer to caller-allocated buffer= containing CPU Soft Strap Value. @@ -344,7 +344,7 @@ SpiProtocolReadPchSoftStrap ( EFI_STATUS EFIAPI SpiProtocolReadCpuSoftStrap ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINT32 SoftStrapAddr, IN UINT32 ByteCount, OUT VOID *SoftStrapValue @@ -353,8 +353,8 @@ SpiProtocolReadCpuSoftStrap ( /** This function sends the programmed SPI command to the slave device. =20 - @param[in] This Pointer to the PCH_SPI_PROTOCOL instan= ce. - @param[in] SpiRegionType The SPI Region type for flash cycle wh= ich is listed in the Descriptor + @param[in] This Pointer to the PCH_SPI2_PROTOCOL insta= nce. + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle = which corresponds to the type in the descriptor. @param[in] FlashCycleType The Flash SPI cycle type list in HSFC = (Hardware Sequencing Flash Control Register) register @param[in] Address The Flash Linear Address must fall wit= hin a region for which BIOS has access permissions. @param[in] ByteCount Number of bytes in the data portion of= the SPI cycle. @@ -367,8 +367,8 @@ SpiProtocolReadCpuSoftStrap ( **/ EFI_STATUS SendSpiCmd ( - IN PCH_SPI_PROTOCOL *This, - IN FLASH_REGION_TYPE FlashRegionType, + IN PCH_SPI2_PROTOCOL *This, + IN EFI_GUID *FlashRegionGuid, IN FLASH_CYCLE_TYPE FlashCycleType, IN UINT32 Address, IN UINT32 ByteCount, @@ -388,7 +388,7 @@ SendSpiCmd ( **/ BOOLEAN WaitForSpiCycleComplete ( - IN PCH_SPI_PROTOCOL *This, + IN PCH_SPI2_PROTOCOL *This, IN UINTN PchSpiBar0, IN BOOLEAN ErrorCheck ); diff --git a/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommon= Lib/BasePchSpiCommonLib.inf b/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate= /BasePchSpiCommonLib/BasePchSpiCommonLib.inf index b5aa13c1c56d..3a64005b5690 100644 --- a/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLib/Bas= ePchSpiCommonLib.inf +++ b/Silicon/Intel/SimicsIch10Pkg/LibraryPrivate/BasePchSpiCommonLib/Bas= ePchSpiCommonLib.inf @@ -2,6 +2,7 @@ # Component description file for the PchSpiCommonLib # # Copyright (c) 2019 Intel Corporation. All rights reserved.
+# Copyright (c) Microsoft Corporation.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -30,3 +31,13 @@ [LibraryClasses] [Pcd] gIntelSiliconPkgTokenSpaceGuid.PcdBiosAreaBaseAddress ## CONSUMES gIntelSiliconPkgTokenSpaceGuid.PcdBiosSize ## CONSUMES + +[Guids] + gFlashRegionDescriptorGuid + gFlashRegionBiosGuid + gFlashRegionMeGuid + gFlashRegionGbeGuid + gFlashRegionPlatformDataGuid + gFlashRegionDerGuid + gFlashRegionAllGuid + gFlashRegionMaxGuid --=20 2.28.0.windows.1