From 9c5a8f943bccd40389a36f010666f69b743115e9 Mon Sep 17 00:00:00 2001 From: "Richard J. Knight" Date: Wed, 14 Nov 2012 16:00:03 -0600 Subject: Integrate mss_thermal_init into hostboot Change-Id: Iea04963657650a711546f59ee0873f6ed2f5265a RTC: 42178 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/2460 Reviewed-by: A. Patrick Williams III Tested-by: Jenkins Server --- src/usr/hwpf/hwp/include/mss_unmask_errors.H | 275 +++++++++++++++++++++++++++ 1 file changed, 275 insertions(+) create mode 100644 src/usr/hwpf/hwp/include/mss_unmask_errors.H (limited to 'src/usr/hwpf/hwp/include') diff --git a/src/usr/hwpf/hwp/include/mss_unmask_errors.H b/src/usr/hwpf/hwp/include/mss_unmask_errors.H new file mode 100644 index 000000000..1060509a1 --- /dev/null +++ b/src/usr/hwpf/hwp/include/mss_unmask_errors.H @@ -0,0 +1,275 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/hwpf/hwp/dram_initialization/mss_thermal_init/mss_unmask_errors.H $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* COPYRIGHT International Business Machines Corp. 2012 */ +/* */ +/* p1 */ +/* */ +/* Object Code Only (OCO) source materials */ +/* Licensed Internal Code Source Materials */ +/* IBM HostBoot Licensed Internal Code */ +/* */ +/* The source code for this program is not published or otherwise */ +/* divested of its trade secrets, irrespective of what has been */ +/* deposited with the U.S. Copyright Office. */ +/* */ +/* Origin: 30 */ +/* */ +/* IBM_PROLOG_END_TAG */ +// $Id: mss_unmask_errors.H,v 1.1 2012/09/05 21:04:20 gollub Exp $ +//------------------------------------------------------------------------------ +// Don't forget to create CVS comments when you check in your changes! +//------------------------------------------------------------------------------ +// CHANGE HISTORY: +//------------------------------------------------------------------------------ +// Version:| Date: | Author: | Comment: +//---------|----------|---------|----------------------------------------------- +// 1.1 | 09/05/12 | gollub | Created + +#ifndef _MSS_UNMASK_ERRORS_H +#define _MSS_UNMASK_ERRORS_H + +/** @file mss_unmask_errors.H + * @brief Utility functions to set action regs and unmask FIR bits + * at the end of various mss IPL procedures. + */ + + +//------------------------------------------------------------------------------ +// Includes +//------------------------------------------------------------------------------ + +#include +#include + + + +//------------------------------------------------------------------------------ +// Constants and enums +//------------------------------------------------------------------------------ + + + + + + +//------------------------------------------------------------------------------ +// mss_unmask_inband_errors +//------------------------------------------------------------------------------ + + +/** + * @brief To be called at the end of proc_cen_set_inband_addr.C + * Sets action regs and mask settings for inband errors to their + * runtime settings. + * + * @param i_target Centaur target + * @param i_bad_rc If proc_cen_set_inband_addr.C already has a bad rc + * before it calls this function, we pass it in as + * i_bad_rc. If this function gets it's own bad local + * l_rc, i_bad_rc will be commited, and l_rc will be + * passed back as return value. Else if no l_rc, + * i_bad_rc will be be passed back as return value. + * @return Non-SUCCESS if i_bad_rc Non_SUCCESS, or if internal function fails, + * SUCCESS otherwise. + */ +fapi::ReturnCode mss_unmask_inband_errors( const fapi::Target & i_target, + fapi::ReturnCode i_bad_rc ); + + +//------------------------------------------------------------------------------ +// mss_unmask_ddrphy_errors +//------------------------------------------------------------------------------ + + +/** + * @brief To be called at the end of mss_ddr_phy_reset.C. + * Sets action regs and mask settings for ddr phy errors to their + * runtime settings. + * + * @param i_target MBA target + * @param i_bad_rc If mss_ddr_phy_reset.C already has a bad rc + * before it calls this function, we pass it in as + * i_bad_rc. If this function gets it's own bad local + * l_rc, i_bad_rc will be commited, and l_rc will be + * passed back as return value. Else if no l_rc, + * i_bad_rc will be be passed back as return value. + * @return Non-SUCCESS if i_bad_rc Non_SUCCESS, or if internal function fails, + * SUCCESS otherwise. + */ +fapi::ReturnCode mss_unmask_ddrphy_errors( const fapi::Target & i_target, + fapi::ReturnCode i_bad_rc ); + + +//------------------------------------------------------------------------------ +// mss_unmask_draminit_errors +//------------------------------------------------------------------------------ + + +/** + * @brief To be called at the end of mss_draminit.C. + * Sets MBACALFIR action regs to their runtime settings, and unmasks + * errors that are valid for PRD to handle after mss_draminit procedure. + * + * @param i_target MBA target + * @param i_bad_rc If mss_draminit.C already has a bad rc + * before it calls this function, we pass it in as + * i_bad_rc. If this function gets it's own bad local + * l_rc, i_bad_rc will be commited, and l_rc will be + * passed back as return value. Else if no l_rc, + * i_bad_rc will be be passed back as return value. + * @return Non-SUCCESS if i_bad_rc Non_SUCCESS, or if internal function fails, + * SUCCESS otherwise. + */ +fapi::ReturnCode mss_unmask_draminit_errors( const fapi::Target & i_target, + fapi::ReturnCode i_bad_rc ); + + +//------------------------------------------------------------------------------ +// mss_unmask_draminit_training_errors +//------------------------------------------------------------------------------ + + +/** + * @brief To be called at the end of mss_draminit_training.C. + * Unmasks MBACALFIR errors that are valid for PRD to handle after + * mss_draminit_training procedure. + * + * @param i_target MBA target + * @param i_bad_rc If mss_draminit_training.C already has a bad rc + * before it calls this function, we pass it in as + * i_bad_rc. If this function gets it's own bad local + * l_rc, i_bad_rc will be commited, and l_rc will be + * passed back as return value. Else if no l_rc, + * i_bad_rc will be be passed back as return value. + * @return Non-SUCCESS if i_bad_rc Non_SUCCESS, or if internal function fails, + * SUCCESS otherwise. + */ +fapi::ReturnCode mss_unmask_draminit_training_errors( + const fapi::Target & i_target, + fapi::ReturnCode i_bad_rc ); + + +//------------------------------------------------------------------------------ +// mss_unmask_draminit_training_advanced_errors +//------------------------------------------------------------------------------ + + +/** + * @brief To be called at the end of mss_draminit_training_advanced.C. + * Unmasks MBACALFIR errors that are valid for PRD to handle after + * mss_draminit_training_advanced procedure. + * + * @param i_target MBA target + * @param i_bad_rc If mss_draminit_training_advanced.C already has a + * bad rc before it calls this function, we pass it in + * as i_bad_rc. If this function gets it's own bad + * local l_rc, i_bad_rc will be commited, and l_rc will + * be passed back as return value. Else if no l_rc, + * i_bad_rc will be be passed back as return value. + * @return Non-SUCCESS if i_bad_rc Non_SUCCESS, or if internal function fails, + * SUCCESS otherwise. + */ +fapi::ReturnCode mss_unmask_draminit_training_advanced_errors( + const fapi::Target & i_target, + fapi::ReturnCode i_bad_rc ); + + +//------------------------------------------------------------------------------ +// mss_unmask_maint_errors +//------------------------------------------------------------------------------ + + +/** + * @brief To be called at the end of mss_draminit_mc.C. + * Sets action regs and unmasks maint errors prior to the maint logic + * being used in memdiags so that PRD will be able to handle them + * if they happen during memdiags. + * + * @param i_target MBA target + * @param i_bad_rc If mss_draminit_mc already has a + * bad rc before it calls this function, we pass it in + * as i_bad_rc. If this function gets it's own bad + * local l_rc, i_bad_rc will be commited, and l_rc will + * be passed back as return value. Else if no l_rc, + * i_bad_rc will be be passed back as return value. + * @return Non-SUCCESS if i_bad_rc Non_SUCCESS, or if internal function fails, + * SUCCESS otherwise. + */ +fapi::ReturnCode mss_unmask_maint_errors(const fapi::Target & i_target, + fapi::ReturnCode i_bad_rc ); + + +//------------------------------------------------------------------------------ +// mss_unmask_fetch_errors +//------------------------------------------------------------------------------ + + +/** + * @brief To be called at the end of mss_thermal_init.C. + * Sets action regs and unmasks fetch errors prior to the start of + * mainline traffic. + * + * @param i_target Centaur target + * @param i_bad_rc If mss_thermal_init already has a + * bad rc before it calls this function, we pass it in + * as i_bad_rc. If this function gets it's own bad + * local l_rc, i_bad_rc will be commited, and l_rc will + * be passed back as return value. Else if no l_rc, + * i_bad_rc will be be passed back as return value. + * @return Non-SUCCESS if i_bad_rc Non_SUCCESS, or if internal function fails, + * SUCCESS otherwise. + */ +fapi::ReturnCode mss_unmask_fetch_errors(const fapi::Target & i_target, + fapi::ReturnCode i_bad_rc ); + + + +//------------------------------------------------------------------------------ +// fapiGetScom_w_retry +//------------------------------------------------------------------------------ + +/** + * @brief Reads a SCOM register from a Chip and retries once if SCOM fails. + * Retry is done with assumption that hostboot will switch from + * inband SCOM to FSI, so if inband failed due to channel fail, + * FSI may still work. + * @param[in] i_target Target to operate on + * @param[in] i_address Scom address to read from + * @param[out] o_data ecmdDataBufferBase object that holds data read from + * address + * @return ReturnCode. Zero on success, else platform specified error + */ +fapi::ReturnCode fapiGetScom_w_retry(const fapi::Target& i_target, + const uint64_t i_address, + ecmdDataBufferBase & o_data); + +//------------------------------------------------------------------------------ +// fapiPutScom_w_retry +//------------------------------------------------------------------------------ + +/** + * @brief Writes a SCOM register on a Chip and retries once if SCOM fails. + * Retry is done with assumption that hostboot will switch from + * inband SCOM to FSI, so if inband failed due to channel fail, + * FSI may still work. + * @param[in] i_target Target to operate on + * @param[in] i_address Scom address to write to + * @param[in] i_data ecmdDataBufferBase object that holds data to write into + * address + * @return ReturnCode. Zero on success, else platform specified error + */ +fapi::ReturnCode fapiPutScom_w_retry(const fapi::Target& i_target, + const uint64_t i_address, + ecmdDataBufferBase & i_data); + + + + + + +#endif /* _MSS_UNMASK_ERRORS_H */ -- cgit v1.2.1