summaryrefslogtreecommitdiffstats
path: root/src/sbefw
diff options
context:
space:
mode:
authorRaja Das <rajadas2@in.ibm.com>2016-10-18 01:23:48 -0500
committerAMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com>2016-11-02 06:39:05 -0400
commit21b7c300f0f0656acbd463c8961746f90491fdee (patch)
tree79381706a91bdcd31501108bbfa9abd99135bff0 /src/sbefw
parent2a9b621e33be7093c19abeef24afb20e93ce7392 (diff)
downloadtalos-sbe-21b7c300f0f0656acbd463c8961746f90491fdee.tar.gz
talos-sbe-21b7c300f0f0656acbd463c8961746f90491fdee.zip
PSU ChipOp to set System Fabric Id Map
Change-Id: Ie7f7ba09afc12021f55291db2adbacf13f09d2aa Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/31392 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Reviewed-by: Shakeeb A. Pasha B K <shakeebbk@in.ibm.com> Reviewed-by: AMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com>
Diffstat (limited to 'src/sbefw')
-rw-r--r--src/sbefw/sbe_host_intf.H5
-rw-r--r--src/sbefw/sbecmdgeneric.C52
-rw-r--r--src/sbefw/sbecmdgeneric.H9
-rw-r--r--src/sbefw/sbecmdparser.C5
4 files changed, 69 insertions, 2 deletions
diff --git a/src/sbefw/sbe_host_intf.H b/src/sbefw/sbe_host_intf.H
index a197a432..82613027 100644
--- a/src/sbefw/sbe_host_intf.H
+++ b/src/sbefw/sbe_host_intf.H
@@ -77,8 +77,9 @@ enum sbePsuRingAccessMessages
*/
enum sbePsuGenericMessages
{
- SBE_PSU_GENERIC_MSG_QUIESCE = 0x05,
- SBE_PSU_GENERIC_MSG_UNKNOWN = 0xFF,
+ SBE_PSU_GENERIC_MSG_QUIESCE = 0x05,
+ SBE_PSU_GENERIC_MSG_SYSTEM_FABRIC_MAP = 0x06,
+ SBE_PSU_GENERIC_MSG_UNKNOWN = 0xFF,
};
/**
diff --git a/src/sbefw/sbecmdgeneric.C b/src/sbefw/sbecmdgeneric.C
index 1c7fe1ea..18733130 100644
--- a/src/sbefw/sbecmdgeneric.C
+++ b/src/sbefw/sbecmdgeneric.C
@@ -41,6 +41,9 @@
#include "sbeHostMsg.H"
#include "sbeHostUtils.H"
+#include "fapi2.H"
+
+using namespace fapi2;
// Forward declaration
sbeCapabilityRespMsg::sbeCapabilityRespMsg()
@@ -255,3 +258,52 @@ uint32_t sbePsuQuiesce( uint8_t *i_pArg )
#undef SBE_FUNC
}
+//----------------------------------------------------------------------------
+uint32_t sbeSetSystemFabricMap( uint8_t *i_pArg )
+{
+ #define SBE_FUNC "sbeSetSystemFabricMap"
+ SBE_ENTER(SBE_FUNC);
+ uint32_t l_rc = SBE_SEC_OPERATION_SUCCESSFUL;
+ uint32_t l_fapiRc = FAPI2_RC_SUCCESS;
+
+ do
+ {
+ // Send Ack to Host via SBE_SBE2PSU_DOORBELL_SET_BIT1
+ // This util method will check internally on the mbox0 register if
+ // ACK is requested.
+ l_rc = sbeAcknowledgeHost();
+ if (l_rc != SBE_SEC_OPERATION_SUCCESSFUL)
+ {
+ SBE_ERROR(SBE_FUNC " Failed to Sent Ack to Host over "
+ "SBE_SBE2PSU_DOORBELL_SET_BIT1");
+ break;
+ }
+
+ uint64_t l_sysFabricMap = 0;
+ l_rc = sbeReadPsu2SbeMbxReg(SBE_HOST_PSU_MBOX_REG1,
+ (sizeof(l_sysFabricMap)/sizeof(uint64_t)),
+ &l_sysFabricMap);
+
+ if(SBE_SEC_OPERATION_SUCCESSFUL != l_rc)
+ {
+ SBE_ERROR(SBE_FUNC" Failed to extract SBE_HOST_PSU_MBOX_REG1");
+ break;
+ }
+
+ SBE_INFO(SBE_FUNC "Sytem Fabric Map [0x%08X][%08X]",
+ SBE::higher32BWord(l_sysFabricMap),
+ SBE::lower32BWord(l_sysFabricMap));
+
+ FAPI_ATTR_SET(fapi2::ATTR_SBE_SYS_CONFIG,
+ fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(),
+ l_sysFabricMap);
+ }while(0);
+
+ // Send the response
+ sbePSUSendResponse(g_sbeSbe2PsuRespHdr, l_fapiRc, l_rc);
+
+ SBE_EXIT(SBE_FUNC);
+ return l_rc;
+ #undef SBE_FUNC
+}
+
diff --git a/src/sbefw/sbecmdgeneric.H b/src/sbefw/sbecmdgeneric.H
index 8b5cd385..beaffbac 100644
--- a/src/sbefw/sbecmdgeneric.H
+++ b/src/sbefw/sbecmdgeneric.H
@@ -70,4 +70,13 @@ uint32_t sbeFifoQuiesce(uint8_t *i_pArg);
*/
uint32_t sbePsuQuiesce(uint8_t *i_pArg);
+/**
+ * @brief SBE Psu Set System Fabric Map (0xD706)
+ *
+ * @param[in] i_pArg Buffer to be passed to the function (not used as of now)
+ *
+ * @return Rc from the Psu access utility
+ */
+uint32_t sbeSetSystemFabricMap(uint8_t *i_pArg);
+
#endif // __SBEFW_SBECMDGENERIC_H
diff --git a/src/sbefw/sbecmdparser.C b/src/sbefw/sbecmdparser.C
index a1b7a2ca..a7be57a6 100644
--- a/src/sbefw/sbecmdparser.C
+++ b/src/sbefw/sbecmdparser.C
@@ -254,6 +254,11 @@ static sbeCmdStruct_t g_sbePsuGenericCmdArray[] =
SBE_PSU_GENERIC_MSG_QUIESCE,
SBE_NO_FENCE,
},
+
+ {sbeSetSystemFabricMap,
+ SBE_PSU_GENERIC_MSG_SYSTEM_FABRIC_MAP,
+ SBE_NO_FENCE,
+ },
};
////////////////////////////////////////////////////////////////
OpenPOWER on IntegriCloud