summaryrefslogtreecommitdiffstats
path: root/src/occ_gpe1/gpe_centaur.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/occ_gpe1/gpe_centaur.h')
-rw-r--r--src/occ_gpe1/gpe_centaur.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/occ_gpe1/gpe_centaur.h b/src/occ_gpe1/gpe_centaur.h
new file mode 100644
index 0000000..ad8e2a7
--- /dev/null
+++ b/src/occ_gpe1/gpe_centaur.h
@@ -0,0 +1,53 @@
+#if !defined(_GPE_CENTAUR_H)
+#define _GPE_CENTAUR_H
+
+#include "ipc_structs.h"
+#include "centaur_structs.h"
+
+// IPC interface
+void gpe_centaur_scom(ipc_msg_t* i_cmd, void* i_arg);
+void gpe_centaur_data(ipc_msg_t* i_cmd, void* i_arg);
+void gpe_centaur_init(ipc_msg_t* i_cmd, void* i_arg);
+
+// HCODE interface
+/**
+ * Populate a CentaurConfiguration object
+ * @param[out] 8 byte aligned pointer to the CentaurConfiguration object.
+ * @return [0 | return code]
+ * @note The CentaurConfiguration object is shared with the 405 so
+ * it needs to be in non-cacheable sram.
+ */
+int gpe_centaur_configuration_create(CentaurConfiguration_t * o_config);
+
+/**
+ * Scom all of the centaurs with the same SCOM address.
+ * @param[in] The CentaurConfig object
+ * @param[in] The SCOM address
+ * @param[out] The array of data collected. Must be large enough to hold
+ * uint64_t data from each centaur.
+ * @return [0 | return code]
+ */
+int centaur_get_scom_vector(CentaurConfiguration_t* i_config,
+ uint32_t i_scom_address,
+ uint64_t* o_data);
+
+/**
+ * Scom one or more centaurs
+ * @param[in] The CentaurConfig object
+ * @param[in/out] The Centaur Scom Parms object
+ * @return The return code is part of the Centaur Scom Parms object
+ */
+void gpe_scom_centaur(CentaurConfiguration_t* i_config,
+ CentaurScomParms_t* i_parms);
+
+
+/**
+ * Collect the centaur thermal data
+ * @param[in] The CentaurConfig object
+ * @param[in/out] The Centaur data parm object
+ * @return [0 | return code]
+ */
+int centaur_get_mem_data(CentaurConfiguration_t* i_config,
+ CentaurGetMemDataParms_t* i_parms);
+
+#endif
OpenPOWER on IntegriCloud