summaryrefslogtreecommitdiffstats
path: root/src/usr/targeting/common/target.C
diff options
context:
space:
mode:
authoraalugore <aalugore@us.ibm.com>2015-08-24 13:42:24 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-09-18 19:31:11 -0500
commitb672d269a8b235d0e4b4555d39192194af1bd55a (patch)
tree20e3c01961df4cf4d71a1f590a5b4861f6e3f60a /src/usr/targeting/common/target.C
parent66569e88a40376b4881bef6c23df411380c8f367 (diff)
downloadblackbird-hostboot-b672d269a8b235d0e4b4555d39192194af1bd55a.tar.gz
blackbird-hostboot-b672d269a8b235d0e4b4555d39192194af1bd55a.zip
Function to set Nest Frequency based off DIMM memory capability
-Needed for 32x32GB DIMM support -Finds max capable frequency of system and all present DIMMs and deconfigures any DIMM that cannot run at desired frequency -If necessary, Sets Nest Freq and triggers SBE update Change-Id: I9bba92f55f1b67ff4a15d79113f19d39272ec72d RTC:122884 Depends-on:I1dca7196cd02a2704a238665b73b522c9e103936 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/17829 Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: FSP CI Jenkins Tested-by: Jenkins OP HW Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/targeting/common/target.C')
-rw-r--r--src/usr/targeting/common/target.C47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/usr/targeting/common/target.C b/src/usr/targeting/common/target.C
index 2248283c5..559fd4ef7 100644
--- a/src/usr/targeting/common/target.C
+++ b/src/usr/targeting/common/target.C
@@ -645,6 +645,53 @@ bool Target::uninstallWriteAttributeCallback()
#undef TARG_FN
}
+
+//******************************************************************************
+// setFrequencyAttributes
+//******************************************************************************
+void setFrequencyAttributes(Target * i_sys, uint32_t i_newNestFreq)
+{
+
+ // Calculate the new value for PIB_I2C_NEST_PLL using old freq attributes.
+ uint32_t l_oldPll = i_sys->getAttr<TARGETING::ATTR_PIB_I2C_NEST_PLL>();
+ uint32_t l_oldNestFreq = i_sys->getAttr<TARGETING::ATTR_NEST_FREQ_MHZ>();
+ uint32_t l_newPll = (i_newNestFreq * l_oldPll)/l_oldNestFreq;
+
+ //NEST_FREQ
+ i_sys->setAttr<TARGETING::ATTR_NEST_FREQ_MHZ>(i_newNestFreq);
+ TRACFCOMP(g_trac_targeting,
+ "ATTR_NEST_FREQ_MHZ getting set from %d to %d",
+ l_oldNestFreq,
+ i_newNestFreq );
+
+ //FREQ_X
+ uint32_t l_freqX = i_newNestFreq * 2;
+ i_sys->setAttr<TARGETING::ATTR_FREQ_X>(l_freqX);
+ TRACFCOMP(g_trac_targeting,
+ "ATTR_FREQ_X getting set to from %d to %d",
+ l_oldNestFreq*2,
+ l_freqX );
+
+ //FREQ_PB
+ uint32_t l_freqPb = i_newNestFreq;
+ i_sys->setAttr<TARGETING::ATTR_FREQ_PB>(l_freqPb);
+ TRACFCOMP(g_trac_targeting,
+ "ATTR_FREQ_PB getting set from %d to %d",
+ l_oldNestFreq,
+ l_freqPb );
+
+ //PIB_I2C_NEST_PLL
+ i_sys->setAttr<TARGETING::ATTR_PIB_I2C_NEST_PLL>(l_newPll);
+ TRACFCOMP(g_trac_targeting,
+ "ATTR_PIB_I2C_NEST_PLL getting set from %x to %x",
+ l_oldPll,
+ l_newPll);
+
+ return;
+}
+
+
+
//******************************************************************************
// Attribute Tanks
//******************************************************************************
OpenPOWER on IntegriCloud