summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/perv/p9_sbe_chiplet_reset.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/perv/p9_sbe_chiplet_reset.C')
-rw-r--r--src/import/chips/p9/procedures/hwp/perv/p9_sbe_chiplet_reset.C63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/import/chips/p9/procedures/hwp/perv/p9_sbe_chiplet_reset.C b/src/import/chips/p9/procedures/hwp/perv/p9_sbe_chiplet_reset.C
index c4dc56b4..389e5557 100644
--- a/src/import/chips/p9/procedures/hwp/perv/p9_sbe_chiplet_reset.C
+++ b/src/import/chips/p9/procedures/hwp/perv/p9_sbe_chiplet_reset.C
@@ -139,6 +139,9 @@ static fapi2::ReturnCode p9_sbe_chiplet_reset_setup_iop_logic(
static fapi2::ReturnCode p9_sbe_chiplet_reset_all_obus_scan0(
const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target_chip);
+static fapi2::ReturnCode p9_sbe_chiplet_reset_sectorbuffer_pulsemode_attr_setup(
+ const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target_chip);
+
fapi2::ReturnCode p9_sbe_chiplet_reset(const
fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target_chip)
{
@@ -294,6 +297,9 @@ fapi2::ReturnCode p9_sbe_chiplet_reset(const
FAPI_DBG("Clock mux settings");
FAPI_TRY(p9_sbe_chiplet_reset_clk_mux_call(i_target_chip));
+ FAPI_DBG("Sector buffer strength and pulse mode setup");
+ FAPI_TRY(p9_sbe_chiplet_reset_sectorbuffer_pulsemode_attr_setup(i_target_chip));
+
if ( l_attr_vitl_setup )
{
l_target_state = fapi2::TARGET_STATE_PRESENT;
@@ -1450,3 +1456,60 @@ static fapi2::ReturnCode p9_sbe_chiplet_reset_all_obus_scan0(
fapi_try_exit:
return fapi2::current_err;
}
+
+/// @brief Setup sector buffer strength and pulse mode for MC,OB,XB,PCIE
+///
+/// @param[in] i_target_chip Reference to TARGET_TYPE_PROC_CHIP target
+/// @return FAPI2_RC_SUCCESS if success, else error code.
+static fapi2::ReturnCode p9_sbe_chiplet_reset_sectorbuffer_pulsemode_attr_setup(
+ const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target_chip)
+{
+
+ fapi2::buffer<uint64_t> l_data64_net_ctrl1;
+ fapi2::buffer<uint8_t> l_attr_buffer_strength = 0;
+ fapi2::buffer<uint8_t> l_attr_pulse_mode_enable = 0;
+ fapi2::buffer<uint8_t> l_attr_pulse_mode_value = 0;
+ fapi2::Target<fapi2::TARGET_TYPE_SYSTEM> l_sys;
+
+ FAPI_INF("p9_sbe_chiplet_reset_sectorbuffer_pulsemode_attr_setup:Entering ...");
+
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_SECTOR_BUFFER_STRENGTH, l_sys,
+ l_attr_buffer_strength));
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PULSE_MODE_ENABLE, l_sys,
+ l_attr_pulse_mode_enable));
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PULSE_MODE_VALUE, l_sys,
+ l_attr_pulse_mode_value));
+
+ for (auto l_target_cplt : i_target_chip.getChildren<fapi2::TARGET_TYPE_PERV>
+ (static_cast<fapi2::TargetFilter>(fapi2::TARGET_FILTER_ALL_MC | fapi2::TARGET_FILTER_ALL_OBUS |
+ fapi2::TARGET_FILTER_ALL_PCI | fapi2::TARGET_FILTER_XBUS),
+ fapi2::TARGET_STATE_FUNCTIONAL))
+ {
+ FAPI_TRY(fapi2::getScom(l_target_cplt, PERV_NET_CTRL1, l_data64_net_ctrl1));
+
+ FAPI_DBG("Sector buffer strength");
+ l_data64_net_ctrl1.insertFromRight< PERV_1_NET_CTRL1_SB_STRENGTH,
+ PERV_1_NET_CTRL1_SB_STRENGTH_LEN >(l_attr_buffer_strength);
+ FAPI_TRY(fapi2::putScom(l_target_cplt, PERV_NET_CTRL1, l_data64_net_ctrl1));
+
+ FAPI_DBG("Pulse mode enable & pulse mode");
+
+ if (l_attr_pulse_mode_enable.getBit<7>())
+ {
+ FAPI_DBG("setting pulse mode enable");
+ l_data64_net_ctrl1.setBit<PERV_1_NET_CTRL1_CLK_PULSE_EN>();
+ FAPI_TRY(fapi2::putScom(l_target_cplt, PERV_NET_CTRL1, l_data64_net_ctrl1));
+
+ l_data64_net_ctrl1.insertFromRight< PERV_1_NET_CTRL1_CLK_PULSE_MODE,
+ PERV_1_NET_CTRL1_CLK_PULSE_MODE_LEN >(l_attr_pulse_mode_value);
+ FAPI_TRY(fapi2::putScom(l_target_cplt, PERV_NET_CTRL1, l_data64_net_ctrl1));
+ }
+
+ }
+
+ FAPI_INF("p9_sbe_chiplet_reset_sectorbuffer_pulsemode_attr_setup:Exiting ...");
+
+fapi_try_exit:
+ return fapi2::current_err;
+}
+
OpenPOWER on IntegriCloud