summaryrefslogtreecommitdiffstats
path: root/src/usr/devtree/bld_devtree.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/devtree/bld_devtree.C')
-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