/** @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_