summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzwei4 <david.wei@intel.com>2017-02-13 16:44:02 +0800
committerGuo Mang <mang.guo@intel.com>2017-05-09 13:03:10 +0800
commit399efb82eb2677e88647ad1e93541e7b871d1928 (patch)
tree61b6a7c63bf09dc8da7a7aa3563ce000e777683f
parent80462ca33583a017fc44aa5b212441d8b35d456a (diff)
downloadedk2-platforms-399efb82eb2677e88647ad1e93541e7b871d1928.tar.xz
SPI Flash Lock.
Cleanup code about locking SPI Flash; Change the default value of BIOS Lock setup option to FALSE. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: David Wei <david.wei@intel.com>
-rw-r--r--Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspScPolicyInitLib.c4
-rw-r--r--Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiScPolicyUpdate.c39
-rw-r--r--Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/SouthClusterConfig.vfi4
-rw-r--r--Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/ScInit/Dxe/ScInit.c71
4 files changed, 5 insertions, 113 deletions
diff --git a/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspScPolicyInitLib.c b/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspScPolicyInitLib.c
index 47ec706006..640900688d 100644
--- a/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspScPolicyInitLib.c
+++ b/Platform/BroxtonPlatformPkg/Common/Library/PeiFspPolicyInitLib/PeiFspScPolicyInitLib.c
@@ -1,7 +1,7 @@
/** @file
Implementation of Fsp SC Policy Initialization.
- Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -601,7 +601,7 @@ PeiFspScPolicyInit (
// Flash Protection Range Register initialization
//
for (Index = 0; Index < SC_FLASH_PROTECTED_RANGES; Index++) {
- FspsUpd->FspsConfig.WriteProtectionEnable[Index] = TRUE;
+ FspsUpd->FspsConfig.WriteProtectionEnable[Index] = SystemConfiguration->ScBiosLock == TRUE ? TRUE : FALSE;
FspsUpd->FspsConfig.ReadProtectionEnable[Index] = FALSE;
}
diff --git a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiScPolicyUpdate.c b/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiScPolicyUpdate.c
index 6d9fc52de5..c98a8df657 100644
--- a/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiScPolicyUpdate.c
+++ b/Platform/BroxtonPlatformPkg/Common/Library/PeiPolicyUpdateLib/PeiScPolicyUpdate.c
@@ -1,7 +1,7 @@
/** @file
This file is SampleCode of the library for Intel PCH PEI Policy initialization.
- Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2004 - 2017, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
@@ -277,13 +277,11 @@ UpdatePeiScPolicy (
UINT16 BoardId;
UINTN VariableSize;
SYSTEM_CONFIGURATION SystemConfiguration;
- UINT8 Index;
UINT8 PortIndex;
UINT32 SpiHsfsReg;
UINT32 SpiFdodReg;
UINT8 DevIndex;
UINT8 HdaIndex;
- BOOLEAN FlashProtectionEnabled;
SC_GENERAL_CONFIG *GeneralConfig;
SC_SATA_CONFIG *SataConfig;
SC_PCIE_CONFIG *PcieConfig;
@@ -729,41 +727,6 @@ UpdatePeiScPolicy (
}
PmConfig->PowerButterDebounceMode = SystemConfiguration.PowerButterDebounceMode;
- if ((GetBxtSeries() == BxtP) && (IsSpiBoot ())) {
- //
- // Configure Flash Protection Range Registers
- //
- FlashProtectionEnabled = SystemConfiguration.FprrEnable == TRUE ? TRUE : FALSE;
-
- //
- // Enabling Flash Protection Range Registers
- // Enable FPRR policy and set up ranges on non-Capsule Update flow with Flash Wear-Out Protection enabled
- // PrintFlashProtectionConfig() dumps FPRR information during ScPrintPolicyPpi()
- // FPRR bit is enabled by default as per Platform policy, except that when system is in recovery mode or FDO is enabled. In this case this will be disabled as part of Firmware Update / Recovery update
- //
- if (FlashProtectionEnabled && (FdoEnabledGuidHob == NULL)) {
- //
- // Flash Protection Range Register initialization
- //
- for (Index = 0; Index < SC_FLASH_PROTECTED_RANGES; Index++) {
- FlashProtectionConfig->ProtectRange[Index].WriteProtectionEnable = TRUE;
- FlashProtectionConfig->ProtectRange[Index].ReadProtectionEnable = FALSE;
- }
-
- DEBUG ((EFI_D_INFO, "IbbOffset = %x , IbbSize = %x\n", FixedPcdGet32 (PcdFlashIbbRegionMappedBase), FixedPcdGet32 (PcdFlashIbbRegionSize)));
- DEBUG ((EFI_D_INFO, "ObbOffset = %x , ObbSize = %x\n", FixedPcdGet32 (PcdFlashObbRegionMappedBase), FixedPcdGet32 (PcdFlashObbRegionSize)));
-
- //
- // Assign FPRR ranges
- //
- FlashProtectionConfig->ProtectRange[0].ProtectedRangeBase = (UINT16) ((FixedPcdGet32 (PcdFlashIbbRegionMappedBase) - FixedPcdGet32 (PcdFlashAreaBaseAddress)) >> 12);
- FlashProtectionConfig->ProtectRange[0].ProtectedRangeLimit = (UINT16) ((FixedPcdGet32 (PcdFlashIbbRegionMappedBase) - FixedPcdGet32 (PcdFlashAreaBaseAddress) + FixedPcdGet32 (PcdFlashIbbRegionSize) - 1) >> 12);
- FlashProtectionConfig->ProtectRange[1].ProtectedRangeBase = (UINT16) ((FixedPcdGet32 (PcdFlashObbRegionMappedBase) - FixedPcdGet32 (PcdFlashAreaBaseAddress)) >> 12);
- FlashProtectionConfig->ProtectRange[1].ProtectedRangeLimit = (UINT16) ((FixedPcdGet32 (PcdFlashObbRegionMappedBase) - FixedPcdGet32 (PcdFlashAreaBaseAddress) + FixedPcdGet32 (PcdFlashObbRegionSize) - 1) >> 12);
- } else {
- DEBUG ((DEBUG_INFO, " BIOS FPRR is not done -FDO ASSERT Status "));
- }
- }
DciConfig->DciEn = SystemConfiguration.DciEn;
DciConfig->DciAutoDetect = SystemConfiguration.DciAutoDetect;
diff --git a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/SouthClusterConfig.vfi b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/SouthClusterConfig.vfi
index 411006b384..f2a09c236f 100644
--- a/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/SouthClusterConfig.vfi
+++ b/Platform/BroxtonPlatformPkg/Common/PlatformSettings/PlatformSetupDxe/SouthClusterConfig.vfi
@@ -145,8 +145,8 @@ form formid = MISC_OPTIONS_FORM_ID,
oneof varid = Setup.ScBiosLock,
prompt = STRING_TOKEN(STR_PCH_BLE_PROMPT),
help = STRING_TOKEN(STR_PCH_BLE_HELP),
- option text = STRING_TOKEN(STR_DISABLED), value = 0, flags = RESET_REQUIRED;
- option text = STRING_TOKEN(STR_ENABLED), value = 1, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_DISABLED), value = 0, flags = DEFAULT | MANUFACTURING | RESET_REQUIRED;
+ option text = STRING_TOKEN(STR_ENABLED), value = 1, flags = RESET_REQUIRED;
endoneof;
oneof varid = Setup.RtcLock,
prompt = STRING_TOKEN(STR_PCH_RTC_LOCK_PROMPT),
diff --git a/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/ScInit/Dxe/ScInit.c b/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/ScInit/Dxe/ScInit.c
index c4a9d5088d..9620dacfb5 100644
--- a/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/ScInit/Dxe/ScInit.c
+++ b/Silicon/BroxtonSoC/BroxtonSiPkg/SouthCluster/ScInit/Dxe/ScInit.c
@@ -624,22 +624,17 @@ ScOnEndOfDxe (
)
{
EFI_STATUS Status;
- UINTN Index;
UINT32 FuncDisableReg;
- UINT32 Data32;
UINT32 Data32And;
UINT32 Data32Or;
UINT16 AcpiBaseAddr;
UINT32 PmcBase;
UINT8 NumOfDevltrOverride;
- UINT32 DlockValue;
UINTN PciLpcRegBase;
UINTN PciSpiRegBase;
- UINTN SpiBar0;
BXT_SERIES BxtSeries;
UINT8 Data8;
SC_LOCK_DOWN_CONFIG *LockDownConfig;
- SC_FLASH_PROTECTION_CONFIG *FlashProtectionConfig;
UINT16 Data16And;
UINT16 Data16Or;
SI_POLICY_HOB *SiPolicyHob;
@@ -680,72 +675,6 @@ ScOnEndOfDxe (
(VOID *) (UINTN) (PmcBase + R_PMC_PMIR)
);
- if (BxtSeries == BxtP){
- SpiBar0 = MmioRead32 (PciSpiRegBase + R_SPI_BASE) & ~(B_SPI_BAR0_MASK);
- Status = GetConfigBlock ((VOID *) mScPolicy, &gFlashProtectionConfigGuid, (VOID *) &FlashProtectionConfig);
- ASSERT_EFI_ERROR (Status);
-
- //
- // Program the Flash Protection Range Register based on policy
- //
- DlockValue = MmioRead32 (SpiBar0 + R_SPI_DLOCK);
-
- FlashProtectionConfig->ProtectRange[0].ProtectedRangeBase = (UINT16) ((FixedPcdGet32 (PcdFlashIbbRegionMappedBase) - FixedPcdGet32 (PcdFlashAreaBaseAddress)) >> 12);
- FlashProtectionConfig->ProtectRange[0].ProtectedRangeLimit = (UINT16) ((FixedPcdGet32 (PcdFlashIbbRegionMappedBase) - FixedPcdGet32 (PcdFlashAreaBaseAddress) + FixedPcdGet32 (PcdFlashIbbRegionSize) - 1) >> 12);
- FlashProtectionConfig->ProtectRange[1].ProtectedRangeBase = (UINT16) ((FixedPcdGet32 (PcdFlashObbRegionMappedBase) - FixedPcdGet32 (PcdFlashAreaBaseAddress)) >> 12);
- FlashProtectionConfig->ProtectRange[1].ProtectedRangeLimit = (UINT16) ((FixedPcdGet32 (PcdFlashObbRegionMappedBase) - FixedPcdGet32 (PcdFlashAreaBaseAddress) + FixedPcdGet32 (PcdFlashObbRegionSize) - 1) >> 12);
-
- for (Index = 0; Index < SC_FLASH_PROTECTED_RANGES; ++Index) {
- if ((FlashProtectionConfig->ProtectRange[Index].WriteProtectionEnable ||
- FlashProtectionConfig->ProtectRange[Index].ReadProtectionEnable) != TRUE) {
- continue;
- }
-
- //
- // Proceed to program the register after ensure it is enabled
- //
- Data32 = 0;
- Data32 |= (FlashProtectionConfig->ProtectRange[Index].WriteProtectionEnable == TRUE) ? B_SPI_PRX_WPE : 0;
- Data32 |= (FlashProtectionConfig->ProtectRange[Index].ReadProtectionEnable == TRUE) ? B_SPI_PRX_RPE : 0;
- Data32 |= ((UINT32) FlashProtectionConfig->ProtectRange[Index].ProtectedRangeLimit << N_SPI_PRX_PRL) & B_SPI_PRX_PRL_MASK;
- Data32 |= ((UINT32) FlashProtectionConfig->ProtectRange[Index].ProtectedRangeBase << N_SPI_PRX_PRB) & B_SPI_PRX_PRB_MASK;
- DEBUG ((DEBUG_INFO, "Protected range %d: 0x%08x \n", Index, Data32));
-
- DlockValue |= (UINT32) (B_SPI_DLOCK_PR0LOCKDN << Index);
- MmioWrite32 ((UINTN) (SpiBar0 + (R_SPI_PR0 + (Index * S_SPI_PRX))), Data32);
- S3BootScriptSaveMemWrite (
- S3BootScriptWidthUint32,
- (UINTN) (SpiBar0 + (R_SPI_PR0 + (Index * S_SPI_PRX))),
- 1,
- (VOID *) (UINTN) (SpiBar0 + (R_SPI_PR0 + (Index * S_SPI_PRX)))
- );
- }
-
- //
- // Program DLOCK register
- //
- MmioWrite32 ((UINTN) (SpiBar0 + R_SPI_DLOCK), DlockValue);
- S3BootScriptSaveMemWrite (
- S3BootScriptWidthUint32,
- (UINTN) (SpiBar0 + R_SPI_DLOCK),
- 1,
- (VOID *) (UINTN) (SpiBar0 + R_SPI_DLOCK)
- );
-
- //
- // In SPI controller the BIOS should set the Flash Configuration Lock-Down bit
- // (SPI_BAR0 + 04[15]) at end of post. When set to 1, those Flash Program Registers
- // that are locked down by this FLOCKDN bit cannot be written.
- //
- MmioOr32 ((UINTN) (SpiBar0 + R_SPI_HSFS), (UINT32) (B_SPI_HSFS_FLOCKDN));
- S3BootScriptSaveMemWrite (
- EfiBootScriptWidthUint32,
- (UINTN) (SpiBar0 + R_SPI_HSFS),
- 1,
- (VOID *) (UINTN) (SpiBar0 + R_SPI_HSFS)
- );
- }
-
Status = GetConfigBlock ((VOID *) mScPolicy, &gLockDownConfigGuid, (VOID *) &LockDownConfig);
ASSERT_EFI_ERROR (Status);
if (LockDownConfig->GlobalSmi == TRUE) {