--- /dev/null
+/** @file\r
+ This library abstract how to send/receive IPMI command.\r
+\r
+Copyright (c) 2018-2021, Intel Corporation. All rights reserved.<BR>\r
+Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR>\r
+\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+**/\r
+\r
+#ifndef IPMI_COMMAND_LIB_H_\r
+#define IPMI_COMMAND_LIB_H_\r
+\r
+#include <Uefi.h>\r
+#include <IndustryStandard/Ipmi.h>\r
+\r
+//\r
+// IPMI NetFnApp\r
+//\r
+\r
+/**\r
+ This function gets the IPMI Device ID.\r
+\r
+ @param[out] DeviceId Get device ID response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetDeviceId (\r
+ OUT IPMI_GET_DEVICE_ID_RESPONSE *DeviceId\r
+ );\r
+\r
+/**\r
+ This function gets the self-test result.\r
+\r
+ @param[out] SelfTestResult Self test command response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetSelfTestResult (\r
+ OUT IPMI_SELF_TEST_RESULT_RESPONSE *SelfTestResult\r
+ );\r
+\r
+/**\r
+ This function resets watchdog timer.\r
+\r
+ @param[out] CompletionCode The command completion code.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiResetWatchdogTimer (\r
+ OUT UINT8 *CompletionCode\r
+ );\r
+\r
+/**\r
+ This function sets watchdog timer.\r
+\r
+ @param[in] SetWatchdogTimer Set watchdog timer request.\r
+ @param[out] CompletionCode The command completion code.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiSetWatchdogTimer (\r
+ IN IPMI_SET_WATCHDOG_TIMER_REQUEST *SetWatchdogTimer,\r
+ OUT UINT8 *CompletionCode\r
+ );\r
+\r
+/**\r
+ This function gets watchdog timer.\r
+\r
+ @param[out] GetWatchdogTimer Get watchdog timer response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetWatchdogTimer (\r
+ OUT IPMI_GET_WATCHDOG_TIMER_RESPONSE *GetWatchdogTimer\r
+ );\r
+\r
+/**\r
+ This function sets BMC global enables.\r
+\r
+ @param[in] SetBmcGlobalEnables Set BMC global enables command request.\r
+ @param[out] CompletionCode The command completion code.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiSetBmcGlobalEnables (\r
+ IN IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST *SetBmcGlobalEnables,\r
+ OUT UINT8 *CompletionCode\r
+ );\r
+\r
+/**\r
+ This function gets BMC global enables.\r
+\r
+ @param[out] GetBmcGlobalEnables Get BMC global enables command response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetBmcGlobalEnables (\r
+ OUT IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE *GetBmcGlobalEnables\r
+ );\r
+\r
+/**\r
+ This function clears message flag.\r
+\r
+ @param[in] ClearMessageFlagsRequest Clear message flags command request.\r
+ @param[out] CompletionCode The command completion code.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiClearMessageFlags (\r
+ IN IPMI_CLEAR_MESSAGE_FLAGS_REQUEST *ClearMessageFlagsRequest,\r
+ OUT UINT8 *CompletionCode\r
+ );\r
+\r
+/**\r
+ This function gets message flag.\r
+\r
+ @param[out] GetMessageFlagsResponse Get message flags response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetMessageFlags (\r
+ OUT IPMI_GET_MESSAGE_FLAGS_RESPONSE *GetMessageFlagsResponse\r
+ );\r
+\r
+/**\r
+ This function gets message.\r
+\r
+ @param[out] GetMessageResponse Get message command response.\r
+ @param[in,out] GetMessageResponseSize The size of get message response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetMessage (\r
+ OUT IPMI_GET_MESSAGE_RESPONSE *GetMessageResponse,\r
+ IN OUT UINT32 *GetMessageResponseSize\r
+ );\r
+\r
+/**\r
+ This function sends message.\r
+\r
+ @param[in] SendMessageRequest The send message command request.\r
+ @param[in] SendMessageRequestSize The size of the send message command request.\r
+ @param[out] SendMessageResponse The send message command response.\r
+ @param[in,out] SendMessageResponseSize The size of the send message command response.\r
+ When input, the expected size of response.\r
+ When output, the actual size of response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiSendMessage (\r
+ IN IPMI_SEND_MESSAGE_REQUEST *SendMessageRequest,\r
+ IN UINT32 SendMessageRequestSize,\r
+ OUT IPMI_SEND_MESSAGE_RESPONSE *SendMessageResponse,\r
+ IN OUT UINT32 *SendMessageResponseSize\r
+ );\r
+\r
+/**\r
+ This function gets the system UUID.\r
+\r
+ @param[out] SystemGuid The pointer to retrieve system UUID.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Others Other errors.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetSystemUuid (\r
+ OUT EFI_GUID *SystemGuid\r
+ );\r
+\r
+/**\r
+ This function gets the channel information.\r
+\r
+ @param[in] GetChannelInfoRequest The get channel information request.\r
+ @param[in] GetChannelInfoResponse The get channel information response.\r
+ @param[in,out] GetChannelInfoResponseSize When input, the expected size of response.\r
+ When output, the exact size of the returned\r
+ response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetChannelInfo (\r
+ IN IPMI_GET_CHANNEL_INFO_REQUEST *GetChannelInfoRequest,\r
+ OUT IPMI_GET_CHANNEL_INFO_RESPONSE *GetChannelInfoResponse,\r
+ OUT UINT32 *GetChannelInfoResponseSize\r
+ );\r
+\r
+//\r
+// IPMI NetFnTransport\r
+//\r
+\r
+/**\r
+ This function activates SOL\r
+\r
+ @param[in] SolActivatingRequest SOL activating request.\r
+ @param[out] CompletionCode The command completion code.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiSolActivating (\r
+ IN IPMI_SOL_ACTIVATING_REQUEST *SolActivatingRequest,\r
+ OUT UINT8 *CompletionCode\r
+ );\r
+\r
+/**\r
+ This function sets SOL configuration parameters.\r
+\r
+ @param[in] SetConfigurationParametersRequest Set SOL configuration parameters\r
+ command request.\r
+ @param[in] SetConfigurationParametersRequestSize Size of the set SOL configuration\r
+ parameters command request.\r
+ @param[out] CompletionCode The command completion code.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiSetSolConfigurationParameters (\r
+ IN IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST *SetConfigurationParametersRequest,\r
+ IN UINT32 SetConfigurationParametersRequestSize,\r
+ OUT UINT8 *CompletionCode\r
+ );\r
+\r
+/**\r
+ This function gets SOL configuration parameters.\r
+\r
+ @param[in] GetConfigurationParametersRequest Get SOL configuration parameters\r
+ command request.\r
+ @param[out] GetConfigurationParametersResponse Get SOL configuration parameters\r
+ response.\r
+ @param[in,out] GetConfigurationParametersResponseSize When input, the size of the expected\r
+ response.\r
+ When output, the exact size of\r
+ expect response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetSolConfigurationParameters (\r
+ IN IPMI_GET_SOL_CONFIGURATION_PARAMETERS_REQUEST *GetConfigurationParametersRequest,\r
+ OUT IPMI_GET_SOL_CONFIGURATION_PARAMETERS_RESPONSE *GetConfigurationParametersResponse,\r
+ IN OUT UINT32 *GetConfigurationParametersResponseSize\r
+ );\r
+\r
+/**\r
+ This function gets the LAN configuration parameter.\r
+\r
+ @param[in] GetLanConfigurationParametersRequest Get LAN configuration parameters command request.\r
+ @param[in] GetLanConfigurationParametersResponse The response of the get LAN configuration parameters.\r
+ @param[in,out] GetLanConfigurationParametersSize When input, the expected size of response data.\r
+ When out, the exact size of response data.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetLanConfigurationParameters (\r
+ IN IPMI_GET_LAN_CONFIGURATION_PARAMETERS_REQUEST *GetLanConfigurationParametersRequest,\r
+ OUT IPMI_GET_LAN_CONFIGURATION_PARAMETERS_RESPONSE *GetLanConfigurationParametersResponse,\r
+ IN OUT UINT32 *GetLanConfigurationParametersSize\r
+ );\r
+\r
+//\r
+// IPMI NetFnChassis\r
+//\r
+\r
+/**\r
+ This function gets chassis capability.\r
+\r
+ @param[out] GetChassisCapabilitiesResponse Gets chassis capability command response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetChassisCapabilities (\r
+ OUT IPMI_GET_CHASSIS_CAPABILITIES_RESPONSE *GetChassisCapabilitiesResponse\r
+ );\r
+\r
+/**\r
+ This function gets chassis status.\r
+\r
+ @param[out] GetChassisCapabilitiesResponse The get chassis status command response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetChassisStatus (\r
+ OUT IPMI_GET_CHASSIS_STATUS_RESPONSE *GetChassisStatusResponse\r
+ );\r
+\r
+/**\r
+ This function sends chassis control request.\r
+\r
+ @param[in] ChassisControlRequest The chassis control request.\r
+ @param[out] CompletionCode The command completion code.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiChassisControl (\r
+ IN IPMI_CHASSIS_CONTROL_REQUEST *ChassisControlRequest,\r
+ OUT UINT8 *CompletionCode\r
+ );\r
+\r
+/**\r
+ This function sets power restore policy.\r
+\r
+ @param[in] SetPowerRestireRequest The set power restore policy control\r
+ command request.\r
+ @param[out] SetPowerRestireResponse The response of power restore policy.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiSetPowerRestorePolicy (\r
+ IN IPMI_SET_POWER_RESTORE_POLICY_REQUEST *SetPowerRestireRequest,\r
+ OUT IPMI_SET_POWER_RESTORE_POLICY_RESPONSE *SetPowerRestireResponse\r
+ );\r
+\r
+//\r
+// IPMI NetFnStorage\r
+//\r
+\r
+/**\r
+ This function sets system boot option.\r
+\r
+ @param[in] BootOptionsRequest Set system boot option request.\r
+ @param[out] BootOptionsResponse The response of set system boot\r
+ option request.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiSetSystemBootOptions (\r
+ IN IPMI_SET_BOOT_OPTIONS_REQUEST *BootOptionsRequest,\r
+ OUT IPMI_SET_BOOT_OPTIONS_RESPONSE *BootOptionsResponse\r
+ );\r
+\r
+/**\r
+ This function gets system boot option.\r
+\r
+ @param[in] BootOptionsRequest Get system boot option request.\r
+ @param[out] BootOptionsResponse The response of get system boot\r
+ option request.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetSystemBootOptions (\r
+ IN IPMI_GET_BOOT_OPTIONS_REQUEST *BootOptionsRequest,\r
+ OUT IPMI_GET_BOOT_OPTIONS_RESPONSE *BootOptionsResponse\r
+ );\r
+\r
+/**\r
+ This function gets FRU inventory area info.\r
+\r
+ @param[in] GetFruInventoryAreaInfoRequest Get FRU inventory area command request.\r
+ @param[out] GetFruInventoryAreaInfoResponse get FRU inventory area command response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetFruInventoryAreaInfo (\r
+ IN IPMI_GET_FRU_INVENTORY_AREA_INFO_REQUEST *GetFruInventoryAreaInfoRequest,\r
+ OUT IPMI_GET_FRU_INVENTORY_AREA_INFO_RESPONSE *GetFruInventoryAreaInfoResponse\r
+ );\r
+\r
+/**\r
+ This function reads FRU data.\r
+\r
+ @param[in] ReadFruDataRequest Read FRU data command request.\r
+ @param[out] ReadFruDataResponse Read FRU data command response.\r
+ @param[in,out] ReadFruDataResponseSize Size of the read FRU data response.\r
+ When input, the expected size of response data.\r
+ When out, the exact size of response data.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiReadFruData (\r
+ IN IPMI_READ_FRU_DATA_REQUEST *ReadFruDataRequest,\r
+ OUT IPMI_READ_FRU_DATA_RESPONSE *ReadFruDataResponse,\r
+ IN OUT UINT32 *ReadFruDataResponseSize\r
+ );\r
+\r
+/**\r
+ This function gets chassis capability.\r
+\r
+ @param[in] WriteFruDataRequest Write FRU data command request.\r
+ @param[in] WriteFruDataRequestSize Size of the write FRU data command request.\r
+ @param[out] WriteFruDataResponse Write FRU data response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiWriteFruData (\r
+ IN IPMI_WRITE_FRU_DATA_REQUEST *WriteFruDataRequest,\r
+ IN UINT32 WriteFruDataRequestSize,\r
+ OUT IPMI_WRITE_FRU_DATA_RESPONSE *WriteFruDataResponse\r
+ );\r
+\r
+/**\r
+ This function gets SEL information.\r
+\r
+ @param[out] GetSelInfoResponse Get SEL information command response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetSelInfo (\r
+ OUT IPMI_GET_SEL_INFO_RESPONSE *GetSelInfoResponse\r
+ );\r
+\r
+/**\r
+ This function gets SEL entry.\r
+\r
+ @param[in] GetSelEntryRequest Get SEL entry command request.\r
+ @param[out] GetSelEntryResponse Get SEL entry command response.\r
+ @param[in,out] GetSelEntryResponseSize Size of Get SEL entry request.\r
+ When input, the expected size of response data.\r
+ When out, the exact size of response data.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetSelEntry (\r
+ IN IPMI_GET_SEL_ENTRY_REQUEST *GetSelEntryRequest,\r
+ OUT IPMI_GET_SEL_ENTRY_RESPONSE *GetSelEntryResponse,\r
+ IN OUT UINT32 *GetSelEntryResponseSize\r
+ );\r
+\r
+/**\r
+ This function adds SEL entry.\r
+\r
+ @param[in] AddSelEntryRequest Add SEL entry command request.\r
+ @param[out] AddSelEntryResponse Add SEL entry command response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiAddSelEntry (\r
+ IN IPMI_ADD_SEL_ENTRY_REQUEST *AddSelEntryRequest,\r
+ OUT IPMI_ADD_SEL_ENTRY_RESPONSE *AddSelEntryResponse\r
+ );\r
+\r
+/**\r
+ This function partially adds SEL entry.\r
+\r
+ @param[in] PartialAddSelEntryRequest Partial add SEL entry command request.\r
+ @param[in] PartialAddSelEntryRequestSize Size of partial add SEL entry command request.\r
+ @param[out] PartialAddSelEntryResponse Partial add SEL entry command response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiPartialAddSelEntry (\r
+ IN IPMI_PARTIAL_ADD_SEL_ENTRY_REQUEST *PartialAddSelEntryRequest,\r
+ IN UINT32 PartialAddSelEntryRequestSize,\r
+ OUT IPMI_PARTIAL_ADD_SEL_ENTRY_RESPONSE *PartialAddSelEntryResponse\r
+ );\r
+\r
+/**\r
+ This function clears SEL entry.\r
+\r
+ @param[in] ClearSelRequest Clear SEL command request.\r
+ @param[out] ClearSelResponse Clear SEL command response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiClearSel (\r
+ IN IPMI_CLEAR_SEL_REQUEST *ClearSelRequest,\r
+ OUT IPMI_CLEAR_SEL_RESPONSE *ClearSelResponse\r
+ );\r
+\r
+/**\r
+ This function gets SEL time.\r
+\r
+ @param[out] GetSelTimeResponse Get SEL time command response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetSelTime (\r
+ OUT IPMI_GET_SEL_TIME_RESPONSE *GetSelTimeResponse\r
+ );\r
+\r
+/**\r
+ This function sets SEL time.\r
+\r
+ @param[in] SetSelTimeRequest Set SEL time command request.\r
+ @param[out] CompletionCode Command completion code.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiSetSelTime (\r
+ IN IPMI_SET_SEL_TIME_REQUEST *SetSelTimeRequest,\r
+ OUT UINT8 *CompletionCode\r
+ );\r
+\r
+/**\r
+ This function gets SDR repository information.\r
+\r
+ @param[out] GetSdrRepositoryInfoResp Get SDR repository response.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetSdrRepositoryInfo (\r
+ OUT IPMI_GET_SDR_REPOSITORY_INFO_RESPONSE *GetSdrRepositoryInfoResp\r
+ );\r
+\r
+/**\r
+ This function gets SDR\r
+\r
+ @param[in] GetSdrRequest Get SDR resquest.\r
+ @param[out] GetSdrResponse Get SDR response.\r
+ @param[in,out] GetSdrResponseSize The size of get SDR response.\r
+ When input, the expected size of response data.\r
+ When out, the exact size of response data.\r
+\r
+ @retval EFI_SUCCESS Command is sent successfully.\r
+ @retval EFI_NOT_AVAILABLE_YET Transport interface is not ready yet.\r
+ @retval Other Failure.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+IpmiGetSdr (\r
+ IN IPMI_GET_SDR_REQUEST *GetSdrRequest,\r
+ OUT IPMI_GET_SDR_RESPONSE *GetSdrResponse,\r
+ IN OUT UINT32 *GetSdrResponseSize\r
+ );\r
+\r
+#endif\r