From 26af5472dc150e2948b4394d0564b78d6bae9e4a Mon Sep 17 00:00:00 2001 From: Chris Steffen Date: Wed, 2 Dec 2015 09:41:43 -0600 Subject: 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 Reviewed-by: Gary A. Peterson Reviewed-by: Jennifer A. Stofer Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/24103 Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell --- .../p9/procedures/hwp/io/p9_io_xbus_clear_firs.C | 140 +++++++++++++++++++++ .../p9/procedures/hwp/io/p9_io_xbus_clear_firs.H | 61 +++++++++ .../p9/procedures/hwp/io/p9_io_xbus_clear_firs.mk | 20 +++ 3 files changed, 221 insertions(+) create mode 100644 src/import/chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.C create mode 100644 src/import/chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.H create mode 100644 src/import/chips/p9/procedures/hwp/io/p9_io_xbus_clear_firs.mk (limited to 'src/import/chips/p9/procedures') 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 +/// *HWP HWP Backup Owner : Gary Peterson +/// *HWP FW Owner : Jamie Knight +/// *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 +#include +#include + +//----------------------------------------------------------------------------- +// 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(0); + FAPI_TRY(rx_fir_reg.write(i_target, i_clock_group), + "Writing Rx Fir Reg Failed"); + + rx_fir_reg.set(1); + FAPI_TRY(rx_fir_reg.write(i_target, i_clock_group), + "Writing rx Fir Reg Failed"); + + rx_fir_reg.set(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(0); + FAPI_TRY(tx_fir_reg.write(i_target, i_clock_group), + "Writing Tx Fir Reg Failed"); + + tx_fir_reg.set(1); + FAPI_TRY(tx_fir_reg.write(i_target, i_clock_group), + "Writing Tx Fir Reg Failed"); + + tx_fir_reg.set(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 +/// *HWP HWP Backup Owner : Gary Peterson +/// *HWP FW Owner : Jamie Knight +/// *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 + +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) -- cgit v1.2.1