diff options
author | Chris Steffen <cwsteffen@us.ibm.com> | 2015-12-02 09:41:43 -0600 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-05-04 17:52:33 -0400 |
commit | 26af5472dc150e2948b4394d0564b78d6bae9e4a (patch) | |
tree | 6016da5aa16b4e8a55164c21545c95291c9a2582 /src/import/chips/p9/procedures | |
parent | 3037972405ee2abc3d9e60ceb107303df6f0d357 (diff) | |
download | talos-hostboot-26af5472dc150e2948b4394d0564b78d6bae9e4a.tar.gz talos-hostboot-26af5472dc150e2948b4394d0564b78d6bae9e4a.zip |
P9 I/O Xbus Clear Firs L2
Change-Id: I3a796c132f7b34f48f8b356f4459153f2576d764
Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22391
Tested-by: Jenkins Server
Reviewed-by: Richard J. Knight <rjknight@us.ibm.com>
Reviewed-by: Gary A. Peterson <garyp@us.ibm.com>
Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/24103
Tested-by: FSP CI Jenkins
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures')
3 files changed, 221 insertions, 0 deletions
diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.C b/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.C new file mode 100644 index 000000000..4e305e7e7 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.C @@ -0,0 +1,140 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.C $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* EKB Project */ +/* */ +/* COPYRIGHT 2015 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* 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. */ +/* */ +/* IBM_PROLOG_END_TAG */ +/// +/// @file p9_io_xbus_clear_firs.C +/// @brief Clears I/O Firs +///----------------------------------------------------------------------------- +/// *HWP HWP Owner : Chris Steffen <cwsteffen@us.ibm.com> +/// *HWP HWP Backup Owner : Gary Peterson <garyp@us.ibm.com> +/// *HWP FW Owner : Jamie Knight <rjknight@us.ibm.com> +/// *HWP Team : IO +/// *HWP Level : 2 +/// *HWP Consumed by : FSP:HB +///----------------------------------------------------------------------------- +/// +/// @verbatim +/// High-level procedure flow: +/// +/// Clears I/O Xbus FIRs on the PHY Rx/Tx. +/// +/// Clocks must be running. +/// +/// @endverbatim +///---------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// Includes +//----------------------------------------------------------------------------- +#include <p9_io_xbus_clear_firs.H> +#include <p9_io_gcr.H> +#include <p9_io_regs.H> + +//----------------------------------------------------------------------------- +// Definitions +//----------------------------------------------------------------------------- +fapi2::ReturnCode io_rx_fir_reset( + const fapi2::Target < fapi2::TARGET_TYPE_XBUS >& i_target, + const uint8_t& i_clock_group); + +fapi2::ReturnCode io_tx_fir_reset( + const fapi2::Target < fapi2::TARGET_TYPE_XBUS >& i_target, + const uint8_t& i_clock_group); + +/** + * @brief A HWP that runs on every instance of the XBUS(EDI+) + * @param[in] i_target FAPI2 Target + * @param[in] i_clock_group Clock Group + * @retval ReturnCode + */ +fapi2::ReturnCode p9_io_xbus_clear_firs( + const fapi2::Target < fapi2::TARGET_TYPE_XBUS >& i_target, + const uint8_t& i_clock_group) +{ + FAPI_IMP("I/O Start Xbus Clear FIRs"); + + FAPI_TRY(io_tx_fir_reset(i_target, i_clock_group), "Tx Reset Failed"); + + FAPI_TRY(io_rx_fir_reset(i_target, i_clock_group), "Rx Reset Failed"); + +fapi_try_exit: + FAPI_IMP("I/O End Xbus Clear FIRs"); + return fapi2::current_err; +} + +/** + * @brief This function resets the Rx Firs on a EDI+ Xbus + * @param[in] i_target FAPI2 Target + * @param[in] i_clock_group Clock Group + * @retval ReturnCode + */ +fapi2::ReturnCode io_rx_fir_reset( + const fapi2::Target < fapi2::TARGET_TYPE_XBUS >& i_target, + const uint8_t& i_clock_group) +{ + Register < EDIP_RX_GLBSM_CNTL1_EO_PG > rx_fir_reg; + + FAPI_TRY(rx_fir_reg.read(i_target, i_clock_group), + "Reading Rx Fir Reg Failed"); + + rx_fir_reg.set<EDIP_RX_FIR_RESET>(0); + FAPI_TRY(rx_fir_reg.write(i_target, i_clock_group), + "Writing Rx Fir Reg Failed"); + + rx_fir_reg.set<EDIP_RX_FIR_RESET>(1); + FAPI_TRY(rx_fir_reg.write(i_target, i_clock_group), + "Writing rx Fir Reg Failed"); + + rx_fir_reg.set<EDIP_RX_FIR_RESET>(0); + FAPI_TRY(rx_fir_reg.write(i_target, i_clock_group), + "Writing Rx Fir Reg Failed"); + +fapi_try_exit: + return fapi2::current_err; +} + +/** + * @brief This function resets the Tx Firs on a EDI+ Xbus + * @param[in] i_target FAPI2 Target + * @param[in] i_clock_group Clock Group + * @retval ReturnCode + */ +fapi2::ReturnCode io_tx_fir_reset( + const fapi2::Target < fapi2::TARGET_TYPE_XBUS >& i_target, + const uint8_t& i_clock_group) +{ + Register < EDIP_TX_FIR_RESET_PG > tx_fir_reg; + + FAPI_TRY(tx_fir_reg.read(i_target, i_clock_group), + "Reading Tx Fir Reg Failed"); + + tx_fir_reg.set<EDIP_TX_FIR_RESET>(0); + FAPI_TRY(tx_fir_reg.write(i_target, i_clock_group), + "Writing Tx Fir Reg Failed"); + + tx_fir_reg.set<EDIP_TX_FIR_RESET>(1); + FAPI_TRY(tx_fir_reg.write(i_target, i_clock_group), + "Writing Tx Fir Reg Failed"); + + tx_fir_reg.set<EDIP_TX_FIR_RESET>(0); + FAPI_TRY(tx_fir_reg.write(i_target, i_clock_group), + "Writing Tx Fir Reg Failed"); + +fapi_try_exit: + return fapi2::current_err; +} diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.H b/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.H new file mode 100644 index 000000000..2cb4ecebe --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.H @@ -0,0 +1,61 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.H $ */ +/* */ +/* IBM CONFIDENTIAL */ +/* */ +/* EKB Project */ +/* */ +/* COPYRIGHT 2015 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* 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. */ +/* */ +/* IBM_PROLOG_END_TAG */ +/// +/// @file p9_io_xbus_clear_firs.H +/// @brief Clears I/O Firs +///----------------------------------------------------------------------------- +/// *HWP HWP Owner : Chris Steffen <cwsteffen@us.ibm.com> +/// *HWP HWP Backup Owner : Gary Peterson <garyp@us.ibm.com> +/// *HWP FW Owner : Jamie Knight <rjknight@us.ibm.com> +/// *HWP Team : IO +/// *HWP Level : 2 +/// *HWP Consumed by : FSP:HB +///----------------------------------------------------------------------------- +#ifndef _P9_IO_XBUS_CLEAR_FIRS_H +#define _P9_IO_XBUS_CLEAR_FIRS_H + +//----------------------------------------------------------------------------- +// System Header Include +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// fapi2 Includes +//----------------------------------------------------------------------------- +#include <fapi2.H> + +typedef fapi2::ReturnCode (*p9_io_xbus_clear_firs_FP_t) +(const fapi2::Target < fapi2::TARGET_TYPE_XBUS >&, const uint8_t&); + +extern "C" +{ + + /** + * @brief Clears PHY Rx/Tx FIRs on a the XBUS(EDI+) instance. + * @param[in] i_target FAPI2 Target + * @param[in] i_clock_group Clock Group + * @retval ReturnCode + */ + fapi2::ReturnCode p9_io_xbus_clear_firs( + const fapi2::Target < fapi2::TARGET_TYPE_XBUS >& i_target, + const uint8_t& i_clock_group ); + +} // extern "C" + + +#endif // _P9_IO_XBUS_CLEAR_FIRS_H diff --git a/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.mk b/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.mk new file mode 100644 index 000000000..bce6df168 --- /dev/null +++ b/src/import/chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.mk @@ -0,0 +1,20 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.mk $ +# +# IBM CONFIDENTIAL +# +# EKB Project +# +# COPYRIGHT 2015 +# [+] International Business Machines Corp. +# +# +# 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. +# +# IBM_PROLOG_END_TAG +PROCEDURE=p9_io_xbus_clear_firs +$(call BUILD_PROCEDURE) |