summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Yan <fyan@us.ibm.com>2017-08-02 10:18:39 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-09-07 10:06:28 -0400
commitb60a858401ceff59d4a8daa05a13071dde886ddc (patch)
tree1ca2ce103d04213a131c43c7bee05ec630a2733a
parent3078310870af66e14cc5775680cad4c5c4a2be78 (diff)
downloadblackbird-hostboot-b60a858401ceff59d4a8daa05a13071dde886ddc.tar.gz
blackbird-hostboot-b60a858401ceff59d4a8daa05a13071dde886ddc.zip
ZZ VPD Pass 4 Board Update
- Split both ZZ and ZZ_lab folder trees - Update ZZ VPD files with new MR and MT settings - Update README.md - Update gen_vpd.pl - Introduce BIAS_TRIM attribute - Add to hb_temp_defaults.xml - Added enums for ATTR_MSS_VPD_MT_DRAM_DRV_IMP_DQ_DQS - Modify DQ Map for port swizzling - Typo Fixes - Added previousLayoutValue identifier - MR swap mcs 2 and 3 - New TSYS values Change-Id: I71f007298853658338a9b25fd8592520c6408b1c Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/44100 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Dev-Ready: FEIHONG YAN <fyan@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: JACOB L. HARVEY <jlharvey@us.ibm.com> Reviewed-by: FEIHONG YAN <fyan@us.ibm.com> Reviewed-by: Matt K. Light <mklight@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/44189 Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H806
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/mss_vpd_decoder.H1781
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/utils/fake_vpd.C236
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/utils/fake_vpd.H15
-rw-r--r--src/import/chips/p9/procedures/xml/attribute_info/memory_cke_attributes.xml3
-rw-r--r--src/import/chips/p9/procedures/xml/attribute_info/memory_dq_attributes.xml1
-rw-r--r--src/import/chips/p9/procedures/xml/attribute_info/memory_mr_attributes.xml181
-rw-r--r--src/import/chips/p9/procedures/xml/attribute_info/memory_mt_attributes.xml70
-rw-r--r--src/import/hwpf/fapi2/xml/attribute_info/hb_temp_defaults.xml6
9 files changed, 2064 insertions, 1035 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H b/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H
index f9c12454a..232d8fd7b 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H
@@ -21382,6 +21382,28 @@ fapi_try_exit:
}
///
+/// @brief ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET getter
+/// @param[in] const ref to the TARGET_TYPE_MCS
+/// @param[out] uint8_t& reference to store the value
+/// @note Generated by gen_accessors.pl generateParameters (NODIM A)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Default value for 2N Mode from Signal Integrity. 0x01 = 1N Mode , 0x02 = 2N
+/// Mode
+///
+inline fapi2::ReturnCode vpd_mr_mc_2n_mode_autoset(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+ uint8_t& o_value)
+{
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET, i_target, o_value) );
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A00 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
@@ -23230,69 +23252,69 @@ fapi_try_exit:
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
-/// one cycle of
+/// @note Phase rotator delay value of Activate for ACTN in ticks. Ticks are 1/128 of one
+/// cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkp(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_actn(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
-/// one cycle of
+/// @note Phase rotator delay value of Activate for ACTN in ticks. Ticks are 1/128 of one
+/// cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkp(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_actn(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
-/// one cycle of
+/// @note Phase rotator delay value of Activate for ACTN in ticks. Ticks are 1/128 of one
+/// cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkp(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_actn(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -23303,80 +23325,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkp(const fapi2::Target<fapi2::
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
-/// one cycle of
+/// @note Phase rotator delay value of Column Access Strobe for CASN in ticks. Ticks are
+/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkn(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_casn_a15(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
- l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15,
+ i_target.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
-/// one cycle of
+/// @note Phase rotator delay value of Column Access Strobe for CASN in ticks. Ticks are
+/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkn(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_casn_a15(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
- l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15,
+ l_mca.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
-/// one cycle of
+/// @note Phase rotator delay value of Column Access Strobe for CASN in ticks. Ticks are
+/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkn(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_casn_a15(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -23387,80 +23409,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkn(const fapi2::Target<fapi2::
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
-/// one cycle of
+/// @note Phase rotator delay value of Row Access Strobe for RASN in ticks. Ticks are
+/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkp(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_rasn_a16(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
- l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16,
+ i_target.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
-/// one cycle of
+/// @note Phase rotator delay value of Row Access Strobe for RASN in ticks. Ticks are
+/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkp(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_rasn_a16(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
- l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16,
+ l_mca.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
-/// one cycle of
+/// @note Phase rotator delay value of Row Access Strobe for RASN in ticks. Ticks are
+/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkp(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_rasn_a16(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -23471,80 +23493,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkp(const fapi2::Target<fapi2::
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// @note Phase rotator delay value of Write Enable for WEN in ticks. Ticks are 1/128 of
/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkn(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_wen_a14(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
- l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14,
+ i_target.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// @note Phase rotator delay value of Write Enable for WEN in ticks. Ticks are 1/128 of
/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkn(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_wen_a14(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// @note Phase rotator delay value of Write Enable for WEN in ticks. Ticks are 1/128 of
/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkn(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_wen_a14(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -23555,80 +23577,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkn(const fapi2::Target<fapi2::
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Activate for ACTN in ticks. Ticks are 1/128 of one
-/// cycle of
+/// @note Phase rotator delay value of the Parity Input for PAR in ticks. Ticks are 1/128
+/// of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_actn(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_par(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Activate for ACTN in ticks. Ticks are 1/128 of one
-/// cycle of
+/// @note Phase rotator delay value of the Parity Input for PAR in ticks. Ticks are 1/128
+/// of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_actn(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_par(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Activate for ACTN in ticks. Ticks are 1/128 of one
-/// cycle of
+/// @note Phase rotator delay value of the Parity Input for PAR in ticks. Ticks are 1/128
+/// of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_actn(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_par(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -23639,80 +23661,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_actn(const fapi2::Target<fapi2:
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Column Access Strobe for CASN in ticks. Ticks are
+/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are
/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_casn_a15(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke0(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15,
- i_target.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Column Access Strobe for CASN in ticks. Ticks are
+/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are
/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_casn_a15(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15,
- l_mca.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Column Access Strobe for CASN in ticks. Ticks are
+/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are
/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_casn_a15(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -23723,80 +23745,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_casn_a15(const fapi2::Targ
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Row Access Strobe for RASN in ticks. Ticks are
+/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are
/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_rasn_a16(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke1(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16,
- i_target.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Row Access Strobe for RASN in ticks. Ticks are
+/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are
/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_rasn_a16(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16,
- l_mca.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Row Access Strobe for RASN in ticks. Ticks are
+/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are
/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_rasn_a16(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -23807,80 +23829,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_rasn_a16(const fapi2::Targ
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Write Enable for WEN in ticks. Ticks are 1/128 of
-/// one cycle of
+/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are
+/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_wen_a14(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn0(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14,
- i_target.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Write Enable for WEN in ticks. Ticks are 1/128 of
-/// one cycle of
+/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are
+/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_wen_a14(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Write Enable for WEN in ticks. Ticks are 1/128 of
-/// one cycle of
+/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are
+/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_wen_a14(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -23891,80 +23913,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_wen_a14(const fapi2::Targe
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of the Parity Input for PAR in ticks. Ticks are 1/128
-/// of one cycle of
+/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are
+/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_par(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn1(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of the Parity Input for PAR in ticks. Ticks are 1/128
-/// of one cycle of
+/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are
+/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_par(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of the Parity Input for PAR in ticks. Ticks are 1/128
-/// of one cycle of
+/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are
+/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_par(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -23975,80 +23997,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_par(const fapi2::Target<fapi2::
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are
-/// 1/128 of one cycle of
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
+/// are 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke0(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt0(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are
-/// 1/128 of one cycle of
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
+/// are 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are
-/// 1/128 of one cycle of
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
+/// are 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -24059,80 +24081,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke0(const fapi2::Target<fa
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are
-/// 1/128 of one cycle of
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
+/// are 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke1(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt1(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are
-/// 1/128 of one cycle of
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
+/// are 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are
-/// 1/128 of one cycle of
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
+/// are 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -24143,12 +24165,12 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke1(const fapi2::Target<fa
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
@@ -24322,7 +24344,7 @@ fapi_try_exit:
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
@@ -24331,24 +24353,24 @@ fapi_try_exit:
/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn0(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn0(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
@@ -24357,25 +24379,25 @@ fapi_try_exit:
/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
@@ -24384,7 +24406,7 @@ fapi_try_exit:
/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -24395,18 +24417,18 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn0(const fapi2::Target<fa
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
@@ -24415,24 +24437,24 @@ fapi_try_exit:
/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn1(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn1(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
@@ -24441,25 +24463,25 @@ fapi_try_exit:
/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
@@ -24468,7 +24490,7 @@ fapi_try_exit:
/// 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -24479,80 +24501,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn1(const fapi2::Target<fa
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are
-/// 1/128 of one cycle of
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
+/// are 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn0(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt0(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are
-/// 1/128 of one cycle of
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
+/// are 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are
-/// 1/128 of one cycle of
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
+/// are 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -24563,80 +24585,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn0(const fapi2::Target<fa
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are
-/// 1/128 of one cycle of
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
+/// are 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn1(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt1(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are
-/// 1/128 of one cycle of
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
+/// are 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are
-/// 1/128 of one cycle of
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
+/// are 1/128 of one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -24647,80 +24669,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn1(const fapi2::Target<fa
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
-/// are 1/128 of one cycle of
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt0(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkn(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
-/// are 1/128 of one cycle of
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkn(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
-/// are 1/128 of one cycle of
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkn(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -24731,80 +24753,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt0(const fapi2::Target<fa
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
-/// are 1/128 of one cycle of
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt1(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkp(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
-/// are 1/128 of one cycle of
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkp(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
-/// are 1/128 of one cycle of
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkp(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -24815,80 +24837,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt1(const fapi2::Target<fa
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
-/// are 1/128 of one cycle of
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt0(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkn(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
-/// are 1/128 of one cycle of
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkn(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
-/// are 1/128 of one cycle of
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkn(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -24899,80 +24921,80 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt0(const fapi2::Target<fa
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
-/// are 1/128 of one cycle of
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt1(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkp(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP, i_target.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
-/// are 1/128 of one cycle of
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkp(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
uint8_t& o_value)
{
uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(),
l_value) );
o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1 getter
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks
-/// are 1/128 of one cycle of
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of
+/// one cycle of
/// clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkp(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint8_t* o_array)
{
if (o_array == nullptr)
@@ -24983,34 +25005,12 @@ inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt1(const fapi2::Target<fa
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET getter
-/// @param[in] const ref to the TARGET_TYPE_MCS
-/// @param[out] uint8_t& reference to store the value
-/// @note Generated by gen_accessors.pl generateParameters (NODIM A)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Default value for 2N Mode from Signal Integrity. 0x01 = 1N Mode , 0x02 = 2N
-/// Mode
-///
-inline fapi2::ReturnCode vpd_mr_mc_2n_mode_autoset(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
- uint8_t& o_value)
-{
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET, i_target, o_value) );
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
@@ -25839,6 +25839,88 @@ fapi_try_exit:
}
///
+/// @brief ATTR_MSS_VPD_MT_MC_BIAS_TRIM getter
+/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
+/// @param[out] ref to the value uint8_t
+/// @note Generated by gen_accessors.pl generateParameters (D)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Adjusts the receiver internal current bias. ONLY set range 0-7. Default value is
+/// 3. [VPD Value] = [Binary bit value set in register] 0 = 110 (Minimal power) 1 =
+/// 010 2 = 100 3 = 000 (Default) 4 = 111 5 = 011 6 = 101 7 = 001 (Maximum
+/// power)
+///
+inline fapi2::ReturnCode vpd_mt_mc_bias_trim(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t& o_value)
+{
+ uint8_t l_value[2];
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MT_MC_BIAS_TRIM, i_target.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ o_value = l_value[mss::index(i_target)];
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MT_MC_BIAS_TRIM: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_MSS_VPD_MT_MC_BIAS_TRIM getter
+/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
+/// @param[out] ref to the value uint8_t
+/// @note Generated by gen_accessors.pl generateParameters (D.1)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Adjusts the receiver internal current bias. ONLY set range 0-7. Default value is
+/// 3. [VPD Value] = [Binary bit value set in register] 0 = 110 (Minimal power) 1 =
+/// 010 2 = 100 3 = 000 (Default) 4 = 111 5 = 011 6 = 101 7 = 001 (Maximum
+/// power)
+///
+inline fapi2::ReturnCode vpd_mt_mc_bias_trim(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
+{
+ uint8_t l_value[2];
+ auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MT_MC_BIAS_TRIM, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ o_value = l_value[mss::index(l_mca)];
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MT_MC_BIAS_TRIM: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_MSS_VPD_MT_MC_BIAS_TRIM getter
+/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
+/// @param[out] uint8_t* memory to store the value
+/// @note Generated by gen_accessors.pl generateParameters (E)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Adjusts the receiver internal current bias. ONLY set range 0-7. Default value is
+/// 3. [VPD Value] = [Binary bit value set in register] 0 = 110 (Minimal power) 1 =
+/// 010 2 = 100 3 = 000 (Default) 4 = 111 5 = 011 6 = 101 7 = 001 (Maximum
+/// power)
+///
+inline fapi2::ReturnCode vpd_mt_mc_bias_trim(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
+{
+ if (o_array == nullptr)
+ {
+ FAPI_ERR("nullptr passed to attribute accessor %s", __func__);
+ return fapi2::FAPI2_RC_INVALID_PARAMETER;
+ }
+
+ uint8_t l_value[2];
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPD_MT_MC_BIAS_TRIM, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_MSS_VPD_MT_MC_BIAS_TRIM: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
/// @brief ATTR_MSS_VPD_MT_MC_DQ_ACBOOST_RD_UP getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint32_t
@@ -27295,9 +27377,9 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Derived from calibration/characterization of read centering. Number of windage
-/// offset in units of pico-seconds[ps]. If this is enabled, disable periodic rd_ctr
-/// in draminit_mc. Default is
-/// 0
+/// offset in units of pico-seconds[ps]. Default is 0 Specification of the value in
+/// this file is 2's compliment
+/// hex
///
inline fapi2::ReturnCode vpd_mt_windage_rd_ctr(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, int16_t& o_value)
{
@@ -27320,9 +27402,9 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Derived from calibration/characterization of read centering. Number of windage
-/// offset in units of pico-seconds[ps]. If this is enabled, disable periodic rd_ctr
-/// in draminit_mc. Default is
-/// 0
+/// offset in units of pico-seconds[ps]. Default is 0 Specification of the value in
+/// this file is 2's compliment
+/// hex
///
inline fapi2::ReturnCode vpd_mt_windage_rd_ctr(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, int16_t& o_value)
{
@@ -27346,9 +27428,9 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Derived from calibration/characterization of read centering. Number of windage
-/// offset in units of pico-seconds[ps]. If this is enabled, disable periodic rd_ctr
-/// in draminit_mc. Default is
-/// 0
+/// offset in units of pico-seconds[ps]. Default is 0 Specification of the value in
+/// this file is 2's compliment
+/// hex
///
inline fapi2::ReturnCode vpd_mt_windage_rd_ctr(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, int16_t* o_array)
{
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/mss_vpd_decoder.H b/src/import/chips/p9/procedures/hwp/memory/lib/mss_vpd_decoder.H
index 62ab40dc5..f34eac317 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/mss_vpd_decoder.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/mss_vpd_decoder.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2016 */
+/* Contributors Listed Below - COPYRIGHT 2016,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -30,16 +30,14 @@
#include <fapi2.H>
-#include <mss.H>
#include <lib/shared/mss_const.H>
#include <lib/mss_utils.H>
+#include <lib/mss_attribute_accessors.H>
namespace mss
{
namespace decoder
{
-
-// VPD Keyword Version Byte: 00
///
/// @brief ATTR_MSS_VPD_MT_0_VERSION_LAYOUT decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
@@ -50,11 +48,15 @@ namespace decoder
inline fapi2::ReturnCode vpd_mt_0_version_layout(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const std::vector<uint8_t*>& i_blobs)
{
- uint8_t l_value;
+ uint8_t l_value = 0;
+ constexpr uint64_t l_num_bytes_to_copy = 1;
+ constexpr uint64_t l_offset = 0;
+
+ memcpy(&l_value, i_blobs[0] + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blobs[0] + 0, 1);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_0_VERSION_LAYOUT, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_0_VERSION_LAYOUT start: 0, len: 1");
+ "Unable to decode and set ATTR_MSS_VPD_MT_0_VERSION_LAYOUT start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -70,11 +72,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mt_1_version_data(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const std::vector<uint8_t*>& i_blobs)
{
- uint8_t l_value;
+ uint8_t l_value = 0;
+ constexpr uint64_t l_num_bytes_to_copy = 1;
+ constexpr uint64_t l_offset = 1;
+
+ memcpy(&l_value, i_blobs[0] + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blobs[0] + 1, 1);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_1_VERSION_DATA, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_1_VERSION_DATA start: 1, len: 1");
+ "Unable to decode and set ATTR_MSS_VPD_MT_1_VERSION_DATA start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -90,12 +96,16 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mt_2_signature_hash(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const std::vector<uint8_t*>& i_blobs)
{
- uint32_t l_value;
+ uint32_t l_value = 0;
+ constexpr uint64_t l_num_bytes_to_copy = 4;
+ constexpr uint64_t l_offset = 2;
- memcpy(&l_value, i_blobs[0] + 2, 4);
+ memcpy(&l_value, i_blobs[0] + l_offset, l_num_bytes_to_copy);
l_value = be32toh(l_value);
+
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_2_SIGNATURE_HASH, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_2_SIGNATURE_HASH start: 2, len: 4");
+ "Unable to decode and set ATTR_MSS_VPD_MT_2_SIGNATURE_HASH start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -117,18 +127,23 @@ inline fapi2::ReturnCode vpd_mt_dimm_rcd_ibt_ca(const fapi2::Target<fapi2::TARGE
fapi2::Assert(false);
}
- uint8_t l_value[2][2];
- constexpr uint64_t l_length = 4 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2][2] = {};
+ constexpr uint64_t l_start = 6;
+ constexpr uint64_t l_length = 4;
+
+ constexpr uint64_t l_num_bytes_to_copy = l_length / mss::PORTS_PER_MCS;
for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
{
const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 6 + (l_index * l_length);
- memcpy(&(l_value[l_index][0]), l_blob + l_start, l_length);
+ const uint64_t l_offset = l_start + (l_index * l_num_bytes_to_copy);
+
+ memcpy(&(l_value[l_index][0]), l_blob + l_offset, l_num_bytes_to_copy);
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_DIMM_RCD_IBT_CA, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_DIMM_RCD_IBT_CA start: 6, len: 4");
+ "Unable to decode and set ATTR_MSS_VPD_MT_DIMM_RCD_IBT_CA start: %d, len: %d for %s", l_start, l_length,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -150,18 +165,23 @@ inline fapi2::ReturnCode vpd_mt_dimm_rcd_ibt_cke(const fapi2::Target<fapi2::TARG
fapi2::Assert(false);
}
- uint8_t l_value[2][2];
- constexpr uint64_t l_length = 4 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2][2] = {};
+ constexpr uint64_t l_start = 10;
+ constexpr uint64_t l_length = 4;
+
+ constexpr uint64_t l_num_bytes_to_copy = l_length / mss::PORTS_PER_MCS;
for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
{
const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 10 + (l_index * l_length);
- memcpy(&(l_value[l_index][0]), l_blob + l_start, l_length);
+ const uint64_t l_offset = l_start + (l_index * l_num_bytes_to_copy);
+
+ memcpy(&(l_value[l_index][0]), l_blob + l_offset, l_num_bytes_to_copy);
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_DIMM_RCD_IBT_CKE, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_DIMM_RCD_IBT_CKE start: 10, len: 4");
+ "Unable to decode and set ATTR_MSS_VPD_MT_DIMM_RCD_IBT_CKE start: %d, len: %d for %s", l_start, l_length,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -183,18 +203,23 @@ inline fapi2::ReturnCode vpd_mt_dimm_rcd_ibt_cs(const fapi2::Target<fapi2::TARGE
fapi2::Assert(false);
}
- uint8_t l_value[2][2];
- constexpr uint64_t l_length = 4 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2][2] = {};
+ constexpr uint64_t l_start = 14;
+ constexpr uint64_t l_length = 4;
+
+ constexpr uint64_t l_num_bytes_to_copy = l_length / mss::PORTS_PER_MCS;
for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
{
const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 14 + (l_index * l_length);
- memcpy(&(l_value[l_index][0]), l_blob + l_start, l_length);
+ const uint64_t l_offset = l_start + (l_index * l_num_bytes_to_copy);
+
+ memcpy(&(l_value[l_index][0]), l_blob + l_offset, l_num_bytes_to_copy);
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_DIMM_RCD_IBT_CS, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_DIMM_RCD_IBT_CS start: 14, len: 4");
+ "Unable to decode and set ATTR_MSS_VPD_MT_DIMM_RCD_IBT_CS start: %d, len: %d for %s", l_start, l_length,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -216,18 +241,23 @@ inline fapi2::ReturnCode vpd_mt_dimm_rcd_ibt_odt(const fapi2::Target<fapi2::TARG
fapi2::Assert(false);
}
- uint8_t l_value[2][2];
- constexpr uint64_t l_length = 4 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2][2] = {};
+ constexpr uint64_t l_start = 18;
+ constexpr uint64_t l_length = 4;
+
+ constexpr uint64_t l_num_bytes_to_copy = l_length / mss::PORTS_PER_MCS;
for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
{
const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 18 + (l_index * l_length);
- memcpy(&(l_value[l_index][0]), l_blob + l_start, l_length);
+ const uint64_t l_offset = l_start + (l_index * l_num_bytes_to_copy);
+
+ memcpy(&(l_value[l_index][0]), l_blob + l_offset, l_num_bytes_to_copy);
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_DIMM_RCD_IBT_ODT, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_DIMM_RCD_IBT_ODT start: 18, len: 4");
+ "Unable to decode and set ATTR_MSS_VPD_MT_DIMM_RCD_IBT_ODT start: %d, len: %d for %s", l_start, l_length,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -249,18 +279,23 @@ inline fapi2::ReturnCode vpd_mt_dram_drv_imp_dq_dqs(const fapi2::Target<fapi2::T
fapi2::Assert(false);
}
- uint8_t l_value[2][2][4];
- constexpr uint64_t l_length = 16 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2][2][4] = {};
+ constexpr uint64_t l_start = 22;
+ constexpr uint64_t l_length = 16;
+
+ constexpr uint64_t l_num_bytes_to_copy = l_length / mss::PORTS_PER_MCS;
for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
{
const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 22 + (l_index * l_length);
- memcpy(&(l_value[l_index][0][0]), l_blob + l_start, l_length);
+ const uint64_t l_offset = l_start + (l_index * l_num_bytes_to_copy);
+
+ memcpy(&(l_value[l_index][0][0]), l_blob + l_offset, l_num_bytes_to_copy);
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_DRAM_DRV_IMP_DQ_DQS, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_DRAM_DRV_IMP_DQ_DQS start: 22, len: 16");
+ "Unable to decode and set ATTR_MSS_VPD_MT_DRAM_DRV_IMP_DQ_DQS start: %d, len: %d for %s", l_start, l_length,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -282,18 +317,23 @@ inline fapi2::ReturnCode vpd_mt_dram_rtt_nom(const fapi2::Target<fapi2::TARGET_T
fapi2::Assert(false);
}
- uint8_t l_value[2][2][4];
- constexpr uint64_t l_length = 16 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2][2][4] = {};
+ constexpr uint64_t l_start = 38;
+ constexpr uint64_t l_length = 16;
+
+ constexpr uint64_t l_num_bytes_to_copy = l_length / mss::PORTS_PER_MCS;
for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
{
const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 38 + (l_index * l_length);
- memcpy(&(l_value[l_index][0][0]), l_blob + l_start, l_length);
+ const uint64_t l_offset = l_start + (l_index * l_num_bytes_to_copy);
+
+ memcpy(&(l_value[l_index][0][0]), l_blob + l_offset, l_num_bytes_to_copy);
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_DRAM_RTT_NOM, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_DRAM_RTT_NOM start: 38, len: 16");
+ "Unable to decode and set ATTR_MSS_VPD_MT_DRAM_RTT_NOM start: %d, len: %d for %s", l_start, l_length,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -315,18 +355,23 @@ inline fapi2::ReturnCode vpd_mt_dram_rtt_park(const fapi2::Target<fapi2::TARGET_
fapi2::Assert(false);
}
- uint8_t l_value[2][2][4];
- constexpr uint64_t l_length = 16 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2][2][4] = {};
+ constexpr uint64_t l_start = 54;
+ constexpr uint64_t l_length = 16;
+
+ constexpr uint64_t l_num_bytes_to_copy = l_length / mss::PORTS_PER_MCS;
for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
{
const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 54 + (l_index * l_length);
- memcpy(&(l_value[l_index][0][0]), l_blob + l_start, l_length);
+ const uint64_t l_offset = l_start + (l_index * l_num_bytes_to_copy);
+
+ memcpy(&(l_value[l_index][0][0]), l_blob + l_offset, l_num_bytes_to_copy);
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_DRAM_RTT_PARK, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_DRAM_RTT_PARK start: 54, len: 16");
+ "Unable to decode and set ATTR_MSS_VPD_MT_DRAM_RTT_PARK start: %d, len: %d for %s", l_start, l_length,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -348,18 +393,81 @@ inline fapi2::ReturnCode vpd_mt_dram_rtt_wr(const fapi2::Target<fapi2::TARGET_TY
fapi2::Assert(false);
}
- uint8_t l_value[2][2][4];
- constexpr uint64_t l_length = 16 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2][2][4] = {};
+ constexpr uint64_t l_start = 70;
+ constexpr uint64_t l_length = 16;
+
+ constexpr uint64_t l_num_bytes_to_copy = l_length / mss::PORTS_PER_MCS;
for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
{
const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 70 + (l_index * l_length);
- memcpy(&(l_value[l_index][0][0]), l_blob + l_start, l_length);
+ const uint64_t l_offset = l_start + (l_index * l_num_bytes_to_copy);
+
+ memcpy(&(l_value[l_index][0][0]), l_blob + l_offset, l_num_bytes_to_copy);
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_DRAM_RTT_WR, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_DRAM_RTT_WR start: 70, len: 16");
+ "Unable to decode and set ATTR_MSS_VPD_MT_DRAM_RTT_WR start: %d, len: %d for %s", l_start, l_length,
+ mss::c_str(i_target));
+
+fapi_try_exit:
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_MSS_VPD_MT_MC_BIAS_TRIM decode and set (array)
+/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
+/// @param[in] i_blobs a std::vector of pointers to VPD blobs for this MCS's MCAs
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
+/// @note Adjusts the receiver internal current bias. ONLY set range 0-7. Default value is 3.
+/// [VPD Value] = [Binary bit value set in register]
+/// 0 = 110 (Minimal power)
+/// 1 = 010
+/// 2 = 100
+/// 3 = 000 (Default)
+/// 4 = 111
+/// 5 = 011
+/// 6 = 101
+/// 7 = 001 (Maximum power)
+///
+inline fapi2::ReturnCode vpd_mt_mc_bias_trim(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+ const std::vector<uint8_t*>& i_blobs)
+{
+ if (i_blobs.size() != mss::PORTS_PER_MCS)
+ {
+ FAPI_ERR("%s found vpd blob vector with incorrect number of elements %d", mss::c_str(i_target), i_blobs.size());
+ fapi2::Assert(false);
+ }
+
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_max_layout_version = 1;
+
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version));
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ constexpr uint64_t l_offset = 86;
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ if( l_layer_version == l_max_layout_version)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+ else
+ {
+ // setting this to default value from VPD template
+ constexpr uint64_t l_prev_layout_val = 0x03;
+ l_value[l_index] = l_prev_layout_val;
+ }
+ }
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_MC_BIAS_TRIM, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MT_MC_BIAS_TRIM for %s", mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -391,14 +499,42 @@ inline fapi2::ReturnCode vpd_mt_mc_dq_acboost_rd_up(const fapi2::Target<fapi2::T
fapi2::Assert(false);
}
- uint32_t l_value[2];
- constexpr uint64_t l_length = 8 / mss::PORTS_PER_MCS;
+ uint32_t l_value[2] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 86 + (l_index * l_length);
- memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 86;
+ l_num_bytes_to_copy = 8;
+ break;
+
+ case 1:
+ l_offset = 88;
+ l_num_bytes_to_copy = 8;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+
}
for (size_t i = 0; i < 2; ++i)
@@ -407,7 +543,8 @@ inline fapi2::ReturnCode vpd_mt_mc_dq_acboost_rd_up(const fapi2::Target<fapi2::T
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_MC_DQ_ACBOOST_RD_UP, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_MC_DQ_ACBOOST_RD_UP start: 86, len: 8");
+ "Unable to decode and set ATTR_MSS_VPD_MT_MC_DQ_ACBOOST_RD_UP start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -439,14 +576,42 @@ inline fapi2::ReturnCode vpd_mt_mc_dq_acboost_wr_down(const fapi2::Target<fapi2:
fapi2::Assert(false);
}
- uint32_t l_value[2];
- constexpr uint64_t l_length = 8 / mss::PORTS_PER_MCS;
+ uint32_t l_value[2] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 94 + (l_index * l_length);
- memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 94;
+ l_num_bytes_to_copy = 8;
+ break;
+
+ case 1:
+ l_offset = 96;
+ l_num_bytes_to_copy = 8;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+
}
for (size_t i = 0; i < 2; ++i)
@@ -455,7 +620,8 @@ inline fapi2::ReturnCode vpd_mt_mc_dq_acboost_wr_down(const fapi2::Target<fapi2:
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_MC_DQ_ACBOOST_WR_DOWN, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_MC_DQ_ACBOOST_WR_DOWN start: 94, len: 8");
+ "Unable to decode and set ATTR_MSS_VPD_MT_MC_DQ_ACBOOST_WR_DOWN start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -487,14 +653,42 @@ inline fapi2::ReturnCode vpd_mt_mc_dq_acboost_wr_up(const fapi2::Target<fapi2::T
fapi2::Assert(false);
}
- uint32_t l_value[2];
- constexpr uint64_t l_length = 8 / mss::PORTS_PER_MCS;
+ uint32_t l_value[2] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 102 + (l_index * l_length);
- memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 102;
+ l_num_bytes_to_copy = 8;
+ break;
+
+ case 1:
+ l_offset = 104;
+ l_num_bytes_to_copy = 8;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+
}
for (size_t i = 0; i < 2; ++i)
@@ -503,7 +697,8 @@ inline fapi2::ReturnCode vpd_mt_mc_dq_acboost_wr_up(const fapi2::Target<fapi2::T
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_MC_DQ_ACBOOST_WR_UP, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_MC_DQ_ACBOOST_WR_UP start: 102, len: 8");
+ "Unable to decode and set ATTR_MSS_VPD_MT_MC_DQ_ACBOOST_WR_UP start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -533,14 +728,42 @@ inline fapi2::ReturnCode vpd_mt_mc_dq_ctle_cap(const fapi2::Target<fapi2::TARGET
fapi2::Assert(false);
}
- uint64_t l_value[2];
- constexpr uint64_t l_length = 16 / mss::PORTS_PER_MCS;
+ uint64_t l_value[2] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 110 + (l_index * l_length);
- memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 110;
+ l_num_bytes_to_copy = 16;
+ break;
+
+ case 1:
+ l_offset = 112;
+ l_num_bytes_to_copy = 16;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+
}
for (size_t i = 0; i < 2; ++i)
@@ -549,7 +772,8 @@ inline fapi2::ReturnCode vpd_mt_mc_dq_ctle_cap(const fapi2::Target<fapi2::TARGET
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_MC_DQ_CTLE_CAP, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_MC_DQ_CTLE_CAP start: 110, len: 16");
+ "Unable to decode and set ATTR_MSS_VPD_MT_MC_DQ_CTLE_CAP start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -579,14 +803,42 @@ inline fapi2::ReturnCode vpd_mt_mc_dq_ctle_res(const fapi2::Target<fapi2::TARGET
fapi2::Assert(false);
}
- uint64_t l_value[2];
- constexpr uint64_t l_length = 16 / mss::PORTS_PER_MCS;
+ uint64_t l_value[2] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 126 + (l_index * l_length);
- memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 126;
+ l_num_bytes_to_copy = 16;
+ break;
+
+ case 1:
+ l_offset = 128;
+ l_num_bytes_to_copy = 16;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+
}
for (size_t i = 0; i < 2; ++i)
@@ -595,7 +847,8 @@ inline fapi2::ReturnCode vpd_mt_mc_dq_ctle_res(const fapi2::Target<fapi2::TARGET
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_MC_DQ_CTLE_RES, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_MC_DQ_CTLE_RES start: 126, len: 16");
+ "Unable to decode and set ATTR_MSS_VPD_MT_MC_DQ_CTLE_RES start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -617,18 +870,47 @@ inline fapi2::ReturnCode vpd_mt_mc_drv_imp_clk(const fapi2::Target<fapi2::TARGET
fapi2::Assert(false);
}
- uint8_t l_value[2];
- constexpr uint64_t l_length = 2 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 142 + (l_index * l_length);
- memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 142;
+ l_num_bytes_to_copy = 2;
+ break;
+
+ case 1:
+ l_offset = 144;
+ l_num_bytes_to_copy = 2;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_MC_DRV_IMP_CLK, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_MC_DRV_IMP_CLK start: 142, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MT_MC_DRV_IMP_CLK start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -650,18 +932,47 @@ inline fapi2::ReturnCode vpd_mt_mc_drv_imp_cmd_addr(const fapi2::Target<fapi2::T
fapi2::Assert(false);
}
- uint8_t l_value[2];
- constexpr uint64_t l_length = 2 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 144 + (l_index * l_length);
- memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 144;
+ l_num_bytes_to_copy = 2;
+ break;
+
+ case 1:
+ l_offset = 146;
+ l_num_bytes_to_copy = 2;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_MC_DRV_IMP_CMD_ADDR, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_MC_DRV_IMP_CMD_ADDR start: 144, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MT_MC_DRV_IMP_CMD_ADDR start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -683,18 +994,47 @@ inline fapi2::ReturnCode vpd_mt_mc_drv_imp_cntl(const fapi2::Target<fapi2::TARGE
fapi2::Assert(false);
}
- uint8_t l_value[2];
- constexpr uint64_t l_length = 2 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 146 + (l_index * l_length);
- memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 146;
+ l_num_bytes_to_copy = 2;
+ break;
+
+ case 1:
+ l_offset = 148;
+ l_num_bytes_to_copy = 2;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_MC_DRV_IMP_CNTL, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_MC_DRV_IMP_CNTL start: 146, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MT_MC_DRV_IMP_CNTL start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -716,18 +1056,47 @@ inline fapi2::ReturnCode vpd_mt_mc_drv_imp_cscid(const fapi2::Target<fapi2::TARG
fapi2::Assert(false);
}
- uint8_t l_value[2];
- constexpr uint64_t l_length = 2 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 148 + (l_index * l_length);
- memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 148;
+ l_num_bytes_to_copy = 2;
+ break;
+
+ case 1:
+ l_offset = 150;
+ l_num_bytes_to_copy = 2;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_MC_DRV_IMP_CSCID, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_MC_DRV_IMP_CSCID start: 148, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MT_MC_DRV_IMP_CSCID start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -749,18 +1118,47 @@ inline fapi2::ReturnCode vpd_mt_mc_drv_imp_dq_dqs(const fapi2::Target<fapi2::TAR
fapi2::Assert(false);
}
- uint8_t l_value[2][5];
- constexpr uint64_t l_length = 10 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2][5] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 150 + (l_index * l_length);
- memcpy(&(l_value[l_index][0]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 150;
+ l_num_bytes_to_copy = 10;
+ break;
+
+ case 1:
+ l_offset = 152;
+ l_num_bytes_to_copy = 10;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index][0]), l_blob + l_start, l_length);
+ }
+
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_MC_DRV_IMP_DQ_DQS, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_MC_DRV_IMP_DQ_DQS start: 150, len: 10");
+ "Unable to decode and set ATTR_MSS_VPD_MT_MC_DRV_IMP_DQ_DQS start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -782,18 +1180,47 @@ inline fapi2::ReturnCode vpd_mt_mc_rcv_imp_dq_dqs(const fapi2::Target<fapi2::TAR
fapi2::Assert(false);
}
- uint8_t l_value[2][5];
- constexpr uint64_t l_length = 10 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2][5] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 160 + (l_index * l_length);
- memcpy(&(l_value[l_index][0]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 160;
+ l_num_bytes_to_copy = 10;
+ break;
+
+ case 1:
+ l_offset = 162;
+ l_num_bytes_to_copy = 10;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index][0]), l_blob + l_start, l_length);
+ }
+
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_MC_RCV_IMP_DQ_DQS, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_MC_RCV_IMP_DQ_DQS start: 160, len: 10");
+ "Unable to decode and set ATTR_MSS_VPD_MT_MC_RCV_IMP_DQ_DQS start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -804,7 +1231,8 @@ fapi_try_exit:
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blobs a std::vector of pointers to VPD blobs for this MCS's MCAs
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note READ, On Die Termination triggering bitmap.
+/// @note READ, On Die Termination triggering bitmap. Use bitmap to determine which ODT to fire for the designated rank.
+/// The bits in 8 bit field are [Dimm0 ODT0][Dimm0 ODT1][N/A][N/A][Dimm1 ODT0][Dimm1 ODT1][N/A][N/A]
///
inline fapi2::ReturnCode vpd_mt_odt_rd(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const std::vector<uint8_t*>& i_blobs)
@@ -815,18 +1243,47 @@ inline fapi2::ReturnCode vpd_mt_odt_rd(const fapi2::Target<fapi2::TARGET_TYPE_MC
fapi2::Assert(false);
}
- uint8_t l_value[2][2][4];
- constexpr uint64_t l_length = 16 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2][2][4] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 170 + (l_index * l_length);
- memcpy(&(l_value[l_index][0][0]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 170;
+ l_num_bytes_to_copy = 16;
+ break;
+
+ case 1:
+ l_offset = 172;
+ l_num_bytes_to_copy = 16;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index][0][0]), l_blob + l_start, l_length);
+ }
+
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_ODT_RD, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_ODT_RD start: 170, len: 16");
+ "Unable to decode and set ATTR_MSS_VPD_MT_ODT_RD start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -837,7 +1294,8 @@ fapi_try_exit:
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blobs a std::vector of pointers to VPD blobs for this MCS's MCAs
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note WRITE, On Die Termination triggering bitmap.
+/// @note WRITE, On Die Termination triggering bitmap. Use bitmap to determine which ODT to fire for the designated rank.
+/// The bits in 8 bit field are [Dimm0 ODT0][Dimm0 ODT1][N/A][N/A][Dimm1 ODT0][Dimm1 ODT1][N/A][N/A]
///
inline fapi2::ReturnCode vpd_mt_odt_wr(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const std::vector<uint8_t*>& i_blobs)
@@ -848,18 +1306,47 @@ inline fapi2::ReturnCode vpd_mt_odt_wr(const fapi2::Target<fapi2::TARGET_TYPE_MC
fapi2::Assert(false);
}
- uint8_t l_value[2][2][4];
- constexpr uint64_t l_length = 16 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2][2][4] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 186 + (l_index * l_length);
- memcpy(&(l_value[l_index][0][0]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 186;
+ l_num_bytes_to_copy = 16;
+ break;
+
+ case 1:
+ l_offset = 188;
+ l_num_bytes_to_copy = 16;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index][0][0]), l_blob + l_start, l_length);
+ }
+
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_ODT_WR, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_ODT_WR start: 186, len: 16");
+ "Unable to decode and set ATTR_MSS_VPD_MT_ODT_WR start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -871,7 +1358,8 @@ fapi_try_exit:
/// @param[in] i_blobs a std::vector of pointers to VPD blobs for this MCS's MCAs
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
/// @note Number of clocks used for read/write preamble. Calibration only uses 1 nCK preamble (DEFAULT). Mainline has both 1 nCK and 2 nCK preamble option.
-/// "0" means 1 nCK preamble, "1" means 2 nCK preamble. Bit 3 for READ preamble, and Bit 7 for WRITE preamble. E.g. 0b 00010001
+/// The value of "0" means 1 nCK preamble, the value of "1" means 2 nCK preamble. Bit 3 for READ preamble, and Bit 7 for WRITE preamble.
+/// E.g. 0b00010001 means 2 nCK preamble for both READ and WRITE
///
inline fapi2::ReturnCode vpd_mt_preamble(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const std::vector<uint8_t*>& i_blobs)
@@ -882,18 +1370,47 @@ inline fapi2::ReturnCode vpd_mt_preamble(const fapi2::Target<fapi2::TARGET_TYPE_
fapi2::Assert(false);
}
- uint8_t l_value[2];
- constexpr uint64_t l_length = 2 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 202 + (l_index * l_length);
- memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 202;
+ l_num_bytes_to_copy = 2;
+ break;
+
+ case 1:
+ l_offset = 204;
+ l_num_bytes_to_copy = 2;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_PREAMBLE, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_PREAMBLE start: 202, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MT_PREAMBLE start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -915,18 +1432,47 @@ inline fapi2::ReturnCode vpd_mt_vref_dram_wr(const fapi2::Target<fapi2::TARGET_T
fapi2::Assert(false);
}
- uint8_t l_value[2];
- constexpr uint64_t l_length = 2 / mss::PORTS_PER_MCS;
+ uint8_t l_value[2] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 204 + (l_index * l_length);
- memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 204;
+ l_num_bytes_to_copy = 2;
+ break;
+
+ case 1:
+ l_offset = 206;
+ l_num_bytes_to_copy = 2;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_VREF_DRAM_WR, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_VREF_DRAM_WR start: 204, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MT_VREF_DRAM_WR start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -948,14 +1494,42 @@ inline fapi2::ReturnCode vpd_mt_vref_mc_rd(const fapi2::Target<fapi2::TARGET_TYP
fapi2::Assert(false);
}
- uint32_t l_value[2];
- constexpr uint64_t l_length = 8 / mss::PORTS_PER_MCS;
+ uint32_t l_value[2] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 206 + (l_index * l_length);
- memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 206;
+ l_num_bytes_to_copy = 8;
+ break;
+
+ case 1:
+ l_offset = 208;
+ l_num_bytes_to_copy = 8;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+
}
for (size_t i = 0; i < 2; ++i)
@@ -964,7 +1538,8 @@ inline fapi2::ReturnCode vpd_mt_vref_mc_rd(const fapi2::Target<fapi2::TARGET_TYP
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_VREF_MC_RD, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_VREF_MC_RD start: 206, len: 8");
+ "Unable to decode and set ATTR_MSS_VPD_MT_VREF_MC_RD start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -975,7 +1550,8 @@ fapi_try_exit:
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blobs a std::vector of pointers to VPD blobs for this MCS's MCAs
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Derived from calibration/characterization of read centering. Number of windage offset in units of pico-seconds[ps]. If this is enabled, disable periodic rd_ctr in draminit_mc. Default is 0
+/// @note Derived from calibration/characterization of read centering. Number of windage offset in units of pico-seconds[ps]. Default is 0
+/// Specification of the value in this file is 2's compliment hex
///
inline fapi2::ReturnCode vpd_mt_windage_rd_ctr(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const std::vector<uint8_t*>& i_blobs)
@@ -986,14 +1562,42 @@ inline fapi2::ReturnCode vpd_mt_windage_rd_ctr(const fapi2::Target<fapi2::TARGET
fapi2::Assert(false);
}
- int16_t l_value[2];
- constexpr uint64_t l_length = 4 / mss::PORTS_PER_MCS;
+ int16_t l_value[2] = {};
+ uint64_t l_num_bytes_to_copy = 0;
+ uint64_t l_offset = 0;
- for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ uint8_t l_layer_version = 0;
+ FAPI_TRY( mss::vpd_mt_0_version_layout(i_target, l_layer_version) );
+
+ switch(l_layer_version)
{
- const uint8_t* l_blob = i_blobs[l_index];
- const uint64_t l_start = 214 + (l_index * l_length);
- memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ case 0:
+ l_offset = 214;
+ l_num_bytes_to_copy = 4;
+ break;
+
+ case 1:
+ l_offset = 216;
+ l_num_bytes_to_copy = 4;
+ break;
+
+ default:
+ FAPI_ERR("Invalid layer version received: %d for %s", l_layer_version, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+
+ };
+
+ {
+ const uint64_t l_length = l_num_bytes_to_copy / mss::PORTS_PER_MCS;
+
+ for (size_t l_index = 0; l_index < mss::PORTS_PER_MCS; ++l_index)
+ {
+ const uint8_t* l_blob = i_blobs[l_index];
+ const uint64_t l_start = l_offset + (l_index * l_length);
+ memcpy(&(l_value[l_index]), l_blob + l_start, l_length);
+ }
+
}
for (size_t i = 0; i < 2; ++i)
@@ -1002,14 +1606,62 @@ inline fapi2::ReturnCode vpd_mt_windage_rd_ctr(const fapi2::Target<fapi2::TARGET
}
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MT_WINDAGE_RD_CTR, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MT_WINDAGE_RD_CTR start: 214, len: 4");
+ "Unable to decode and set ATTR_MSS_VPD_MT_WINDAGE_RD_CTR start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
+///
+/// @brief ATTR_MSS_VPD_CKE_MAP decode and set
+/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
+/// @param[in] i_blob the VPD blob for this MCS
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
+/// @note The Memory Clock Enable MAP is a bit map describing the Memory Clock Enable signal to its respective rank.
+/// There are 8 bits, but only 4 are currently used
+/// [DIMM0 CKE0][DIMM0 CKE1][N/A][N/A][DIMM1 CKE0][DIMM1 CKE1][N/A][N/A]
+/// E.g. 0x80 -> 0b10000000, which means DIMM0 CKE0 is mapped to that rank.
+///
+inline fapi2::ReturnCode vpd_cke_map(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, const uint8_t* i_blob)
+{
+ uint8_t l_value[2][2][4] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 16;
+ constexpr uint64_t l_offset = 0;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_CKE_MAP, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_CKE_MAP start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
+
+fapi_try_exit:
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_MSS_VPD_DQ_MAP decode and set
+/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
+/// @param[in] i_blob the VPD blob for this MCS
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
+/// @note [PORT][Dimm DQ PIN] The map from the Dual Inline Memory Module (DIMM) Data (DQ) Pin to the Module Package Data (DQ) Pinout
+///
+inline fapi2::ReturnCode vpd_dq_map(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, const uint8_t* i_blob)
+{
+ uint8_t l_value[2][72] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 144;
+ constexpr uint64_t l_offset = 0;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_DQ_MAP, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_DQ_MAP start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
+
+fapi_try_exit:
+ return fapi2::current_err;
+}
-// VPD Keyword Version Byte: 00
///
/// @brief ATTR_MSS_VPD_MR_0_VERSION_LAYOUT decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
@@ -1020,11 +1672,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_0_version_layout(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value;
+ uint8_t l_value = 0;
+ constexpr uint64_t l_num_bytes_to_copy = 1;
+ constexpr uint64_t l_offset = 0;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 0, 1);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_0_VERSION_LAYOUT, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_0_VERSION_LAYOUT start: 0, len: 1");
+ "Unable to decode and set ATTR_MSS_VPD_MR_0_VERSION_LAYOUT start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1040,11 +1696,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_1_version_data(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value;
+ uint8_t l_value = 0;
+ constexpr uint64_t l_num_bytes_to_copy = 1;
+ constexpr uint64_t l_offset = 1;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 1, 1);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_1_VERSION_DATA, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_1_VERSION_DATA start: 1, len: 1");
+ "Unable to decode and set ATTR_MSS_VPD_MR_1_VERSION_DATA start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1060,12 +1720,16 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_2_signature_hash(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint32_t l_value;
+ uint32_t l_value = 0;
+ constexpr uint64_t l_num_bytes_to_copy = 4;
+ constexpr uint64_t l_offset = 2;
- memcpy(&l_value, i_blob + 2, 4);
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
l_value = be32toh(l_value);
+
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_2_SIGNATURE_HASH, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_2_SIGNATURE_HASH start: 2, len: 4");
+ "Unable to decode and set ATTR_MSS_VPD_MR_2_SIGNATURE_HASH start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1080,11 +1744,15 @@ fapi_try_exit:
///
inline fapi2::ReturnCode vpd_mr_dphy_gpo(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 6;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 6, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_DPHY_GPO, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_DPHY_GPO start: 6, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_DPHY_GPO start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1099,11 +1767,15 @@ fapi_try_exit:
///
inline fapi2::ReturnCode vpd_mr_dphy_rlo(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 8;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 8, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_DPHY_RLO, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_DPHY_RLO start: 8, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_DPHY_RLO start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1118,11 +1790,40 @@ fapi_try_exit:
///
inline fapi2::ReturnCode vpd_mr_dphy_wlo(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 10;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 10, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_DPHY_WLO, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_DPHY_WLO start: 10, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_DPHY_WLO start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
+
+fapi_try_exit:
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET decode and set
+/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
+/// @param[in] i_blob the VPD blob for this MCS
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
+/// @note Default value for 2N Mode from Signal Integrity.
+/// 0x01 = 1N Mode , 0x02 = 2N Mode
+///
+inline fapi2::ReturnCode vpd_mr_mc_2n_mode_autoset(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+ const uint8_t* i_blob)
+{
+ uint8_t l_value = 0;
+ constexpr uint64_t l_num_bytes_to_copy = 1;
+ constexpr uint64_t l_offset = 98;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1138,11 +1839,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a00(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 12;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 12, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A00, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A00 start: 12, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A00 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1158,11 +1863,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a01(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 14;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 14, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A01, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A01 start: 14, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A01 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1178,11 +1887,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a02(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 16;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 16, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A02, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A02 start: 16, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A02 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1198,11 +1911,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a03(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 18;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 18, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A03, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A03 start: 18, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A03 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1218,11 +1935,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a04(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 20;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 20, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A04, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A04 start: 20, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A04 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1238,11 +1959,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a05(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 22;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 22, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A05, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A05 start: 22, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A05 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1258,11 +1983,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a06(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 24;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 24, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A06, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A06 start: 24, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A06 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1278,11 +2007,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a07(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 26;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 26, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A07, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A07 start: 26, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A07 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1298,11 +2031,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a08(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 28;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 28, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A08, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A08 start: 28, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A08 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1318,11 +2055,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a09(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 30;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 30, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A09, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A09 start: 30, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A09 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1338,11 +2079,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a10(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 32;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 32, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A10, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A10 start: 32, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A10 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1358,11 +2103,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a11(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 34;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 34, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A11, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A11 start: 34, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A11 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1378,11 +2127,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a12(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 36;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 36, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A12, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A12 start: 36, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A12 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1398,11 +2151,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a13(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 38;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 38, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A13, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A13 start: 38, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A13 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1418,11 +2175,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_a17(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 40;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 40, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A17, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A17 start: 40, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A17 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1438,11 +2199,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_ba0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 42;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 42, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_BA0, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_BA0 start: 42, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_BA0 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1458,11 +2223,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_ba1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 44;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 44, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_BA1, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_BA1 start: 44, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_BA1 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1478,11 +2247,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_bg0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 46;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 46, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_BG0, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_BG0 start: 46, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_BG0 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1498,11 +2271,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_bg1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 48;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 48, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_BG1, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_BG1 start: 48, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_BG1 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1518,11 +2295,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_c0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 50;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 50, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_C0, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_C0 start: 50, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_C0 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1538,11 +2319,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_c1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 52;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 52, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_C1, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_C1 start: 52, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_C1 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1558,231 +2343,279 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_addr_c2(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 54;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 54, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_C2, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_C2 start: 54, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_C2 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of Activate for ACTN in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkp(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_actn(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 64;
- memcpy(&l_value, i_blob + 56, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP start: 56, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15 decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of Column Access Strobe for CASN in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkn(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_casn_a15(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 66;
- memcpy(&l_value, i_blob + 58, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN start: 58, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16 decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of Row Access Strobe for RASN in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkp(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_rasn_a16(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 68;
- memcpy(&l_value, i_blob + 60, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP start: 60, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14 decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of Write Enable for WEN in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkn(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_wen_a14(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 70;
- memcpy(&l_value, i_blob + 62, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN start: 62, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of Activate for ACTN in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of the Parity Input for PAR in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_actn(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_par(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 72;
- memcpy(&l_value, i_blob + 64, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN start: 64, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15 decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0 decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of Column Access Strobe for CASN in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_casn_a15(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 74;
- memcpy(&l_value, i_blob + 66, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15 start: 66, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16 decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1 decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of Row Access Strobe for RASN in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_rasn_a16(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 76;
- memcpy(&l_value, i_blob + 68, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16 start: 68, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14 decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0 decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of Write Enable for WEN in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_addr_wen_a14(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 82;
- memcpy(&l_value, i_blob + 70, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14 start: 70, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1 decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of the Parity Input for PAR in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cmd_par(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 84;
- memcpy(&l_value, i_blob + 72, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR start: 72, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0 decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0 decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 90;
- memcpy(&l_value, i_blob + 74, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0 start: 74, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1 decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1 decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_cke1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 92;
- memcpy(&l_value, i_blob + 76, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1 start: 76, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1798,11 +2631,15 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_cke0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 78;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 78, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CKE0, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CKE0 start: 78, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CKE0 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -1818,192 +2655,207 @@ fapi_try_exit:
inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_cke1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 80;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 80, 2);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CKE1, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CKE1 start: 80, len: 2");
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CKE1 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0 decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0 decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
-
- memcpy(&l_value, i_blob + 82, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0 start: 82, len: 2");
-
-fapi_try_exit:
- return fapi2::current_err;
-}
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 86;
-///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1 decode and set
-/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[in] i_blob the VPD blob for this MCS
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are 1/128 of one cycle of clock.
-///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_csn1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
- const uint8_t* i_blob)
-{
- uint8_t l_value[2];
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 84, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1 start: 84, len: 2");
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0 decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1 decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 88;
- memcpy(&l_value, i_blob + 86, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0 start: 86, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1 decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0 decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_csn1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 94;
- memcpy(&l_value, i_blob + 88, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1 start: 88, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0 decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1 decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 96;
- memcpy(&l_value, i_blob + 90, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0 start: 90, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1 start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1 decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d0_odt1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkn(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 58;
- memcpy(&l_value, i_blob + 92, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1 start: 92, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0 decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt0(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d0_clkp(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 56;
- memcpy(&l_value, i_blob + 94, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0 start: 94, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1 decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_phase_rot_cntl_d1_odt1(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkn(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value[2];
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 62;
- memcpy(&l_value, i_blob + 96, 2);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1 start: 96, len: 2");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
}
///
-/// @brief ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET decode and set
+/// @brief ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP decode and set
/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
/// @param[in] i_blob the VPD blob for this MCS
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note Default value for 2N Mode from Signal Integrity.
-/// 0x01 = 1N Mode , 0x02 = 2N Mode
+/// @note Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
///
-inline fapi2::ReturnCode vpd_mr_mc_2n_mode_autoset(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+inline fapi2::ReturnCode vpd_mr_mc_phase_rot_d1_clkp(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
const uint8_t* i_blob)
{
- uint8_t l_value;
+ uint8_t l_value[2] = {};
+ constexpr uint64_t l_num_bytes_to_copy = 2;
+ constexpr uint64_t l_offset = 60;
- memcpy(&l_value, i_blob + 98, 1);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET start: 98, len: 1");
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
+
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP start: %d, len: %d for %s", l_offset,
+ l_num_bytes_to_copy, mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -2021,11 +2873,15 @@ fapi_try_exit:
///
inline fapi2::ReturnCode vpd_mr_tsys_adr(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, const uint8_t* i_blob)
{
- uint8_t l_value;
+ uint8_t l_value = 0;
+ constexpr uint64_t l_num_bytes_to_copy = 1;
+ constexpr uint64_t l_offset = 99;
+
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
- memcpy(&l_value, i_blob + 99, 1);
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_TSYS_ADR, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_TSYS_ADR start: 99, len: 1");
+ "Unable to decode and set ATTR_MSS_VPD_MR_TSYS_ADR start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -2043,56 +2899,15 @@ fapi_try_exit:
///
inline fapi2::ReturnCode vpd_mr_tsys_data(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, const uint8_t* i_blob)
{
- uint8_t l_value;
-
- memcpy(&l_value, i_blob + 100, 1);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_TSYS_DATA, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_MR_TSYS_DATA start: 100, len: 1");
-
-fapi_try_exit:
- return fapi2::current_err;
-}
-
-
-// VPD Keyword Version Byte: map
-///
-/// @brief ATTR_MSS_VPD_CKE_MAP decode and set
-/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[in] i_blob the VPD blob for this MCS
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note The Memory Clock Enable MAP is a bit map describing the Memory Clock Enable signal to its respective rank.
-/// There are 8 bits, but only 4 are currently used
-/// [DIMM0 CKE0][DIMM0 CKE1][N/A][N/A][DIMM1 CKE0][DIMM1 CKE1][N/A][N/A]
-/// E.g. 0x80 -> 0b10000000, which means DIMM0 CKE0 is mapped to that rank.
-///
-inline fapi2::ReturnCode vpd_cke_map(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, const uint8_t* i_blob)
-{
- uint8_t l_value[2][2][4];
-
- memcpy(&l_value, i_blob + 0, 16);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_CKE_MAP, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_CKE_MAP start: 0, len: 16");
-
-fapi_try_exit:
- return fapi2::current_err;
-}
+ uint8_t l_value = 0;
+ constexpr uint64_t l_num_bytes_to_copy = 1;
+ constexpr uint64_t l_offset = 100;
+ memcpy(&l_value, i_blob + l_offset, l_num_bytes_to_copy);
-// VPD Keyword Version Byte: map
-///
-/// @brief ATTR_MSS_VPD_DQ_MAP decode and set
-/// @param[in] i_target fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[in] i_blob the VPD blob for this MCS
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff set is OK
-/// @note [PORT][Dimm DQ PIN] The map from the Dual Inline Memory Module (DIMM) Data (DQ) Pin to the Module Package Data (DQ) Pinout
-///
-inline fapi2::ReturnCode vpd_dq_map(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, const uint8_t* i_blob)
-{
- uint8_t l_value[2][72];
-
- memcpy(&l_value, i_blob + 0, 144);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_DQ_MAP, i_target, l_value),
- "Unable to decode and set ATTR_MSS_VPD_DQ_MAP start: 0, len: 144");
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_MSS_VPD_MR_TSYS_DATA, i_target, l_value),
+ "Unable to decode and set ATTR_MSS_VPD_MR_TSYS_DATA start: %d, len: %d for %s", l_offset, l_num_bytes_to_copy,
+ mss::c_str(i_target));
fapi_try_exit:
return fapi2::current_err;
@@ -2109,7 +2924,10 @@ fapi_try_exit:
/// @note Decodes the blobs and sets all the attributes.
///
inline fapi2::ReturnCode eff_decode(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
- const std::vector<uint8_t*>& i_mt_blob, const uint8_t* i_mr_blob, const uint8_t* i_cke_blob, const uint8_t* i_dq_blob)
+ const std::vector<uint8_t*>& i_mt_blob,
+ const uint8_t* i_mr_blob,
+ const uint8_t* i_cke_blob,
+ const uint8_t* i_dq_blob)
{
FAPI_TRY (decoder::vpd_mt_0_version_layout(i_target, i_mt_blob) );
FAPI_TRY (decoder::vpd_mt_1_version_data(i_target, i_mt_blob) );
@@ -2122,6 +2940,7 @@ inline fapi2::ReturnCode eff_decode(const fapi2::Target<fapi2::TARGET_TYPE_MCS>&
FAPI_TRY (decoder::vpd_mt_dram_rtt_nom(i_target, i_mt_blob) );
FAPI_TRY (decoder::vpd_mt_dram_rtt_park(i_target, i_mt_blob) );
FAPI_TRY (decoder::vpd_mt_dram_rtt_wr(i_target, i_mt_blob) );
+ FAPI_TRY (decoder::vpd_mt_mc_bias_trim(i_target, i_mt_blob) );
FAPI_TRY (decoder::vpd_mt_mc_dq_acboost_rd_up(i_target, i_mt_blob) );
FAPI_TRY (decoder::vpd_mt_mc_dq_acboost_wr_down(i_target, i_mt_blob) );
FAPI_TRY (decoder::vpd_mt_mc_dq_acboost_wr_up(i_target, i_mt_blob) );
@@ -2139,12 +2958,15 @@ inline fapi2::ReturnCode eff_decode(const fapi2::Target<fapi2::TARGET_TYPE_MCS>&
FAPI_TRY (decoder::vpd_mt_vref_dram_wr(i_target, i_mt_blob) );
FAPI_TRY (decoder::vpd_mt_vref_mc_rd(i_target, i_mt_blob) );
FAPI_TRY (decoder::vpd_mt_windage_rd_ctr(i_target, i_mt_blob) );
+ FAPI_TRY (decoder::vpd_cke_map(i_target, i_cke_blob) );
+ FAPI_TRY (decoder::vpd_dq_map(i_target, i_dq_blob) );
FAPI_TRY (decoder::vpd_mr_0_version_layout(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_1_version_data(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_2_signature_hash(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_dphy_gpo(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_dphy_rlo(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_dphy_wlo(i_target, i_mr_blob) );
+ FAPI_TRY (decoder::vpd_mr_mc_2n_mode_autoset(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_addr_a00(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_addr_a01(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_addr_a02(i_target, i_mr_blob) );
@@ -2167,10 +2989,6 @@ inline fapi2::ReturnCode eff_decode(const fapi2::Target<fapi2::TARGET_TYPE_MCS>&
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_addr_c0(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_addr_c1(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_addr_c2(i_target, i_mr_blob) );
- FAPI_TRY (decoder::vpd_mr_mc_phase_rot_d0_clkp(i_target, i_mr_blob) );
- FAPI_TRY (decoder::vpd_mr_mc_phase_rot_d0_clkn(i_target, i_mr_blob) );
- FAPI_TRY (decoder::vpd_mr_mc_phase_rot_d1_clkp(i_target, i_mr_blob) );
- FAPI_TRY (decoder::vpd_mr_mc_phase_rot_d1_clkn(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cmd_actn(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cmd_addr_casn_a15(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cmd_addr_rasn_a16(i_target, i_mr_blob) );
@@ -2178,21 +2996,22 @@ inline fapi2::ReturnCode eff_decode(const fapi2::Target<fapi2::TARGET_TYPE_MCS>&
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cmd_par(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d0_cke0(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d0_cke1(i_target, i_mr_blob) );
- FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d1_cke0(i_target, i_mr_blob) );
- FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d1_cke1(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d0_csn0(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d0_csn1(i_target, i_mr_blob) );
- FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d1_csn0(i_target, i_mr_blob) );
- FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d1_csn1(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d0_odt0(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d0_odt1(i_target, i_mr_blob) );
+ FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d1_cke0(i_target, i_mr_blob) );
+ FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d1_cke1(i_target, i_mr_blob) );
+ FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d1_csn0(i_target, i_mr_blob) );
+ FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d1_csn1(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d1_odt0(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_mc_phase_rot_cntl_d1_odt1(i_target, i_mr_blob) );
- FAPI_TRY (decoder::vpd_mr_mc_2n_mode_autoset(i_target, i_mr_blob) );
+ FAPI_TRY (decoder::vpd_mr_mc_phase_rot_d0_clkn(i_target, i_mr_blob) );
+ FAPI_TRY (decoder::vpd_mr_mc_phase_rot_d0_clkp(i_target, i_mr_blob) );
+ FAPI_TRY (decoder::vpd_mr_mc_phase_rot_d1_clkn(i_target, i_mr_blob) );
+ FAPI_TRY (decoder::vpd_mr_mc_phase_rot_d1_clkp(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_tsys_adr(i_target, i_mr_blob) );
FAPI_TRY (decoder::vpd_mr_tsys_data(i_target, i_mr_blob) );
- FAPI_TRY (decoder::vpd_cke_map(i_target, i_cke_blob) );
- FAPI_TRY (decoder::vpd_dq_map(i_target, i_dq_blob) );
fapi_try_exit:
return fapi2::current_err;
@@ -2200,4 +3019,4 @@ fapi_try_exit:
} // close ns mss
-#endif
+#endif \ No newline at end of file
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/utils/fake_vpd.C b/src/import/chips/p9/procedures/hwp/memory/lib/utils/fake_vpd.C
index 7f6e51222..a2274cc5f 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/utils/fake_vpd.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/utils/fake_vpd.C
@@ -36,6 +36,7 @@
#include <lib/utils/fake_vpd.H>
#include <lib/shared/mss_const.H>
#include <generic/memory/lib/utils/pos.H>
+#include <generic/memory/lib/utils/c_str.H>
#ifndef DOXYGEN
@@ -44,7 +45,7 @@ namespace mss
// VPD data from template_mt and template_mr - should be VBU/sim settings
constexpr auto raw_mt_size = 255;
-static constexpr uint8_t raw_mt[raw_mt_size] =
+static constexpr uint8_t raw_mt_layout_ver0[raw_mt_size] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
@@ -64,8 +65,34 @@ static constexpr uint8_t raw_mt[raw_mt_size] =
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
+static constexpr uint8_t zz_ver1_raw_bin_zz_mt_X0_bin[raw_mt_size] =
+{
+ 0x01, 0x01, 0x86, 0xb8, 0x63, 0xa8, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
+ 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x22, 0x22,
+ 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
+ 0x22, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0xb6, 0xdb, 0x6d, 0xb6,
+ 0xdb, 0x6d, 0xb6, 0xd0, 0xb6, 0xdb, 0x6d, 0xb6, 0xdb, 0x6d, 0xb6, 0xd0,
+ 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x22, 0x22, 0x22, 0x22,
+ 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
+ 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x0d, 0x0d, 0x00, 0x01, 0x17, 0x44, 0x00, 0x01, 0x17, 0x44,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00
+};
+
constexpr auto raw_mr_size = 255;
-static constexpr uint8_t raw_mr[raw_mr_size] =
+static constexpr uint8_t raw_mr_layout_ver0[raw_mr_size] =
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0x01, 0x01, 0x01, 0x01, 0x03, 0x08, 0x03, 0x06,
0x03, 0x09, 0x04, 0x04, 0x00, 0x01, 0x01, 0x00, 0x04, 0x02, 0x03, 0x00, 0x06, 0x0a, 0x02, 0x01,
@@ -85,13 +112,13 @@ static constexpr uint8_t raw_mr[raw_mr_size] =
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
-// The CKE blob has a header on it, and we want to return a pointer past that. Howevre, to
+// The CKE blob has a header on it, and we want to return a pointer past that. However, to
// make creating this file easier we take the entire blob (header included)
// Note:: ZZ (and hence Monza?) CKE mapping is the same for VBU - so only one mapping needed
-constexpr auto raw_cke_header = 4;
-constexpr auto raw_cke_size = 136;
+constexpr auto raw_ck_size = 136;
+constexpr auto raw_ck_header = 4;
-static constexpr uint8_t raw_cke[raw_cke_size] =
+static constexpr uint8_t raw_ck[raw_ck_size] =
{
0x01, 0x08, 0x10, 0x00, 0x80, 0x40, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00,
0x08, 0x04, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00,
@@ -181,25 +208,149 @@ static constexpr uint8_t zz_dq[MCS_PER_MC * MC_PER_MODULE][raw_dq_size] =
};
///
-/// @brief Return a blob of memory VPD data associated with the input target
-/// @param[in] i_target a valid fapi2 target
-/// @param[in] io_vpd_info fapi2::VPDInfo class that specifies which piece of data to return
-/// @param[out] o_blob the blob of raw data from the vpd
-/// @return FAPI2_RC_SUCCESS if there's no problem
+/// @brief VPD helper function that imitates getVPD behavior
+/// @tparam N size of the input array
+/// @param[in] i_raw_vpd array of VPD data
+/// @param[in,out] io_vpd_info fapi2::VPDInfo class that specifies which piece of data to return
+/// @param[out] o_blob the blob of data from the DIMM - raw
/// @note passing nullptr for o_blob will return the size of the keyword
///
-/// Example:
-/// fapi2::VPDInfo<fapi2::TARGET_TYPE_MCS> vpdInfo(MR_keyword);
-/// vpdInfo.iv_freq = 2667;
+template< size_t N >
+void vpd_helper( const uint8_t (&i_raw_vpd)[N],
+ fapi2::VPDInfo<fapi2::TARGET_TYPE_MCS>& io_vpd_info,
+ uint8_t* o_blob)
+{
+ io_vpd_info.iv_size = sizeof( i_raw_vpd );
+
+ if( o_blob != nullptr )
+ {
+ memcpy( o_blob, i_raw_vpd, io_vpd_info.iv_size );
+ }
+
+ return;
+}
+
///
-/// uint8_t * blob = NULL;
+/// @brief Helper function to retrieve MT raw data
+/// @param[in] i_target a valid fapi2 target
+/// @param[in] i_version_layout version layout number
+/// @param[in,out] io_vpd_info fapi2::VPDInfo class that specifies which piece of data to return
+/// @param[out] o_blob the blob of raw data from the vpd
+/// @note passing nullptr for o_blob will return the size of the keyword
///
-/// FAPI_TRY(getVPD( mcs, vpdInfo, blob ));
-/// blob = static_cast<uint8_t *>(malloc(vpdInfo.iv_size));
-/// FAPI_TRY(getVPD( mcs, vpdInfo, blob ));
-/// blob now contains the VPD data for the MCS.
+void mt_helper( const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+ const uint64_t i_version_layout,
+ fapi2::VPDInfo<fapi2::TARGET_TYPE_MCS>& io_vpd_info,
+ uint8_t* o_blob )
+{
+ switch(i_version_layout)
+ {
+ case 0:
+ vpd_helper(raw_mt_layout_ver0, io_vpd_info, o_blob);
+ break;
+
+ case 1:
+ vpd_helper(zz_ver1_raw_bin_zz_mt_X0_bin, io_vpd_info, o_blob);
+ break;
+
+ default:
+ FAPI_ERR("Invalid layout version layout received %d for %s", i_version_layout, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+ };
+
+ return;
+}
+
+///
+/// @brief Helper function to retrieve MR raw data
+/// @param[in] i_target a valid fapi2 target
+/// @param[in] i_version_layout version layout number
+/// @param[in,out] io_vpd_info fapi2::VPDInfo class that specifies which piece of data to return
+/// @param[out] o_blob the blob of raw data from the vpd
+/// @note passing nullptr for o_blob will return the size of the keyword
+///
+void mr_helper( const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+ const uint64_t i_version_layout,
+ fapi2::VPDInfo<fapi2::TARGET_TYPE_MCS>& io_vpd_info,
+ uint8_t* o_blob )
+{
+ switch(i_version_layout)
+ {
+ case 0:
+ vpd_helper(raw_mr_layout_ver0, io_vpd_info, o_blob);
+ break;
+
+ default:
+ FAPI_ERR("Invalid layout version layout received %d for %s", i_version_layout, mss::c_str(i_target));
+ fapi2::Assert(false);
+ break;
+ };
+
+ return;
+}
+
+///
+/// @brief Helper function to retrieve CK raw data
+/// @param[in] i_target a valid fapi2 target
+/// @param[in,out] io_vpd_info fapi2::VPDInfo class that specifies which piece of data to return
+/// @param[out] o_blob the blob of raw data from the vpd
+/// @note passing nullptr for o_blob will return the size of the keyword
+///
+static void ck_helper( const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+ fapi2::VPDInfo<fapi2::TARGET_TYPE_MCS>& io_vpd_info,
+ uint8_t* o_blob )
+{
+ io_vpd_info.iv_size = raw_ck_size - raw_ck_header;
+
+ if (o_blob != nullptr)
+ {
+ memcpy(o_blob, raw_ck + raw_ck_header, io_vpd_info.iv_size);
+ }
+}
+
+///
+/// @brief Helper function to retrieve DQ raw data
+/// @param[in] i_target a valid fapi2 target
+/// @param[in,out] io_vpd_info fapi2::VPDInfo class that specifies which piece of data to return
+/// @param[out] o_blob the blob of raw data from the vpd
+/// @note passing nullptr for o_blob will return the size of the keyword
+///
+static fapi2::ReturnCode dq_helper( const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+ fapi2::VPDInfo<fapi2::TARGET_TYPE_MCS>& io_vpd_info,
+ uint8_t* o_blob )
+{
+ io_vpd_info.iv_size = raw_dq_size;
+
+ if (o_blob != nullptr)
+ {
+ uint8_t l_sim = 0;
+ FAPI_TRY( is_simulation(l_sim) );
+
+ // If we're in sim, we return the DQ map of the VBU (raw) DQ map - 1-1 more or less
+ // If we're not in sim, we return the DQ map which corresponds with our MCS relative
+ // postion.
+ const uint8_t* blob = l_sim ? raw_dq : zz_dq[mss::relative_pos<fapi2::TARGET_TYPE_PROC_CHIP>(i_target)];
+ memcpy(o_blob, blob, io_vpd_info.iv_size);
+ }
+
+ return fapi2::FAPI2_RC_SUCCESS;
+
+fapi_try_exit:
+ return fapi2::current_err;
+}
+
+///
+/// @brief Return a blob of memory VPD data associated with the input target
+/// @param[in] i_target a valid fapi2 target
+/// @param[in] i_version_layout version layout number
+/// @param[in] io_vpd_info fapi2::VPDInfo class that specifies which piece of data to return
+/// @param[out] o_blob the blob of raw data from the vpd
+/// @return FAPI2_RC_SUCCESS if there's no problem
+/// @note passing nullptr for o_blob will return the size of the keyword
///
fapi2::ReturnCode getVPD(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+ const uint64_t i_version_layout,
fapi2::VPDInfo<fapi2::TARGET_TYPE_MCS>& io_vpd_info,
uint8_t* o_blob)
{
@@ -207,60 +358,30 @@ fapi2::ReturnCode getVPD(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
switch (io_vpd_info.iv_vpd_type)
{
case fapi2::MemVpdData::MR:
- io_vpd_info.iv_size = raw_mr_size;
-
- if (o_blob != nullptr)
- {
- memcpy(o_blob, raw_mr, raw_mr_size);
- }
-
+ mr_helper(i_target, i_version_layout, io_vpd_info, o_blob);
break;
case fapi2::MemVpdData::MT:
- io_vpd_info.iv_size = raw_mt_size;
-
- if (o_blob != nullptr)
- {
- memcpy(o_blob, raw_mt, raw_mt_size);
- }
-
+ mt_helper(i_target, i_version_layout, io_vpd_info, o_blob);
break;
case fapi2::MemVpdData::CK:
- io_vpd_info.iv_size = raw_cke_size - raw_cke_header;
-
- if (o_blob != nullptr)
- {
- memcpy(o_blob, raw_cke + raw_cke_header, io_vpd_info.iv_size);
- }
-
+ FAPI_INF("CK isn't layout version dependent for %s", mss::c_str(i_target));
+ ck_helper(i_target, io_vpd_info, o_blob);
break;
case fapi2::MemVpdData::DQ:
- {
- io_vpd_info.iv_size = raw_dq_size;
-
- if (o_blob != nullptr)
- {
- uint8_t l_sim = 0;
- FAPI_TRY( is_simulation(l_sim) );
-
- // If we're in sim, we return the DQ map of the VBU (raw) DQ map - 1-1 more or less
- // Ifwe're not in sim, we return the DQ map which corresponds with our MCS relative
- // postion.
- const uint8_t* blob = l_sim ? raw_dq : zz_dq[mss::relative_pos<fapi2::TARGET_TYPE_PROC_CHIP>(i_target)];
- memcpy(o_blob, blob, io_vpd_info.iv_size);
- }
- }
+ FAPI_INF("DQ isn't layout version dependent for %s", mss::c_str(i_target));
+ FAPI_TRY( dq_helper(i_target, io_vpd_info, o_blob) );
break;
case fapi2::MemVpdData::MP:
- FAPI_ERR("No MP?");
+ FAPI_ERR("No MP? for %s", mss::c_str(i_target));
return fapi2::FAPI2_RC_INVALID_PARAMETER;
break;
default:
- FAPI_ERR("No vpd type %d?", io_vpd_info.iv_vpd_type);
+ FAPI_ERR("No vpd type %d? for %s", io_vpd_info.iv_vpd_type, mss::c_str(i_target));
return fapi2::FAPI2_RC_INVALID_PARAMETER;
break;
};
@@ -269,7 +390,6 @@ fapi2::ReturnCode getVPD(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
fapi_try_exit:
return fapi2::current_err;
-
}
} // ns mss
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/utils/fake_vpd.H b/src/import/chips/p9/procedures/hwp/memory/lib/utils/fake_vpd.H
index a39d9412b..bfbd60f20 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/utils/fake_vpd.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/utils/fake_vpd.H
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2016 */
+/* Contributors Listed Below - COPYRIGHT 2016,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -46,23 +46,14 @@ namespace mss
///
/// @brief Return a blob of memory VPD data associated with the input target
/// @param[in] i_target a valid fapi2 target
+/// @param[in] i_version_layout version layout number
/// @param[in] io_vpd_info fapi2::VPDInfo class that specifies which piece of data to return
/// @param[out] o_blob the blob of raw data from the vpd
/// @return FAPI2_RC_SUCCESS if there's no problem
/// @note passing nullptr for o_blob will return the size of the keyword
///
-/// Example:
-/// fapi2::VPDInfo<fapi2::TARGET_TYPE_MCS> vpdInfo(MR_keyword);
-/// vpdInfo.iv_freq = 2667;
-///
-/// uint8_t * blob = NULL;
-///
-/// FAPI_TRY(getVPD( mcs, vpdInfo, blob ));
-/// blob = static_cast<uint8_t *>(malloc(vpdInfo.iv_size));
-/// FAPI_TRY(getVPD( mcs, vpdInfo, blob ));
-/// blob now contains the VPD data for the MCS.
-///
fapi2::ReturnCode getVPD(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+ const uint64_t i_version_layout,
fapi2::VPDInfo<fapi2::TARGET_TYPE_MCS>& io_vpd_info,
uint8_t* o_blob);
diff --git a/src/import/chips/p9/procedures/xml/attribute_info/memory_cke_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/memory_cke_attributes.xml
index 5c7de669c..de1a6e118 100644
--- a/src/import/chips/p9/procedures/xml/attribute_info/memory_cke_attributes.xml
+++ b/src/import/chips/p9/procedures/xml/attribute_info/memory_cke_attributes.xml
@@ -5,7 +5,7 @@
<!-- -->
<!-- OpenPOWER HostBoot Project -->
<!-- -->
-<!-- Contributors Listed Below - COPYRIGHT 2016 -->
+<!-- Contributors Listed Below - COPYRIGHT 2016,2017 -->
<!-- [+] International Business Machines Corp. -->
<!-- -->
<!-- -->
@@ -35,7 +35,6 @@
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
- <mssUnits></mssUnits>
<mssBlobStart>0</mssBlobStart>
<mssBlobLength>16</mssBlobLength>
<mssAccessorName>vpd_cke_map</mssAccessorName>
diff --git a/src/import/chips/p9/procedures/xml/attribute_info/memory_dq_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/memory_dq_attributes.xml
index 2107319a7..977094159 100644
--- a/src/import/chips/p9/procedures/xml/attribute_info/memory_dq_attributes.xml
+++ b/src/import/chips/p9/procedures/xml/attribute_info/memory_dq_attributes.xml
@@ -22,7 +22,6 @@
<!-- permissions and limitations under the License. -->
<!-- -->
<!-- IBM_PROLOG_END_TAG -->
-
<attributes>
<attribute>
diff --git a/src/import/chips/p9/procedures/xml/attribute_info/memory_mr_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/memory_mr_attributes.xml
index ff39283f8..32785aade 100644
--- a/src/import/chips/p9/procedures/xml/attribute_info/memory_mr_attributes.xml
+++ b/src/import/chips/p9/procedures/xml/attribute_info/memory_mr_attributes.xml
@@ -5,7 +5,7 @@
<!-- -->
<!-- OpenPOWER HostBoot Project -->
<!-- -->
-<!-- Contributors Listed Below - COPYRIGHT 2016 -->
+<!-- Contributors Listed Below - COPYRIGHT 2016,2017 -->
<!-- [+] International Business Machines Corp. -->
<!-- -->
<!-- -->
@@ -117,6 +117,21 @@
</attribute>
<attribute>
+ <id>ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET</id>
+ <targetType>TARGET_TYPE_MCS</targetType>
+ <description>
+ Default value for 2N Mode from Signal Integrity.
+ 0x01 = 1N Mode , 0x02 = 2N Mode
+ </description>
+ <initToZero></initToZero>
+ <valueType>uint8</valueType>
+ <writeable/>
+ <mssBlobStart>98</mssBlobStart>
+ <mssBlobLength>1</mssBlobLength>
+ <mssAccessorName>vpd_mr_mc_2n_mode_autoset</mssAccessorName>
+ </attribute>
+
+ <attribute>
<id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_ADDR_A00</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
@@ -469,178 +484,178 @@
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of Activate for ACTN in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>56</mssBlobStart>
+ <mssBlobStart>64</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_d0_clkp</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cmd_actn</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of Column Access Strobe for CASN in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>58</mssBlobStart>
+ <mssBlobStart>66</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_d0_clkn</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cmd_addr_casn_a15</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of Row Access Strobe for RASN in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>60</mssBlobStart>
+ <mssBlobStart>68</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_d1_clkp</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cmd_addr_rasn_a16</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of Write Enable for WEN in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>62</mssBlobStart>
+ <mssBlobStart>70</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_d1_clkn</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cmd_addr_wen_a14</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ACTN</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of Activate for ACTN in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of the Parity Input for PAR in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>64</mssBlobStart>
+ <mssBlobStart>72</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cmd_actn</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cmd_par</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_CASN_A15</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of Column Access Strobe for CASN in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>66</mssBlobStart>
+ <mssBlobStart>74</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cmd_addr_casn_a15</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d0_cke0</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_RASN_A16</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of Row Access Strobe for RASN in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>68</mssBlobStart>
+ <mssBlobStart>76</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cmd_addr_rasn_a16</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d0_cke1</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_ADDR_WEN_A14</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of Write Enable for WEN in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>70</mssBlobStart>
+ <mssBlobStart>82</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cmd_addr_wen_a14</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d0_csn0</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CMD_PAR</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of the Parity Input for PAR in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>72</mssBlobStart>
+ <mssBlobStart>84</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cmd_par</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d0_csn1</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE0</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>74</mssBlobStart>
+ <mssBlobStart>90</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d0_cke0</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d0_odt0</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CKE1</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of Clock Enable for Dimm#_CKE# in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>76</mssBlobStart>
+ <mssBlobStart>92</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d0_cke1</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d0_odt1</mssAccessorName>
<array>2</array>
</attribute>
@@ -677,7 +692,7 @@
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN0</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are 1/128 of one cycle of clock.
@@ -686,14 +701,14 @@
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>82</mssBlobStart>
+ <mssBlobStart>86</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d0_csn0</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d1_csn0</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_CSN1</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are 1/128 of one cycle of clock.
@@ -702,125 +717,109 @@
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>84</mssBlobStart>
+ <mssBlobStart>88</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d0_csn1</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d1_csn1</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN0</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>86</mssBlobStart>
+ <mssBlobStart>94</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d1_csn0</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d1_odt0</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_CSN1</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of Chip Select for Dimm#_CSN# in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>88</mssBlobStart>
+ <mssBlobStart>96</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d1_csn1</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d1_odt1</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT0</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKN</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>90</mssBlobStart>
+ <mssBlobStart>58</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d0_odt0</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_d0_clkn</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D0_ODT1</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_D0_CLKP</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>92</mssBlobStart>
+ <mssBlobStart>56</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d0_odt1</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_d0_clkp</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT0</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKN</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>94</mssBlobStart>
+ <mssBlobStart>62</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d1_odt0</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_d1_clkn</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_CNTL_D1_ODT1</id>
+ <id>ATTR_MSS_VPD_MR_MC_PHASE_ROT_D1_CLKP</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Phase rotator delay value of On Die Termination for Dimm#_ODT# in ticks. Ticks are 1/128 of one cycle of clock.
+ Phase rotator delay value of Clock for Dimm#_CLK# in ticks. Ticks are 1/128 of one cycle of clock.
</description>
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
<mssUnits>tick</mssUnits>
- <mssBlobStart>96</mssBlobStart>
+ <mssBlobStart>60</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_phase_rot_cntl_d1_odt1</mssAccessorName>
+ <mssAccessorName>vpd_mr_mc_phase_rot_d1_clkp</mssAccessorName>
<array>2</array>
</attribute>
<attribute>
- <id>ATTR_MSS_VPD_MR_MC_2N_MODE_AUTOSET</id>
- <targetType>TARGET_TYPE_MCS</targetType>
- <description>
- Default value for 2N Mode from Signal Integrity.
- 0x01 = 1N Mode , 0x02 = 2N Mode
- </description>
- <initToZero></initToZero>
- <valueType>uint8</valueType>
- <writeable/>
- <mssUnits></mssUnits>
- <mssBlobStart>98</mssBlobStart>
- <mssBlobLength>1</mssBlobLength>
- <mssAccessorName>vpd_mr_mc_2n_mode_autoset</mssAccessorName>
- </attribute>
-
- <attribute>
<id>ATTR_MSS_VPD_MR_TSYS_ADR</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
diff --git a/src/import/chips/p9/procedures/xml/attribute_info/memory_mt_attributes.xml b/src/import/chips/p9/procedures/xml/attribute_info/memory_mt_attributes.xml
index 49cc606e9..cf3a5a93b 100644
--- a/src/import/chips/p9/procedures/xml/attribute_info/memory_mt_attributes.xml
+++ b/src/import/chips/p9/procedures/xml/attribute_info/memory_mt_attributes.xml
@@ -62,7 +62,6 @@
<initToZero></initToZero>
<valueType>uint32</valueType>
<writeable/>
- <mssUnits></mssUnits>
<mssBlobStart>2</mssBlobStart>
<mssBlobLength>4</mssBlobLength>
<mssAccessorName>vpd_mt_2_signature_hash</mssAccessorName>
@@ -205,6 +204,30 @@
</attribute>
<attribute>
+ <id>ATTR_MSS_VPD_MT_MC_BIAS_TRIM</id>
+ <targetType>TARGET_TYPE_MCS</targetType>
+ <description>
+ Adjusts the receiver internal current bias. ONLY set range 0-7. Default value is 3.
+ [VPD Value] = [Binary bit value set in register]
+ 0 = 110 (Minimal power)
+ 1 = 010
+ 2 = 100
+ 3 = 000 (Default)
+ 4 = 111
+ 5 = 011
+ 6 = 101
+ 7 = 001 (Maximum power)
+ </description>
+ <initToZero></initToZero>
+ <valueType>uint8</valueType>
+ <writeable/>
+ <mssBlobStart>86</mssBlobStart>
+ <mssBlobLength>2</mssBlobLength>
+ <mssAccessorName>vpd_mt_mc_bias_trim</mssAccessorName>
+ <array>2</array>
+ </attribute>
+
+ <attribute>
<id>ATTR_MSS_VPD_MT_MC_DQ_ACBOOST_RD_UP</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
@@ -223,8 +246,7 @@
<initToZero></initToZero>
<valueType>uint32</valueType>
<writeable/>
- <mssUnits></mssUnits>
- <mssBlobStart>86</mssBlobStart>
+ <mssBlobStart>88</mssBlobStart>
<mssBlobLength>8</mssBlobLength>
<mssAccessorName>vpd_mt_mc_dq_acboost_rd_up</mssAccessorName>
<array>2</array>
@@ -249,8 +271,7 @@
<initToZero></initToZero>
<valueType>uint32</valueType>
<writeable/>
- <mssUnits></mssUnits>
- <mssBlobStart>94</mssBlobStart>
+ <mssBlobStart>96</mssBlobStart>
<mssBlobLength>8</mssBlobLength>
<mssAccessorName>vpd_mt_mc_dq_acboost_wr_down</mssAccessorName>
<array>2</array>
@@ -275,8 +296,7 @@
<initToZero></initToZero>
<valueType>uint32</valueType>
<writeable/>
- <mssUnits></mssUnits>
- <mssBlobStart>102</mssBlobStart>
+ <mssBlobStart>104</mssBlobStart>
<mssBlobLength>8</mssBlobLength>
<mssAccessorName>vpd_mt_mc_dq_acboost_wr_up</mssAccessorName>
<array>2</array>
@@ -299,8 +319,7 @@
<initToZero></initToZero>
<valueType>uint64</valueType>
<writeable/>
- <mssUnits></mssUnits>
- <mssBlobStart>110</mssBlobStart>
+ <mssBlobStart>112</mssBlobStart>
<mssBlobLength>16</mssBlobLength>
<mssAccessorName>vpd_mt_mc_dq_ctle_cap</mssAccessorName>
<array>2</array>
@@ -323,8 +342,7 @@
<initToZero></initToZero>
<valueType>uint64</valueType>
<writeable/>
- <mssUnits></mssUnits>
- <mssBlobStart>126</mssBlobStart>
+ <mssBlobStart>128</mssBlobStart>
<mssBlobLength>16</mssBlobLength>
<mssAccessorName>vpd_mt_mc_dq_ctle_res</mssAccessorName>
<array>2</array>
@@ -341,7 +359,7 @@
<writeable/>
<enum>OHM30 = 30, OHM40 = 40</enum>
<mssUnits>ohm</mssUnits>
- <mssBlobStart>142</mssBlobStart>
+ <mssBlobStart>144</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
<mssAccessorName>vpd_mt_mc_drv_imp_clk</mssAccessorName>
<array>2</array>
@@ -358,7 +376,7 @@
<writeable/>
<enum>OHM30 = 30, OHM40 = 40</enum>
<mssUnits>ohm</mssUnits>
- <mssBlobStart>144</mssBlobStart>
+ <mssBlobStart>146</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
<mssAccessorName>vpd_mt_mc_drv_imp_cmd_addr</mssAccessorName>
<array>2</array>
@@ -375,7 +393,7 @@
<writeable/>
<enum>OHM30 = 30, OHM40 = 40</enum>
<mssUnits>ohm</mssUnits>
- <mssBlobStart>146</mssBlobStart>
+ <mssBlobStart>148</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
<mssAccessorName>vpd_mt_mc_drv_imp_cntl</mssAccessorName>
<array>2</array>
@@ -392,7 +410,7 @@
<writeable/>
<enum>OHM30 = 30, OHM40 = 40</enum>
<mssUnits>ohm</mssUnits>
- <mssBlobStart>148</mssBlobStart>
+ <mssBlobStart>150</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
<mssAccessorName>vpd_mt_mc_drv_imp_cscid</mssAccessorName>
<array>2</array>
@@ -409,7 +427,7 @@
<writeable/>
<enum>DISABLE = 0, OHM34 = 34, OHM40 = 40, OHM48 = 48, OHM60 = 60, OHM80 = 80, OHM120 = 120, OHM240 = 240</enum>
<mssUnits>ohm</mssUnits>
- <mssBlobStart>150</mssBlobStart>
+ <mssBlobStart>152</mssBlobStart>
<mssBlobLength>10</mssBlobLength>
<mssAccessorName>vpd_mt_mc_drv_imp_dq_dqs</mssAccessorName>
<array>2 5</array>
@@ -426,7 +444,7 @@
<writeable/>
<enum>DISABLE = 0, OHM34 = 34, OHM40 = 40, OHM48 = 48, OHM60 = 60, OHM80 = 80, OHM120 = 120, OHM240 = 240</enum>
<mssUnits>ohm</mssUnits>
- <mssBlobStart>160</mssBlobStart>
+ <mssBlobStart>162</mssBlobStart>
<mssBlobLength>10</mssBlobLength>
<mssAccessorName>vpd_mt_mc_rcv_imp_dq_dqs</mssAccessorName>
<array>2 5</array>
@@ -442,8 +460,7 @@
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
- <mssUnits></mssUnits>
- <mssBlobStart>170</mssBlobStart>
+ <mssBlobStart>172</mssBlobStart>
<mssBlobLength>16</mssBlobLength>
<mssAccessorName>vpd_mt_odt_rd</mssAccessorName>
<array>2 2 4</array>
@@ -459,8 +476,7 @@
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
- <mssUnits></mssUnits>
- <mssBlobStart>186</mssBlobStart>
+ <mssBlobStart>188</mssBlobStart>
<mssBlobLength>16</mssBlobLength>
<mssAccessorName>vpd_mt_odt_wr</mssAccessorName>
<array>2 2 4</array>
@@ -478,7 +494,7 @@
<valueType>uint8</valueType>
<writeable/>
<mssUnits>nCK</mssUnits>
- <mssBlobStart>202</mssBlobStart>
+ <mssBlobStart>204</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
<mssAccessorName>vpd_mt_preamble</mssAccessorName>
<array>2</array>
@@ -493,8 +509,7 @@
<initToZero></initToZero>
<valueType>uint8</valueType>
<writeable/>
- <mssUnits></mssUnits>
- <mssBlobStart>204</mssBlobStart>
+ <mssBlobStart>206</mssBlobStart>
<mssBlobLength>2</mssBlobLength>
<mssAccessorName>vpd_mt_vref_dram_wr</mssAccessorName>
<array>2</array>
@@ -511,7 +526,7 @@
<writeable/>
<enum>VDD91875 = 91875, VDD91333 = 91333, VDD90791 = 90791, VDD90250 = 90250, VDD89708 = 89708, VDD89166 = 89166, VDD88625 = 88625, VDD88083 = 88083, VDD87541 = 87541, VDD87000 = 87000, VDD86458 = 86458, VDD85916 = 85916, VDD85375 = 85375, VDD84833 = 84833, VDD84291 = 84291, VDD83750 = 83750, VDD83208 = 83208, VDD82666 = 82666, VDD82125 = 82125, VDD81583 = 81583, VDD81041 = 81041, VDD80500 = 80500, VDD79958 = 79958, VDD79416 = 79416, VDD78875 = 78875, VDD78333 = 78333, VDD77791 = 77791, VDD77250 = 77250, VDD76708 = 76708, VDD76166 = 76166, VDD75625 = 75625, VDD75083 = 75083, VDD74541 = 74541, VDD74000 = 74000, VDD73458 = 73458, VDD72916 = 72916, VDD72375 = 72375, VDD71833 = 71833, VDD71291 = 71291, VDD70750 = 70750, VDD70208 = 70208, VDD69666 = 69666, VDD69125 = 69125, VDD68583 = 68583, VDD68041 = 68041, VDD67500 = 67500, VDD66958 = 66958, VDD66416 = 66416, VDD65875 = 65875, VDD65333 = 65333, VDD64791 = 64791, VDD64250 = 64250, VDD63708 = 63708, VDD63166 = 63166, VDD62625 = 62625, VDD62083 = 62083, VDD61541 = 61541, VDD61000 = 61000, VDD60458 = 60458, VDD59916 = 59916, VDD59375 = 59375, VDD58833 = 58833, VDD58291 = 58291, VDD57750 = 57750, VDD57208 = 57208, VDD56666 = 56666, VDD56125 = 56125, VDD55583 = 55583, VDD55041 = 55041, VDD54500 = 54500, VDD53958 = 53958, VDD53416 = 53416, VDD52875 = 52875, VDD52333 = 52333, VDD51791 = 51791, VDD51250 = 51250, VDD50708 = 50708, VDD50166 = 50166, VDD49625 = 49625, VDD49083 = 49083, VDD48541 = 48541, VDD48000 = 48000, VDD47458 = 47458, VDD46916 = 46916, VDD46375 = 46375, VDD45833 = 45833, VDD45291 = 45291, VDD44750 = 44750, VDD44208 = 44208, VDD43666 = 43666, VDD43125 = 43125, VDD42583 = 42583, VDD42041 = 42041, VDD41500 = 41500, VDD40958 = 40958, VDD40416 = 40416, VDD39875 = 39875, VDD39333 = 39333, VDD38791 = 38791, VDD38250 = 38250, VDD37708 = 37708, VDD37166 = 37166, VDD36625 = 36625, VDD36083 = 36083, VDD35541 = 35541, VDD35000 = 35000, VDD34458 = 34458, VDD33916 = 33916, VDD33375 = 33375, VDD32833 = 32833, VDD32291 = 32291, VDD31750 = 31750, VDD31208 = 31208</enum>
<mssUnits>percent of Vdd</mssUnits>
- <mssBlobStart>206</mssBlobStart>
+ <mssBlobStart>208</mssBlobStart>
<mssBlobLength>8</mssBlobLength>
<mssAccessorName>vpd_mt_vref_mc_rd</mssAccessorName>
<array>2</array>
@@ -521,13 +536,14 @@
<id>ATTR_MSS_VPD_MT_WINDAGE_RD_CTR</id>
<targetType>TARGET_TYPE_MCS</targetType>
<description>
- Derived from calibration/characterization of read centering. Number of windage offset in units of pico-seconds[ps]. If this is enabled, disable periodic rd_ctr in draminit_mc. Default is 0
+ Derived from calibration/characterization of read centering. Number of windage offset in units of pico-seconds[ps]. Default is 0
+ Specification of the value in this file is 2's compliment hex
</description>
<initToZero></initToZero>
<valueType>int16</valueType>
<writeable/>
<mssUnits>signed</mssUnits>
- <mssBlobStart>214</mssBlobStart>
+ <mssBlobStart>216</mssBlobStart>
<mssBlobLength>4</mssBlobLength>
<mssAccessorName>vpd_mt_windage_rd_ctr</mssAccessorName>
<array>2</array>
diff --git a/src/import/hwpf/fapi2/xml/attribute_info/hb_temp_defaults.xml b/src/import/hwpf/fapi2/xml/attribute_info/hb_temp_defaults.xml
index 3c927243d..94f00ac24 100644
--- a/src/import/hwpf/fapi2/xml/attribute_info/hb_temp_defaults.xml
+++ b/src/import/hwpf/fapi2/xml/attribute_info/hb_temp_defaults.xml
@@ -337,6 +337,10 @@
</attribute>
<attribute>
+ <id>ATTR_MSS_VPD_MT_MC_BIAS_TRIM</id>
+ </attribute>
+
+ <attribute>
<id>ATTR_CORE_INSIDE_SPECIAL_WAKEUP</id>
<default>0x00</default>
</attribute>
@@ -349,7 +353,7 @@
<attribute>
<id>ATTR_SYSTEM_CORE_PERIODIC_QUIESCE_DISABLE</id>
<default>0x00</default>
- </attribute>
+ </attribute>
<!-- =====================================================================
End of temporary definitions
OpenPOWER on IntegriCloud