mirror of
https://github.com/tianocore/edk2
synced 2026-08-27 00:23:19 -04:00
Update recent changes in ManageabilityPkg to follow the latest EDK II C Coding Standards Specification (5.3) to use '#pragma once' instead of traditional macro-based include guards in header files. https://tianocore-docs.github.io/edk2-CCodingStandardsSpecification/draft/5_source_files/53_include_files.html#53-include-files Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
117 lines
5.8 KiB
C
117 lines
5.8 KiB
C
/** @file
|
|
|
|
EDKII PLDM Protocol common header file.
|
|
|
|
Copyright (C) 2023-2026 Advanced Micro Devices, Inc. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
**/
|
|
|
|
#pragma once
|
|
|
|
#include <IndustryStandard/Pldm.h>
|
|
#include <Library/ManageabilityTransportLib.h>
|
|
|
|
#define GET_PLDM_MESSAGE_PAYLOAD_SIZE(PayloadSize) (PayloadSize - sizeof (PLDM_RESPONSE_HEADER))
|
|
#define GET_PLDM_MESSAGE_PAYLOAD_PTR(PayloadPtr) ((UINT8 *)PayloadPtr + sizeof (PLDM_RESPONSE_HEADER))
|
|
|
|
typedef struct {
|
|
UINT8 PldmType;
|
|
UINT8 PldmCommand;
|
|
UINT32 ResponseSize;
|
|
} PLDM_MESSAGE_PACKET_MAPPING;
|
|
|
|
/**
|
|
This functions setup the PLDM transport hardware information according
|
|
to the specification of transport token acquired from transport library.
|
|
|
|
@param[in] TransportToken The transport interface.
|
|
@param[out] HardwareInformation Pointer to receive the hardware information.
|
|
|
|
@retval EFI_SUCCESS Hardware information is returned in HardwareInformation.
|
|
Caller must free the memory allocated for HardwareInformation
|
|
once it doesn't need it.
|
|
@retval EFI_UNSUPPORTED No hardware information for the specification specified
|
|
in the transport token.
|
|
**/
|
|
EFI_STATUS
|
|
SetupPldmTransportHardwareInformation (
|
|
IN MANAGEABILITY_TRANSPORT_TOKEN *TransportToken,
|
|
OUT MANAGEABILITY_TRANSPORT_HARDWARE_INFORMATION *HardwareInformation
|
|
);
|
|
|
|
/**
|
|
This functions setup the final header/body/trailer packets for
|
|
the acquired transport interface.
|
|
|
|
@param[in] TransportToken The transport interface.
|
|
@param[in] PldmType PLDM message type.
|
|
@param[in] PldmCommand PLDM command of this PLDM type.
|
|
@param[in] SourceId PLDM source terminus ID.
|
|
@param[in] DestinationId PLDM destination terminus ID.
|
|
@param[out] PacketHeader The pointer to receive header of request.
|
|
@param[out] PacketHeaderSize Packet header size in bytes.
|
|
@param[in, out] PacketBody The request body.
|
|
When IN, it is the caller's request body.
|
|
When OUT and NULL, the request body is not
|
|
changed.
|
|
Whee out and non-NULL, the request body is
|
|
changed to comfort the transport interface.
|
|
@param[in, out] PacketBodySize The request body size.
|
|
When IN and non-zero, it is the new data
|
|
length of request body.
|
|
When IN and zero, the request body is unchanged.
|
|
@param[out] PacketTrailer The pointer to receive trailer of request.
|
|
@param[out] PacketTrailerSize Packet trailer size in bytes.
|
|
|
|
@retval EFI_SUCCESS Request packet is returned.
|
|
@retval EFI_UNSUPPORTED Request packet is not returned because
|
|
the unsupported transport interface.
|
|
**/
|
|
EFI_STATUS
|
|
SetupPldmRequestTransportPacket (
|
|
IN MANAGEABILITY_TRANSPORT_TOKEN *TransportToken,
|
|
IN UINT8 PldmType,
|
|
IN UINT8 PldmCommand,
|
|
IN UINT8 SourceId,
|
|
IN UINT8 DestinationId,
|
|
OUT MANAGEABILITY_TRANSPORT_HEADER *PacketHeader,
|
|
OUT UINT16 *PacketHeaderSize,
|
|
IN OUT UINT8 **PacketBody,
|
|
IN OUT UINT32 *PacketBodySize,
|
|
OUT MANAGEABILITY_TRANSPORT_TRAILER *PacketTrailer,
|
|
OUT UINT16 *PacketTrailerSize
|
|
);
|
|
|
|
/**
|
|
Common code to submit PLDM commands
|
|
|
|
@param[in] TransportToken Transport token.
|
|
@param[in] PldmType PLDM message type.
|
|
@param[in] PldmCommand PLDM command of this PLDM type.
|
|
@param[in] PldmTerminusSourceId PLDM source terminus ID.
|
|
@param[in] PldmTerminusDestinationId PLDM destination terminus ID.
|
|
@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.
|
|
|
|
@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 PLDM transport interface is not ready for PLDM command access.
|
|
@retval EFI_DEVICE_ERROR PLDM 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
|
|
CommonPldmSubmitCommand (
|
|
IN MANAGEABILITY_TRANSPORT_TOKEN *TransportToken,
|
|
IN UINT8 PldmType,
|
|
IN UINT8 PldmCommand,
|
|
IN UINT8 PldmTerminusSourceId,
|
|
IN UINT8 PldmTerminusDestinationId,
|
|
IN UINT8 *RequestData OPTIONAL,
|
|
IN UINT32 RequestDataSize,
|
|
OUT UINT8 *ResponseData OPTIONAL,
|
|
IN OUT UINT32 *ResponseDataSize
|
|
);
|