summaryrefslogtreecommitdiffstats
path: root/src/usr/fapi2
diff options
context:
space:
mode:
authorCorey Swenson <cswenson@us.ibm.com>2018-02-05 17:09:52 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2018-03-27 13:19:16 -0400
commit579e63b60e50df4cbef126c306e1aa742d2c9f09 (patch)
treef467a15b40c193cbecf6afeeb247562fcf5533db /src/usr/fapi2
parent8a783ea89563b0e452caab5c5900add8cc99e358 (diff)
downloadtalos-hostboot-579e63b60e50df4cbef126c306e1aa742d2c9f09.tar.gz
talos-hostboot-579e63b60e50df4cbef126c306e1aa742d2c9f09.zip
Add support for ATTR_FREQ_MCA_MHZ
When accessing the attribute, return value for ATTR_FREQ_PB_MHZ. Change-Id: I41a2f39582d76b3ea949d8998300b64c7622a671 RTC:179826 CMVC-Prereq: 1049714 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/53408 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP HW <op-hw-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/usr/fapi2')
-rw-r--r--src/usr/fapi2/attribute_service.C67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/usr/fapi2/attribute_service.C b/src/usr/fapi2/attribute_service.C
index fa3de0bf7..08ed1b877 100644
--- a/src/usr/fapi2/attribute_service.C
+++ b/src/usr/fapi2/attribute_service.C
@@ -2204,6 +2204,73 @@ ReturnCode platGetMBvpdSlopeInterceptData(
return rc;
}
+//******************************************************************************
+// fapi::platAttrSvc::platGetFreqMcaMhz function
+//******************************************************************************
+ReturnCode platGetFreqMcaMhz(const Target<TARGET_TYPE_ALL>& i_fapiTarget,
+ uint32_t & o_val)
+{
+ // The POR config for Cumulus is to run the MC/DMI clocks directly
+ // off of the NEST PLL in 'sync' mode. To support 'sync' mode FW
+ // can pin ATTR_FREQ_MCA_MHZ == ATTR_FREQ_PB_MHZ.
+
+ fapi2::ReturnCode l_rc;
+ errlHndl_t l_errl = nullptr;
+
+ TARGETING::Target * l_chipTarget = nullptr;
+ l_errl = getTargetingTarget(i_fapiTarget, l_chipTarget);
+ if(l_errl)
+ {
+ FAPI_ERR("platGetFreqMcaMhz: Error from getTargetingTarget");
+ l_rc.setPlatDataPtr(reinterpret_cast<void *> (l_errl));
+ }
+ else
+ {
+ o_val = l_chipTarget->getAttr<TARGETING::ATTR_FREQ_PB_MHZ>();
+ }
+ return l_rc;
+}
+
+//******************************************************************************
+// fapi::platAttrSvc::platSetFreqMcaMhz function
+//******************************************************************************
+ReturnCode platSetFreqMcaMhz(const Target<TARGET_TYPE_ALL>& i_fapiTarget,
+ uint32_t i_val)
+{
+ fapi2::ReturnCode l_rc;
+
+ TARGETING::Target * l_pTarget = NULL;
+ errlHndl_t l_errl = getTargetingTarget(i_fapiTarget, l_pTarget);
+ if (l_errl)
+ {
+ FAPI_ERR("platSetFreqMcaMhz: Error from getTargetingTarget");
+ l_rc.setPlatDataPtr(reinterpret_cast<void *> (l_errl));
+ }
+ else
+ {
+ /*@
+ * @errortype
+ * @moduleid fapi2::MOD_FAPI2_SET_ATTR_FREQ_MCA_MHZ
+ * @reasoncode fapi2::RC_SET_ATTR_NOT_VALID
+ * @userdata1 HUID
+ * @userdata2 Requested attr value
+ * @devdesc platSetFreqMcaMhz should never be called
+ */
+ l_errl = new ERRORLOG::ErrlEntry(
+ ERRORLOG::ERRL_SEV_UNRECOVERABLE,
+ fapi2::MOD_FAPI2_SET_ATTR_FREQ_MCA_MHZ,
+ fapi2::RC_SET_ATTR_NOT_VALID,
+ TARGETING::get_huid(l_pTarget),
+ i_val,
+ true);
+
+ FAPI_ERR("platSetFreqMcaMhz: Function should never be called");
+ l_rc.setPlatDataPtr(reinterpret_cast<void *> (l_errl));
+ }
+
+ return l_rc;
+}
+
} // End platAttrSvc namespace
OpenPOWER on IntegriCloud