diff options
Diffstat (limited to 'src/usr/isteps')
-rw-r--r-- | src/usr/isteps/istep06/call_host_voltage_config.C | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/usr/isteps/istep06/call_host_voltage_config.C b/src/usr/isteps/istep06/call_host_voltage_config.C index 060e7ebe0..6cb647e9b 100644 --- a/src/usr/isteps/istep06/call_host_voltage_config.C +++ b/src/usr/isteps/istep06/call_host_voltage_config.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2017 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -352,6 +352,25 @@ void* call_host_voltage_config( void *io_pArgs ) "ATTR_FREQ_X_MHZ = %d", l_sys->getAttr<ATTR_FREQ_X_MHZ>()); + //Nimbus DD21 only supports OBUS PLL of 1563(versus product of 1611) + //Force it because of a chip bug instead of letting MRW control + PVR_t l_pvr( mmio_pvr_read() & 0xFFFFFFFF ); + if( l_pvr.isNimbusDD21() ) + { + TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace, + "call_host_voltage_config.C::" + "Nimbus DD2.1 -- Forcing ATTR_FREQ_X_MHZ = %d", + l_sys->getAttr<ATTR_FREQ_X_MHZ>()); + + TARGETING::ATTR_FREQ_O_MHZ_type l_freq_array = + {OBUS_PLL_FREQ_LIST_P9N_21[0],OBUS_PLL_FREQ_LIST_P9N_21[0], + OBUS_PLL_FREQ_LIST_P9N_21[0], OBUS_PLL_FREQ_LIST_P9N_21[0]}; + assert(l_proc-> + trySetAttr<TARGETING::ATTR_FREQ_O_MHZ>(l_freq_array), + "call_host_voltage_config.C failed to set ATTR_FREQ_O_MHZ"); + } + + // get the child EQ targets targetService().getAssociated( l_eqList, |