blob: ac3ad4862db8b0c0c7d75172e5420afe46be9153 [file]
/** @file
Manageability transport Serial internal used definitions.
Copyright (c) 2024, ARM Limited. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef MANAGEABILITY_TRANSPORT_SERIAL_LIB_H_
#define MANAGEABILITY_TRANSPORT_SERIAL_LIB_H_
#include <IndustryStandard/IpmiNetFnApp.h>
#include <Library/ManageabilityTransportIpmiLib.h>
#include <Library/ManageabilityTransportLib.h>
#include <IndustryStandard/IpmiSerial.h>
#define MANAGEABILITY_TRANSPORT_SERIAL_SIGNATURE SIGNATURE_32 ('M', 'T', 'S', 'E')
///
/// Manageability transport Serial internal data structure.
///
typedef struct {
UINTN Signature;
MANAGEABILITY_TRANSPORT_TOKEN Token;
} MANAGEABILITY_TRANSPORT_SERIAL;
#define MANAGEABILITY_TRANSPORT_SERIAL_FROM_LINK(a) CR (a, MANAGEABILITY_TRANSPORT_SERIAL, Token, MANAGEABILITY_TRANSPORT_SERIAL_SIGNATURE)
///
/// IPMI Serial Configure
///
#define IPMI_SERIAL_RS_ADDRESS FixedPcdGet8 (PcdIpmiSerialResponderAddress)
#define IPMI_SERIAL_RQ_ADDRESS FixedPcdGet8 (PcdIpmiSerialRequesterAddress)
#define IPMI_SERIAL_RS_LUN FixedPcdGet8 (PcdIpmiSerialResponderLun)
#define IPMI_SERIAL_RQ_LUN FixedPcdGet8 (PcdIpmiSerialRequesterLun)
#define IPMI_SERIAL_RETRY_COUNT FixedPcdGet8 (PcdIpmiSerialRequestRetryCount)
#define IPMI_SERIAL_REQUEST_RETRY_INTERVAL FixedPcdGet32 (PcdIpmiSerialRequestRetryInterval)
#define IPMI_SERIAL_RESPONSE_RETRY_INTERVAL FixedPcdGet32 (PcdIpmiSerialRequestRetryInterval)
///
/// Table of special characters
///
typedef struct {
UINT8 Character;
UINT8 Escape;
} IPMI_SERIAL_SPECIAL_CHAR;
/**
This service communicates with BMC using Serial protocol.
@param[in] TransmitHeader Serial packet header.
@param[in] TransmitHeaderSize Serial packet header size in byte.
@param[in] TransmitTrailer Serial packet trailer.
@param[in] TransmitTrailerSize Serial packet trailer size in byte.
@param[in] RequestData Command Request Data.
@param[in] RequestDataSize Size of Command Request Data.
@param[out] ResponseData Command Response Data. The completion
code is the first byte of response
data.
@param[in, out] ResponseDataSize Size of Command Response Data.
@param[out] AdditionalStatus Additional status of this transaction.
@retval EFI_SUCCESS The command byte stream was
successfully submit to the device and a
response was successfully received.
@retval EFI_NOT_FOUND The command was not successfully sent
to the device or a response was not
successfully received from the device.
@retval EFI_NOT_READY Ipmi Device is not ready for Ipmi
command access.
@retval EFI_DEVICE_ERROR Ipmi Device hardware error.
@retval EFI_TIMEOUT The command time out.
@retval EFI_UNSUPPORTED The command was not successfully sent to
the device.
@retval EFI_OUT_OF_RESOURCES The resource allocation is out of
resource or data size error.
**/
EFI_STATUS
EFIAPI
SerialTransportSendCommand (
IN MANAGEABILITY_TRANSPORT_HEADER TransmitHeader OPTIONAL,
IN UINT16 TransmitHeaderSize,
IN MANAGEABILITY_TRANSPORT_TRAILER TransmitTrailer OPTIONAL,
IN UINT16 TransmitTrailerSize,
IN UINT8 *RequestData OPTIONAL,
IN UINT32 RequestDataSize,
OUT UINT8 *ResponseData OPTIONAL,
IN OUT UINT32 *ResponseDataSize OPTIONAL,
OUT MANAGEABILITY_TRANSPORT_ADDITIONAL_STATUS *AdditionalStatus
);
#endif