summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp
diff options
context:
space:
mode:
authorPrachi Gupta <pragupta@us.ibm.com>2015-10-23 17:00:16 -0500
committerPatrick Williams <iawillia@us.ibm.com>2015-12-11 15:30:27 -0600
commit3f38d7bb2084ab959fd407e4b864e995d2b003a7 (patch)
treea407ea4072d37657f73ce10af7e0cb6aed607918 /src/usr/hwpf/hwp
parent6aab5b3a5300c63bbbfeecf243c8fb2bd6bd0681 (diff)
downloadtalos-hostboot-3f38d7bb2084ab959fd407e4b864e995d2b003a7.tar.gz
talos-hostboot-3f38d7bb2084ab959fd407e4b864e995d2b003a7.zip
P9 Isteps: Created directory structure for istep 13 wrappers
Change-Id: I964a84b630b035ad08569a24879298cacb545a69 RTC:137652 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/21463 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp')
-rw-r--r--src/usr/hwpf/hwp/dram_training/dram_training.C900
-rw-r--r--src/usr/hwpf/hwp/dram_training/hbVddrMsg.C736
-rw-r--r--src/usr/hwpf/hwp/dram_training/hbVddrMsg.H311
-rw-r--r--src/usr/hwpf/hwp/dram_training/makefile4
-rw-r--r--src/usr/hwpf/hwp/dram_training/palmetto_vddr.C365
-rw-r--r--src/usr/hwpf/hwp/dram_training/platform_vddr.H57
6 files changed, 0 insertions, 2373 deletions
diff --git a/src/usr/hwpf/hwp/dram_training/dram_training.C b/src/usr/hwpf/hwp/dram_training/dram_training.C
deleted file mode 100644
index 8613a46aa..000000000
--- a/src/usr/hwpf/hwp/dram_training/dram_training.C
+++ /dev/null
@@ -1,900 +0,0 @@
-/* IBM_PROLOG_BEGIN_TAG */
-/* This is an automatically generated prolog. */
-/* */
-/* $Source: src/usr/hwpf/hwp/dram_training/dram_training.C $ */
-/* */
-/* OpenPOWER HostBoot Project */
-/* */
-/* Contributors Listed Below - COPYRIGHT 2012,2015 */
-/* [+] Google Inc. */
-/* [+] International Business Machines Corp. */
-/* */
-/* */
-/* Licensed under the Apache License, Version 2.0 (the "License"); */
-/* you may not use this file except in compliance with the License. */
-/* You may obtain a copy of the License at */
-/* */
-/* http://www.apache.org/licenses/LICENSE-2.0 */
-/* */
-/* Unless required by applicable law or agreed to in writing, software */
-/* distributed under the License is distributed on an "AS IS" BASIS, */
-/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
-/* implied. See the License for the specific language governing */
-/* permissions and limitations under the License. */
-/* */
-/* IBM_PROLOG_END_TAG */
-/**
- * @file dram_training.C
- *
- * Support file for IStep: dram_training
- * Step 13 DRAM Training
- *
- * HWP_IGNORE_VERSION_CHECK
- *
- */
-
-/******************************************************************************/
-// Includes
-/******************************************************************************/
-#include <stdint.h>
-
-#include <trace/interface.H>
-#include <initservice/taskargs.H>
-#include <errl/errlentry.H>
-
-#include <initservice/isteps_trace.H>
-
-// targeting support
-#include <targeting/common/commontargeting.H>
-#include <targeting/common/util.H>
-#include <targeting/common/utilFilter.H>
-
-#include <isteps/hwpisteperror.H>
-#include <errl/errludtarget.H>
-
-// fapi support
-#include <fapi.H>
-#include <fapiPlatHwpInvoker.H>
-
-//hb vddr support
-#include "platform_vddr.H"
-#include <initservice/initserviceif.H>
-
-// Run on all Centaurs/MBAs, but needs to keep this one handy in case we
-// want to limit them in VPO
-const uint8_t UNLIMITED_RUN = 0xFF;
-const uint8_t VPO_NUM_OF_MBAS_TO_RUN = UNLIMITED_RUN;
-const uint8_t VPO_NUM_OF_MEMBUF_TO_RUN = UNLIMITED_RUN;
-
-// -- prototype includes --
-#include "dram_training.H"
-
-#include "mem_pll_setup/cen_mem_pll_initf.H"
-#include "mem_pll_setup/cen_mem_pll_setup.H"
-#include "mem_startclocks/cen_mem_startclocks.H"
-#include "mss_scominit/mss_scominit.H"
-#include "mss_ddr_phy_reset/mss_ddr_phy_reset.H"
-#include "mss_draminit/mss_draminit.H"
-#include "mss_draminit_training/mss_draminit_training.H"
-#include "mss_draminit_trainadv/mss_draminit_training_advanced.H"
-#include "mss_draminit_mc/mss_draminit_mc.H"
-#include "proc_throttle_sync.H"
-
-
-namespace DRAM_TRAINING
-{
-
-using namespace ISTEP;
-using namespace ISTEP_ERROR;
-using namespace ERRORLOG;
-using namespace TARGETING;
-using namespace fapi;
-
-//
-// Wrapper function to call host_disable_vddr
-//
-void* call_host_disable_vddr( void *io_pArgs )
-{
- errlHndl_t l_err = NULL;
- IStepError l_StepError;
-
- TRACDCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- ENTER_MRK"call_host_disable_vddr");
-
- // This function has Compile-time binding for desired platform
- l_err = platform_disable_vddr();
-
- if(l_err)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: call_host_disable_vddr returns error",
- l_err->reasonCode());
- // Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails( l_err );
-
- errlCommit( l_err, HWPF_COMP_ID );
-
- }
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- EXIT_MRK"call_host_disable_vddr");
-
- return l_StepError.getErrorHandle();
-}
-
-
-//
-// Wrapper function to call mem_pll_initf
-//
-void* call_mem_pll_initf( void *io_pArgs )
-{
- errlHndl_t l_err = NULL;
-
- IStepError l_StepError;
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mem_pll_initf entry" );
-
- // Get all Centaur targets
- TARGETING::TargetHandleList l_membufTargetList;
- getAllChips(l_membufTargetList, TYPE_MEMBUF);
-
- for (TargetHandleList::const_iterator
- l_membuf_iter = l_membufTargetList.begin();
- l_membuf_iter != l_membufTargetList.end();
- ++l_membuf_iter)
- {
- // make a local copy of the target for ease of use
- const TARGETING::Target* l_pCentaur = *l_membuf_iter;
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Running cen_mem_pll_initf HWP on "
- "target HUID %.8X", TARGETING::get_huid(l_pCentaur));
-
- // Cast to a FAPI type of target.
- const fapi::Target l_fapi_centaur( TARGET_TYPE_MEMBUF_CHIP,
- (const_cast<TARGETING::Target*>(l_pCentaur)));
-
- // call cen_mem_pll_initf to do pll init
- FAPI_INVOKE_HWP(l_err, cen_mem_pll_initf, l_fapi_centaur);
-
- if (l_err)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: cen_mem_pll_initf HWP returns error",
- l_err->reasonCode());
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_pCentaur).addToLog(l_err );
-
- //Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails(l_err);
-
- // Commit Error
- errlCommit(l_err, HWPF_COMP_ID);
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS: cen_mem_pll_initf HWP( )" );
- }
- }
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mem_pll_initf exit" );
-
- return l_StepError.getErrorHandle();
-}
-
-
-//
-// Wrapper function to call mem_pll_setup
-//
-void* call_mem_pll_setup( void *io_pArgs )
-{
- errlHndl_t l_err = NULL;
-
- IStepError l_StepError;
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mem_pll_setup entry" );
-
- // Get all Centaur targets
- TARGETING::TargetHandleList l_membufTargetList;
- getAllChips(l_membufTargetList, TYPE_MEMBUF);
-
- for (TargetHandleList::const_iterator
- l_membuf_iter = l_membufTargetList.begin();
- l_membuf_iter != l_membufTargetList.end();
- ++l_membuf_iter)
- {
- // make a local copy of the target for ease of use
- const TARGETING::Target* l_pCentaur = *l_membuf_iter;
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Running mem_pll_setup HWP on "
- "target HUID %.8X", TARGETING::get_huid(l_pCentaur));
-
- // Cast to a FAPI type of target.
- const fapi::Target l_fapi_centaur( TARGET_TYPE_MEMBUF_CHIP,
- (const_cast<TARGETING::Target*>(l_pCentaur)));
-
- // call cen_mem_pll_setup to verify lock
- FAPI_INVOKE_HWP(l_err, cen_mem_pll_setup, l_fapi_centaur);
-
- if (l_err)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: mem_pll_setup HWP returns error",
- l_err->reasonCode());
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_pCentaur).addToLog(l_err);
-
- //Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails(l_err);
-
- // Commit Error
- errlCommit(l_err, HWPF_COMP_ID);
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS: mem_pll_setup HWP( )" );
- }
- }
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mem_pll_setup exit" );
-
- return l_StepError.getErrorHandle();
-}
-
-//
-// Wrapper function to call mem_startclocks
-//
-void* call_mem_startclocks( void *io_pArgs )
-{
- errlHndl_t l_err = NULL;
-
- IStepError l_StepError;
-
- TRACDCOMP(ISTEPS_TRACE::g_trac_isteps_trace,"call_mem_startclocks entry" );
-
- // Get all Centaur targets
- TARGETING::TargetHandleList l_membufTargetList;
- getAllChips(l_membufTargetList, TYPE_MEMBUF);
-
- for (TargetHandleList::const_iterator
- l_membuf_iter = l_membufTargetList.begin();
- l_membuf_iter != l_membufTargetList.end();
- ++l_membuf_iter)
- {
- // make a local copy of the target for ease of use
- const TARGETING::Target* l_pCentaur = *l_membuf_iter;
-
- // Dump current run on target
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Running cen_mem_startclocks HWP on "
- "target HUID %.8X", TARGETING::get_huid(l_pCentaur));
-
- // Cast to a FAPI type of target.
- const fapi::Target l_fapi_centaur( TARGET_TYPE_MEMBUF_CHIP,
- (const_cast<TARGETING::Target*>(l_pCentaur)) );
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP(l_err, cen_mem_startclocks, l_fapi_centaur);
-
- if (l_err)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: cen_mem_startclocks HWP returns error",
- l_err->reasonCode());
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_pCentaur).addToLog(l_err);
-
- //Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails( l_err );
-
- // Commit Error
- errlCommit( l_err, HWPF_COMP_ID );
-
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : cen_mem_startclocks HWP( )" );
- }
- }
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mem_startclocks exit" );
-
- return l_StepError.getErrorHandle();
-}
-
-
-
-//
-// Wrapper function to call host_enable_vddr
-//
-void* call_host_enable_vddr( void *io_pArgs )
-{
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- ENTER_MRK"call_host_enable_vddr" );
-
- errlHndl_t l_err = NULL;
- IStepError l_StepError;
-
- // This fuction has compile-time binding for different platforms
- l_err = platform_enable_vddr();
-
- if( l_err )
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: call_host_enable_vddr returns error",
- l_err->reasonCode());
-
- l_StepError.addErrorDetails( l_err );
-
- // Create IStep error log and cross reference to error that occurred
- l_StepError.addErrorDetails( l_err );
-
- // Commit Error
- errlCommit( l_err, HWPF_COMP_ID );
- }
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- EXIT_MRK"call_host_enable_vddr" );
-
- return l_StepError.getErrorHandle();
-}
-
-
-
-//
-// Wrapper function to call mss_scominit
-//
-void* call_mss_scominit( void *io_pArgs )
-{
- errlHndl_t l_err = NULL;
-
- IStepError l_stepError;
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_scominit entry" );
-
- do
- {
- // Get all Centaur targets
- TARGETING::TargetHandleList l_membufTargetList;
- getAllChips(l_membufTargetList, TYPE_MEMBUF);
-
- for (TargetHandleList::const_iterator
- l_membuf_iter = l_membufTargetList.begin();
- l_membuf_iter != l_membufTargetList.end();
- ++l_membuf_iter)
- {
- // make a local copy of the target for ease of use
- const TARGETING::Target* l_pCentaur = *l_membuf_iter;
-
- // Dump current run on target
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Running mss_scominit HWP on "
- "target HUID %.8X", TARGETING::get_huid(l_pCentaur));
-
- // Cast to a FAPI type of target.
- const fapi::Target l_fapi_centaur( TARGET_TYPE_MEMBUF_CHIP,
- (const_cast<TARGETING::Target*>(l_pCentaur)) );
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP(l_err, mss_scominit, l_fapi_centaur);
-
- if (l_err)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: mss_scominit HWP returns error",
- l_err->reasonCode());
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_pCentaur).addToLog(l_err);
-
- // Create IStep error log and cross reference to error that
- // occurred
- l_stepError.addErrorDetails( l_err );
-
- // Commit Error
- errlCommit( l_err, HWPF_COMP_ID );
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : mss_scominit HWP( )" );
- }
- }
- if (!l_stepError.isNull())
- {
- break;
- }
-
- // Run proc throttle sync
- // Get all functional proc chip targets
- TARGETING::TargetHandleList l_cpuTargetList;
- getAllChips(l_cpuTargetList, TYPE_PROC);
-
- for (TARGETING::TargetHandleList::const_iterator
- l_cpuIter = l_cpuTargetList.begin();
- l_cpuIter != l_cpuTargetList.end();
- ++l_cpuIter)
- {
- const TARGETING::Target* l_pTarget = *l_cpuIter;
- fapi::Target l_fapiproc_target( TARGET_TYPE_PROC_CHIP,
- (const_cast<TARGETING::Target*>(l_pTarget)));
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Running proc_throttle_sync HWP on "
- "target HUID %.8X", TARGETING::get_huid(l_pTarget));
-
- // Call proc_throttle_sync
- FAPI_INVOKE_HWP( l_err, proc_throttle_sync, l_fapiproc_target );
-
- if (l_err)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: proc_throttle_sync HWP returns error",
- l_err->reasonCode());
-
- // Capture the target data in the elog
- ErrlUserDetailsTarget(l_pTarget).addToLog(l_err);
-
- // Create IStep error log and cross reference to error that occurred
- l_stepError.addErrorDetails( l_err );
-
- // Commit Error
- errlCommit( l_err, HWPF_COMP_ID );
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : proc_throttle_sync HWP( )" );
- }
- }
-
- } while (0);
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_scominit exit" );
-
- return l_stepError.getErrorHandle();
-}
-
-//
-// Wrapper function to call mss_ddr_phy_reset
-//
-void* call_mss_ddr_phy_reset( void *io_pArgs )
-{
- errlHndl_t l_err = NULL;
-
- IStepError l_stepError;
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mss_ddr_phy_reset entry" );
-
- // Get all MBA targets
- TARGETING::TargetHandleList l_mbaTargetList;
- getAllChiplets(l_mbaTargetList, TYPE_MBA);
-
- // Limit the number of MBAs to run in VPO environment to save time.
- uint8_t l_mbaLimit = l_mbaTargetList.size();
- if (TARGETING::is_vpo() && (VPO_NUM_OF_MBAS_TO_RUN < l_mbaLimit))
- {
- l_mbaLimit = VPO_NUM_OF_MBAS_TO_RUN;
- }
-
- for ( uint8_t l_mbaNum=0; l_mbaNum < l_mbaLimit; l_mbaNum++ )
- {
- // make a local copy of the target for ease of use
- const TARGETING::Target* l_mba_target = l_mbaTargetList[l_mbaNum];
-
- // Dump current run on target
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Running call_mss_ddr_phy_reset HWP on "
- "target HUID %.8X", TARGETING::get_huid(l_mba_target));
-
- // Cast to a FAPI type of target.
- const fapi::Target l_fapi_mba_target( TARGET_TYPE_MBA_CHIPLET,
- (const_cast<TARGETING::Target*>(l_mba_target)) );
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP(l_err, mss_ddr_phy_reset, l_fapi_mba_target);
-
- if (l_err)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: mss_ddr_phy_reset HWP returns error",
- l_err->reasonCode());
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_mba_target).addToLog( l_err );
-
- // Create IStep error log and cross reference to error that occurred
- l_stepError.addErrorDetails( l_err );
-
- // Commit Error
- errlCommit( l_err, HWPF_COMP_ID );
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : call_mss_ddr_phy_reset HWP( )" );
- }
- } // end l_mbaNum loop
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mss_ddr_phy_reset exit" );
-
- return l_stepError.getErrorHandle();
-}
-
-//
-// Wrapper function to call mss_post_draminit
-//
-void mss_post_draminit( IStepError & l_stepError )
-{
- errlHndl_t l_err = NULL;
- bool rerun_vddr = false;
-
- do {
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "mss_post_draminit entry" );
-
- //@TODO RTC: 133831. The helper function is currently commented out because
- //some of the attributes don't exist. uncomment it once attribute support is
- //in place
-// set_eff_config_attrs_helper(ISTEP_07::POST_DRAM_INIT, rerun_vddr);
-
- if ( rerun_vddr == false )
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "mss_post_draminit: nothing to do" );
- break;
- }
-
- // Call mss_volt_vddr_offset to recalculate VDDR voltage
- // @TODO RTC: 133831 Uncomment once attribute support is in place
- /*
- l_err = ISTEP_07::setMemoryVoltageDomainOffsetVoltage<
- TARGETING::ATTR_MSS_VOLT_VDDR_OFFSET_DISABLE,
- TARGETING::ATTR_MEM_VDDR_OFFSET_MILLIVOLTS,
- TARGETING::ATTR_VMEM_ID>();
- */
- if(l_err)
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "mss_post_draminit: "
- "ERROR 0x%08X: setMemoryVoltageDomainOffsetVoltage for VDDR domain",
- l_err->reasonCode());
- l_stepError.addErrorDetails(l_err);
- errlCommit(l_err,HWPF_COMP_ID);
- break;
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "mss_post_draminit: mss_volt_vddr_offset(): SUCCESS");
- }
-
- // Call HWSV to call POWR code
- // This fuction has compile-time binding for different platforms
- l_err = platform_adjust_vddr_post_dram_init();
-
- if( l_err )
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X: mss_post_draminit: "
- "platform_adjust_vddr_post_dram_init() returns error",
- l_err->reasonCode());
-
- // Create IStep error log and cross reference to error that occurred
- l_stepError.addErrorDetails( l_err );
-
- // Commit Error
- errlCommit( l_err, HWPF_COMP_ID );
- }
-
- } while(0);
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "mss_post_draminit exit" );
- return;
-}
-
-
-
-//
-// Wrapper function to call mss_draminit
-//
-void* call_mss_draminit( void *io_pArgs )
-{
- errlHndl_t l_err = NULL;
-
- IStepError l_stepError;
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_draminit entry" );
-
- // Get all MBA targets
- TARGETING::TargetHandleList l_mbaTargetList;
- getAllChiplets(l_mbaTargetList, TYPE_MBA);
-
- // Limit the number of MBAs to run in VPO environment to save time.
- uint8_t l_mbaLimit = l_mbaTargetList.size();
- if (TARGETING::is_vpo() && (VPO_NUM_OF_MBAS_TO_RUN < l_mbaLimit))
- {
- l_mbaLimit = VPO_NUM_OF_MBAS_TO_RUN;
- }
-
- for ( uint8_t l_mbaNum=0; l_mbaNum < l_mbaLimit; l_mbaNum++ )
- {
- // Make a local copy of the target for ease of use
- const TARGETING::Target* l_mba_target = l_mbaTargetList[l_mbaNum];
-
- // Dump current run on target
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Running mss_draminit HWP on "
- "target HUID %.8X", TARGETING::get_huid(l_mba_target));
-
- // Cast to a FAPI type of target.
- const fapi::Target l_fapi_mba_target( TARGET_TYPE_MBA_CHIPLET,
- (const_cast<TARGETING::Target*>(l_mba_target)) );
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP(l_err, mss_draminit, l_fapi_mba_target);
-
- if (l_err)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X : mss_draminit HWP returns error",
- l_err->reasonCode());
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_mba_target).addToLog(l_err);
-
- // Create IStep error log and cross reference to error that occurred
- l_stepError.addErrorDetails( l_err );
-
- // Commit Error
- errlCommit( l_err, HWPF_COMP_ID );
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : mss_draminit HWP( )" );
- }
-
- } // endfor mba's
-
- // call POST_DRAM_INIT function
- if(INITSERVICE::spBaseServicesEnabled())
- {
- mss_post_draminit(l_stepError);
- }
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_draminit exit" );
-
- return l_stepError.getErrorHandle();
-}
-
-
-//
-// Wrapper function to call mss_draminit_training
-//
-void* call_mss_draminit_training( void *io_pArgs )
-{
- errlHndl_t l_err = NULL;
-
- IStepError l_stepError;
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mss_draminit_training entry" );
-
- // Get all MBA targets
- TARGETING::TargetHandleList l_mbaTargetList;
- getAllChiplets(l_mbaTargetList, TYPE_MBA);
-
- // Limit the number of MBAs to run in VPO environment to save time.
- uint8_t l_mbaLimit = l_mbaTargetList.size();
- if (TARGETING::is_vpo() && (VPO_NUM_OF_MBAS_TO_RUN < l_mbaLimit))
- {
- l_mbaLimit = VPO_NUM_OF_MBAS_TO_RUN;
- }
-
- for ( uint8_t l_mbaNum=0; l_mbaNum < l_mbaLimit; l_mbaNum++ )
- {
- // make a local copy of the target for ease of use
- const TARGETING::Target* l_mba_target = l_mbaTargetList[l_mbaNum];
-
- // Dump current run on target
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Running mss_draminit_training HWP on "
- "target HUID %.8X", TARGETING::get_huid(l_mba_target));
-
- // Cast to a FAPI type of target.
- const fapi::Target l_fapi_mba_target( TARGET_TYPE_MBA_CHIPLET,
- (const_cast<TARGETING::Target*>(l_mba_target)) );
-
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP(l_err, mss_draminit_training, l_fapi_mba_target);
-
- if (l_err)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X : mss_draminit_training HWP returns error",
- l_err->reasonCode());
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_mba_target).addToLog( l_err );
-
- // Create IStep error log and cross reference to error that occurred
- l_stepError.addErrorDetails( l_err );
-
- // Commit Error
- errlCommit( l_err, HWPF_COMP_ID );
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : mss_draminit_training HWP( )" );
- }
-
- }
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mss_draminit_training exit" );
-
- return l_stepError.getErrorHandle();
-}
-
-//
-// Wrapper function to call mss_draminit_trainadv
-//
-void* call_mss_draminit_trainadv( void *io_pArgs )
-{
- errlHndl_t l_err = NULL;
- IStepError l_stepError;
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mss_draminit_trainadv entry" );
-
- // Get all MBA targets
- TARGETING::TargetHandleList l_mbaTargetList;
- getAllChiplets(l_mbaTargetList, TYPE_MBA);
-
- // Limit the number of MBAs to run in VPO environment to save time.
- uint8_t l_mbaLimit = l_mbaTargetList.size();
- if (TARGETING::is_vpo() && (VPO_NUM_OF_MBAS_TO_RUN < l_mbaLimit))
- {
- l_mbaLimit = VPO_NUM_OF_MBAS_TO_RUN;
- }
-
- for ( uint8_t l_mbaNum=0; l_mbaNum < l_mbaLimit; l_mbaNum++ )
- {
- // make a local copy of the target for ease of use
- const TARGETING::Target* l_mba_target = l_mbaTargetList[l_mbaNum];
-
- // Dump current run on target
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Running mss_draminit_training_advanced HWP on "
- "target HUID %.8X", TARGETING::get_huid(l_mba_target));
-
- // Cast to a FAPI type of target.
- const fapi::Target l_fapi_mba_target( TARGET_TYPE_MBA_CHIPLET,
- (const_cast<TARGETING::Target*>(l_mba_target)) );
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP(l_err, mss_draminit_training_advanced,
- l_fapi_mba_target);
-
- if (l_err)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X : mss_draminit_training_advanced HWP returns error",
- l_err->reasonCode());
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_mba_target).addToLog( l_err );
-
- // Create IStep error log and cross reference to error that occurred
- l_stepError.addErrorDetails( l_err );
-
- // Commit Error
- errlCommit( l_err, HWPF_COMP_ID );
- }
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : mss_draminit_training_advanced HWP( )" );
- }
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mss_draminit_trainadv exit" );
-
- return l_stepError.getErrorHandle();
-}
-
-//
-// Wrapper function to call mss_draminit_mc
-//
-void* call_mss_draminit_mc( void *io_pArgs )
-{
- errlHndl_t l_err = NULL;
-
- IStepError l_stepError;
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace,"call_mss_draminit_mc entry" );
-
- // Get all centaur targets
- TARGETING::TargetHandleList l_mBufTargetList;
- getAllChips(l_mBufTargetList, TYPE_MEMBUF);
-
- // Limit the number of MBAs to run in VPO environment to save time.
- uint8_t l_memBufLimit = l_mBufTargetList.size();
- if (TARGETING::is_vpo() && (VPO_NUM_OF_MEMBUF_TO_RUN < l_memBufLimit))
- {
- l_memBufLimit = VPO_NUM_OF_MEMBUF_TO_RUN;
- }
-
- for ( uint8_t l_mBufNum=0; l_mBufNum < l_memBufLimit; l_mBufNum++ )
- {
- const TARGETING::Target* l_membuf_target = l_mBufTargetList[l_mBufNum];
-
- // Dump current run on target
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "Running mss_draminit_mc HWP on "
- "target HUID %.8X", TARGETING::get_huid(l_membuf_target));
-
- // Cast to a fapi target
- fapi::Target l_fapi_membuf_target( TARGET_TYPE_MEMBUF_CHIP,
- (const_cast<TARGETING::Target*>(l_membuf_target)) );
-
- // call the HWP with each fapi::Target
- FAPI_INVOKE_HWP(l_err, mss_draminit_mc, l_fapi_membuf_target);
-
- if (l_err)
- {
- TRACFCOMP(ISTEPS_TRACE::g_trac_isteps_trace,
- "ERROR 0x%.8X : mss_draminit_mc HWP returns error",
- l_err->reasonCode());
-
- // capture the target data in the elog
- ErrlUserDetailsTarget(l_membuf_target).addToLog( l_err );
-
- // Create IStep error log and cross reference to error that occurred
- l_stepError.addErrorDetails( l_err );
-
- // Commit Error
- errlCommit( l_err, HWPF_COMP_ID );
- }
- else
- {
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "SUCCESS : mss_draminit_mc HWP( )" );
- }
-
- } // End; memBuf loop
-
- TRACDCOMP( ISTEPS_TRACE::g_trac_isteps_trace, "call_mss_draminit_mc exit" );
-
- return l_stepError.getErrorHandle();
-}
-
-//
-// Wrapper function to call mss_dimm_power_test
-//
-void* call_mss_dimm_power_test( void *io_pArgs )
-{
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mss_dimm_power_test entry" );
-
-// This istep is a place holder
-
- TRACFCOMP( ISTEPS_TRACE::g_trac_isteps_trace,
- "call_mss_dimm_power_test exit" );
-
- return NULL;
-}
-
-}; // end namespace
diff --git a/src/usr/hwpf/hwp/dram_training/hbVddrMsg.C b/src/usr/hwpf/hwp/dram_training/hbVddrMsg.C
deleted file mode 100644
index cd131c515..000000000
--- a/src/usr/hwpf/hwp/dram_training/hbVddrMsg.C
+++ /dev/null
@@ -1,736 +0,0 @@
-/* IBM_PROLOG_BEGIN_TAG */
-/* This is an automatically generated prolog. */
-/* */
-/* $Source: src/usr/hwpf/hwp/dram_training/hbVddrMsg.C $ */
-/* */
-/* OpenPOWER HostBoot Project */
-/* */
-/* Contributors Listed Below - COPYRIGHT 2012,2015 */
-/* [+] Google Inc. */
-/* [+] International Business Machines Corp. */
-/* */
-/* */
-/* Licensed under the Apache License, Version 2.0 (the "License"); */
-/* you may not use this file except in compliance with the License. */
-/* You may obtain a copy of the License at */
-/* */
-/* http://www.apache.org/licenses/LICENSE-2.0 */
-/* */
-/* Unless required by applicable law or agreed to in writing, software */
-/* distributed under the License is distributed on an "AS IS" BASIS, */
-/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
-/* implied. See the License for the specific language governing */
-/* permissions and limitations under the License. */
-/* */
-/* IBM_PROLOG_END_TAG */
-#include <sys/task.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/msg.h>
-#include <sys/mm.h>
-#include <errl/errlentry.H>
-#include <errl/errlmanager.H>
-#include <trace/interface.H>
-#include <trace/trace.H>
-#include <mbox/mbox_queues.H>
-#include <mbox/mboxif.H>
-
-#include <hbVddrMsg.H>
-#include <initservice/initserviceif.H>
-#include <pnor/pnorif.H>
-#include <fapi.H>
-#include "platform_vddr.H"
-
-
-using namespace ERRORLOG;
-
-using namespace TARGETING;
-
-// Trace definition
-trace_desc_t* g_trac_volt = NULL;
-TRAC_INIT(&g_trac_volt, "HB_VDDR", 1024);
-
-///////////////////////////////////////////////////////////////////////////////
-// HBVddrMsg::HBVddrMsg()
-///////////////////////////////////////////////////////////////////////////////
-HBVddrMsg::HBVddrMsg()
-{
- TRACDCOMP( g_trac_volt, ENTER_MRK "HBVddrMsg::HBVddrMsg()" );
- TRACDCOMP( g_trac_volt, EXIT_MRK "HBVddrMsg::HBVddrMsg()" );
-
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// HBVddrMsg::~HBVddrMsg()
-///////////////////////////////////////////////////////////////////////////////
-HBVddrMsg::~HBVddrMsg()
-{
- TRACDCOMP( g_trac_volt, ENTER_MRK "HBVddrMsg::~HBVddrMsg()" );
- TRACDCOMP( g_trac_volt, EXIT_MRK "HBVddrMsg::~HBVddrMsg()" );
-};
-
-
-///////////////////////////////////////////////////////////////////////////////
-// compareVids
-///////////////////////////////////////////////////////////////////////////////
-
-bool compareVids(
- HBVddrMsg::hwsvPowrMemVoltDomainRequest_t i_lhs,
- HBVddrMsg::hwsvPowrMemVoltDomainRequest_t i_rhs)
-{
- bool lhsLogicallyBeforeRhs = (i_lhs.domain < i_rhs.domain);
-
- if (i_lhs.domain == i_rhs.domain)
- {
- lhsLogicallyBeforeRhs = ( static_cast<uint16_t>(i_lhs.domainId)
- < static_cast<uint16_t>(i_rhs.domainId) );
- }
-
- return lhsLogicallyBeforeRhs;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// areVidsEqual
-///////////////////////////////////////////////////////////////////////////////
-
-bool areVidsEqual(
- HBVddrMsg::hwsvPowrMemVoltDomainRequest_t i_lhs,
- HBVddrMsg::hwsvPowrMemVoltDomainRequest_t i_rhs)
-{
- return( ( i_lhs.domain
- == i_rhs.domain)
- && ( static_cast<uint16_t>(i_lhs.domainId)
- == static_cast<uint16_t>(i_rhs.domainId)) );
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// isUnusedVoltageDomain
-///////////////////////////////////////////////////////////////////////////////
-
-bool isUnusedVoltageDomain(
- HBVddrMsg::hwsvPowrMemVoltDomainRequest_t i_vid)
-{
- return (!i_vid.voltageMillivolts);
-}
-
-//******************************************************************************
-// addMemoryVoltageDomains (templated)
-//******************************************************************************
-
-template<
- const ATTRIBUTE_ID OFFSET_DISABLEMENT_ATTR,
- const ATTRIBUTE_ID VOLTAGE_ATTR_WHEN_OFFSET_ENABLED,
- const ATTRIBUTE_ID VOLTAGE_ATTR_WHEN_OFFSET_DISABLED,
- const ATTRIBUTE_ID VOLTAGE_DOMAIN_ID_ATTR >
-void HBVddrMsg::addMemoryVoltageDomains(
- const TARGETING::Target* const i_pMembuf,
- HBVddrMsg::RequestContainer& io_domains) const
-{
- assert(
- (i_pMembuf != NULL),
- "HBVddrMsg::addMemoryVoltageDomains: Code bug! Caller passed NULL "
- "memory buffer target handle.");
-
- assert(
- ( ( i_pMembuf->getAttr<TARGETING::ATTR_CLASS>()
- == TARGETING::CLASS_CHIP)
- && ( i_pMembuf->getAttr<TARGETING::ATTR_TYPE>()
- == TARGETING::TYPE_MEMBUF)),
- "HBVddrMsg::addMemoryVoltageDomains: Code bug! Caller passed non-"
- "memory buffer target handle of class = 0x%08X and type of 0x%08X.",
- i_pMembuf->getAttr<TARGETING::ATTR_CLASS>(),
- i_pMembuf->getAttr<TARGETING::ATTR_TYPE>());
-
- TARGETING::Target* pSysTarget = NULL;
- TARGETING::targetService().getTopLevelTarget(pSysTarget);
-
- assert(
- (pSysTarget != NULL),
- "HBVddrMsg::addMemoryVoltageDomains: Code bug! System target was "
- "NULL.");
-
- typename AttributeTraits< OFFSET_DISABLEMENT_ATTR >::Type
- disableOffsetVoltage =
- pSysTarget->getAttr< OFFSET_DISABLEMENT_ATTR >();
-
- assert(
- (disableOffsetVoltage <= true),
- "HBVddrMsg::addMemoryVoltageDomains: Code Bug! Unsupported "
- "value of 0x%02X for attribute ID of 0x%08X.",
- disableOffsetVoltage,
- OFFSET_DISABLEMENT_ATTR);
-
- // Initialized by constructor to invalid defaults
- HBVddrMsg::hwsvPowrMemVoltDomainRequest_t entry;
-
- switch(VOLTAGE_DOMAIN_ID_ATTR)
- {
- case TARGETING::ATTR_VMEM_ID:
- entry.domain = MEM_VOLTAGE_DOMAIN_VDDR;
- break;
- case TARGETING::ATTR_VCS_ID:
- entry.domain = MEM_VOLTAGE_DOMAIN_VCS;
- break;
- case TARGETING::ATTR_VPP_ID:
- entry.domain = MEM_VOLTAGE_DOMAIN_VPP;
- break;
- case TARGETING::ATTR_AVDD_ID:
- entry.domain = MEM_VOLTAGE_DOMAIN_AVDD;
- break;
- case TARGETING::ATTR_VDD_ID:
- entry.domain = MEM_VOLTAGE_DOMAIN_VDD;
- break;
- default:
- assert(
- 0,
- "HBVddrMsg::addMemoryVoltageDomains: Code Bug! Unsupported "
- "voltage domain of 0x%08X.",
- VOLTAGE_DOMAIN_ID_ATTR);
- break;
- }
-
- // There is no reasonable check to validate if a voltage ID we're reading
- // is valid so it has to be assumed good
- entry.domainId = i_pMembuf->getAttr< VOLTAGE_DOMAIN_ID_ATTR >();
-
- // There is no reasonable check to validate if a voltage we're
- // reading is valid so it has to be assumed good for the cases below
- if(!disableOffsetVoltage)
- {
- typename
- TARGETING::AttributeTraits< VOLTAGE_ATTR_WHEN_OFFSET_ENABLED >::Type
- voltageMillivolts
- = i_pMembuf->getAttr< VOLTAGE_ATTR_WHEN_OFFSET_ENABLED >();
-
- entry.voltageMillivolts = static_cast<uint32_t>(voltageMillivolts);
- io_domains.push_back(entry);
- }
- else if( VOLTAGE_ATTR_WHEN_OFFSET_DISABLED
- != VOLTAGE_ATTR_WHEN_OFFSET_ENABLED)
- {
- typename
- TARGETING::AttributeTraits< VOLTAGE_ATTR_WHEN_OFFSET_DISABLED >::Type
- voltageMillivolts
- = i_pMembuf->getAttr< VOLTAGE_ATTR_WHEN_OFFSET_DISABLED >();
-
- entry.voltageMillivolts = static_cast<uint32_t>(voltageMillivolts);
- io_domains.push_back(entry);
- }
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// HBVddrMsg::createVddrData
-///////////////////////////////////////////////////////////////////////////////
-
-void HBVddrMsg::createVddrData(
- VDDR_MSG_TYPE i_requestType,
- RequestContainer& io_request) const
-{
- TRACFCOMP( g_trac_volt, ENTER_MRK "HBVddrMsg::createVddrData" );
-
- // Go through all the memory buffers and gather their domains, domain
- // specific IDs, and domain specific voltages
- io_request.clear();
-
- do{
-
- TARGETING::TargetHandleList membufTargetList;
- //When request is a disable command, disable all present Centaurs
- // in case we go through a reconfigure loop
- if(i_requestType == HB_VDDR_DISABLE)
- {
- getChipResources( membufTargetList, TYPE_MEMBUF,
- UTIL_FILTER_PRESENT );
- }
- //When the request is an enable command, enable only functional
- // centaurs.
- else
- {
- getAllChips(membufTargetList, TYPE_MEMBUF);
- }
-
- TARGETING::Target* pMembuf =NULL;
- for (TARGETING::TargetHandleList::const_iterator
- ppMembuf = membufTargetList.begin();
- ppMembuf != membufTargetList.end();
- ++ppMembuf)
- {
- pMembuf = *ppMembuf;
-
- if(i_requestType == HB_VDDR_ENABLE)
- {
- (void)addMemoryVoltageDomains<
- TARGETING::ATTR_MSS_CENT_VDD_OFFSET_DISABLE,
- TARGETING::ATTR_MEM_VDD_OFFSET_MILLIVOLTS,
- TARGETING::ATTR_MEM_VDD_OFFSET_MILLIVOLTS,
- TARGETING::ATTR_VDD_ID>(
- pMembuf,
- io_request);
-
- (void)addMemoryVoltageDomains<
- TARGETING::ATTR_MSS_CENT_AVDD_OFFSET_DISABLE,
- TARGETING::ATTR_MEM_AVDD_OFFSET_MILLIVOLTS,
- TARGETING::ATTR_MEM_AVDD_OFFSET_MILLIVOLTS,
- TARGETING::ATTR_AVDD_ID>(
- pMembuf,
- io_request);
-
- (void)addMemoryVoltageDomains<
- TARGETING::ATTR_MSS_CENT_VCS_OFFSET_DISABLE,
- TARGETING::ATTR_MEM_VCS_OFFSET_MILLIVOLTS,
- TARGETING::ATTR_MEM_VCS_OFFSET_MILLIVOLTS,
- TARGETING::ATTR_VCS_ID>(
- pMembuf,
- io_request);
-
- (void)addMemoryVoltageDomains<
- TARGETING::ATTR_MSS_VOLT_VPP_OFFSET_DISABLE,
- TARGETING::ATTR_MEM_VPP_OFFSET_MILLIVOLTS,
- TARGETING::ATTR_VPP_BASE,
- TARGETING::ATTR_VPP_ID>(
- pMembuf,
- io_request);
- }
-
- (void)addMemoryVoltageDomains<
- TARGETING::ATTR_MSS_VOLT_VDDR_OFFSET_DISABLE,
- TARGETING::ATTR_MEM_VDDR_OFFSET_MILLIVOLTS,
- TARGETING::ATTR_MSS_VOLT,
- TARGETING::ATTR_VMEM_ID>(
- pMembuf,
- io_request);
- }
-
- if (membufTargetList.size() > 1)
- {
- // Take out the duplicate records in io_request by first
- // sorting and then removing the duplicates
- std::sort(io_request.begin(), io_request.end(), compareVids);
- std::vector<hwsvPowrMemVoltDomainRequest_t>::iterator
- pInvalidEntries = std::unique(
- io_request.begin(),
- io_request.end(),
- areVidsEqual);
- io_request.erase(pInvalidEntries,io_request.end());
- }
-
- if( ( (i_requestType == HB_VDDR_ENABLE) ||
- (i_requestType == HB_VDDR_POST_DRAM_INIT_ENABLE) )
- && (!membufTargetList.empty()) )
- {
- // Inhibit sending any request to turn on a domain with no voltage.
- // When disabling we don't need to do this because the voltage is
- // ignored.
- io_request.erase(
- std::remove_if(io_request.begin(), io_request.end(),
- isUnusedVoltageDomain),io_request.end());
- }
-
- } while(0);
-
- TRACFCOMP( g_trac_volt, EXIT_MRK "HBVddrMsg::createVddrData" );
- return;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// HBVddrMsg::sendMsg
-///////////////////////////////////////////////////////////////////////////////
-errlHndl_t HBVddrMsg::sendMsg(VDDR_MSG_TYPE i_msgType) const
-{
- errlHndl_t l_err = NULL;
-
- TRACFCOMP(g_trac_volt, ENTER_MRK
- "hbVddrMsg::sendMsg msg_type =0x%08X",i_msgType);
-
- do
- {
- RequestContainer l_request;
-
- if ( ! ( (i_msgType == HB_VDDR_ENABLE) ||
- (i_msgType == HB_VDDR_DISABLE) ||
- (i_msgType == HB_VDDR_POST_DRAM_INIT_ENABLE) ) )
- {
- TRACFCOMP(g_trac_volt, ERR_MRK "hbVddrMsg::send msg with non-"
- "valid msg type%08X",i_msgType);
- /*@
- * @errortype
- * @moduleid fapi::MOD_VDDR_SEND_MSG
- * @reasoncode fapi::RC_INCORRECT_MSG_TYPE
- * @userdata1 i_msgType
- * @userdata2 0
- *
- * @devdesc HB got an incorrect type message. HB did not
- * provide the correct message type in the istep.
- * Userdata1 shows the message type passed in
- */
- createErrLog(l_err, fapi::MOD_VDDR_SEND_MSG,
- fapi::RC_INCORRECT_MSG_TYPE, i_msgType);
- break;
- }
- createVddrData(i_msgType, l_request);
-
-
- size_t l_dataCount = l_request.size();
-
- // Only send a message if there is data to send
- if (l_dataCount)
- {
- uint32_t l_msgSize = l_dataCount *
- sizeof(hwsvPowrMemVoltDomainRequest_t);
-
- // Create the message to send to HWSV
- msg_t* l_msg = msg_allocate();
- l_msg->type = i_msgType;
- l_msg->data[0] = 0;
- l_msg->data[1] = l_msgSize;
-
- TRACFCOMP(g_trac_volt, INFO_MRK "hbVddrMsg::l_dataCount=%d, "
- "l_msgSize=%d",
- l_dataCount, l_msgSize);
- void* l_data = malloc(l_msgSize);
-
- hwsvPowrMemVoltDomainRequest_t* l_ptr =
- reinterpret_cast<hwsvPowrMemVoltDomainRequest_t*>(l_data);
-
- for (size_t j =0; j<l_dataCount; ++j)
- {
- l_ptr->domain=l_request.at(j).domain;
- l_ptr->domainId=l_request.at(j).domainId;
- l_ptr->voltageMillivolts=l_request.at(j).voltageMillivolts;
-
- TRACFCOMP(g_trac_volt, ENTER_MRK "hbVddrMsg::sendMsg "
- "Voltage domain type = 0x%08X, "
- "Voltage domain ID = 0x%04X, "
- "Voltage (mV) = %d, index = %d",
- l_ptr->domain,
- l_ptr->domainId, l_ptr->voltageMillivolts,j);
- l_ptr++;
- }
-
- l_msg->extra_data = l_data;
-
- TRACFBIN(g_trac_volt, "l_data", l_data, l_msgSize);
- l_err = MBOX::sendrecv( MBOX::FSP_VDDR_MSGQ, l_msg );
- if (l_err)
- {
- TRACFCOMP(g_trac_volt,
- ERR_MRK "Failed sending VDDR message to FSP");
- }
- else
- {
- l_err=processMsg(l_msg);
- }
-
- // If sendrecv returns error then it may not have freed the
- // extra_data, else need to free the response message extra_data
- free(l_msg->extra_data);
- l_msg->extra_data = NULL;
-
- msg_free(l_msg);
- l_msg = NULL;
- }
- } while(0);
-
- TRACFCOMP(g_trac_volt, EXIT_MRK "hbEnableVddr::sendMsg");
- return l_err;
-}
-
-
-///////////////////////////////////////////////////////////////////////////////
-// HBVddrMsg::processVDDRmsg
-///////////////////////////////////////////////////////////////////////////////
-errlHndl_t HBVddrMsg::processVDDRmsg(msg_t* i_recvMsg) const
-{
- TRACFCOMP(g_trac_volt, ENTER_MRK "HBVddrMsg::processVDDRmsg");
- errlHndl_t l_errLog = NULL;
- //check to see if an error occurred from the powr Enable/Disable functions
- //and is inside the message
-
- uint32_t l_msgSize = i_recvMsg->data[1];
- uint16_t l_elementCount = l_msgSize/sizeof(hwsvPowrMemVoltDomainReply_t);
- const uint8_t* l_extraData = NULL;
- l_extraData=static_cast<uint8_t*>(i_recvMsg->extra_data);
-
- do{
- if (l_extraData==NULL)
- {
- //an error occred in obtaining the extra data from the response msg
- TRACFCOMP( g_trac_volt, ERR_MRK
- "HBVddrMsg::processVDDRmsg: l_extraData = NULL");
- //create an errorlog
- /*@
- * @errortype
- * @moduleid fapi::MOD_VDDR_PROC_VDDR_MSG
- * @reasoncode fapi::RC_VDDR_EMPTY_MSG
- * @userdata1 0
- * @userdata2 0
- *
- * @devdesc The hwsv returned a message where the extra data
- * was null. This should not happen so need to
- * tell HostBoot to stop the ipl
- */
- createErrLog(l_errLog, fapi::MOD_VDDR_PROC_VDDR_MSG,
- fapi::RC_VDDR_EMPTY_MSG);
- break;
- }
-
- MEM_VOLTAGE_DOMAIN domain = MEM_VOLTAGE_DOMAIN_UNKNOWN;
- TARGETING::ATTR_VMEM_ID_type l_domainId =0x0;
- uint32_t l_errPlid =0x0;
-
- TRACFCOMP( g_trac_volt, INFO_MRK "HBVddrMsg::processVDDRmsg: "
- "l_elementCount=%d, l_msgSize =%d",
- l_elementCount, l_msgSize);
- const hwsvPowrMemVoltDomainReply_t* l_ptr=
- reinterpret_cast<const hwsvPowrMemVoltDomainReply_t*>(l_extraData);
-
- for (size_t i=0; i<l_elementCount; ++i)
- {
- domain = l_ptr->domain;
- l_domainId = l_ptr->domainId;
- l_errPlid = l_ptr->plid;
-
- TRACFCOMP( g_trac_volt, INFO_MRK "HBVddrMsg::processVDDRmsg: "
- "domain = 0x%08X, l_domainId=0x%08X, l_errPlid=0x%08X",
- domain,l_domainId,l_errPlid);
- if (l_errPlid ==0x0)
- {
- TRACFCOMP( g_trac_volt, INFO_MRK "HBVddrMsg::processVDDRmsg: "
- "no plid error found for domain = 0x%08X, "
- "l_domainId=0x%08X", domain, l_domainId);
- }
- else
- {
- //error occured so break out of the loop and indicate
- //an error was present
- TRACFCOMP( g_trac_volt, ERR_MRK
- "HBVddrMsg::processVDDRmsg: error occured "
- "on the powr function called in hwsv");
- //create an errorlog
- /*@
- * @errortype
- * @moduleid fapi::MOD_VDDR_PROC_VDDR_MSG
- * @reasoncode fapi::RC_VDDR_POWR_ERR
- * @userdata1 l_errPlid
- * @userdata2 0
- *
- * @devdesc The hwsv returned a message where there was
- * an error when the powr function was called.
- * userdata1 contains the errorlog plid from
- * hwsv generated by the powr function
- */
- createErrLog(l_errLog, fapi::MOD_VDDR_PROC_VDDR_MSG,
- fapi::RC_VDDR_POWR_ERR, l_errPlid);
- l_errLog->plid(l_errPlid);
- break;
- }
-
- l_ptr++;
- }
- }while(0);
- TRACFCOMP(g_trac_volt, EXIT_MRK "HBVddrMsg::processVDDRmsg");
- return l_errLog;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// HBVddrMsg::processMsg
-///////////////////////////////////////////////////////////////////////////////
-errlHndl_t HBVddrMsg::processMsg(msg_t* i_Msg) const
-{
- TRACFCOMP(g_trac_volt, ENTER_MRK "HBVddrMsg::processMsg");
- errlHndl_t l_errLog = NULL;
-
- do
- {
- //check to see if the data[0] =0 or contains a value.
- //A value of 0 means its a response to a request and a value not equal
- //to zero means that its an error coming back
-
- uint16_t l_value1=i_Msg->data[0];
- if (l_value1 ==0)
- {
- //process a response to a request
-
- uint32_t l_msgType =i_Msg->type;
- TRACFCOMP( g_trac_volt, INFO_MRK
- "HBVddrMsg::processMsg l_msgType=x%08X",l_msgType );
- if ( (l_msgType == HB_VDDR_ENABLE) ||
- (l_msgType == HB_VDDR_DISABLE)||
- (l_msgType == HB_VDDR_POST_DRAM_INIT_ENABLE) )
- {
- //process a VDDR message
- l_errLog=processVDDRmsg(i_Msg);
- if (l_errLog)
- {
- break;
- }
-
- }
- else
- {
- TRACFCOMP( g_trac_volt, ERR_MRK
- "HBVddrMsg::processMsg recv'd a non valid type");
- //generate errorLog;
- /*@
- * @errortype
- * @moduleid fapi::MOD_VDDR_PROC_MSG
- * @reasoncode fapi::RC_INCORRECT_MSG_TYPE
- * @userdata1 0
- * @userdata2 0
- *
- * @devdesc HB got an incorrect type message.
- * HWSV did not populate the message correctly
- * or mbox corrupted the message
- */
- createErrLog(l_errLog, fapi::MOD_VDDR_PROC_MSG,
- fapi::RC_INCORRECT_MSG_TYPE);
- }
- }
- else
- {
- //an error occurred so should stop the IPL
- TRACFCOMP( g_trac_volt, ERR_MRK
- "HBVddrMsg::RecvMsgHndlr recv'd an error message" );
- //generate an errorlog
- /*@
- * @errortype
- * @moduleid fapi::MOD_VDDR_PROC_MSG
- * @reasoncode fapi::RC_VDDR_ERROR_MSG
- * @userdata1 error PLID from hwsv
- * @userdata2 0
- *
- * @devdesc The hwsv found an error while processing the
- * message so it sent an error message back to
- * indicate to HostBoot to stop the IPL.
- * Userdata1 will have the error PLID from hwsv's
- * errorlog
- */
- createErrLog(l_errLog, fapi::MOD_VDDR_PROC_MSG,
- fapi::RC_VDDR_ERROR_MSG, i_Msg->data[1]);
- l_errLog->plid(i_Msg->data[1]);
- }
-
- }while(0);
-
- TRACFCOMP(g_trac_volt, EXIT_MRK "HBVddrMsg::processMsg");
- return l_errLog;
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// HBVddrMsg::createErrLog
-///////////////////////////////////////////////////////////////////////////////
-void HBVddrMsg::createErrLog(errlHndl_t& io_err,
- fapi::hwpfModuleId i_mod,
- fapi::hwpfReasonCode i_rc,
- uint32_t i_userData1) const
-{
- if (io_err == NULL)
- {
- io_err = new ErrlEntry(ERRL_SEV_UNRECOVERABLE,
- i_mod,
- i_rc,
- i_userData1,
- 0);
-
- }
- return;
-}
-
-// External interfaces
-
-errlHndl_t platform_enable_vspd()
-{
- // noop on FSP based system
- return NULL;
-}
-
-errlHndl_t platform_enable_vddr()
-{
- errlHndl_t l_err = NULL;
- if(INITSERVICE::spBaseServicesEnabled())
- {
- HBVddrMsg l_hbVddr;
-
- l_err = l_hbVddr.sendMsg(HBVddrMsg::HB_VDDR_ENABLE);
- if (l_err)
- {
- TRACFCOMP(g_trac_volt,
- "ERROR 0x%.8X: call_host_enable_vddr to sendMsg"
- " returns error",
- l_err->reasonCode());
- }
- else
- {
- TRACFCOMP( g_trac_volt,
- "SUCCESS : host_enable_vddr()" );
- }
- }
- else // no FSP/mbox services available
- {
- TRACFCOMP(g_trac_volt,"call_host_enable_vddr"
- "no-op because mbox not available");
- }
-
- return l_err;
-}
-
-errlHndl_t platform_disable_vddr()
-{
- errlHndl_t l_err = NULL;
- if(INITSERVICE::spBaseServicesEnabled())
- {
- HBVddrMsg l_hbVddr;
-
- l_err = l_hbVddr.sendMsg(HBVddrMsg::HB_VDDR_DISABLE);
- if (l_err)
- {
- TRACFCOMP(g_trac_volt,
- "ERROR 0x%.8X: call_host_disable_vddr to sendMsg"
- " returns error",
- l_err->reasonCode());
- }
- else
- {
- TRACFCOMP( g_trac_volt,
- "SUCCESS : host_disable_vddr()" );
- }
- }
- else // no FSP/mbox services available
- {
- TRACFCOMP(g_trac_volt,"call_host_disable_vddr"
- "no-op because mbox not available");
- }
-
- return l_err;
-}
-
-errlHndl_t platform_adjust_vddr_post_dram_init()
-{
- errlHndl_t l_err = NULL;
- if(INITSERVICE::spBaseServicesEnabled())
- {
- HBVddrMsg l_hbVddr;
-
- l_err = l_hbVddr.sendMsg(HBVddrMsg::HB_VDDR_POST_DRAM_INIT_ENABLE);
- if (l_err)
- {
- TRACFCOMP(g_trac_volt,
- "ERROR 0x%.8X: call_host_adjust_vddr_post_dram_init to "
- "sendMsg returns error",
- l_err->reasonCode());
- }
- else
- {
- TRACFCOMP( g_trac_volt,
- "SUCCESS : host_adjust_vddr_post_dram_init()" );
- }
- }
- else // no FSP/mbox services available
- {
- TRACFCOMP(g_trac_volt,"call_host_adjust_vddr_post_dram_init()"
- "no-op because mbox not available");
- }
-
- return l_err;
-}
-
diff --git a/src/usr/hwpf/hwp/dram_training/hbVddrMsg.H b/src/usr/hwpf/hwp/dram_training/hbVddrMsg.H
deleted file mode 100644
index 23f79fc14..000000000
--- a/src/usr/hwpf/hwp/dram_training/hbVddrMsg.H
+++ /dev/null
@@ -1,311 +0,0 @@
-/* IBM_PROLOG_BEGIN_TAG */
-/* This is an automatically generated prolog. */
-/* */
-/* $Source: src/usr/hwpf/hwp/dram_training/hbVddrMsg.H $ */
-/* */
-/* OpenPOWER HostBoot Project */
-/* */
-/* Contributors Listed Below - COPYRIGHT 2012,2015 */
-/* [+] International Business Machines Corp. */
-/* */
-/* */
-/* Licensed under the Apache License, Version 2.0 (the "License"); */
-/* you may not use this file except in compliance with the License. */
-/* You may obtain a copy of the License at */
-/* */
-/* http://www.apache.org/licenses/LICENSE-2.0 */
-/* */
-/* Unless required by applicable law or agreed to in writing, software */
-/* distributed under the License is distributed on an "AS IS" BASIS, */
-/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
-/* implied. See the License for the specific language governing */
-/* permissions and limitations under the License. */
-/* */
-/* IBM_PROLOG_END_TAG */
-
-#ifndef __HB_VDDR_MSG_H
-#define __HB_VDDR_MSG_H
-
-/*****************************************************************************/
-// I n c l u d e s
-/*****************************************************************************/
-#include <sys/task.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/mm.h>
-#include <sys/msg.h>
-#include <sys/sync.h>
-#include <stdint.h>
-
-#include <util/singleton.H>
-#include <errl/errlentry.H>
-#include <kernel/timemgr.H>
-#include <hbotcompid.H>
-#include <hwas/common/hwasCallout.H>
-#include <mbox/mbox_queues.H>
-#include <mbox/mboxif.H>
-#include <targeting/common/targetservice.H>
-#include <targeting/common/utilFilter.H>
-#include <hwpf/hwpf_reasoncodes.H>
-#include <attributeenums.H>
-
-/*****************************************************************************/
-// Forward class declarations
-/*****************************************************************************/
-class HBVddrMsg;
-
-/**
- * @brief HBVddrMsg
- * This class provides interfaces to send and process messages to and from
- * hwsv with respect to powr. It also indicates when to stop the IPL via
- * errorlogs
- */
-class HBVddrMsg
-{
-
-public:
-
- /**
- * @brief Enum specifying a memory voltage domain type
- */
- enum MEM_VOLTAGE_DOMAIN
- {
- // For unknown / uninitialized values
- MEM_VOLTAGE_DOMAIN_UNKNOWN = 0x00,
-
- // Valid values
- MEM_VOLTAGE_DOMAIN_VDD = 0x01,
- MEM_VOLTAGE_DOMAIN_AVDD = 0x02,
- MEM_VOLTAGE_DOMAIN_VCS = 0x03,
- MEM_VOLTAGE_DOMAIN_VPP = 0x04,
- MEM_VOLTAGE_DOMAIN_VDDR = 0x05,
-
- // Good range markers - Need to be adjusted if the above change
- MEM_VOLTAGE_DOMAIN_MIN_VALUE = MEM_VOLTAGE_DOMAIN_VDD,
- MEM_VOLTAGE_DOMAIN_MAX_VALUE = MEM_VOLTAGE_DOMAIN_VDDR,
- };
-
- /**
- * @struct hwsvPowrMemVoltDomainRequest_t
- *
- * @brief Structure containing a memory voltage domain type, ID, and
- * voltage in mV
- */
- struct hwsvPowrMemVoltDomainRequest_t
- {
- MEM_VOLTAGE_DOMAIN domain;
- TARGETING::ATTR_VMEM_ID_type domainId;
- TARGETING::ATTR_MSS_VOLT_type voltageMillivolts;
-
- hwsvPowrMemVoltDomainRequest_t()
- : domain(MEM_VOLTAGE_DOMAIN_UNKNOWN),
- domainId(0x0000),
- voltageMillivolts(0x00000000)
- {
- }
-
- } __attribute__ ((packed));
-
- /**
- * @struct hwsvPowrMemVoltDomainReply_t
- *
- * @brief Structure containing a memory voltage domain type, ID, and error
- * log PLID as returned by the FSP POWR function when it tried to set
- * the implied voltage regulator to the specified voltage.
- */
- struct hwsvPowrMemVoltDomainReply_t
- {
- MEM_VOLTAGE_DOMAIN domain;
- TARGETING::ATTR_VMEM_ID_type domainId;
- uint32_t plid;
-
- hwsvPowrMemVoltDomainReply_t()
- : domain(MEM_VOLTAGE_DOMAIN_UNKNOWN),
- domainId(0x0000),
- plid(0x00000000)
- {
- }
-
- } __attribute__ ((packed));
-
- /**
- * @enum VDDR_MSG_TYPE
- *
- * @brief Message enum to determine how the msg should be processed
- *
- */
- enum VDDR_MSG_TYPE
- {
- HB_VDDR_ENABLE = 0x40000041,
- HB_VDDR_DISABLE = 0x40000042,
- HB_VDDR_POST_DRAM_INIT_ENABLE = 0x40000043,
- };
-
- /**
- * @brief typedefs for containers for structures
- */
- typedef std::vector<hwsvPowrMemVoltDomainReply_t> ResponseContainer;
- typedef std::vector<hwsvPowrMemVoltDomainRequest_t> RequestContainer;
-
- /**
- * @brief Default constructor
- */
- HBVddrMsg();
-
- /**
- * @brief Destructor
- *
- * Releases all resources owned by the handle.
- *
- * @return None
- *
- */
- ~HBVddrMsg();
-
- /**
- * @brief Accumulates memory voltage domain type/ID/voltage records and
- * appends them to the provided container
- *
- * @par Detailed Description:
- * This function will accumulates memory voltage domain type/ID/voltage
- * records and appends them to the provided container. If an "enable"
- * request, adds records from all memory voltage domains. If a
- * "disable" message, only adds records from the VDDR (a.k.a. VMEM)
- * voltage domain.
- *
- * @param[in] i_requestType
- * Type of data accumulation request
- *
- * @param[in/out] io_request
- * On input, a container to hold the memory voltage domain programming
- * records. On output, the container holds the relevant records.
- *
- * @return N/A
- */
- void createVddrData(
- VDDR_MSG_TYPE i_requestType,
- RequestContainer& io_request) const;
-
- /**
- * @brief Uses the internal mailbox to send a message to the FSP
- *
- *
- * @par Detailed Description:
- * This function will call into mailbox FSP code using the
- * FSP_VDDR_MSGQ as the message queue..
- *
- * @param[in] i_msgType
- * HBVddrMsg::VDDR_MSG_TYPE passed in to define the
- * message policy.
- *
- * @return errlHndl_t
- * return errl == NULL -> success
- * return errl != NULL -> failure
- */
- errlHndl_t sendMsg(VDDR_MSG_TYPE i_msgType) const;
-
-private:
-
- /**
- * @brief For a given memory buffer and memory voltage domain, adds a
- * voltage programming request record to the input list
- *
- * @tparam OFFSET_DISABLEMENT_ATTR
- * ID of the attribute to read to determine if a given memory voltage
- * domain offset voltage should be applied or not. Should be one of
- * the TARGETING::ATTR_*_ID attribute IDs, where * = VMEM, VPP, VCS,
- * VDD, or AVDD.
- *
- * @tparam VOLTAGE_ATTR_WHEN_OFFSET_ENABLED
- * ID of the attribute which should be read to obtain the given memory
- * voltage domain's offset voltage to program. In this case the offset
- * voltage acts as the actual voltage. Should be one of the
- * TARGETING::ATTR_MEM_*_OFFSET_MILLIVOLTS attribute IDs, where
- * * = VMEM, VPP, VCS, VDD, or AVDD. Only used when the memory voltage
- * domain's offset voltage is enabled. Otherwise the parameter, below,
- * controls how the voltage, if any, is programmed.
- *
- * @tparam VOLTAGE_ATTR_WHEN_OFFSET_DISABLED
- * ID of the attribute which should be read to obtain the given memory
- * voltage domain's voltage to program. Only applied if the memory
- * voltage domain's offset voltage is disabled -AND- the attribute ID
- * is different than the one given by
- * VOLTAGE_ATTR_WHEN_OFFSET_ENABLED. Should be one of
- * TARGETING::ATTR_VPP_BASE, TARGETING::ATTR_MSS_VOLT, or
- * TARGETING::ATTR_MEM_*_OFFSET_MILLIVOLTS where * = VPP, AVDD, or
- * VCS.
- *
- * @note: This function does not ensure that all permutations of the above
- * template parameters are valid.
- *
- * @param[in] i_pMembuf
- * Handle to a memory buffer target. Function will assert if NULL or
- * not a memory buffer target.
- *
- * @param[in,out] io_domains
- * On input, an existing list of 0 or more voltage domain records. On
- * output, that same list with up to 1 additional voltage domain
- * record.
- *
- * @return N/A
- */
- template<
- const TARGETING::ATTRIBUTE_ID OFFSET_DISABLEMENT_ATTR,
- const TARGETING::ATTRIBUTE_ID VOLTAGE_ATTR_WHEN_OFFSET_ENABLED,
- const TARGETING::ATTRIBUTE_ID VOLTAGE_ATTR_WHEN_OFFSET_DISABLED,
- const TARGETING::ATTRIBUTE_ID VOLTAGE_DOMAIN_ID_ATTR >
- void addMemoryVoltageDomains(
- const TARGETING::Target* const i_pMembuf,
- HBVddrMsg::RequestContainer& io_domains) const;
-
-protected:
-
- /**
- * @brief function to process a generic message recieved from the FSP
- *
- * @param[in] i_recvMsg The message from the message queue.
- * It contains the response data from the FSP
- *
- * @return errlHndl_t
- * return errl == NULL -> success
- * return errl != NULL -> failure
- */
- errlHndl_t processMsg(msg_t* i_recvMsg) const;
-
- /**
- * @brief function to process a power Vmem message recieved from the FSP
- *
- * @param[in] i_recvMsg The message from the message queue.
- * It contains the response data from the FSP
- *
- * @param[out] i_passed indicates if powr function succeeded or failed on
- * the FSP.
- *
- * @return errlHndl_t
- * return errl == NULL -> success
- * return errl != NULL -> failure
- */
- errlHndl_t processVDDRmsg(msg_t* i_recvMsg)const;
-
- /**
- * @brief function to create error logs for errors that occured in FSP side
- *
- * @param[in/out] io_err. Error log to generate indicating that an error
- * has has occured on HB or in the powr messages. This error
- * should stop the IPL from processing further.
- *
- * @param[in] i_mod. The module where the error occured
- *
- * @param[in] i_rc. The return code for the error that occured
- *
- * @return None
- */
- void createErrLog(errlHndl_t& io_err,
- fapi::hwpfModuleId i_mod,
- fapi::hwpfReasonCode i_rc,
- uint32_t i_userData1=0x0) const;
-
-};
-
-
-#endif
diff --git a/src/usr/hwpf/hwp/dram_training/makefile b/src/usr/hwpf/hwp/dram_training/makefile
index fea2d0120..11496a39b 100644
--- a/src/usr/hwpf/hwp/dram_training/makefile
+++ b/src/usr/hwpf/hwp/dram_training/makefile
@@ -60,7 +60,6 @@ EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/dram_training/cen_stopclocks
EXTRAINCDIR += ${ROOTPATH}/src/usr/hwpf/hwp/dram_initialization/proc_throttle_sync
## NOTE: add new object files when you add a new HWP
-OBJS += dram_training.o
OBJS += mss_draminit.o
OBJS += mss_funcs.o
OBJS += mss_draminit_mc.o
@@ -83,9 +82,6 @@ OBJS += mss_ddr4_pda.o
OBJS += mss_ddr4_funcs.o
OBJS += mss_mrs6_DDR4.o
-#
-OBJS += $(if $(CONFIG_PALMETTO_VDDR),palmetto_vddr.o, hbVddrMsg.o)
-
## NOTE: add a new directory onto the vpaths when you add a new HWP
##@ VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/???
VPATH += ${ROOTPATH}/src/usr/hwpf/hwp/dram_training/mss_draminit_training
diff --git a/src/usr/hwpf/hwp/dram_training/palmetto_vddr.C b/src/usr/hwpf/hwp/dram_training/palmetto_vddr.C
deleted file mode 100644
index b0b7e47d7..000000000
--- a/src/usr/hwpf/hwp/dram_training/palmetto_vddr.C
+++ /dev/null
@@ -1,365 +0,0 @@
-/* IBM_PROLOG_BEGIN_TAG */
-/* This is an automatically generated prolog. */
-/* */
-/* $Source: src/usr/hwpf/hwp/dram_training/palmetto_vddr.C $ */
-/* */
-/* OpenPOWER HostBoot Project */
-/* */
-/* Contributors Listed Below - COPYRIGHT 2014,2015 */
-/* [+] Google Inc. */
-/* [+] International Business Machines Corp. */
-/* */
-/* */
-/* Licensed under the Apache License, Version 2.0 (the "License"); */
-/* you may not use this file except in compliance with the License. */
-/* You may obtain a copy of the License at */
-/* */
-/* http://www.apache.org/licenses/LICENSE-2.0 */
-/* */
-/* Unless required by applicable law or agreed to in writing, software */
-/* distributed under the License is distributed on an "AS IS" BASIS, */
-/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
-/* implied. See the License for the specific language governing */
-/* permissions and limitations under the License. */
-/* */
-/* IBM_PROLOG_END_TAG */
-// Rhesus board-specific VDDR support.
-// VDDR is enabled/disabled via a GPIO on the hammock card.
-// A separate GPIO selects between 1.35V and 1.25V output from the VR.
-
-#include "platform_vddr.H"
-
-#include <string.h>
-
-#include <hwpf/hwpf_reasoncodes.H>
-#include <errl/errlentry.H>
-#include <errl/errlmanager.H>
-
-#include <targeting/common/commontargeting.H>
-#include <targeting/common/util.H>
-#include <targeting/common/utilFilter.H>
-
-#include <kernel/timemgr.H>
-
-#include <usr/devicefw/driverif.H>
-#include <usr/gpio/gpioif.H>
-
-using namespace TARGETING;
-using namespace DeviceFW;
-
-trace_desc_t* g_trac_vddr = NULL;
-TRAC_INIT(&g_trac_vddr, "HB_VDDR", KILOBYTE);
-
-// PCA95X internal register addresses
-enum
-{
- PCA95X_GPIO_REG_INPUT = 0x0,
- PCA95X_GPIO_REG_OUTPUT = 0x2,
- PCA95X_GPIO_REG_POLARITY = 0x4,
- PCA95X_GPIO_POLARITY_NORMAL = 0,
- PCA95X_GPIO_POLARITY_INVERTED = 1,
- PCA95X_GPIO_REG_CONFIG = 0x6,
-};
-
-#define PCA95X_GPIO_CONFIG_OUTPUT false
-#define PCA95X_GPIO_CONFIG_INPUT true
-
-// GPIO bit numbers (0-7) => port addr 0 pin(0-7)
-// GPIO bit numbers (8-15) => port addr 1 pin(0-7)
-#define GPIO_TO_PORT(gpio) (gpio / 8)
-#define GPIO_TO_BIT(gpio) (gpio % 8)
-
-// Helper function to call provided function pointer on each functional
-// centaur Target.
-
-//******************************************************************************
-// compareTargetsGpioInfos
-//******************************************************************************
-
-bool compareTargetsGpioInfos(
- TARGETING::TargetHandle_t i_pLhs,
- TARGETING::TargetHandle_t i_pRhs)
-{
-
- TARGETING::ATTR_GPIO_INFO_type lhsGpioInfo =
- i_pLhs->getAttr<TARGETING::ATTR_GPIO_INFO>();
- TARGETING::ATTR_GPIO_INFO_type rhsGpioInfo =
- i_pRhs->getAttr<TARGETING::ATTR_GPIO_INFO>();
-
- // Code logically compares left hand side (lhs) target to right hand side
- // (rhs) target with respect to GPIO info and returns true if the left hand
- // side is logically before the right hand side. To make the computation,
- // compare first GPIO info field for each object. If values are not
- // logically equal, return whether the left hand side value was less than
- // the right hand side value. Otherwise break the tie by comparing the
- // next GPIO field in similar fashion. Continue breaking ties until the
- // last field, in which case a tie returns false.
- bool lhsLogicallyBeforeRhs =
- lhsGpioInfo.i2cMasterPath < rhsGpioInfo.i2cMasterPath;
- if(lhsGpioInfo.i2cMasterPath == rhsGpioInfo.i2cMasterPath)
- {
- lhsLogicallyBeforeRhs = lhsGpioInfo.port < rhsGpioInfo.port;
- if(lhsGpioInfo.port == rhsGpioInfo.port)
- {
- lhsLogicallyBeforeRhs = lhsGpioInfo.engine < rhsGpioInfo.engine;
- if(lhsGpioInfo.engine == rhsGpioInfo.engine)
- {
- lhsLogicallyBeforeRhs
- = lhsGpioInfo.devAddr < rhsGpioInfo.devAddr;
- if(lhsGpioInfo.devAddr == rhsGpioInfo.devAddr)
- {
- lhsLogicallyBeforeRhs =
- lhsGpioInfo.vddrPin < rhsGpioInfo.vddrPin;
- }
- }
- }
- }
-
- return lhsLogicallyBeforeRhs;
-}
-
-//******************************************************************************
-// areTargetsGpioInfoEqual
-//******************************************************************************
-
-bool areTargetsGpioInfoEqual(
- TARGETING::TargetHandle_t i_pLhs,
- TARGETING::TargetHandle_t i_pRhs)
-{
-
- TARGETING::ATTR_GPIO_INFO_type lhsGpioInfo =
- i_pLhs->getAttr<TARGETING::ATTR_GPIO_INFO>();
- TARGETING::ATTR_GPIO_INFO_type rhsGpioInfo =
- i_pRhs->getAttr<TARGETING::ATTR_GPIO_INFO>();
-
- return( ( lhsGpioInfo.i2cMasterPath
- == rhsGpioInfo.i2cMasterPath)
- && ( lhsGpioInfo.port
- == rhsGpioInfo.port)
- && ( lhsGpioInfo.engine
- == rhsGpioInfo.engine)
- && ( lhsGpioInfo.devAddr
- == rhsGpioInfo.devAddr)
- && ( lhsGpioInfo.vddrPin
- == rhsGpioInfo.vddrPin) );
-}
-
-static errlHndl_t for_each_vddr_domain_with_functional_memory(
- errlHndl_t (*func)(Target *))
-{
- // Get all functional Centaur targets
- TargetHandleList l_membufTargetList;
- getAllChips(l_membufTargetList, TYPE_MEMBUF);
-
- errlHndl_t l_err = NULL;
-
- // Sort chips in order of GPIO info
- std::sort(l_membufTargetList.begin(), l_membufTargetList.end(),
- compareTargetsGpioInfos);
-
- // Prune out targets with non-unique GPIO info
- std::vector<TARGETING::TargetHandle_t>::iterator
- pInvalidEntries = std::unique(
- l_membufTargetList.begin(),
- l_membufTargetList.end(),
- areTargetsGpioInfoEqual);
- l_membufTargetList.erase(pInvalidEntries,l_membufTargetList.end());
-
- // Invoke callback for one Centaur per unique VDDR domain
- for (TargetHandleList::iterator
- l_membuf_iter = l_membufTargetList.begin();
- l_membuf_iter != l_membufTargetList.end();
- ++l_membuf_iter)
- {
- Target* l_pCentaur = *l_membuf_iter;
-
- l_err = (*func)(l_pCentaur);
-
- if( l_err )
- {
- break;
- }
- }
-
- return l_err;
-}
-
-static errlHndl_t pca95xGpioSetBit(TARGETING::Target * i_target,
- uint8_t i_reg,
- uint8_t i_gpio,
- bool i_val)
-{
- errlHndl_t err = NULL;
- do
- {
-
- uint64_t cmd = i_reg + GPIO_TO_PORT(i_gpio);
- uint8_t data = 0;
- size_t dataLen = sizeof(data);
-
- // Might want to make this an attribute;
- // However, This is already a palmetto only object
- uint64_t deviceType = GPIO::PCA95X_GPIO;
-
- err = DeviceFW::deviceOp
- ( DeviceFW::READ,
- i_target,
- &data,
- dataLen,
- DEVICE_GPIO_ADDRESS(deviceType, cmd)
- );
-
- if( err )
- {
- break;
- }
-
- uint8_t new_reg_val = data;
- if( i_val )
- {
- new_reg_val |= 1 << GPIO_TO_BIT(i_gpio);
- }
- else
- {
- new_reg_val &= ~(1 << GPIO_TO_BIT(i_gpio));
- }
-
- // Do the write only if actually changing value.
- if( new_reg_val != data )
- {
- data = new_reg_val;
- cmd = i_reg + GPIO_TO_PORT(i_gpio);
-
- err = DeviceFW::deviceOp
- ( DeviceFW::WRITE,
- i_target,
- &data,
- dataLen,
- DEVICE_GPIO_ADDRESS(deviceType, cmd)
- );
-
- if( err )
- {
- break;
- }
- }
-
- } while(0);
-
- return err;
-}
-
-
-static errlHndl_t pca95xGpioWriteBit(TARGETING::Target * i_target,
- uint8_t i_gpio_pin,
- bool i_val)
-{
- assert( i_gpio_pin >= 0 && i_gpio_pin < 16 );
- errlHndl_t err = NULL;
-
- err = pca95xGpioSetBit(i_target,
- PCA95X_GPIO_REG_OUTPUT,
- i_gpio_pin,
- i_val);
-
- // Configure gpio bit as output (if necessary).
- if(!err)
- {
- err = pca95xGpioSetBit(i_target,
- PCA95X_GPIO_REG_CONFIG,
- i_gpio_pin,
- PCA95X_GPIO_CONFIG_OUTPUT);
- }
-
- return err;
-}
-
-static errlHndl_t enableVddrViaGpioPinStrategy(Target *centaur)
-{
- errlHndl_t l_err = NULL;
-
- do
- {
- // Enable the DIMM power.
- TARGETING::ATTR_GPIO_INFO_type gpioInfo =
- centaur->getAttr<TARGETING::ATTR_GPIO_INFO>();
-
- l_err = pca95xGpioWriteBit(centaur, gpioInfo.vddrPin, true);
- if(l_err)
- {
- TRACFCOMP(g_trac_vddr,ERR_MRK " "
- "Failed to assert pca95x GPIO for Centaur HUID = 0x%08x "
- "and pin %d.",
- TARGETING::get_huid(centaur),gpioInfo.vddrPin);
- break;
- }
-
- TRACFCOMP(g_trac_vddr,INFO_MRK " "
- "Enabled VDDR for Centaur HUID = 0x%08x (asserted pca95x GPIO "
- "pin %d).",
- TARGETING::get_huid(centaur),
- gpioInfo.vddrPin);
-
- } while(0);
-
- return l_err;
-}
-
-static errlHndl_t disableVddrViaGpioPinStrategy(Target *centaur)
-{
- errlHndl_t l_err = NULL;
-
- do
- {
- // Disable the DIMM power.
- TARGETING::ATTR_GPIO_INFO_type gpioInfo =
- centaur->getAttr<TARGETING::ATTR_GPIO_INFO>();
-
- l_err = pca95xGpioWriteBit(centaur,gpioInfo.vddrPin, false);
- if(l_err)
- {
- TRACFCOMP(g_trac_vddr,ERR_MRK " "
- "Failed to deassert pca95x GPIO for Centaur HUID = 0x%08x "
- "and pin %d.",
- TARGETING::get_huid(centaur),gpioInfo.vddrPin);
- break;
- }
-
- TRACFCOMP(g_trac_vddr,INFO_MRK " "
- "Disabled VDDR for Centaur HUID = 0x%08x (deasserted pca95x GPIO "
- "pin %d).",
- TARGETING::get_huid(centaur),
- gpioInfo.vddrPin);
-
- } while(0);
-
- return l_err;
-}
-
-// External interfaces
-
-errlHndl_t platform_enable_vspd()
-{
- // GPIO pin not implemented on palmetto
- // VSPD voltage hardwired.
- return NULL;
-}
-
-errlHndl_t platform_enable_vddr()
-{
- return for_each_vddr_domain_with_functional_memory(
- enableVddrViaGpioPinStrategy);
-}
-
-errlHndl_t platform_disable_vddr()
-{
- return for_each_vddr_domain_with_functional_memory(
- disableVddrViaGpioPinStrategy);
-}
-
-errlHndl_t platform_adjust_vddr_post_dram_init()
-{
- // Not supported on palmetto
- return NULL;
-}
-
diff --git a/src/usr/hwpf/hwp/dram_training/platform_vddr.H b/src/usr/hwpf/hwp/dram_training/platform_vddr.H
deleted file mode 100644
index b726aee0c..000000000
--- a/src/usr/hwpf/hwp/dram_training/platform_vddr.H
+++ /dev/null
@@ -1,57 +0,0 @@
-/* IBM_PROLOG_BEGIN_TAG */
-/* This is an automatically generated prolog. */
-/* */
-/* $Source: src/usr/hwpf/hwp/dram_training/platform_vddr.H $ */
-/* */
-/* OpenPOWER HostBoot Project */
-/* */
-/* Contributors Listed Below - COPYRIGHT 2014,2015 */
-/* [+] Google Inc. */
-/* [+] International Business Machines Corp. */
-/* */
-/* */
-/* Licensed under the Apache License, Version 2.0 (the "License"); */
-/* you may not use this file except in compliance with the License. */
-/* You may obtain a copy of the License at */
-/* */
-/* http://www.apache.org/licenses/LICENSE-2.0 */
-/* */
-/* Unless required by applicable law or agreed to in writing, software */
-/* distributed under the License is distributed on an "AS IS" BASIS, */
-/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */
-/* implied. See the License for the specific language governing */
-/* permissions and limitations under the License. */
-/* */
-/* IBM_PROLOG_END_TAG */
-// platform specific VDDR support.
-
-#ifndef PLATFORM_VDDR_H__
-#define PLATFORM_VDDR_H__
-
-#include <usr/errl/errlentry.H>
-
-/**
- * @brief Enable vspd on DIMMS
- * @return NULL | error handle on error
- */
-errlHndl_t platform_enable_vspd();
-
-/**
- * @brief Enable vddr on DIMMS
- * @return NULL | error handle on error
- */
-errlHndl_t platform_enable_vddr();
-
-/**
- * @brief Adjust vddr on DIMMS with POST DRAM INITs
- * @return NULL | error handle on error
- */
-errlHndl_t platform_adjust_vddr_post_dram_init();
-
-/**
- * @brief Disable vddr on DIMMS
- * @return NULL | error handle on error
- */
-errlHndl_t platform_disable_vddr();
-
-#endif // PLATFORM_VDDR_H__
OpenPOWER on IntegriCloud