/** @file Header file for PchEspiLib. All function in this library is available for PEI, DXE, and SMM, Copyright (c) 2017, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License that accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php. THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ #ifndef _PCH_ESPI_LIB_H_ #define _PCH_ESPI_LIB_H_ /** Is eSPI enabled in strap. @retval TRUE Espi is enabled in strap @retval FALSE Espi is disabled in strap **/ BOOLEAN IsEspiEnabled ( VOID ); /** Get configuration from eSPI slave @param[in] SlaveId eSPI slave ID @param[in] SlaveAddress Slave Configuration Register Address @param[out] OutData Configuration data read @retval EFI_SUCCESS Operation succeed @retval EFI_INVALID_PARAMETER Slave ID is not supported @retval EFI_INVALID_PARAMETER Slave ID is not supported or SlaveId 1 is used in PchLp @retval EFI_INVALID_PARAMETER Slave configuration register address exceed maximum allowed @retval EFI_INVALID_PARAMETER Slave configuration register address is not DWord aligned @retval EFI_DEVICE_ERROR Error in SCRS during polling stage of operation **/ EFI_STATUS PchEspiSlaveGetConfig ( IN UINT32 SlaveId, IN UINT32 SlaveAddress, OUT UINT32 *OutData ); /** Set eSPI slave configuration @param[in] SlaveId eSPI slave ID @param[in] SlaveAddress Slave Configuration Register Address @param[in] InData Configuration data to write @retval EFI_SUCCESS Operation succeed @retval EFI_INVALID_PARAMETER Slave ID is not supported or SlaveId 1 is used in PchLp @retval EFI_INVALID_PARAMETER Slave configuration register address exceed maximum allowed @retval EFI_INVALID_PARAMETER Slave configuration register address is not DWord aligned @retval EFI_ACCESS_DENIED eSPI Slave write to address range 0 to 0x7FF has been locked @retval EFI_DEVICE_ERROR Error in SCRS during polling stage of operation **/ EFI_STATUS PchEspiSlaveSetConfig ( IN UINT32 SlaveId, IN UINT32 SlaveAddress, IN UINT32 InData ); /** Get status from eSPI slave @param[in] SlaveId eSPI slave ID @param[out] OutData Configuration data read @retval EFI_SUCCESS Operation succeed @retval EFI_INVALID_PARAMETER Slave ID is not supported or SlaveId 1 is used in PchLp @retval EFI_DEVICE_ERROR Error in SCRS during polling stage of operation **/ EFI_STATUS PchEspiSlaveGetStatus ( IN UINT32 SlaveId, OUT UINT16 *OutData ); /** eSPI slave in-band reset @param[in] SlaveId eSPI slave ID @retval EFI_SUCCESS Operation succeed @retval EFI_INVALID_PARAMETER Slave ID is not supported or SlaveId 1 is used in PchLp @retval EFI_DEVICE_ERROR Error in SCRS during polling stage of operation **/ EFI_STATUS PchEspiSlaveInBandReset ( IN UINT32 SlaveId ); #endif // _PEI_DXE_SMM_PCH_ESPI_LIB_H_