/** @file
IPMI Command - NetFnStorage.
Copyright (c) 2018 - 2021, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include
#include
#include
#include
#include
EFI_STATUS
EFIAPI
IpmiGetFruInventoryAreaInfo (
IN IPMI_GET_FRU_INVENTORY_AREA_INFO_REQUEST *GetFruInventoryAreaInfoRequest,
OUT IPMI_GET_FRU_INVENTORY_AREA_INFO_RESPONSE *GetFruInventoryAreaInfoResponse
)
{
EFI_STATUS Status;
UINT32 DataSize;
DataSize = sizeof(*GetFruInventoryAreaInfoResponse);
Status = IpmiSubmitCommand (
IPMI_NETFN_STORAGE,
IPMI_STORAGE_GET_FRU_INVENTORY_AREAINFO,
(VOID *)GetFruInventoryAreaInfoRequest,
sizeof(*GetFruInventoryAreaInfoRequest),
(VOID *)GetFruInventoryAreaInfoResponse,
&DataSize
);
return Status;
}
EFI_STATUS
EFIAPI
IpmiReadFruData (
IN IPMI_READ_FRU_DATA_REQUEST *ReadFruDataRequest,
OUT IPMI_READ_FRU_DATA_RESPONSE *ReadFruDataResponse,
IN OUT UINT32 *ReadFruDataResponseSize
)
{
EFI_STATUS Status;
Status = IpmiSubmitCommand (
IPMI_NETFN_STORAGE,
IPMI_STORAGE_READ_FRU_DATA,
(VOID *)ReadFruDataRequest,
sizeof(*ReadFruDataRequest),
(VOID *)ReadFruDataResponse,
ReadFruDataResponseSize
);
return Status;
}
EFI_STATUS
EFIAPI
IpmiWriteFruData (
IN IPMI_WRITE_FRU_DATA_REQUEST *WriteFruDataRequest,
IN UINT32 WriteFruDataRequestSize,
OUT IPMI_WRITE_FRU_DATA_RESPONSE *WriteFruDataResponse
)
{
EFI_STATUS Status;
UINT32 DataSize;
DataSize = sizeof(*WriteFruDataResponse);
Status = IpmiSubmitCommand (
IPMI_NETFN_STORAGE,
IPMI_STORAGE_WRITE_FRU_DATA,
(VOID *)WriteFruDataRequest,
WriteFruDataRequestSize,
(VOID *)WriteFruDataResponse,
&DataSize
);
return Status;
}
EFI_STATUS
EFIAPI
IpmiGetSelInfo (
OUT IPMI_GET_SEL_INFO_RESPONSE *GetSelInfoResponse
)
{
EFI_STATUS Status;
UINT32 DataSize;
DataSize = sizeof(*GetSelInfoResponse);
Status = IpmiSubmitCommand (
IPMI_NETFN_STORAGE,
IPMI_STORAGE_GET_SEL_INFO,
NULL,
0,
(VOID *)GetSelInfoResponse,
&DataSize
);
return Status;
}
EFI_STATUS
EFIAPI
IpmiGetSelEntry (
IN IPMI_GET_SEL_ENTRY_REQUEST *GetSelEntryRequest,
OUT IPMI_GET_SEL_ENTRY_RESPONSE *GetSelEntryResponse,
IN OUT UINT32 *GetSelEntryResponseSize
)
{
EFI_STATUS Status;
Status = IpmiSubmitCommand (
IPMI_NETFN_STORAGE,
IPMI_STORAGE_GET_SEL_ENTRY,
(VOID *)GetSelEntryRequest,
sizeof(*GetSelEntryRequest),
(VOID *)GetSelEntryResponse,
GetSelEntryResponseSize
);
return Status;
}
EFI_STATUS
EFIAPI
IpmiAddSelEntry (
IN IPMI_ADD_SEL_ENTRY_REQUEST *AddSelEntryRequest,
OUT IPMI_ADD_SEL_ENTRY_RESPONSE *AddSelEntryResponse
)
{
EFI_STATUS Status;
UINT32 DataSize;
DataSize = sizeof(*AddSelEntryResponse);
Status = IpmiSubmitCommand (
IPMI_NETFN_STORAGE,
IPMI_STORAGE_ADD_SEL_ENTRY,
(VOID *)AddSelEntryRequest,
sizeof(*AddSelEntryRequest),
(VOID *)AddSelEntryResponse,
&DataSize
);
return Status;
}
EFI_STATUS
EFIAPI
IpmiPartialAddSelEntry (
IN IPMI_PARTIAL_ADD_SEL_ENTRY_REQUEST *PartialAddSelEntryRequest,
IN UINT32 PartialAddSelEntryRequestSize,
OUT IPMI_PARTIAL_ADD_SEL_ENTRY_RESPONSE *PartialAddSelEntryResponse
)
{
EFI_STATUS Status;
UINT32 DataSize;
DataSize = sizeof(*PartialAddSelEntryResponse);
Status = IpmiSubmitCommand (
IPMI_NETFN_STORAGE,
IPMI_STORAGE_PARTIAL_ADD_SEL_ENTRY,
(VOID *)PartialAddSelEntryRequest,
PartialAddSelEntryRequestSize,
(VOID *)PartialAddSelEntryResponse,
&DataSize
);
return Status;
}
EFI_STATUS
EFIAPI
IpmiClearSel (
IN IPMI_CLEAR_SEL_REQUEST *ClearSelRequest,
OUT IPMI_CLEAR_SEL_RESPONSE *ClearSelResponse
)
{
EFI_STATUS Status;
UINT32 DataSize;
DataSize = sizeof(*ClearSelResponse);
Status = IpmiSubmitCommand (
IPMI_NETFN_STORAGE,
IPMI_STORAGE_CLEAR_SEL,
(VOID *)ClearSelRequest,
sizeof(*ClearSelRequest),
(VOID *)ClearSelResponse,
&DataSize
);
return Status;
}
EFI_STATUS
EFIAPI
IpmiGetSelTime (
OUT IPMI_GET_SEL_TIME_RESPONSE *GetSelTimeResponse
)
{
EFI_STATUS Status;
UINT32 DataSize;
DataSize = sizeof(*GetSelTimeResponse);
Status = IpmiSubmitCommand (
IPMI_NETFN_STORAGE,
IPMI_STORAGE_GET_SEL_TIME,
NULL,
0,
(VOID *)GetSelTimeResponse,
&DataSize
);
return Status;
}
EFI_STATUS
EFIAPI
IpmiSetSelTime (
IN IPMI_SET_SEL_TIME_REQUEST *SetSelTimeRequest,
OUT UINT8 *CompletionCode
)
{
EFI_STATUS Status;
UINT32 DataSize;
DataSize = sizeof(*CompletionCode);
Status = IpmiSubmitCommand (
IPMI_NETFN_STORAGE,
IPMI_STORAGE_SET_SEL_TIME,
(VOID *)SetSelTimeRequest,
sizeof(*SetSelTimeRequest),
(VOID *)CompletionCode,
&DataSize
);
return Status;
}
EFI_STATUS
EFIAPI
IpmiGetSdrRepositoryInfo (
OUT IPMI_GET_SDR_REPOSITORY_INFO_RESPONSE *GetSdrRepositoryInfoResp
)
{
EFI_STATUS Status;
UINT32 DataSize;
DataSize = sizeof(*GetSdrRepositoryInfoResp);
Status = IpmiSubmitCommand (
IPMI_NETFN_STORAGE,
IPMI_STORAGE_GET_SDR_REPOSITORY_INFO,
NULL,
0,
(VOID *)GetSdrRepositoryInfoResp,
&DataSize
);
return Status;
}
EFI_STATUS
EFIAPI
IpmiGetSdr (
IN IPMI_GET_SDR_REQUEST *GetSdrRequest,
OUT IPMI_GET_SDR_RESPONSE *GetSdrResponse,
IN OUT UINT32 *GetSdrResponseSize
)
{
EFI_STATUS Status;
Status = IpmiSubmitCommand (
IPMI_NETFN_STORAGE,
IPMI_STORAGE_GET_SDR,
(VOID *)GetSdrRequest,
sizeof(*GetSdrRequest),
(VOID *)GetSdrResponse,
GetSdrResponseSize
);
return Status;
}