summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp
diff options
context:
space:
mode:
Diffstat (limited to 'src/import/chips/p9/procedures/hwp')
-rw-r--r--src/import/chips/p9/procedures/hwp/initfiles/p9n_ddrphy_scom.C136
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C3
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/phy/dp16.C32
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/workarounds/dp16_workarounds.H50
4 files changed, 81 insertions, 140 deletions
diff --git a/src/import/chips/p9/procedures/hwp/initfiles/p9n_ddrphy_scom.C b/src/import/chips/p9/procedures/hwp/initfiles/p9n_ddrphy_scom.C
index 2df2100a8..e6001d4f1 100644
--- a/src/import/chips/p9/procedures/hwp/initfiles/p9n_ddrphy_scom.C
+++ b/src/import/chips/p9/procedures/hwp/initfiles/p9n_ddrphy_scom.C
@@ -37,6 +37,7 @@ constexpr uint64_t literal_0x6740 = 0x6740;
constexpr uint64_t literal_0x0402 = 0x0402;
constexpr uint64_t literal_0x6000 = 0x6000;
constexpr uint64_t literal_0x4000 = 0x4000;
+constexpr uint64_t literal_0x0006 = 0x0006;
constexpr uint64_t literal_0x7F7F = 0x7F7F;
constexpr uint64_t literal_0x0800 = 0x0800;
constexpr uint64_t literal_0x2020 = 0x2020;
@@ -56,25 +57,17 @@ fapi2::ReturnCode p9n_ddrphy_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& T
FAPI_TRY(FAPI_ATTR_GET_PRIVILEGED(fapi2::ATTR_EC, TGT1, l_chip_ec));
fapi2::buffer<uint64_t> l_scom_buffer;
{
- FAPI_TRY(fapi2::getScom( TGT0, 0x800000030701103full, l_scom_buffer ));
-
if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) )
{
- if (( true ))
- {
- l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0120 );
- }
- }
+ FAPI_TRY(fapi2::getScom( TGT0, 0x800000030701103full, l_scom_buffer ));
- if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) || ((l_chip_id == 0x5) && (l_chip_ec == 0x21)) )
- {
if (( true ))
{
l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0120 );
}
- }
- FAPI_TRY(fapi2::putScom(TGT0, 0x800000030701103full, l_scom_buffer));
+ FAPI_TRY(fapi2::putScom(TGT0, 0x800000030701103full, l_scom_buffer));
+ }
}
{
if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) )
@@ -225,6 +218,19 @@ fapi2::ReturnCode p9n_ddrphy_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& T
FAPI_TRY(fapi2::putScom(TGT0, 0x800000750701103full, l_scom_buffer));
}
{
+ if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) || ((l_chip_id == 0x5) && (l_chip_ec == 0x21)) )
+ {
+ FAPI_TRY(fapi2::getScom( TGT0, 0x800000770701103full, l_scom_buffer ));
+
+ if (( true ))
+ {
+ l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0006 );
+ }
+
+ FAPI_TRY(fapi2::putScom(TGT0, 0x800000770701103full, l_scom_buffer));
+ }
+ }
+ {
FAPI_TRY(fapi2::getScom( TGT0, 0x800000780701103full, l_scom_buffer ));
if (( true ))
@@ -371,25 +377,17 @@ fapi2::ReturnCode p9n_ddrphy_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& T
}
}
{
- FAPI_TRY(fapi2::getScom( TGT0, 0x800004030701103full, l_scom_buffer ));
-
if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) )
{
- if (( true ))
- {
- l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0120 );
- }
- }
+ FAPI_TRY(fapi2::getScom( TGT0, 0x800004030701103full, l_scom_buffer ));
- if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) || ((l_chip_id == 0x5) && (l_chip_ec == 0x21)) )
- {
if (( true ))
{
l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0120 );
}
- }
- FAPI_TRY(fapi2::putScom(TGT0, 0x800004030701103full, l_scom_buffer));
+ FAPI_TRY(fapi2::putScom(TGT0, 0x800004030701103full, l_scom_buffer));
+ }
}
{
if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) )
@@ -540,6 +538,19 @@ fapi2::ReturnCode p9n_ddrphy_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& T
FAPI_TRY(fapi2::putScom(TGT0, 0x800004750701103full, l_scom_buffer));
}
{
+ if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) || ((l_chip_id == 0x5) && (l_chip_ec == 0x21)) )
+ {
+ FAPI_TRY(fapi2::getScom( TGT0, 0x800004770701103full, l_scom_buffer ));
+
+ if (( true ))
+ {
+ l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0006 );
+ }
+
+ FAPI_TRY(fapi2::putScom(TGT0, 0x800004770701103full, l_scom_buffer));
+ }
+ }
+ {
FAPI_TRY(fapi2::getScom( TGT0, 0x800004780701103full, l_scom_buffer ));
if (( true ))
@@ -686,25 +697,17 @@ fapi2::ReturnCode p9n_ddrphy_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& T
}
}
{
- FAPI_TRY(fapi2::getScom( TGT0, 0x800008030701103full, l_scom_buffer ));
-
if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) )
{
- if (( true ))
- {
- l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0120 );
- }
- }
+ FAPI_TRY(fapi2::getScom( TGT0, 0x800008030701103full, l_scom_buffer ));
- if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) || ((l_chip_id == 0x5) && (l_chip_ec == 0x21)) )
- {
if (( true ))
{
l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0120 );
}
- }
- FAPI_TRY(fapi2::putScom(TGT0, 0x800008030701103full, l_scom_buffer));
+ FAPI_TRY(fapi2::putScom(TGT0, 0x800008030701103full, l_scom_buffer));
+ }
}
{
if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) )
@@ -855,6 +858,19 @@ fapi2::ReturnCode p9n_ddrphy_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& T
FAPI_TRY(fapi2::putScom(TGT0, 0x800008750701103full, l_scom_buffer));
}
{
+ if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) || ((l_chip_id == 0x5) && (l_chip_ec == 0x21)) )
+ {
+ FAPI_TRY(fapi2::getScom( TGT0, 0x800008770701103full, l_scom_buffer ));
+
+ if (( true ))
+ {
+ l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0006 );
+ }
+
+ FAPI_TRY(fapi2::putScom(TGT0, 0x800008770701103full, l_scom_buffer));
+ }
+ }
+ {
FAPI_TRY(fapi2::getScom( TGT0, 0x800008780701103full, l_scom_buffer ));
if (( true ))
@@ -1001,25 +1017,17 @@ fapi2::ReturnCode p9n_ddrphy_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& T
}
}
{
- FAPI_TRY(fapi2::getScom( TGT0, 0x80000c030701103full, l_scom_buffer ));
-
if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) )
{
- if (( true ))
- {
- l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0120 );
- }
- }
+ FAPI_TRY(fapi2::getScom( TGT0, 0x80000c030701103full, l_scom_buffer ));
- if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) || ((l_chip_id == 0x5) && (l_chip_ec == 0x21)) )
- {
if (( true ))
{
l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0120 );
}
- }
- FAPI_TRY(fapi2::putScom(TGT0, 0x80000c030701103full, l_scom_buffer));
+ FAPI_TRY(fapi2::putScom(TGT0, 0x80000c030701103full, l_scom_buffer));
+ }
}
{
if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) )
@@ -1170,6 +1178,19 @@ fapi2::ReturnCode p9n_ddrphy_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& T
FAPI_TRY(fapi2::putScom(TGT0, 0x80000c750701103full, l_scom_buffer));
}
{
+ if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) || ((l_chip_id == 0x5) && (l_chip_ec == 0x21)) )
+ {
+ FAPI_TRY(fapi2::getScom( TGT0, 0x80000c770701103full, l_scom_buffer ));
+
+ if (( true ))
+ {
+ l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0006 );
+ }
+
+ FAPI_TRY(fapi2::putScom(TGT0, 0x80000c770701103full, l_scom_buffer));
+ }
+ }
+ {
FAPI_TRY(fapi2::getScom( TGT0, 0x80000c780701103full, l_scom_buffer ));
if (( true ))
@@ -1316,25 +1337,17 @@ fapi2::ReturnCode p9n_ddrphy_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& T
}
}
{
- FAPI_TRY(fapi2::getScom( TGT0, 0x800010030701103full, l_scom_buffer ));
-
if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) )
{
- if (( true ))
- {
- l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0120 );
- }
- }
+ FAPI_TRY(fapi2::getScom( TGT0, 0x800010030701103full, l_scom_buffer ));
- if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) || ((l_chip_id == 0x5) && (l_chip_ec == 0x21)) )
- {
if (( true ))
{
l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0120 );
}
- }
- FAPI_TRY(fapi2::putScom(TGT0, 0x800010030701103full, l_scom_buffer));
+ FAPI_TRY(fapi2::putScom(TGT0, 0x800010030701103full, l_scom_buffer));
+ }
}
{
if (((l_chip_id == 0x5) && (l_chip_ec == 0x10)) )
@@ -1485,6 +1498,19 @@ fapi2::ReturnCode p9n_ddrphy_scom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& T
FAPI_TRY(fapi2::putScom(TGT0, 0x800010750701103full, l_scom_buffer));
}
{
+ if (((l_chip_id == 0x5) && (l_chip_ec == 0x20)) || ((l_chip_id == 0x5) && (l_chip_ec == 0x21)) )
+ {
+ FAPI_TRY(fapi2::getScom( TGT0, 0x800010770701103full, l_scom_buffer ));
+
+ if (( true ))
+ {
+ l_scom_buffer.insert<48, 16, 48, uint64_t>(literal_0x0006 );
+ }
+
+ FAPI_TRY(fapi2::putScom(TGT0, 0x800010770701103full, l_scom_buffer));
+ }
+ }
+ {
FAPI_TRY(fapi2::getScom( TGT0, 0x800010780701103full, l_scom_buffer ));
if (( true ))
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C b/src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C
index 81f7f3f2b..66da61305 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/phy/ddr_phy.C
@@ -778,9 +778,6 @@ fapi2::ReturnCode phy_scominit(const fapi2::Target<TARGET_TYPE_MCBIST>& i_target
FAPI_TRY( mss::dp16::reset_bad_bits(p) );
#endif
- // New for Nimbus reset the DLL
- FAPI_TRY( mss::dp16::reset_dll(p) );
-
FAPI_TRY( mss::rank::get_rank_pairs(p, l_pairs) );
// Section 5.2.4.8 DP16 Write Clock Enable & Clock Selection on page 301
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/phy/dp16.C b/src/import/chips/p9/procedures/hwp/memory/lib/phy/dp16.C
index 5258d87b0..39135d317 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/phy/dp16.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/phy/dp16.C
@@ -1533,38 +1533,6 @@ fapi_try_exit:
}
///
-/// @brief Reset all of the DLL registers - Nimbus only
-/// @param[in] i_target an MCA
-/// @return FAPI2_RC_SUCCESs iff ok
-///
-fapi2::ReturnCode reset_dll( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target )
-{
- typedef dp16Traits<TARGET_TYPE_MCA> TT;
-
- // For DD1.0 we have some workarounds. We send the magic
- // number in to the work around and it fixes it up as needed.
- uint64_t l_vreg_cnrtl = mss::workarounds::dp16::vreg_control0(i_target, 0x6740);
-
- // Magic numbers are from the PHY team (see the ddry phy initfile, too.) They are, in fact,
- // magic numbers ...
-
- // TK How about a little broadcast action here? BRS
- FAPI_TRY( mss::scom_blastah(i_target, TT::DLL_CNFG_REG, 0x0060) );
- FAPI_TRY( mss::scom_blastah(i_target, TT::DLL_CNTRL_REG, 0x8100) );
- FAPI_TRY( mss::scom_blastah(i_target, TT::DLL_DAC_LOWER_REG, 0x8000) );
- FAPI_TRY( mss::scom_blastah(i_target, TT::DLL_DAC_UPPER_REG, 0xffe0) );
- FAPI_TRY( mss::scom_blastah(i_target, TT::DLL_SLAVE_LOWER_REG, 0x8000) );
- FAPI_TRY( mss::scom_blastah(i_target, TT::DLL_SLAVE_UPPER_REG, 0xffe0) );
- FAPI_TRY( mss::scom_blastah(i_target, TT::DLL_EXTRA_REG, 0x2020) );
- FAPI_TRY( mss::scom_blastah(i_target, TT::DLL_VREG_CNTRL_REG, l_vreg_cnrtl) );
- FAPI_TRY( mss::scom_blastah(i_target, TT::DLL_SW_CNTRL_REG, 0x0800) );
- FAPI_TRY( mss::scom_blastah(i_target, TT::DLL_VREG_COARSE_REG, 0x0402) );
-
-fapi_try_exit:
- return fapi2::current_err;
-}
-
-///
/// @brief Configure Read VREF Registers
/// @param[in] i_target a MCA target
/// @return FAPI2_RC_SUCCESs iff ok
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/workarounds/dp16_workarounds.H b/src/import/chips/p9/procedures/hwp/memory/lib/workarounds/dp16_workarounds.H
index 690bad635..8fdb47f5c 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/workarounds/dp16_workarounds.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/workarounds/dp16_workarounds.H
@@ -84,56 +84,6 @@ fapi2::ReturnCode rd_dia_config5( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i
fapi2::ReturnCode dqsclk_offset( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target );
///
-/// @brief DP16 DLL_VREG_CONTROL0
-/// In DD1.0 Nimbus VREG control work arounds are needed
-/// @param[in] port in question - needed to figure out whether to apply the work-around or not
-/// @param[in] i_original_value a value to which we add the workaround bits
-/// @return uint64_t the original value with the bits added
-///
-inline uint64_t vreg_control0( const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
- const uint64_t i_original_value )
-{
-
-// Anuwat has asked that we don't enforce this right now.
-#ifdef ANUWAT_SAYS_DONT_DO_THIS_NOW
-
- fapi2::buffer<uint64_t> l_value(i_original_value);
- uint8_t l_vccd_override = 0;
-
- // Check for whether we apply this workaround or not
- if (! mss::chip_ec_feature_mss_vccd_override(i_target) )
- {
- return i_original_value;
- }
-
- FAPI_TRY( mss::vccd_override(l_vccd_override) );
-
- // No VCCD override, don't mess with the DLL's
- if (fapi2::ENUM_ATTR_MSS_VCCD_OVERRIDE_YES == l_vccd_override)
- {
- l_value.insertFromRight<MCA_DDRPHY_DP16_DLL_VREG_CONTROL0_P0_0_01_RXREG_REF_SEL_DC,
- MCA_DDRPHY_DP16_DLL_VREG_CONTROL0_P0_0_01_RXREG_REF_SEL_DC_LEN>(0b111);
- }
-
- FAPI_INF("vreg_control0 0x%016lx, 0x%016lx", i_original_value, uint64_t(l_value));
- return l_value;
-
-fapi_try_exit:
- // Probably bigger problems ...
- FAPI_ERR("Unable to get vccd_override attribute");
- fapi2::Assert(false);
-
- // Not reached
- return 0;
-
-#else
-
- return i_original_value;
-
-#endif
-}
-
-///
/// @brief DP16 VREF DAC override
/// In DD1.0 Nimbus VREF DAC work arounds are needed
/// @param[in] i_target the port target for this override
OpenPOWER on IntegriCloud