soc/intel/common/block/fast_spi: Add SPI Vendor Component Lock

Add fast_spi_set_vcl() to be called by the SOC lockdown function if SPI
Vendor Specific Component Capabilities are desired.

Change-Id: I6d9b58e90fa16c539b90c6b961862e97e1bf29a2
Signed-off-by: Marc Jones <marcjones@sysproconsulting.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/72478
Reviewed-by: David Hendricks <david.hendricks@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Jonathan Zhang 2023-01-26 15:02:43 -08:00 committed by David Hendricks
parent 17d9d897f0
commit b64fdcc0fa
3 changed files with 22 additions and 0 deletions

View File

@ -464,6 +464,17 @@ void fast_spi_set_bde(void)
pci_or_config32(dev, SPI_BIOS_DECODE_EN, SPI_BIOS_DECODE_LOCK); pci_or_config32(dev, SPI_BIOS_DECODE_EN, SPI_BIOS_DECODE_LOCK);
} }
/* Set FAST_SPIBAR + SPIBAR_SFDP0_VSCC0 (0xc4) Vendor Control Lock */
void fast_spi_set_vcl(void)
{
void *spibar = fast_spi_get_bar();
uint32_t vcss;
vcss = read32(spibar + SPIBAR_SFDP0_VSCC0);
vcss |= SPIBAR_SFDP0_VSCC0_VCL;
write32(spibar + SPIBAR_SFDP0_VSCC0, vcss);
}
void fast_spi_clear_outstanding_status(void) void fast_spi_clear_outstanding_status(void)
{ {
void *spibar = fast_spi_get_bar(); void *spibar = fast_spi_get_bar();

View File

@ -39,6 +39,7 @@
#define SPIBAR_OPMENU_UPPER 0xac #define SPIBAR_OPMENU_UPPER 0xac
#define SPIBAR_FDOC 0xb4 #define SPIBAR_FDOC 0xb4
#define SPIBAR_FDOD 0xb8 #define SPIBAR_FDOD 0xb8
#define SPIBAR_SFDP0_VSCC0 0xc4
#define SPIBAR_PTINX 0xcc #define SPIBAR_PTINX 0xcc
#define SPIBAR_PTDATA 0xd0 #define SPIBAR_PTDATA 0xd0
@ -133,6 +134,12 @@
(SPI_OPTYPE_1 << 2) | (SPI_OPTYPE_0)) (SPI_OPTYPE_1 << 2) | (SPI_OPTYPE_0))
#define SPI_OPPREFIX ((0x50 << 8) | 0x06) /* EWSR and WREN */ #define SPI_OPPREFIX ((0x50 << 8) | 0x06) /* EWSR and WREN */
/*
* Spi Flash Vendor Specific Component Capabilities
* for Component 0 (0xc4) register
*/
#define SPIBAR_SFDP0_VSCC0_VCL (1 << 30)
/* /*
* Register Offset of BIOS Vendor Specific Component Capabilities (VSCC) * Register Offset of BIOS Vendor Specific Component Capabilities (VSCC)
* for Component 0 Register * for Component 0 Register

View File

@ -107,5 +107,9 @@ void fast_spi_cache_ext_bios_postcar(struct postcar_frame *pcf);
* Set FAST_SPIBAR BIOS Decode Lock bit * Set FAST_SPIBAR BIOS Decode Lock bit
*/ */
void fast_spi_set_bde(void); void fast_spi_set_bde(void);
/*
* Set FAST_SPIBAR Vendor Component Lock bit.
*/
void fast_spi_set_vcl(void);
#endif /* SOC_INTEL_COMMON_BLOCK_FAST_SPI_H */ #endif /* SOC_INTEL_COMMON_BLOCK_FAST_SPI_H */