summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/plat/fapiPlatHwpInvoker.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/hwpf/plat/fapiPlatHwpInvoker.C')
-rw-r--r--src/usr/hwpf/plat/fapiPlatHwpInvoker.C84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/usr/hwpf/plat/fapiPlatHwpInvoker.C b/src/usr/hwpf/plat/fapiPlatHwpInvoker.C
new file mode 100644
index 000000000..d6d8cbaad
--- /dev/null
+++ b/src/usr/hwpf/plat/fapiPlatHwpInvoker.C
@@ -0,0 +1,84 @@
+/**
+ * @file fapiPlatHwpInvoker.C
+ *
+ * @brief Implements the platform specific HW Procedure invoker functions.
+ */
+
+#include <fapiPlatHwpInvoker.H>
+#include <fapiReturnCode.H>
+#include <fapiPlatTrace.H>
+#include <fapiTestHwp.H>
+
+namespace fapi
+{
+
+//******************************************************************************
+// rcToErrl function
+//******************************************************************************
+errlHndl_t rcToErrl(ReturnCode i_rc)
+{
+ errlHndl_t l_err = NULL;
+
+ ReturnCode::returnCodeCreator l_creator = i_rc.getCreator();
+
+ if (l_creator == ReturnCode::CREATOR_PLAT)
+ {
+ // Release the errlHndl_t
+ l_err = reinterpret_cast<errlHndl_t> (i_rc.releaseData());
+ }
+ else
+ {
+ //@todo Figure out how to convert FAPI/HWP error to Host Boot error log
+ }
+
+ return l_err;
+}
+
+
+//******************************************************************************
+// invokeHwpIsP7EM0ChipletClockOn function
+//******************************************************************************
+errlHndl_t invokeHwpIsP7EM0ChipletClockOn(TARGETING::Target* i_target,
+ bool & o_clocksOn)
+{
+
+ FAPI_DBG(ENTER_MRK "HostBootHwpIsP7EM0ChipletClockOn");
+
+ errlHndl_t l_err = NULL;
+
+ // Create a generic Target object
+ Target l_target(TARGET_TYPE_PROC_CHIP, reinterpret_cast<void *> (i_target));
+
+ //@todo
+ // Double check to see if any locking is needed here.
+ // Lower XSCOM already has a mutex lock.
+
+ // Call the HWP executor macro
+ ReturnCode l_rc;
+ FAPI_EXEC_HWP(l_rc, hwpIsP7EM0ChipletClockOn, l_target, o_clocksOn);
+
+ if (l_rc != FAPI_RC_SUCCESS)
+ {
+ FAPI_ERR("hwpIsP7EM0ChipletClockOn: Error (0x%x) from "
+ "execHwpIsP7EM0ChipletClockOn",
+ static_cast<uint32_t> (l_rc));
+ l_err = rcToErrl(l_rc);
+ }
+ else
+ {
+ if (o_clocksOn)
+ {
+ FAPI_INF("hwpIsP7EM0ChipletClockOn: Clocks are on");
+ }
+ else
+ {
+ FAPI_INF("hwpIsP7EM0ChipletClockOn: Clocks are off");
+ }
+ }
+
+ FAPI_DBG(EXIT_MRK "HostBootHwpIsP7EM0ChipletClockOn");
+
+ return l_err;
+}
+
+} // End namespace
OpenPOWER on IntegriCloud