/** @file
KCS Transport Hook head file.
Copyright (c) 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _EFI_KCS_BMC_H
#define _EFI_KCS_BMC_H
#include
#include
#include
#define KCS_WRITE_START 0x61
#define KCS_WRITE_END 0x62
#define KCS_READ 0x68
#define KCS_GET_STATUS 0x60
#define KCS_ABORT 0x60
#define KCS_DELAY_UNIT 50 // [s] Each KSC IO delay
#define KCS_ABORT_RETRY_COUNT 1
typedef enum {
KcsIdleState,
KcsReadState,
KcsWriteState,
KcsErrorState
} KCS_STATE;
typedef union {
UINT8 RawData;
struct {
UINT8 Obf : 1;
UINT8 Ibf : 1;
UINT8 SmAtn : 1;
UINT8 CD : 1;
UINT8 Oem1 : 1;
UINT8 Oem2 : 1;
UINT8 State : 2;
} Status;
} EFI_KCS_STATUS;
//
//External Fucntion List
//
EFI_STATUS
SendDataToBmcPort (
UINT64 KcsTimeoutPeriod,
UINT16 KcsPort,
UINT8 *Data,
UINT8 DataSize
)
/*++
Routine Description:
Send data to BMC
Arguments:
Data - The data pointer to be sent
DataSize - The data size
Returns:
EFI_SUCCESS - Send out the data successfully
--*/
;
EFI_STATUS
ReceiveBmcDataFromPort (
UINT64 KcsTimeoutPeriod,
UINT16 KcsPort,
UINT8 *Data,
UINT8 *DataSize
)
/*++
Routine Description:
Routine Description:
Receive data from BMC
Arguments:
Data - The buffer pointer
DataSize - The buffer size
Returns:
EFI_SUCCESS - Received data successfully
--*/
;
//
//Internal Fucntion List
//
EFI_STATUS
KcsErrorExit (
UINT64 KcsTimeoutPeriod,
UINT16 KcsPort
)
/*++
Routine Description:
Check the KCS error status
Arguments:
KcsPort - The base port of KCS
Returns:
EFI_DEVICE_ERROR - The device error happened
EFI_SUCCESS - Successfully check the KCS error status
--*/
;
EFI_STATUS
KcsCheckStatus (
UINT64 KcsTimeoutPeriod,
UINT16 KcsPort,
KCS_STATE KcsState,
BOOLEAN *Idle
)
/*++
Routine Description:
Ckeck KCS status
Arguments:
KcsPort - The base port of KCS
KcsState - The state of KCS to be checked
Idle - If the KCS is idle
Context - The context for this operation
Returns:
EFI_SUCCESS - Checked the KCS status successfully
--*/
;
EFI_STATUS
SendDataToBmc (
UINT64 KcsTimeoutPeriod,
UINT16 KcsPort,
UINT8 *Data,
UINT8 DataSize
)
/*++
Routine Description:
Send data to BMC
Arguments:
Data - The data pointer to be sent
DataSize - The data size
Returns:
EFI_SUCCESS - Send out the data successfully
--*/
;
EFI_STATUS
ReceiveBmcData (
UINT64 KcsTimeoutPeriod,
UINT16 KcsPort,
UINT8 *Data,
UINT8 *DataSize
)
/*++
Routine Description:
Routine Description:
Receive data from BMC
Arguments:
Data - The buffer pointer
DataSize - The buffer size
Returns:
EFI_SUCCESS - Received data successfully
--*/
;
#endif