/** @file SPI library header for abstraction of SPI HW registers accesses Copyright (c) 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _SPI_ACCESS_LIB_H_ #define _SPI_ACCESS_LIB_H_ /** Returns SPI PCI Config Space base address @retval UINT64 SPI Config Space base address **/ UINT64 SpiGetPciCfgAddress ( VOID ); /** Returns SPI BAR0 value @retval UINT32 PCH SPI BAR0 value **/ UINT32 SpiGetBar0 ( VOID ); /** Returns SPI Device number @retval UINT8 PCH SPI Device number **/ UINT8 SpiDeviceNumber ( VOID ); /** Returns SPI Function number @retval UINT8 PCH SPI Function number **/ UINT8 SpiFunctionNumber ( VOID ); /** Returns descriptor signature @retval UINT32 Descriptor signature **/ UINT32 SpiGetDescriptorSignature ( VOID ); /** Returns supported features and R/W frequencies of Flash Component @retval UINT32 Flash Component features descriptor **/ UINT32 SpiGetFlashComponentDescription ( VOID ); /** Returns number of Flash Components @retval UINT32 Flash components number **/ UINT32 SpiGetFlashComponentsNumber ( VOID ); /** Returns total Flash size with regards to number of flash components @retval UINT32 Total Flash Memory size **/ UINT32 SpiGetTotalFlashSize ( VOID ); /** Checks if PCH SPI Controler is present and available @retval TRUE PCH SPI controller is avaialable @retval FALSE PCH SPI controller is not available **/ BOOLEAN SpiIsControllerAvailable ( VOID ); /** Checks BIOS lock bits for proper value and checks if write protection is enabled Expected vales are: LE bit set, EISS bit set and WPD bit cleared @retval TRUE All protection bits are set correctly @retval FALSE Not all protection bits had exepcted values **/ BOOLEAN SpiIsWriteProtectionEnabled ( VOID ); /** Returns Flash Descriptor Override Pin Strap status @retval TRUE Flash Descriptor override is enabled @retval FALSE Flash Descriptor override is disabled **/ BOOLEAN SpiIsFlashDescriptorOverrideEnabled ( VOID ); /** Returns Flash Configuration Lock Down bit status @retval TRUE Flash Configuration Lock Down bit is set @retval FALSE Flash Configuration Lock Down bit is not set **/ BOOLEAN SpiIsFlashConfigurationLockDownEnabled ( VOID ); /** Returns Top Swap functionality enable state @retval TRUE Top Swap is enabled @retval FALSE Top Swap is disabled **/ BOOLEAN SpiIsTopSwapEnabled ( VOID ); /** Return Component Property Parameter Table for a given component number @param[in] ComponentNumber SPI Component number @param[out] CppTable Component Poperty Parameter Table value @retval TRUE Vendor Specific Component Capabilities Register value was read @reval FALSE Vendor Specific Component Capabilities Register value was not present **/ BOOLEAN SpiGetComponentPropertyParameterTable ( IN UINT8 ComponentNumber, OUT UINT32 *CppTable ); /** Returns valid bit status in given Component Property Parameter Table @param[in] CppTable Component Poperty Parameter Table value @retval TRUE Valid bit is set @reval FALSE Valid bit is not set **/ BOOLEAN SpiIsCppValidBitSet ( IN UINT32 CppTable ); /** Checks if Flash Descriptor is valid @retval TRUE Flash Descriptor is valid @retval FALSE Flash Descriptor is invalid **/ BOOLEAN SpiIsFlashDescriptorValid ( VOID ); /** Returns masked BIOS Master Read Access @retval UINT32 Already masked BIOS Master Read Access **/ UINT32 SpiGetMasterReadAccess ( VOID ); /** Returns masked BIOS Master Write Access @retval UINT32 Already masked BIOS Master Write Access **/ UINT32 SpiGetMasterWriteAccess ( VOID ); /** Returns GbE Region Access rights @retval UINT32 GbE Region access rights **/ UINT32 SpiGetGbeRegionAccess ( VOID ); /** Returns CSME region access rights @retval UINT32 CSME Region Access rights **/ UINT32 SpiGetCsmeRegionAccess ( VOID ); /** Returns EC region access right @retval UINT32 EC Region access rights **/ UINT32 SpiGetEcRegionAccess ( VOID ); /** Checks if Slave Attached Flash (SAF) mode is active @retval TRUE SAF mode is active @retval FALSE SAF mode is not active **/ BOOLEAN SpiIsSafModeActive ( VOID ); /** Checks validity of GbE region @retval TRUE GbE region is valid @retval FALSE GbE regios in invalid **/ BOOLEAN SpiIsGbeRegionValid ( VOID ); /** Returns status of BIOS Interface Lockdown @retval TRUE BIOS Interface Lockdown is enabled @retval FALSE BIOS Interface Lockdown is disabled **/ BOOLEAN SpiIsBiosInterfaceLockdownEnabled ( VOID ); /** Returns TRUE if BIOS Boot Strap is set to SPI @retval TRUE BIOS Boot strap is set to SPI @retval FALSE BIOS Boot strap is set to LPC/eSPI **/ BOOLEAN SpiIsBiosBootFromSpi ( VOID ); /** Check SPI write status disable is set @retval TRUE Write status disable is set @retval FALSE Write status disable is not set **/ BOOLEAN SpiIsWriteStatusDisable ( VOID ); #endif // _SPI_ACCESS_LIB_H_