/** @file Generic IPMI stack head file during PEI phase @copyright Copyright 2017 - 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _PEI_IPMI_INIT_H_ #define _PEI_IPMI_INIT_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include "PeiIpmiBmcDef.h" #include "PeiIpmiBmc.h" // // Prototypes // #define MBXDAT_B 0x0B #define BMC_KCS_TIMEOUT_PEI 5 // [s] Single KSC request timeout #define KCS_DELAY_UNIT_PEI 1000 // [s] Each KSC IO delay #define IPMI_DEFAULT_IO_BASE 0xCA2 // // Internal(hook) function list // EFI_STATUS SendPreBootSignaltoBmc ( IN CONST EFI_PEI_SERVICES **PeiServices ) /*++ Routine Description: Send Pre-Boot signal to BMC Arguments: PeiServices - General purpose services available to every PEIM. Returns: EFI_SUCCESS - Success --*/ ; EFI_STATUS PeiIpmiSendCommand ( IN PEI_IPMI_TRANSPORT_PPI *This, IN UINT8 NetFunction, IN UINT8 Lun, IN UINT8 Command, IN UINT8 *CommandData, IN UINT32 CommandDataSize, IN OUT UINT8 *ResponseData, IN OUT UINT32 *ResponseDataSize ) /*++ Routine Description: Send IPMI command to BMC Arguments: This - Pointer to IPMI protocol instance NetFunction - Net Function of command to send Lun - LUN of command to send Command - IPMI command to send CommandData - Pointer to command data buffer, if needed CommandDataSize - Size of command data buffer ResponseData - Pointer to response data buffer ResponseDataSize - Pointer to response data buffer size Returns: EFI_INVALID_PARAMETER - One of the input values is bad EFI_DEVICE_ERROR - IPMI command failed EFI_BUFFER_TOO_SMALL - Response buffer is too small EFI_UNSUPPORTED - Command is not supported by BMC EFI_SUCCESS - Command completed successfully --*/ ; EFI_STATUS PeiGetIpmiBmcStatus ( IN PEI_IPMI_TRANSPORT_PPI *This, OUT BMC_STATUS *BmcStatus, OUT SM_COM_ADDRESS *ComAddress ) /*++ Routine Description: Updates the BMC status and returns the Com Address Arguments: This - Pointer to IPMI protocol instance BmcStatus - BMC status ComAddress - Com Address Returns: EFI_SUCCESS - Success --*/ ; // // internal function list // EFI_STATUS GetDeviceId ( IN PEI_IPMI_BMC_INSTANCE_DATA *mIpmiInstance ) /*++ Routine Description: Execute the Get Device ID command to determine whether or not the BMC is in Force Update Mode. If it is, then report it to the error manager. Arguments: mIpmiInstance - Data structure describing BMC variables and used for sending commands StatusCodeValue - An array used to accumulate error codes for later reporting. ErrorCount - Counter used to keep track of error codes in StatusCodeValue Returns: Status --*/ ; #endif //_PEI_IPMI_INIT_H_