1 /** @file
2   This library abstract how to send/receive IPMI command.
3 
4 Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6 
7 **/
8 
9 #ifndef _IPMI_COMMAND_LIB_H_
10 #define _IPMI_COMMAND_LIB_H_
11 
12 #include <Uefi.h>
13 #include <IndustryStandard/Ipmi.h>
14 
15 //
16 // NetFnApp
17 //
18 EFI_STATUS
19 EFIAPI
20 IpmiGetDeviceId (
21   OUT IPMI_GET_DEVICE_ID_RESPONSE  *DeviceId
22   );
23 
24 EFI_STATUS
25 EFIAPI
26 IpmiGetSelfTestResult (
27   OUT IPMI_SELF_TEST_RESULT_RESPONSE   *SelfTestResult
28   );
29 
30 EFI_STATUS
31 EFIAPI
32 IpmiResetWatchdogTimer (
33   OUT UINT8                            *CompletionCode
34   );
35 
36 EFI_STATUS
37 EFIAPI
38 IpmiSetWatchdogTimer (
39   IN  IPMI_SET_WATCHDOG_TIMER_REQUEST  *SetWatchdogTimer,
40   OUT UINT8                            *CompletionCode
41   );
42 
43 EFI_STATUS
44 EFIAPI
45 IpmiGetWatchdogTimer (
46   OUT IPMI_GET_WATCHDOG_TIMER_RESPONSE *GetWatchdogTimer
47   );
48 
49 EFI_STATUS
50 EFIAPI
51 IpmiSetBmcGlobalEnables (
52   IN  IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST  *SetBmcGlobalEnables,
53   OUT UINT8                                *CompletionCode
54   );
55 
56 EFI_STATUS
57 EFIAPI
58 IpmiGetBmcGlobalEnables (
59   OUT IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE *GetBmcGlobalEnables
60   );
61 
62 EFI_STATUS
63 EFIAPI
64 IpmiClearMessageFlags (
65   IN  IPMI_CLEAR_MESSAGE_FLAGS_REQUEST  *ClearMessageFlagsRequest,
66   OUT UINT8                             *CompletionCode
67   );
68 
69 EFI_STATUS
70 EFIAPI
71 IpmiGetMessageFlags (
72   OUT IPMI_GET_MESSAGE_FLAGS_RESPONSE *GetMessageFlagsResponse
73   );
74 
75 EFI_STATUS
76 EFIAPI
77 IpmiGetMessage (
78   OUT IPMI_GET_MESSAGE_RESPONSE *GetMessageResponse,
79   IN OUT UINT32                 *GetMessageResponseSize
80   );
81 
82 EFI_STATUS
83 EFIAPI
84 IpmiSendMessage (
85   IN  IPMI_SEND_MESSAGE_REQUEST  *SendMessageRequest,
86   IN  UINT32                     SendMessageRequestSize,
87   OUT IPMI_SEND_MESSAGE_RESPONSE *SendMessageResponse,
88   IN OUT UINT32                  *SendMessageResponseSize
89   );
90 
91 //
92 // NetFnTransport
93 //
94 EFI_STATUS
95 EFIAPI
96 IpmiSolActivating (
97   IN  IPMI_SOL_ACTIVATING_REQUEST  *SolActivatingRequest,
98   OUT UINT8                        *CompletionCode
99   );
100 
101 EFI_STATUS
102 EFIAPI
103 IpmiSetSolConfigurationParameters (
104   IN  IPMI_SET_SOL_CONFIGURATION_PARAMETERS_REQUEST  *SetConfigurationParametersRequest,
105   IN  UINT32                                         SetConfigurationParametersRequestSize,
106   OUT UINT8                                          *CompletionCode
107   );
108 
109 EFI_STATUS
110 EFIAPI
111 IpmiGetSolConfigurationParameters (
112   IN  IPMI_GET_SOL_CONFIGURATION_PARAMETERS_REQUEST  *GetConfigurationParametersRequest,
113   OUT IPMI_GET_SOL_CONFIGURATION_PARAMETERS_RESPONSE *GetConfigurationParametersResponse,
114   IN OUT UINT32                                      *GetConfigurationParametersResponseSize
115   );
116 
117 //
118 // NetFnChasis
119 //
120 EFI_STATUS
121 EFIAPI
122 IpmiGetChassisCapabilities (
123   OUT IPMI_GET_CHASSIS_CAPABILITIES_RESPONSE  *GetChassisCapabilitiesResponse
124   );
125 
126 EFI_STATUS
127 EFIAPI
128 IpmiGetChassisStatus (
129   OUT IPMI_GET_CHASSIS_STATUS_RESPONSE  *GetChassisStatusResponse
130   );
131 
132 EFI_STATUS
133 EFIAPI
134 IpmiChassisControl (
135   IN IPMI_CHASSIS_CONTROL_REQUEST  *ChassisControlRequest,
136   OUT UINT8                        *CompletionCode
137   );
138 
139 EFI_STATUS
140 EFIAPI
141 IpmiSetPowerRestorePolicy (
142   IN  IPMI_SET_POWER_RESTORE_POLICY_REQUEST  *ChassisControlRequest,
143   OUT IPMI_SET_POWER_RESTORE_POLICY_RESPONSE *ChassisControlResponse
144   );
145 
146 //
147 // NetFnStorage
148 //
149 EFI_STATUS
150 EFIAPI
151 IpmiGetFruInventoryAreaInfo (
152   IN  IPMI_GET_FRU_INVENTORY_AREA_INFO_REQUEST   *GetFruInventoryAreaInfoRequest,
153   OUT IPMI_GET_FRU_INVENTORY_AREA_INFO_RESPONSE  *GetFruInventoryAreaInfoResponse
154   );
155 
156 EFI_STATUS
157 EFIAPI
158 IpmiReadFruData (
159   IN  IPMI_READ_FRU_DATA_REQUEST        *ReadFruDataRequest,
160   OUT IPMI_READ_FRU_DATA_RESPONSE       *ReadFruDataResponse,
161   IN OUT UINT32                         *ReadFruDataResponseSize
162   );
163 
164 EFI_STATUS
165 EFIAPI
166 IpmiWriteFruData (
167   IN  IPMI_WRITE_FRU_DATA_REQUEST       *WriteFruDataRequest,
168   IN  UINT32                            WriteFruDataRequestSize,
169   OUT IPMI_WRITE_FRU_DATA_RESPONSE      *WriteFruDataResponse
170   );
171 
172 EFI_STATUS
173 EFIAPI
174 IpmiGetSelInfo (
175   OUT IPMI_GET_SEL_INFO_RESPONSE  *GetSelInfoResponse
176   );
177 
178 EFI_STATUS
179 EFIAPI
180 IpmiGetSelEntry (
181   IN IPMI_GET_SEL_ENTRY_REQUEST    *GetSelEntryRequest,
182   OUT IPMI_GET_SEL_ENTRY_RESPONSE  *GetSelEntryResponse,
183   IN OUT UINT32                    *GetSelEntryResponseSize
184   );
185 
186 EFI_STATUS
187 EFIAPI
188 IpmiAddSelEntry (
189   IN IPMI_ADD_SEL_ENTRY_REQUEST    *AddSelEntryRequest,
190   OUT IPMI_ADD_SEL_ENTRY_RESPONSE  *AddSelEntryResponse
191   );
192 
193 EFI_STATUS
194 EFIAPI
195 IpmiPartialAddSelEntry (
196   IN IPMI_PARTIAL_ADD_SEL_ENTRY_REQUEST    *PartialAddSelEntryRequest,
197   IN UINT32                                PartialAddSelEntryRequestSize,
198   OUT IPMI_PARTIAL_ADD_SEL_ENTRY_RESPONSE  *PartialAddSelEntryResponse
199   );
200 
201 EFI_STATUS
202 EFIAPI
203 IpmiClearSel (
204   IN IPMI_CLEAR_SEL_REQUEST   *ClearSelRequest,
205   OUT IPMI_CLEAR_SEL_RESPONSE *ClearSelResponse
206   );
207 
208 EFI_STATUS
209 EFIAPI
210 IpmiGetSelTime (
211   OUT IPMI_GET_SEL_TIME_RESPONSE *GetSelTimeResponse
212   );
213 
214 EFI_STATUS
215 EFIAPI
216 IpmiSetSelTime (
217   IN IPMI_SET_SEL_TIME_REQUEST  *SetSelTimeRequest,
218   OUT UINT8                     *CompletionCode
219   );
220 
221 EFI_STATUS
222 EFIAPI
223 IpmiGetSdrRepositoryInfo (
224   OUT IPMI_GET_SDR_REPOSITORY_INFO_RESPONSE  *GetSdrRepositoryInfoResp
225   );
226 
227 EFI_STATUS
228 EFIAPI
229 IpmiGetSdr (
230   IN  IPMI_GET_SDR_REQUEST          *GetSdrRequest,
231   OUT IPMI_GET_SDR_RESPONSE         *GetSdrResponse,
232   IN OUT UINT32                     *GetSdrResponseSize
233   );
234 
235 #endif
236