/** @file EC library functions and definitions. This library provides basic EC interface. There may be different libraries for different environments (PEI, BS, RT, SMM). Make sure you meet the requirements for the library (protocol dependencies, use restrictions, etc). Copyright (c) 2019 - 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _BASE_EC_LIB_H_ #define _BASE_EC_LIB_H_ // // Include files // #include #include #include // // Function declarations // /** Send a command to the Keyboard System Controller. @param[in] Command Command byte to send @retval EFI_SUCCESS Command success @retval EFI_TIMEOUT Command timeout @retval Other Command failed **/ EFI_STATUS SendEcCommand ( IN UINT8 Command ); /** Sends data to Keyboard System Controller. @param[in] Data Data byte to send @retval EFI_SUCCESS Success @retval EFI_TIMEOUT Timeout @retval Other Failed **/ EFI_STATUS SendEcData ( IN UINT8 Data ); /** Receives data from Keyboard System Controller. @param[out] Data Data byte received @retval EFI_SUCCESS Read success @retval EFI_TIMEOUT Read timeout @retval Other Read failed **/ EFI_STATUS ReceiveEcData ( OUT UINT8 *Data ); /** Receives status from Keyboard System Controller. @param[out] Status Status byte to receive @retval EFI_SUCCESS Success @retval Other Failed **/ EFI_STATUS ReceiveEcStatus ( OUT UINT8 *EcStatus ); /** Send data to EC through LPC interface. @param[in] Command Command value to send to the EC @param[in][out] DataSize Size of data to send to the EC. If the command retuned data - size of buffer returned by the EC. Be aware of the DataSize must euqal to size of DataBuffer and cannot smaller than number of send data or number of receive data, whichever is the grater. @param[in][out] DataBuffer Pointer to the data buffer including data to be sent to the EC. If the command returned data - pointer to the buffer including the data. The buffer size should be the max of receive and transmit data. @retval EFI_SUCCESS Success @retval Other Failed - EFI_TIMEOUT, EFI_INVALID_PARAMETER, EFI_UNSUPPORTED, EFI_BUFFER_TOO_SMALL, etc. **/ EFI_STATUS LpcEcInterface ( IN UINT8 Command, IN OUT UINT8 *DataSize, IN OUT UINT8 *DataBuffer ); /** Read a byte of EC RAM. @param[in] Address Address to read @param[out] Data Data received @retval EFI_SUCCESS Command success @retval EFI_INVALID_PARAMETER Data is NULL @retval EFI_DEVICE_ERROR Command error @retval EFI_TIMEOUT Command timeout **/ EFI_STATUS EcRead ( IN UINT8 Address, OUT UINT8 *Data ); /** Write a byte of EC RAM. @param[in] Address Address to write @param[in] Data Data to write @retval EFI_SUCCESS Command success @retval EFI_DEVICE_ERROR Command error @retval EFI_TIMEOUT Command timeout **/ EFI_STATUS EcWrite ( IN UINT8 Address, IN UINT8 Data ); #endif