summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJosh Rispoli <jprispol@us.ibm.com>2015-01-30 11:40:39 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-02-16 16:11:56 -0600
commit9ae3d4f24ad9af4e8d6e422cc7fab30a87127ec7 (patch)
treed660a754b0b5a3016de80b40adecd69cff3d711f /src
parent9611008eb6768fc2d23a82560d75f43f101298b6 (diff)
downloadtalos-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.C26
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),
OpenPOWER on IntegriCloud