[edk2-devel] [edk2-platforms][PATCH v4 39/41] KabylakeSiliconPkg: Identify flash regions by GUID
Chiu, Chasel
chasel.chiu at intel.com
Mon Jun 28 01:38:40 UTC 2021
Reviewed-by: Chasel Chiu <chasel.chiu at intel.com>
> -----Original Message-----
> From: devel at edk2.groups.io <devel at edk2.groups.io> On Behalf Of Michael
> Kubacki
> Sent: Saturday, June 26, 2021 5:21 AM
> To: devel at edk2.groups.io
> Cc: Chiu, Chasel <chasel.chiu at intel.com>; Chaganty, Rangasai V
> <rangasai.v.chaganty at intel.com>; Desimone, Nathaniel L
> <nathaniel.l.desimone at intel.com>
> Subject: [edk2-devel] [edk2-platforms][PATCH v4 39/41] KabylakeSiliconPkg:
> Identify flash regions by GUID
>
> From: Michael Kubacki <michael.kubacki at microsoft.com>
>
> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3307
>
> Updates the code to identify flash regions by GUID and internally map the GUID
> entries to values specific to KabylakeSiliconPkg.
>
> Cc: Chasel Chiu <chasel.chiu at intel.com>
> Cc: Rangasai V Chaganty <rangasai.v.chaganty at intel.com>
> Cc: Nate DeSimone <nathaniel.l.desimone at intel.com>
> Signed-off-by: Michael Kubacki <michael.kubacki at microsoft.com>
> Reviewed-by: Chasel Chiu <chasel.chiu at intel.com>
> ---
> Silicon/Intel/KabylakeSiliconPkg/Hsti/Dxe/SecureMemoryMapConfiguration.c
> | 106 ++++++++++++++-
>
> Silicon/Intel/KabylakeSiliconPkg/Pch/LibraryPrivate/BasePchSpiCommonLib/SpiC
> ommon.c | 140 ++++++++++++++++----
> Silicon/Intel/KabylakeSiliconPkg/Hsti/Dxe/HstiSiliconDxe.inf
> | 9 ++
>
> Silicon/Intel/KabylakeSiliconPkg/Pch/IncludePrivate/Library/PchSpiCommonLib.
> h | 20 +--
>
> Silicon/Intel/KabylakeSiliconPkg/Pch/LibraryPrivate/BasePchSpiCommonLib/Bas
> ePchSpiCommonLib.inf | 11 ++
> 5 files changed, 247 insertions(+), 39 deletions(-)
>
> diff --git
> a/Silicon/Intel/KabylakeSiliconPkg/Hsti/Dxe/SecureMemoryMapConfiguration.c
> b/Silicon/Intel/KabylakeSiliconPkg/Hsti/Dxe/SecureMemoryMapConfiguration.c
> index a3c9bbebeaa9..ccf63b216f70 100644
> ---
> a/Silicon/Intel/KabylakeSiliconPkg/Hsti/Dxe/SecureMemoryMapConfiguration.c
> +++ b/Silicon/Intel/KabylakeSiliconPkg/Hsti/Dxe/SecureMemoryMapConfigura
> +++ tion.c
> @@ -2,11 +2,14 @@
> This file contains the tests for the SecureMemoryMapConfiguration bit
>
> Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) Microsoft Corporation.<BR>
> +
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> **/
>
> #include "HstiSiliconDxe.h"
> +#include <Guid/FlashRegion.h>
>
> typedef struct {
> UINT64 Base;
> @@ -100,6 +103,90 @@ MEMORY_RANGE
> mNonLockableMemoryRange[NonLockableMemoryRangeMax] = { // 14.
> SPI_BAR0 (BDF 0:31:5 + 0x10) };
>
> +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[] = {
> + {
> + &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 to 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 found for
> the given flash region GUID.
> +
> +**/
> +EFI_STATUS
> +GetFlashRegionType (
> + IN EFI_GUID *FlashRegionGuid,
> + OUT FLASH_REGION_TYPE *FlashRegionType
> + )
> +{
> + UINTN Index;
> +
> + if (FlashRegionGuid == NULL || FlashRegionType == NULL) {
> + return EFI_INVALID_PARAMETER;
> + }
> +
> + for (Index = 0; Index < ARRAY_SIZE (mFlashRegionTypes); Index++) {
> + if (CompareGuid (mFlashRegionTypes[Index].Guid, FlashRegionGuid)) {
> + *FlashRegionType = mFlashRegionTypes[Index].Type;
> + return EFI_SUCCESS;
> + }
> + }
> +
> + return EFI_NOT_FOUND;
> +}
> +
> /**
> Check for overlaps in single range array
>
> @@ -224,7 +311,7 @@ AcquireSpiBar0 (
> {
> UINT32 SpiBar0;
> UINTN PchSpiBase;
> -
> +
> //
> // Init PCH spi reserved MMIO address.
> //
> @@ -270,7 +357,7 @@ ReleaseSpiBar0 (
> Get the SPI region base and size, based on the enum type
>
> @param[in] This Pointer to the PCH_SPI_PROTOCOL instance.
> - @param[in] FlashRegionType The Flash Region type for for the base
> address which is listed in the Descriptor.
> + @param[in] FlashRegionGuid The Flash Region GUID for the base address
> which corresponds to the type in the descriptor.
> @param[out] BaseAddress The Flash Linear Address for the Region 'n'
> Base
> @param[out] RegionSize The size for the Region 'n'
>
> @@ -281,13 +368,20 @@ ReleaseSpiBar0 (
> EFI_STATUS
> EFIAPI
> GetRegionAddress (
> - IN FLASH_REGION_TYPE FlashRegionType,
> + IN EFI_GUID *FlashRegionGuid,
> OUT UINT32 *BaseAddress,
> OUT UINT32 *RegionSize
> )
> {
> - UINTN PchSpiBar0;
> - UINT32 ReadValue;
> + EFI_STATUS Status;
> + FLASH_REGION_TYPE FlashRegionType;
> + UINTN PchSpiBar0;
> + UINT32 ReadValue;
> +
> + Status = GetFlashRegionType (FlashRegionGuid, &FlashRegionType); if
> + (EFI_ERROR (Status)) {
> + return EFI_INVALID_PARAMETER;
> + }
>
> if (FlashRegionType >= FlashRegionMax) {
> return EFI_INVALID_PARAMETER;
> @@ -484,7 +578,7 @@ CheckSecureMemoryMapConfiguration (
> //
> // Locate BIOS region size to update High bios base address
> //
> - GetRegionAddress (FlashRegionBios, &BaseAddress, &RegionSize);
> + GetRegionAddress (&gFlashRegionBiosGuid, &BaseAddress,
> + &RegionSize);
> DEBUG ((DEBUG_INFO, "Bios Region Size %x:\n", RegionSize));
> mLockableMemoryRange[LockableMemoryRangeHighBios].Base = SIZE_4GB
> - RegionSize;
> mLockableMemoryRange[LockableMemoryRangeLowDram].End =
> (MmioRead32 (MmPciBase (0,SA_MC_DEV,SA_MC_FUN) + R_SA_TOLUD) &
> B_SA_TOLUD_TOLUD_MASK) - 1; diff --git
> a/Silicon/Intel/KabylakeSiliconPkg/Pch/LibraryPrivate/BasePchSpiCommonLib/S
> piCommon.c
> b/Silicon/Intel/KabylakeSiliconPkg/Pch/LibraryPrivate/BasePchSpiCommonLib/S
> piCommon.c
> index 58757a8cba39..d2eb8324bf58 100644
> ---
> a/Silicon/Intel/KabylakeSiliconPkg/Pch/LibraryPrivate/BasePchSpiCommonLib/S
> piCommon.c
> +++ b/Silicon/Intel/KabylakeSiliconPkg/Pch/LibraryPrivate/BasePchSpiComm
> +++ onLib/SpiCommon.c
> @@ -2,10 +2,13 @@
> PCH SPI Common Driver implements the SPI Host Controller Compatibility
> Interface.
>
> Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) Microsoft Corporation.<BR>
> +
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> **/
> #include <Uefi/UefiBaseType.h>
> +#include <Guid/FlashRegion.h>
> #include <Library/IoLib.h>
> #include <Library/DebugLib.h>
> #include <Library/BaseMemoryLib.h>
> @@ -16,6 +19,90 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include
> <Protocol/Spi.h> #include <Library/PchSpiCommonLib.h>
>
> +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[] = {
> + {
> + &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 to 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 found for
> the given flash region GUID.
> +
> +**/
> +EFI_STATUS
> +GetFlashRegionType (
> + IN EFI_GUID *FlashRegionGuid,
> + OUT FLASH_REGION_TYPE *FlashRegionType
> + )
> +{
> + UINTN Index;
> +
> + if (FlashRegionGuid == NULL || FlashRegionType == NULL) {
> + return EFI_INVALID_PARAMETER;
> + }
> +
> + for (Index = 0; Index < ARRAY_SIZE (mFlashRegionTypes); Index++) {
> + if (CompareGuid (mFlashRegionTypes[Index].Guid, FlashRegionGuid)) {
> + *FlashRegionType = mFlashRegionTypes[Index].Type;
> + return EFI_SUCCESS;
> + }
> + }
> +
> + return EFI_NOT_FOUND;
> +}
> +
> /**
> Initialize an SPI protocol instance.
>
> @@ -249,7 +336,7 @@ PchPmTimerStallRuntimeSafe (
> Read data from the flash part.
>
> @param[in] This Pointer to the PCH_SPI_PROTOCOL instance.
> - @param[in] FlashRegionType The Flash Region type for flash cycle which is
> listed in the Descriptor.
> + @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 within 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.
> @@ -263,7 +350,7 @@ EFI_STATUS
> EFIAPI
> SpiProtocolFlashRead (
> IN PCH_SPI_PROTOCOL *This,
> - IN FLASH_REGION_TYPE FlashRegionType,
> + IN EFI_GUID *FlashRegionGuid,
> IN UINT32 Address,
> IN UINT32 ByteCount,
> OUT UINT8 *Buffer
> @@ -276,7 +363,7 @@ SpiProtocolFlashRead (
> //
> Status = SendSpiCmd (
> This,
> - FlashRegionType,
> + FlashRegionGuid,
> FlashCycleRead,
> Address,
> ByteCount,
> @@ -289,7 +376,7 @@ SpiProtocolFlashRead (
> Write data to the flash part.
>
> @param[in] This Pointer to the PCH_SPI_PROTOCOL instance.
> - @param[in] FlashRegionType The Flash Region type for flash cycle which is
> listed in the Descriptor.
> + @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 within 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 containing the
> data sent during the SPI cycle.
> @@ -302,7 +389,7 @@ EFI_STATUS
> EFIAPI
> SpiProtocolFlashWrite (
> IN PCH_SPI_PROTOCOL *This,
> - IN FLASH_REGION_TYPE FlashRegionType,
> + IN EFI_GUID *FlashRegionGuid,
> IN UINT32 Address,
> IN UINT32 ByteCount,
> IN UINT8 *Buffer
> @@ -315,7 +402,7 @@ SpiProtocolFlashWrite (
> //
> Status = SendSpiCmd (
> This,
> - FlashRegionType,
> + FlashRegionGuid,
> FlashCycleWrite,
> Address,
> ByteCount,
> @@ -328,7 +415,7 @@ SpiProtocolFlashWrite (
> Erase some area on the flash part.
>
> @param[in] This Pointer to the PCH_SPI_PROTOCOL instance.
> - @param[in] FlashRegionType The Flash Region type for flash cycle which is
> listed in the Descriptor.
> + @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 within a region
> for which BIOS has access permissions.
> @param[in] ByteCount Number of bytes in the data portion of the SPI
> cycle.
>
> @@ -340,7 +427,7 @@ EFI_STATUS
> EFIAPI
> SpiProtocolFlashErase (
> IN PCH_SPI_PROTOCOL *This,
> - IN FLASH_REGION_TYPE FlashRegionType,
> + IN EFI_GUID *FlashRegionGuid,
> IN UINT32 Address,
> IN UINT32 ByteCount
> )
> @@ -352,7 +439,7 @@ SpiProtocolFlashErase (
> //
> Status = SendSpiCmd (
> This,
> - FlashRegionType,
> + FlashRegionGuid,
> FlashCycleErase,
> Address,
> ByteCount,
> @@ -407,7 +494,7 @@ SpiProtocolFlashReadSfdp (
> //
> Status = SendSpiCmd (
> This,
> - FlashRegionAll,
> + &gFlashRegionAllGuid,
> FlashCycleReadSfdp,
> FlashAddress,
> ByteCount,
> @@ -460,7 +547,7 @@ SpiProtocolFlashReadJedecId (
> //
> Status = SendSpiCmd (
> This,
> - FlashRegionAll,
> + &gFlashRegionAllGuid,
> FlashCycleReadJedecId,
> Address,
> ByteCount,
> @@ -495,7 +582,7 @@ SpiProtocolFlashWriteStatus (
> //
> Status = SendSpiCmd (
> This,
> - FlashRegionAll,
> + &gFlashRegionAllGuid,
> FlashCycleWriteStatus,
> 0,
> ByteCount,
> @@ -530,7 +617,7 @@ SpiProtocolFlashReadStatus (
> //
> Status = SendSpiCmd (
> This,
> - FlashRegionAll,
> + &gFlashRegionAllGuid,
> FlashCycleReadStatus,
> 0,
> ByteCount,
> @@ -543,7 +630,7 @@ SpiProtocolFlashReadStatus (
> Get the SPI region base and size, based on the enum type
>
> @param[in] This Pointer to the PCH_SPI_PROTOCOL instance.
> - @param[in] FlashRegionType The Flash Region type for for the base
> address which is listed in the Descriptor.
> + @param[in] FlashRegionGuid The Flash Region GUID for the base address
> which corresponds to the type in the descriptor.
> @param[out] BaseAddress The Flash Linear Address for the Region 'n'
> Base
> @param[out] RegionSize The size for the Region 'n'
>
> @@ -555,17 +642,24 @@ EFI_STATUS
> EFIAPI
> SpiProtocolGetRegionAddress (
> IN PCH_SPI_PROTOCOL *This,
> - IN FLASH_REGION_TYPE FlashRegionType,
> + 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;
>
> SpiInstance = SPI_INSTANCE_FROM_SPIPROTOCOL (This);
>
> + Status = GetFlashRegionType (FlashRegionGuid, &FlashRegionType); if
> + (EFI_ERROR (Status)) {
> + return EFI_INVALID_PARAMETER;
> + }
> +
> if (FlashRegionType >= FlashRegionMax) {
> return EFI_INVALID_PARAMETER;
> }
> @@ -646,7 +740,7 @@ SpiProtocolReadPchSoftStrap (
> //
> Status = SendSpiCmd (
> This,
> - FlashRegionDescriptor,
> + &gFlashRegionDescriptorGuid,
> FlashCycleRead,
> StrapFlashAddr,
> ByteCount,
> @@ -704,7 +798,7 @@ SpiProtocolReadCpuSoftStrap (
> //
> Status = SendSpiCmd (
> This,
> - FlashRegionDescriptor,
> + &gFlashRegionDescriptorGuid,
> FlashCycleRead,
> StrapFlashAddr,
> ByteCount,
> @@ -717,7 +811,7 @@ SpiProtocolReadCpuSoftStrap (
> This function sends the programmed SPI command to the slave device.
>
> @param[in] This Pointer to the PCH_SPI_PROTOCOL instance.
> - @param[in] SpiRegionType The SPI Region type for flash cycle which is
> listed in the Descriptor
> + @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 within a region
> for which BIOS has access permissions.
> @param[in] ByteCount Number of bytes in the data portion of the SPI
> cycle.
> @@ -731,7 +825,7 @@ SpiProtocolReadCpuSoftStrap ( EFI_STATUS
> SendSpiCmd (
> IN PCH_SPI_PROTOCOL *This,
> - IN FLASH_REGION_TYPE FlashRegionType,
> + IN EFI_GUID *FlashRegionGuid,
> IN FLASH_CYCLE_TYPE FlashCycleType,
> IN UINT32 Address,
> IN UINT32 ByteCount,
> @@ -795,7 +889,7 @@ SendSpiCmd (
> goto SendSpiCmdEnd;
> }
>
> - Status = SpiProtocolGetRegionAddress (This, FlashRegionType,
> &HardwareSpiAddr, &FlashRegionSize);
> + Status = SpiProtocolGetRegionAddress (This, FlashRegionGuid,
> + &HardwareSpiAddr, &FlashRegionSize);
> if (EFI_ERROR (Status)) {
> goto SendSpiCmdEnd;
> }
> diff --git a/Silicon/Intel/KabylakeSiliconPkg/Hsti/Dxe/HstiSiliconDxe.inf
> b/Silicon/Intel/KabylakeSiliconPkg/Hsti/Dxe/HstiSiliconDxe.inf
> index bd12fa691d40..09826cdfdf39 100644
> --- a/Silicon/Intel/KabylakeSiliconPkg/Hsti/Dxe/HstiSiliconDxe.inf
> +++ b/Silicon/Intel/KabylakeSiliconPkg/Hsti/Dxe/HstiSiliconDxe.inf
> @@ -2,6 +2,7 @@
> # Component description file for Hsti Silicon Driver # # Copyright (c) 2017,
> Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) Microsoft Corporation.<BR>
> #
> # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -86,6 +87,14 @@
> [LibraryClasses] [Guids]
> gEfiEndOfDxeEventGroupGuid
> gSiMemoryPlatformDataGuid ## CONSUMES
> + gFlashRegionDescriptorGuid
> + gFlashRegionBiosGuid
> + gFlashRegionMeGuid
> + gFlashRegionGbeGuid
> + gFlashRegionPlatformDataGuid
> + gFlashRegionDerGuid
> + gFlashRegionAllGuid
> + gFlashRegionMaxGuid
>
> [Protocols]
> gEfiDxeSmmReadyToLockProtocolGuid ## CONSUMES diff --git
> a/Silicon/Intel/KabylakeSiliconPkg/Pch/IncludePrivate/Library/PchSpiCommonLi
> b.h
> b/Silicon/Intel/KabylakeSiliconPkg/Pch/IncludePrivate/Library/PchSpiCommonLi
> b.h
> index d408289ea253..fd991de96016 100644
> ---
> a/Silicon/Intel/KabylakeSiliconPkg/Pch/IncludePrivate/Library/PchSpiCommonLi
> b.h
> +++ b/Silicon/Intel/KabylakeSiliconPkg/Pch/IncludePrivate/Library/PchSpi
> +++ CommonLib.h
> @@ -134,7 +134,7 @@ ReleaseSpiBar0 (
> Read data from the flash part.
>
> @param[in] This Pointer to the PCH_SPI_PROTOCOL instance.
> - @param[in] FlashRegionType The Flash Region type for flash cycle which is
> listed in the Descriptor.
> + @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 within 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,7 +148,7 @@ EFI_STATUS
> EFIAPI
> SpiProtocolFlashRead (
> IN PCH_SPI_PROTOCOL *This,
> - IN FLASH_REGION_TYPE FlashRegionType,
> + IN EFI_GUID *FlashRegionGuid,
> IN UINT32 Address,
> IN UINT32 ByteCount,
> OUT UINT8 *Buffer
> @@ -158,7 +158,7 @@ SpiProtocolFlashRead (
> Write data to the flash part.
>
> @param[in] This Pointer to the PCH_SPI_PROTOCOL instance.
> - @param[in] FlashRegionType The Flash Region type for flash cycle which is
> listed in the Descriptor.
> + @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 within 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 containing the
> data sent during the SPI cycle.
> @@ -171,7 +171,7 @@ EFI_STATUS
> EFIAPI
> SpiProtocolFlashWrite (
> IN PCH_SPI_PROTOCOL *This,
> - IN FLASH_REGION_TYPE FlashRegionType,
> + IN EFI_GUID *FlashRegionGuid,
> IN UINT32 Address,
> IN UINT32 ByteCount,
> IN UINT8 *Buffer
> @@ -181,7 +181,7 @@ SpiProtocolFlashWrite (
> Erase some area on the flash part.
>
> @param[in] This Pointer to the PCH_SPI_PROTOCOL instance.
> - @param[in] FlashRegionType The Flash Region type for flash cycle which is
> listed in the Descriptor.
> + @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 within a region
> for which BIOS has access permissions.
> @param[in] ByteCount Number of bytes in the data portion of the SPI
> cycle.
>
> @@ -193,7 +193,7 @@ EFI_STATUS
> EFIAPI
> SpiProtocolFlashErase (
> IN PCH_SPI_PROTOCOL *This,
> - IN FLASH_REGION_TYPE FlashRegionType,
> + IN EFI_GUID *FlashRegionGuid,
> IN UINT32 Address,
> IN UINT32 ByteCount
> );
> @@ -286,7 +286,7 @@ SpiProtocolFlashReadStatus (
> Get the SPI region base and size, based on the enum type
>
> @param[in] This Pointer to the PCH_SPI_PROTOCOL instance.
> - @param[in] FlashRegionType The Flash Region type for for the base
> address which is listed in the Descriptor.
> + @param[in] FlashRegionGuid The Flash Region GUID for flash cycle which
> corresponds to the type in the descriptor.
> @param[out] BaseAddress The Flash Linear Address for the Region 'n'
> Base
> @param[out] RegionSize The size for the Region 'n'
>
> @@ -298,7 +298,7 @@ EFI_STATUS
> EFIAPI
> SpiProtocolGetRegionAddress (
> IN PCH_SPI_PROTOCOL *This,
> - IN FLASH_REGION_TYPE FlashRegionType,
> + IN EFI_GUID *FlashRegionGuid,
> OUT UINT32 *BaseAddress,
> OUT UINT32 *RegionSize
> );
> @@ -353,7 +353,7 @@ SpiProtocolReadCpuSoftStrap (
> This function sends the programmed SPI command to the slave device.
>
> @param[in] This Pointer to the PCH_SPI_PROTOCOL instance.
> - @param[in] SpiRegionType The SPI Region type for flash cycle which is
> listed in the Descriptor
> + @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 within a region
> for which BIOS has access permissions.
> @param[in] ByteCount Number of bytes in the data portion of the SPI
> cycle.
> @@ -367,7 +367,7 @@ SpiProtocolReadCpuSoftStrap ( EFI_STATUS
> SendSpiCmd (
> IN PCH_SPI_PROTOCOL *This,
> - IN FLASH_REGION_TYPE FlashRegionType,
> + IN EFI_GUID *FlashRegionGuid,
> IN FLASH_CYCLE_TYPE FlashCycleType,
> IN UINT32 Address,
> IN UINT32 ByteCount,
> diff --git
> a/Silicon/Intel/KabylakeSiliconPkg/Pch/LibraryPrivate/BasePchSpiCommonLib/B
> asePchSpiCommonLib.inf
> b/Silicon/Intel/KabylakeSiliconPkg/Pch/LibraryPrivate/BasePchSpiCommonLib/B
> asePchSpiCommonLib.inf
> index 51e2d25a7f8b..67176c879de5 100644
> ---
> a/Silicon/Intel/KabylakeSiliconPkg/Pch/LibraryPrivate/BasePchSpiCommonLib/B
> asePchSpiCommonLib.inf
> +++ b/Silicon/Intel/KabylakeSiliconPkg/Pch/LibraryPrivate/BasePchSpiComm
> +++ onLib/BasePchSpiCommonLib.inf
> @@ -2,6 +2,7 @@
> # Component description file for the PchSpiCommonLib # # Copyright (c) 2017
> - 2020 Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) Microsoft Corporation.<BR>
> #
> # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -28,3 +29,13 @@
> [LibraryClasses]
> IoLib
> DebugLib
> PchCycleDecodingLib
> +
> +[Guids]
> + gFlashRegionDescriptorGuid
> + gFlashRegionBiosGuid
> + gFlashRegionMeGuid
> + gFlashRegionGbeGuid
> + gFlashRegionPlatformDataGuid
> + gFlashRegionDerGuid
> + gFlashRegionAllGuid
> + gFlashRegionMaxGuid
> --
> 2.28.0.windows.1
>
>
>
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#77136): https://edk2.groups.io/g/devel/message/77136
> Mute This Topic: https://groups.io/mt/83794828/1777047
> Group Owner: devel+owner at edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub [chasel.chiu at intel.com]
> -=-=-=-=-=-=
>
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#77160): https://edk2.groups.io/g/devel/message/77160
Mute This Topic: https://groups.io/mt/83794828/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list