diff options
author | Josh Rispoli <jprispol@us.ibm.com> | 2015-01-30 11:40:39 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2015-02-16 16:11:56 -0600 |
commit | 9ae3d4f24ad9af4e8d6e422cc7fab30a87127ec7 (patch) | |
tree | d660a754b0b5a3016de80b40adecd69cff3d711f /src | |
parent | 9611008eb6768fc2d23a82560d75f43f101298b6 (diff) | |
download | talos-hostboot-9ae3d4f24ad9af4e8d6e422cc7fab30a87127ec7.tar.gz talos-hostboot-9ae3d4f24ad9af4e8d6e422cc7fab30a87127ec7.zip |
devtree: Update boot frequency based on OCC State
Change-Id: Ic1a425374a0208badf91cc757f80a7958b8f5994
RTC:116962
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/15441
Tested-by: Jenkins Server
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/usr/devtree/bld_devtree.C | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/src/usr/devtree/bld_devtree.C b/src/usr/devtree/bld_devtree.C index 908ce6e1f..84a34ad6f 100644 --- a/src/usr/devtree/bld_devtree.C +++ b/src/usr/devtree/bld_devtree.C @@ -48,7 +48,7 @@ #include <vpd/cvpdenums.H> #include <i2c/i2cif.H> #include <i2c/eepromif.H> - +#include <ipmi/ipmisensor.H> trace_desc_t *g_trac_devtree = NULL; TRAC_INIT(&g_trac_devtree, "DEVTREE", 4096); @@ -653,8 +653,28 @@ uint32_t bld_cpu_node(devTree * i_dt, dtOffset_t & i_parentNode, i_dt->addPropertyCell32(cpuNode, "ibm,purr", 1); i_dt->addPropertyCell32(cpuNode, "ibm,spurr", 1); - //Set Nominal freq - uint64_t freq = sys->getAttr<TARGETING::ATTR_NOMINAL_FREQ_MHZ>(); + //Set core clock freq + uint64_t freq = 0; + +#ifdef CONFIG_HTMGT + if(sys->getAttr<TARGETING::ATTR_HTMGT_SAFEMODE>()) + { + // Safe mode on, OCC failed to load. Set safe freq + freq = sys->getAttr<TARGETING::ATTR_BOOT_FREQ_MHZ>(); + } + else + { + // Safe mode off, set nominal freq + freq = sys->getAttr<TARGETING::ATTR_NOMINAL_FREQ_MHZ>(); + } +#elif CONFIG_SET_NOMINAL_PSTATE + // Set nominal core freq if CONFIG_SET_NOMINAL_PSTATE is enabled + freq = sys->getAttr<TARGETING::ATTR_NOMINAL_FREQ_MHZ>(); +#else + // Else, set safe core freq + freq = sys->getAttr<TARGETING::ATTR_BOOT_FREQ_MHZ>(); +#endif + freq *= MHZ; uint32_t ex_freq[2] = {static_cast<uint32_t>(freq >> 32), |