diff options
| author | aalugore <aalugore@us.ibm.com> | 2015-08-24 13:42:24 -0500 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-09-18 19:31:11 -0500 |
| commit | b672d269a8b235d0e4b4555d39192194af1bd55a (patch) | |
| tree | 20e3c01961df4cf4d71a1f590a5b4861f6e3f60a /src/usr/targeting/common/target.C | |
| parent | 66569e88a40376b4881bef6c23df411380c8f367 (diff) | |
| download | blackbird-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.C | 47 |
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 //****************************************************************************** |

