diff options
author | Barnali Sarkar <barnali.sarkar@intel.com> | 2017-08-17 11:52:39 +0530 |
---|---|---|
committer | Aaron Durbin <adurbin@chromium.org> | 2017-08-26 16:30:31 +0000 |
commit | 0818a2a774e12f4522d139e8b6f3a39a8e1aa935 (patch) | |
tree | f0955666bc5410486f83a3bd44512a2582af8ca5 /src/soc/intel/skylake/finalize.c | |
parent | b26e01a06718cc1a49a7c277c831b572a7301210 (diff) | |
download | coreboot-0818a2a774e12f4522d139e8b6f3a39a8e1aa935.tar.xz |
soc/intel/skylake: Move SPI lock down config after resource allocation
This patch to ensures that coreboot is performing SPI
registers lockdown after PCI enumeration is done.
This requirements are intended to support platform security
guideline where all required chipset registers are expected
to be in lock down stage before launching any 3rd party
code as in option rom etc.
coreboot has to change its execution order to meet those
requirements. Hence SPI lock down programming has been moved
right after pci resource allocation is donei, so that
SPI registers can be lock down before calling post pci
enumeration FSP NotifyPhase() API which is targeted to
be done in BS_DEV_ENABLE-BS_ON_ENTRY.
TEST=Ensure SPIBAR+HSFSTS(0x04) register FLOCKDN bit and WRSDIS
bit is set. Also, Bits 8-12 of SPIBAR+DLOCK(0x0C) register is set.
Change-Id: I8f5a952656e51d3bf365917b90d3056b46f899c5
Signed-off-by: Barnali Sarkar <barnali.sarkar@intel.com>
Reviewed-on: https://review.coreboot.org/21064
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/soc/intel/skylake/finalize.c')
-rw-r--r-- | src/soc/intel/skylake/finalize.c | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/src/soc/intel/skylake/finalize.c b/src/soc/intel/skylake/finalize.c index 335435ad9d..770cc1bf77 100644 --- a/src/soc/intel/skylake/finalize.c +++ b/src/soc/intel/skylake/finalize.c @@ -21,7 +21,6 @@ #include <console/post_codes.h> #include <cpu/x86/smm.h> #include <device/pci.h> -#include <intelblocks/fast_spi.h> #include <intelblocks/pcr.h> #include <reg_script.h> #include <spi-generic.h> @@ -109,12 +108,6 @@ static void pch_finalize_script(void) config_t *config; u8 reg8; - /* Set FAST_SPI opcode menu */ - fast_spi_set_opcode_menu(); - - /* Lock FAST_SPIBAR */ - fast_spi_lock_bar(); - /* Display me status before we hide it */ intel_me_status(); @@ -149,26 +142,24 @@ static void pch_finalize_script(void) static void soc_lockdown(void) { + struct soc_intel_skylake_config *config; + struct device *dev; u8 reg8; - device_t dev; - const struct device *dev1 = dev_find_slot(0, PCH_DEVFN_LPC); - const struct soc_intel_skylake_config *config = dev1->chip_info; + + dev = PCH_DEV_PMC; + + /* Check if PMC is enabled, else return */ + if (dev == NULL || dev->chip_info == NULL) + return; + + config = dev->chip_info; /* Global SMI Lock */ if (config->LockDownConfigGlobalSmi == 0) { - dev = PCH_DEV_PMC; reg8 = pci_read_config8(dev, GEN_PMCON_A); reg8 |= SMI_LOCK; pci_write_config8(dev, GEN_PMCON_A, reg8); } - - if (config->chipset_lockdown == CHIPSET_LOCKDOWN_COREBOOT) { - /* Bios Interface Lock */ - fast_spi_set_bios_interface_lock_down(); - - /* Bios Lock */ - fast_spi_set_lock_enable(); - } } static void soc_finalize(void *unused) |