1 /** @file
2 IPMI Command - NetFnChassis.
3
4 Copyright (c) 2018, Intel Corporation. All rights reserved.<BR>
5 SPDX-License-Identifier: BSD-2-Clause-Patent
6
7 **/
8
9 #include <PiPei.h>
10 #include <Library/BaseMemoryLib.h>
11 #include <Library/DebugLib.h>
12 #include <Library/IpmiLib.h>
13
14 #include <IndustryStandard/Ipmi.h>
15
16
17 EFI_STATUS
18 EFIAPI
IpmiGetChassisCapabilities(OUT IPMI_GET_CHASSIS_CAPABILITIES_RESPONSE * GetChassisCapabilitiesResponse)19 IpmiGetChassisCapabilities (
20 OUT IPMI_GET_CHASSIS_CAPABILITIES_RESPONSE *GetChassisCapabilitiesResponse
21 )
22 {
23 EFI_STATUS Status;
24 UINT32 DataSize;
25
26 DataSize = sizeof(*GetChassisCapabilitiesResponse);
27 Status = IpmiSubmitCommand (
28 IPMI_NETFN_CHASSIS,
29 IPMI_CHASSIS_GET_CAPABILITIES,
30 NULL,
31 0,
32 (VOID *)GetChassisCapabilitiesResponse,
33 &DataSize
34 );
35 return Status;
36 }
37
38 EFI_STATUS
39 EFIAPI
IpmiGetChassisStatus(OUT IPMI_GET_CHASSIS_STATUS_RESPONSE * GetChassisStatusResponse)40 IpmiGetChassisStatus (
41 OUT IPMI_GET_CHASSIS_STATUS_RESPONSE *GetChassisStatusResponse
42 )
43 {
44 EFI_STATUS Status;
45 UINT32 DataSize;
46
47 DataSize = sizeof(*GetChassisStatusResponse);
48 Status = IpmiSubmitCommand (
49 IPMI_NETFN_CHASSIS,
50 IPMI_CHASSIS_GET_STATUS,
51 NULL,
52 0,
53 (VOID *)GetChassisStatusResponse,
54 &DataSize
55 );
56 return Status;
57 }
58
59 EFI_STATUS
60 EFIAPI
IpmiChassisControl(IN IPMI_CHASSIS_CONTROL_REQUEST * ChassisControlRequest,OUT UINT8 * CompletionCode)61 IpmiChassisControl (
62 IN IPMI_CHASSIS_CONTROL_REQUEST *ChassisControlRequest,
63 OUT UINT8 *CompletionCode
64 )
65 {
66 EFI_STATUS Status;
67 UINT32 DataSize;
68
69 DataSize = sizeof(*CompletionCode);
70 Status = IpmiSubmitCommand (
71 IPMI_NETFN_CHASSIS,
72 IPMI_CHASSIS_CONTROL,
73 (VOID *)ChassisControlRequest,
74 sizeof(*ChassisControlRequest),
75 (VOID *)CompletionCode,
76 &DataSize
77 );
78 return Status;
79 }
80
81 EFI_STATUS
82 EFIAPI
IpmiSetPowerRestorePolicy(IN IPMI_SET_POWER_RESTORE_POLICY_REQUEST * ChassisControlRequest,OUT IPMI_SET_POWER_RESTORE_POLICY_RESPONSE * ChassisControlResponse)83 IpmiSetPowerRestorePolicy (
84 IN IPMI_SET_POWER_RESTORE_POLICY_REQUEST *ChassisControlRequest,
85 OUT IPMI_SET_POWER_RESTORE_POLICY_RESPONSE *ChassisControlResponse
86 )
87 {
88 EFI_STATUS Status;
89 UINT32 DataSize;
90
91 DataSize = sizeof(*ChassisControlResponse);
92 Status = IpmiSubmitCommand (
93 IPMI_NETFN_CHASSIS,
94 IPMI_CHASSIS_SET_POWER_RESTORE_POLICY,
95 (VOID *)ChassisControlRequest,
96 sizeof(*ChassisControlRequest),
97 (VOID *)ChassisControlResponse,
98 &DataSize
99 );
100 return Status;
101 }
102