aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorShilpasri G Bhat <shilpa.bhat@linux.vnet.ibm.com>2017-07-28 00:45:28 +0530
committerStewart Smith <stewart@linux.vnet.ibm.com>2017-07-28 14:53:19 +1000
commitc6aabe3f2eb51cf1df7da83432b15a37200f1adb (patch)
treedf469b4de5658202103356bdec9dbdeddf8e2084 /include
parentd253cc64fedbfd92d082f3ec48646c36455fb00f (diff)
downloadskiboot-c6aabe3f2eb51cf1df7da83432b15a37200f1adb.zip
skiboot-c6aabe3f2eb51cf1df7da83432b15a37200f1adb.tar.gz
skiboot-c6aabe3f2eb51cf1df7da83432b15a37200f1adb.tar.bz2
powercap: occ: Add a generic powercap framework
This patch adds a generic powercap framework and exports OCC powercap sensors using which system powercap can be set inband through OPAL-OCC command-response interface. Documentation for powercap enhanced by Stewart Smith. Signed-off-by: Shilpasri G Bhat <shilpa.bhat@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'include')
-rw-r--r--include/opal-api.h4
-rw-r--r--include/powercap.h43
2 files changed, 46 insertions, 1 deletions
diff --git a/include/opal-api.h b/include/opal-api.h
index d2137d6..3ad4898 100644
--- a/include/opal-api.h
+++ b/include/opal-api.h
@@ -208,7 +208,9 @@
#define OPAL_IMC_COUNTERS_INIT 149
#define OPAL_IMC_COUNTERS_START 150
#define OPAL_IMC_COUNTERS_STOP 151
-#define OPAL_LAST 151
+#define OPAL_GET_POWERCAP 152
+#define OPAL_SET_POWERCAP 153
+#define OPAL_LAST 153
/* Device tree flags */
diff --git a/include/powercap.h b/include/powercap.h
new file mode 100644
index 0000000..ec5e126
--- /dev/null
+++ b/include/powercap.h
@@ -0,0 +1,43 @@
+/* Copyright 2017 IBM 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.
+ */
+
+#ifndef __POWERCAP_H
+#define __POWERCAP_H
+
+#include <opal.h>
+
+enum powercap_class {
+ POWERCAP_CLASS_OCC,
+};
+
+/*
+ * Powercap handle is defined as u32. The first and last bytes are
+ * used to indicate the class and attribute.
+ *
+ * | Class | Reserved | Attribute |
+ * |-------|---------------|-----------|
+ */
+
+#define powercap_make_handle(class, attr) (((class & 0xF) << 24) | (attr & 0xF))
+
+#define powercap_get_class(handle) ((handle >> 24) & 0xF)
+#define powercap_get_attr(handle) (handle & 0xF)
+
+/* Powercap OCC interface */
+int occ_get_powercap(u32 handle, u32 *pcap);
+int occ_set_powercap(u32 handle, int token, u32 pcap);
+
+#endif /* __POWERCAP_H */