summaryrefslogtreecommitdiffstats
path: root/sbe/sbefw
diff options
context:
space:
mode:
authorAmit Tendolkar <amit.tendolkar@in.ibm.com>2015-12-09 14:12:40 -0600
committerAmit J. Tendolkar <amit.tendolkar@in.ibm.com>2015-12-10 09:42:03 -0600
commit8b0f8d125d2dec1c6acc6c10e6f02b198bbe6043 (patch)
tree9ab2e468f12dbc51a5316f3c736302ef59916c8c /sbe/sbefw
parent8f109c77d7f301bda77334b836070da0d08d4c29 (diff)
downloadtalos-sbe-8b0f8d125d2dec1c6acc6c10e6f02b198bbe6043.tar.gz
talos-sbe-8b0f8d125d2dec1c6acc6c10e6f02b198bbe6043.zip
Checking in stubbed isteps and sbe msg reg updates
Change-Id: I8ec464f841f7828b9aa5151a47d900b4e95bf4f8 CQ: SW330452 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22586 Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Tested-by: Jenkins Server Reviewed-by: Basabjit Sengupta <basengup@in.ibm.com> Reviewed-by: Martin Peschke <mpeschke@de.ibm.com> Reviewed-by: Amit J. Tendolkar <amit.tendolkar@in.ibm.com>
Diffstat (limited to 'sbe/sbefw')
-rw-r--r--sbe/sbefw/sbecmdiplcontrol.C23
-rw-r--r--sbe/sbefw/sbecmdreceiver.C4
-rw-r--r--sbe/sbefw/sbefifo.H10
3 files changed, 37 insertions, 0 deletions
diff --git a/sbe/sbefw/sbecmdiplcontrol.C b/sbe/sbefw/sbecmdiplcontrol.C
index 542e9304..56961610 100644
--- a/sbe/sbefw/sbecmdiplcontrol.C
+++ b/sbe/sbefw/sbecmdiplcontrol.C
@@ -340,6 +340,10 @@ ReturnCode sbeExecuteIstep (const uint8_t i_major, const uint8_t i_minor)
break;
}
+ // bits 16-23 major istep number, 24-31 minor istep number
+ uint64_t l_iplState = (uint64_t)(i_major)<<40 | (uint64_t)(i_minor)<<32;
+ SBE_UPDATE_SBE_MSG_REG (l_iplState);
+
return rc;
#undef SBE_FUNC
}
@@ -398,6 +402,7 @@ bool validateIstep (const uint8_t i_major, const uint8_t i_minor)
ReturnCode istepWithProc( sbeIstepHwp_t i_hwp)
{
+#ifndef SBE_ISTEP_STUBBED // @TODO via RTC 142985
SBE_DEBUG("istepWithProc");
Target<TARGET_TYPE_PROC_CHIP > proc = plat_getChipTarget();
ReturnCode rc = FAPI2_RC_SUCCESS;
@@ -407,6 +412,9 @@ ReturnCode istepWithProc( sbeIstepHwp_t i_hwp)
}
SBE_DEBUG("istepWithProc");
return rc;
+#else
+ return FAPI2_RC_SUCCESS;
+#endif
}
//----------------------------------------------------------------------------
@@ -414,6 +422,7 @@ ReturnCode istepWithProc( sbeIstepHwp_t i_hwp)
ReturnCode istepWithEq( sbeIstepHwp_t i_hwp)
{
+#ifndef SBE_ISTEP_STUBBED // @TODO via RTC 142985
// TODO via RTC 135345
// Curently we are passing Hard code eq target. Finally it is
// going to be a multicast target. Once multicast support is
@@ -426,12 +435,16 @@ ReturnCode istepWithEq( sbeIstepHwp_t i_hwp)
rc = i_hwp( eq10_target );
}
return rc;
+#else
+ return FAPI2_RC_SUCCESS;
+#endif
}
//----------------------------------------------------------------------------
ReturnCode istepWithCore( sbeIstepHwp_t i_hwp)
{
+#ifndef SBE_ISTEP_STUBBED // @TODO via RTC 142985
// TODO via RTC 135345
// Curently we are passing Hard code core target. Finally it is
// going to be a multicast target. Once multicast support is
@@ -444,17 +457,27 @@ ReturnCode istepWithCore( sbeIstepHwp_t i_hwp)
rc = i_hwp( core_target );
}
return rc;
+#else
+ return FAPI2_RC_SUCCESS;
+#endif
}
//----------------------------------------------------------------------------
ReturnCode istepLoadBootLoader( sbeIstepHwp_t i_hwp)
{
+// @TODO via RTC 142985: Call instruct_start to load+start HB - BU hack
+#ifdef SBE_ISTEP_STUBBED
+ SBE_DEBUG ("istepLoadBootLoader: istep 5.1 hack to load+start HB");
+ fapi2::Target<fapi2::TARGET_TYPE_CORE > core_target((uint64_t)0);
+ ReturnCode rc = p9_sbe_instruct_start (core_target);
+#else
// TODO via RTC 135345
// Send right Ex, address and size of HB loader
Target<TARGET_TYPE_PROC_CHIP > proc = plat_getChipTarget();
fapi2::Target<fapi2::TARGET_TYPE_EX > exTgt((uint64_t)7);
ReturnCode rc = p9_sbe_load_bootloader( proc, exTgt, 0, NULL );
+#endif
return rc;
}
diff --git a/sbe/sbefw/sbecmdreceiver.C b/sbe/sbefw/sbecmdreceiver.C
index e08072f4..8474d8d3 100644
--- a/sbe/sbefw/sbecmdreceiver.C
+++ b/sbe/sbefw/sbecmdreceiver.C
@@ -25,6 +25,10 @@ void sbeCommandReceiver_routine(void *i_pArg)
#define SBE_FUNC " sbeCommandReceiver_routine "
SBE_ENTER(SBE_FUNC);
+ // Update SBE msgg reg to indicate that control loop
+ // is ready now to receive data on its interfaces
+ SBE_UPDATE_SBE_MSG_REG(SBE_STATE_PK_READY);
+
do
{
uint32_t l_rc = SBE_SEC_OPERATION_SUCCESSFUL;
diff --git a/sbe/sbefw/sbefifo.H b/sbe/sbefw/sbefifo.H
index b9be8cd9..74386cb5 100644
--- a/sbe/sbefw/sbefifo.H
+++ b/sbe/sbefw/sbefifo.H
@@ -122,6 +122,16 @@ typedef struct
uint32_t reserved;
} sbeDownFifoStatusReg_t;
+// @TODO via RTC 142985: move to a better file with final fix
+// Do a R-M-W to retain un-related bits
+/**
+ * @brief Update SBE Messaging Register with the SBE states
+ */
+const uint32_t SBE_SCOM_MESSAGE_REGISTER = 0x50009;
+const uint64_t SBE_STATE_PK_READY = 0x8000000000000000ull;
+
+#define SBE_UPDATE_SBE_MSG_REG(value) \
+ putscom_abs(SBE_SCOM_MESSAGE_REGISTER, (value));
/*****************************************************************/
/** Upstream FIFO access utilities **/
OpenPOWER on IntegriCloud