From a715e1cbcedd5bfc14944c7d296aee69e3847ff1 Mon Sep 17 00:00:00 2001 From: Yue Du Date: Mon, 13 Feb 2017 14:47:21 -0600 Subject: HW399609: DD1 changing core/nest hang limit or hang pulse divider Change-Id: I580cd70ce3315ea3f2aeb274279a89375f02b05d Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/36375 Tested-by: Jenkins Server Tested-by: PPE CI Reviewed-by: Joseph J. McGill Reviewed-by: James N. Klazynski Reviewed-by: Thi N. Tran Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/36382 Reviewed-by: Hostboot Team Tested-by: FSP CI Jenkins Reviewed-by: Sachin Gupta --- .../p9/procedures/hwp/core/p9_hcd_core_scominit.C | 55 +++++++++++++++++----- .../xml/attribute_info/p9_sbe_attributes.xml | 4 ++ 2 files changed, 48 insertions(+), 11 deletions(-) (limited to 'src/import') diff --git a/src/import/chips/p9/procedures/hwp/core/p9_hcd_core_scominit.C b/src/import/chips/p9/procedures/hwp/core/p9_hcd_core_scominit.C index dc4869a1..97572706 100644 --- a/src/import/chips/p9/procedures/hwp/core/p9_hcd_core_scominit.C +++ b/src/import/chips/p9/procedures/hwp/core/p9_hcd_core_scominit.C @@ -50,8 +50,23 @@ //----------------------------------------------------------------------------- // Constant Definitions //----------------------------------------------------------------------------- -const uint8_t CORE_HANG_DIVIDER_4X = 0x9F; -const uint8_t CORE_HANG_DIVIDER_64X = 0x7B; + +enum P9_HCD_CORE_SCOMINIT_CONSTANTS +{ + CORE_HANG_LIMIT_3_HANG_PULSES = 0x9F, + CORE_HANG_LIMIT_5_HANG_PULSES = 0x27, + CORE_HANG_LIMIT_10_HANG_PULSES = 0xA1, + CORE_HANG_LIMIT_50_HANG_PULSES = 0x99, + CORE_HANG_LIMIT_100_HANG_PULSES = 0x2D, + CORE_HANG_LIMIT_150_HANG_PULSES = 0xF6, + CORE_HANG_LIMIT_200_HANG_PULSES = 0x64, + + NEST_HANG_LIMIT_20_HANG_PULSES = 0x5F, + NEST_HANG_LIMIT_50_HANG_PULSES = 0x99, + NEST_HANG_LIMIT_100_HANG_PULSES = 0x2D, + NEST_HANG_LIMIT_150_HANG_PULSES = 0xF6, + NEST_HANG_LIMIT_200_HANG_PULSES = 0x64 +}; //----------------------------------------------------------------------------- // Procedure: Core SCOM Inits @@ -63,8 +78,14 @@ p9_hcd_core_scominit( const fapi2::Target& i_target) { FAPI_INF(">>p9_hcd_core_scominit"); + fapi2::ReturnCode l_rc; fapi2::buffer l_data64; - fapi2::ReturnCode l_rc; + uint8_t l_attr_dd1_core_hang_limit; + fapi2::Target l_chip = + i_target.getParent(); + + FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_EC_FEATURE_HW399609, l_chip, + l_attr_dd1_core_hang_limit)); /// @todo RTC158181 how about bit 6? FAPI_DBG("Restore SYNC_CONFIG[8] for stop1"); @@ -77,7 +98,7 @@ p9_hcd_core_scominit( l_data64.setBit<5>().insertFromRight<6, 4>(0xF).insertFromRight<20, 2>(0x3); FAPI_TRY(putScom(i_target, C_THERM_MODE_REG, l_data64)); - // invoke core SCOM initfile + FAPI_DBG("Invoke Core SCOM Initfile"); FAPI_EXEC_HWP(l_rc, p9_core_scom, i_target); if (l_rc) @@ -87,13 +108,25 @@ p9_hcd_core_scominit( goto fapi_try_exit; } - // update core hang pulse dividers - FAPI_TRY(getScom(i_target, C_HANG_CONTROL, l_data64), - "Error from getScom (C_HANG_CONTROL)"); - l_data64.insertFromRight(CORE_HANG_DIVIDER_4X); - l_data64.insertFromRight(CORE_HANG_DIVIDER_64X); - FAPI_TRY(putScom(i_target, C_HANG_CONTROL, l_data64), - "Error from putScom (C_HANG_CONTROL)"); + FAPI_DBG("Update Core Hang Pulse Dividers via C_HANG_CONTROL[0-15]"); + FAPI_TRY(getScom(i_target, C_HANG_CONTROL, l_data64)); + + if (l_attr_dd1_core_hang_limit) + { + l_data64.insertFromRight(CORE_HANG_LIMIT_100_HANG_PULSES); + } + else + { + l_data64.insertFromRight(CORE_HANG_LIMIT_3_HANG_PULSES); + } + + l_data64.insertFromRight(NEST_HANG_LIMIT_100_HANG_PULSES); + + FAPI_TRY(putScom(i_target, C_HANG_CONTROL, l_data64)); + fapi_try_exit: diff --git a/src/import/chips/p9/procedures/xml/attribute_info/p9_sbe_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/p9_sbe_attributes.xml index 6a82619c..718bcab1 100644 --- a/src/import/chips/p9/procedures/xml/attribute_info/p9_sbe_attributes.xml +++ b/src/import/chips/p9/procedures/xml/attribute_info/p9_sbe_attributes.xml @@ -345,6 +345,10 @@ attribute tank ATTR_CHIP_EC_FEATURE_HW388878 + + ATTR_CHIP_EC_FEATURE_HW399609 + + ATTR_CHIP_EC_FEATURE_LPC_RESET_GPIO -- cgit v1.2.1