/** @file Common EC commands. Copyright (c) 2019 - 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include #include #include /** 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 ) { UINT8 DataSize; UINT8 DataBuffer[1]; EFI_STATUS Status; if (Data == NULL) { return EFI_INVALID_PARAMETER; } // Prepare arguments for LpcEcInterface() DataSize = 1; DataBuffer[0] = Address; Status = LpcEcInterface (EC_C_ACPI_READ, &DataSize, DataBuffer); if (EFI_ERROR(Status)) { return Status; } // Write caller's pointer from returned data and return success *Data = DataBuffer[0]; return EFI_SUCCESS; } /** 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 ) { UINT8 DataSize; UINT8 DataBuffer[2]; // Prepare arguments for LpcEcInterface() DataSize = 2; DataBuffer[0] = Address; DataBuffer[1] = Data; return LpcEcInterface (EC_C_ACPI_WRITE, &DataSize, DataBuffer); }