From e528c80022f5858193fa1c14bb940b3f6b644ff4 Mon Sep 17 00:00:00 2001 From: Chris Steffen Date: Thu, 13 Oct 2016 18:33:51 -0500 Subject: Xbus Fixes - Fix for HW390103 in xbus link training - Updated Xbus initfile settigns for group 0 & 1 - Updated Xbus Clean Up pll settings Change-Id: I928e6306bf71d922b65cbbff4a27d2cbf3d3b066 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/31196 Tested-by: Jenkins Server Tested-by: Hostboot CI Reviewed-by: Matt K. Light Reviewed-by: Gary A. Peterson Reviewed-by: Jennifer A. Stofer Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/31197 Reviewed-by: Hostboot Team Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell --- .../p9/procedures/hwp/initfiles/p9_xbus_g0_scom.C | 267 ++++++++------------- 1 file changed, 102 insertions(+), 165 deletions(-) (limited to 'src/import/chips/p9/procedures/hwp/initfiles/p9_xbus_g0_scom.C') diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9_xbus_g0_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9_xbus_g0_scom.C index 4da3fd098..d470a7f76 100644 --- a/src/import/chips/p9/procedures/hwp/initfiles/p9_xbus_g0_scom.C +++ b/src/import/chips/p9/procedures/hwp/initfiles/p9_xbus_g0_scom.C @@ -36,22 +36,25 @@ constexpr auto literal_0b0110 = 0b0110; constexpr auto literal_0b00000 = 0b00000; constexpr auto literal_0b01111 = 0b01111; constexpr auto literal_0b01100 = 0b01100; +constexpr auto literal_0b0111 = 0b0111; constexpr auto literal_0b1011 = 0b1011; constexpr auto literal_0b0000000 = 0b0000000; constexpr auto literal_0b0000011 = 0b0000011; constexpr auto literal_0b000000 = 0b000000; constexpr auto literal_0b100111 = 0b100111; constexpr auto literal_0b1010 = 0b1010; +constexpr auto literal_0b01 = 0b01; constexpr auto literal_0b11 = 0b11; constexpr auto literal_0b0010000 = 0b0010000; constexpr auto literal_0b00001 = 0b00001; +constexpr auto literal_0b0001 = 0b0001; +constexpr auto literal_0b0010 = 0b0010; constexpr auto literal_0b0010001 = 0b0010001; constexpr auto literal_0b0000000000000000 = 0b0000000000000000; constexpr auto literal_0b01111111 = 0b01111111; constexpr auto literal_0b10 = 0b10; constexpr auto literal_0b1100 = 0b1100; constexpr auto literal_0b00 = 0b00; -constexpr auto literal_0b01 = 0b01; fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& TGT0, const fapi2::Target& TGT1) @@ -2188,20 +2191,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2227,20 +2223,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2266,20 +2255,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2305,20 +2287,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2344,20 +2319,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2383,20 +2351,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2422,20 +2383,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2461,20 +2415,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2500,20 +2447,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2539,20 +2479,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2578,20 +2511,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2617,20 +2543,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2656,20 +2575,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2695,20 +2607,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2734,20 +2639,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2773,20 +2671,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2812,20 +2703,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -2851,20 +2735,13 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& } { - if (l_def_IS_HW) - { - l_scom_buffer.insert (literal_0b00000, 48, 5, 59 ); - } - else if (l_def_IS_SIM) - { - l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); - } + l_scom_buffer.insert (literal_0b01100, 48, 5, 59 ); } { if (l_def_IS_HW) { - l_scom_buffer.insert (literal_0b0000, 53, 4, 60 ); + l_scom_buffer.insert (literal_0b0111, 53, 4, 60 ); } else if (l_def_IS_SIM) { @@ -6529,14 +6406,18 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& break; } + { + l_scom_buffer.insert (literal_0b01, 48, 2, 62 ); + } + { constexpr auto l_IOF1_RX_RX0_RXCTL_CTL_REGS_RX_CTL_REGS_RX_PEAK_TUNE_OFF = 0x0; l_scom_buffer.insert (l_IOF1_RX_RX0_RXCTL_CTL_REGS_RX_CTL_REGS_RX_PEAK_TUNE_OFF, 55, 1, 63 ); } { - constexpr auto l_IOF1_RX_RX0_RXCTL_CTL_REGS_RX_CTL_REGS_RX_LTE_EN_OFF = 0x0; - l_scom_buffer.insert (l_IOF1_RX_RX0_RXCTL_CTL_REGS_RX_CTL_REGS_RX_LTE_EN_OFF, 56, 1, 63 ); + constexpr auto l_IOF1_RX_RX0_RXCTL_CTL_REGS_RX_CTL_REGS_RX_LTE_EN_ON = 0x1; + l_scom_buffer.insert (l_IOF1_RX_RX0_RXCTL_CTL_REGS_RX_CTL_REGS_RX_LTE_EN_ON, 56, 1, 63 ); } { @@ -6561,6 +6442,29 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& break; } } + { + l_rc = fapi2::getScom( TGT0, 0x8009700006010c3full, l_scom_buffer ); + + if (l_rc) + { + FAPI_ERR("ERROR executing: getScom (0x8009700006010c3full)"); + break; + } + + { + constexpr auto l_IOF1_RX_RX0_RXCTL_CTL_REGS_RX_CTL_REGS_RX_RC_ENABLE_CTLE_1ST_LATCH_OFFSET_CAL_ON = 0x1; + l_scom_buffer.insert (l_IOF1_RX_RX0_RXCTL_CTL_REGS_RX_CTL_REGS_RX_RC_ENABLE_CTLE_1ST_LATCH_OFFSET_CAL_ON, 48, + 1, 63 ); + } + + l_rc = fapi2::putScom(TGT0, 0x8009700006010c3full, l_scom_buffer); + + if (l_rc) + { + FAPI_ERR("ERROR executing: putScom (0x8009700006010c3full)"); + break; + } + } { l_rc = fapi2::getScom( TGT0, 0x8009800006010c3full, l_scom_buffer ); @@ -6673,6 +6577,34 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& break; } } + { + l_rc = fapi2::getScom( TGT0, 0x8009b00006010c3full, l_scom_buffer ); + + if (l_rc) + { + FAPI_ERR("ERROR executing: getScom (0x8009b00006010c3full)"); + break; + } + + { + if (l_def_IS_HW) + { + l_scom_buffer.insert (literal_0b0001, 52, 4, 60 ); + } + else if (l_def_IS_SIM) + { + l_scom_buffer.insert (literal_0b0010, 52, 4, 60 ); + } + } + + l_rc = fapi2::putScom(TGT0, 0x8009b00006010c3full, l_scom_buffer); + + if (l_rc) + { + FAPI_ERR("ERROR executing: putScom (0x8009b00006010c3full)"); + break; + } + } { l_rc = fapi2::getScom( TGT0, 0x8009b80006010c3full, l_scom_buffer ); @@ -6749,6 +6681,11 @@ fapi2::ReturnCode p9_xbus_g0_scom(const fapi2::Target& break; } + { + constexpr auto l_IOF1_RX_RX0_RXCTL_GLBSM_REGS_RX_DESKEW_BUMP_AFTER_AFTER = 0x1; + l_scom_buffer.insert (l_IOF1_RX_RX0_RXCTL_GLBSM_REGS_RX_DESKEW_BUMP_AFTER_AFTER, 56, 1, 63 ); + } + { constexpr auto l_IOF1_RX_RX0_RXCTL_GLBSM_REGS_RX_PG_GLBSM_SPARE_MODE_2_ON = 0x1; l_scom_buffer.insert (l_IOF1_RX_RX0_RXCTL_GLBSM_REGS_RX_PG_GLBSM_SPARE_MODE_2_ON, 50, 1, 63 ); -- cgit v1.2.1