summaryrefslogtreecommitdiffstats
path: root/src/sbefw/sbecmdgeneric.C
diff options
context:
space:
mode:
authorspashabk-in <shakeebbk@in.ibm.com>2017-01-19 07:49:37 -0600
committerAMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com>2017-04-07 05:33:00 -0400
commit8dda0b4d0afedc71cf34c54183f58aba71720ad1 (patch)
tree61cf4a5ecd06eaa65c67075bc1b4ea31ca22807a /src/sbefw/sbecmdgeneric.C
parentec98e51acf6b7626d321adbc1eb93f000bf1abeb (diff)
downloadtalos-sbe-8dda0b4d0afedc71cf34c54183f58aba71720ad1.tar.gz
talos-sbe-8dda0b4d0afedc71cf34c54183f58aba71720ad1.zip
Set FFDC Chip-op
Change-Id: Ie0514aef2ea17bbc56096c7990d2b577f531c0ed Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/35090 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: RAJA DAS <rajadas2@in.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Reviewed-by: AMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com>
Diffstat (limited to 'src/sbefw/sbecmdgeneric.C')
-rw-r--r--src/sbefw/sbecmdgeneric.C45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/sbefw/sbecmdgeneric.C b/src/sbefw/sbecmdgeneric.C
index 8d9b324c..78bd5f23 100644
--- a/src/sbefw/sbecmdgeneric.C
+++ b/src/sbefw/sbecmdgeneric.C
@@ -260,6 +260,51 @@ uint32_t sbeFifoQuiesce( uint8_t *i_pArg )
#undef SBE_FUNC
}
+//---------------------------------------------------------------------------
+uint32_t sbeSetFFDCAddr(uint8_t *i_pArg)
+{
+#define SBE_FUNC "sbeSetFFDCAddr"
+ SBE_ENTER(SBE_FUNC);
+ uint32_t rc = SBE_SEC_OPERATION_SUCCESSFUL;
+ uint32_t l_fapiRc = FAPI2_RC_SUCCESS;
+ sbeSetFFDCAddrReq_t l_req = {};
+
+ do
+ {
+ // Extract the request
+ // and send Ack to Host via SBE_SBE2PSU_DOORBELL_SET_BIT1
+ rc = sbeReadPsu2SbeMbxReg(SBE_HOST_PSU_MBOX_REG1,
+ (sizeof(l_req)/sizeof(uint64_t)),
+ (uint64_t*)&l_req,
+ true);
+ if(SBE_SEC_OPERATION_SUCCESSFUL != rc)
+ {
+ SBE_ERROR(SBE_FUNC "Failed to extract SBE_HOST_PSU_MBOX_REG1 and "
+ "SBE_HOST_PSU_MBOX_REG2");
+ break;
+ }
+
+ l_req.getFFDCAddr(SBE_GLOBAL->hostFFDCAddr);
+ l_req.getPassThroughCmdAddr(SBE_GLOBAL->hostPassThroughCmdAddr);
+
+ SBE_INFO(SBE_FUNC" Global hostFFDCAddr size[0x%08X] Address[0x%08X%08X]",
+ static_cast<uint32_t>(SBE_GLOBAL->hostFFDCAddr.size),
+ static_cast<uint32_t>(SBE::higher32BWord(SBE_GLOBAL->hostFFDCAddr.addr)),
+ static_cast<uint32_t>(SBE::lower32BWord(SBE_GLOBAL->hostFFDCAddr.addr)));
+ SBE_INFO(SBE_FUNC" Global hostPassCmdAddr size[0x%08X] Address[0x%08X%08X]",
+ static_cast<uint32_t>(SBE_GLOBAL->hostPassThroughCmdAddr.size),
+ static_cast<uint32_t>(SBE::higher32BWord(SBE_GLOBAL->hostPassThroughCmdAddr.addr)),
+ static_cast<uint32_t>(SBE::lower32BWord(SBE_GLOBAL->hostPassThroughCmdAddr.addr)));
+
+ } while(false);
+ // Send the response
+ sbePSUSendResponse(SBE_GLOBAL->sbeSbe2PsuRespHdr, l_fapiRc, rc);
+
+ return rc;
+ SBE_EXIT(SBE_FUNC);
+#undef SBE_FUNC
+}
+
//----------------------------------------------------------------------------
uint32_t sbePsuQuiesce( uint8_t *i_pArg )
{
OpenPOWER on IntegriCloud