summaryrefslogtreecommitdiffstats
path: root/src/usr/ipmi/ipmipowerstate.C
diff options
context:
space:
mode:
authorBill Schwartz <whs@us.ibm.com>2015-01-10 09:53:02 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-01-16 11:42:15 -0600
commit40bdceb3643cc691ef5caf0160abb48c834a9c4a (patch)
tree6d195111a704c87f8718449eaf1c365f34399930 /src/usr/ipmi/ipmipowerstate.C
parent54f90468fb55fbb11fb6fdff819f55c27d396e6e (diff)
downloadtalos-hostboot-40bdceb3643cc691ef5caf0160abb48c834a9c4a.tar.gz
talos-hostboot-40bdceb3643cc691ef5caf0160abb48c834a9c4a.zip
Sensor: System ACPI Power state
Upon establishing BMC communication, set "System ACPI Power State" Sensor to "Legacy ON" Change-Id: I96f771305547ccba2fa9ef34edbdc2fc34c5418e RTC: 108825 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/15079 Tested-by: Jenkins Server Reviewed-by: Brian Silver <bsilver@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/ipmi/ipmipowerstate.C')
-rw-r--r--src/usr/ipmi/ipmipowerstate.C86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/usr/ipmi/ipmipowerstate.C b/src/usr/ipmi/ipmipowerstate.C
new file mode 100644
index 000000000..0d07cf180
--- /dev/null
+++ b/src/usr/ipmi/ipmipowerstate.C
@@ -0,0 +1,86 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/usr/ipmi/ipmipowerstate.C $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2014,2015 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* Licensed under the Apache License, Version 2.0 (the "License"); */
+/* you may not use this file except in compliance with the License. */
+/* You may obtain a copy of the License at */
+/* */
+/* http://www.apache.org/licenses/LICENSE-2.0 */
+/* */
+/* Unless required by applicable law or agreed to in writing, software */
+/* distributed under the License is distributed on an "AS IS" BASIS, */
+/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
+/* implied. See the License for the specific language governing */
+/* permissions and limitations under the License. */
+/* */
+/* IBM_PROLOG_END_TAG */
+/**
+ * @file ipmipowerstate.C
+ *
+ * Ipmi set ACPI Power State
+ *
+ */
+
+/******************************************************************************/
+// Includes
+/******************************************************************************/
+#include <stdint.h>
+#include <errl/errlentry.H>
+#include <ipmi/ipmipowerstate.H>
+#include <ipmi/ipmiif.H>
+
+/******************************************************************************/
+// Globals/Constants
+/******************************************************************************/
+// Defined in ipmidd.C
+extern trace_desc_t * g_trac_ipmi;
+#define IPMI_TRAC(printf_string,args...) \
+ TRACFCOMP(g_trac_ipmi,"ps: "printf_string,##args)
+
+namespace IPMI
+{
+
+/******************************************************************************/
+// Functions
+/******************************************************************************/
+
+errlHndl_t setACPIPowerState()
+{
+ errlHndl_t err_ipmi = NULL;
+
+ size_t len = 2; // IPMI spec has request data at 2 bytes
+
+ //create request data buffer
+ uint8_t* data = new uint8_t[len];
+
+ IPMI::completion_code cc = IPMI::CC_UNKBAD;
+
+ data[0] = SET_SYSTEM_POWER_STATE | SET_LEGACY_ON;
+ data[1] = NO_CHANGE_DEVICE_POWER;
+
+ err_ipmi = IPMI::sendrecv(IPMI::set_acpi_power_state(), cc, len, data);
+
+ //cleanup buffer
+ delete[] data;
+
+ if(cc != IPMI::CC_OK)
+ {
+ IPMI_TRAC("Set ACPI Power State: BMC returned not ok CC[%x]",cc);
+ // should we log error and then retry?
+ // what happens if the communication is broken
+ // reset will try and set it again.
+ }
+
+ return err_ipmi;
+}
+
+} // namespace
+
OpenPOWER on IntegriCloud