summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Marin <aamarin@us.ibm.com>2016-04-19 20:15:17 -0500
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-05-12 11:10:06 -0400
commit26753f805150fca2ada15f8527b4433a7a4edaa0 (patch)
tree9cbec57bd369c16a21f4deee8223ccb203d0663b
parenteffcd0c0d34e5e4032324e57a4d6d8d881167e32 (diff)
downloadtalos-hostboot-26753f805150fca2ada15f8527b4433a7a4edaa0.tar.gz
talos-hostboot-26753f805150fca2ada15f8527b4433a7a4edaa0.zip
Fix throttle procedure & MSS attribute clean up
Change-Id: Iccebe2f5bbad9d4fed2de914e0b65dba0b0b4662 Original-Change-Id: I7b545b65aaf9cdfea08ab2c5142898f5c971a74b Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/23486 Tested-by: Jenkins Server Tested-by: Hostboot CI Reviewed-by: Louis Stermole <stermole@us.ibm.com> Reviewed-by: JACOB L. HARVEY <jlharvey@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: Brian R. Silver <bsilver@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/24407 Tested-by: FSP CI Jenkins
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/dimm/mrs_load_ddr4.C12
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C185
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.H31
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/eff_config/timing.H55
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H8964
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/spd/spd_decoder.H4
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/utils/checker.H43
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/utils/conversions.H14
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/p9_mss_freq.C2
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/p9_mss_freq.H9
10 files changed, 1808 insertions, 7511 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/mrs_load_ddr4.C b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/mrs_load_ddr4.C
index 22156b93e..3dbda3a3c 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/mrs_load_ddr4.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/mrs_load_ddr4.C
@@ -82,7 +82,7 @@ static fapi2::ReturnCode ddr4_mrs00(const fapi2::Target<TARGET_TYPE_DIMM>& i_tar
uint8_t l_dll_reset = 0;
uint8_t l_test_mode = 0;
uint8_t l_write_recovery = 0;
- uint64_t l_cas_latency = 0;
+ uint8_t l_cas_latency = 0;
fapi2::buffer<uint8_t> l_cl;
fapi2::buffer<uint8_t> l_wr;
@@ -425,9 +425,9 @@ static fapi2::ReturnCode ddr4_mrs03(const fapi2::Target<TARGET_TYPE_DIMM>& i_tar
uint8_t l_pda = 0;
uint8_t l_crc_wr_latency = 0;
uint8_t l_temp_readout = 0;
+ uint8_t l_fine_refresh;
fapi2::buffer<uint8_t> l_mpr_mode;
- fapi2::buffer<uint8_t> l_fine_refresh;
fapi2::buffer<uint8_t> l_crc_wr_latency_buffer;
fapi2::buffer<uint8_t> l_read_format;
@@ -436,7 +436,7 @@ static fapi2::ReturnCode ddr4_mrs03(const fapi2::Target<TARGET_TYPE_DIMM>& i_tar
FAPI_TRY( mss::eff_geardown_mode(i_target, l_geardown) );
FAPI_TRY( mss::eff_per_dram_access(i_target, l_pda) );
FAPI_TRY( mss::eff_temp_readout(i_target, l_temp_readout) );
- FAPI_TRY( mss::eff_fine_refresh_mode(i_target, l_fine_refresh) );
+ FAPI_TRY( mss::mrw_fine_refresh_mode(l_fine_refresh) );
FAPI_TRY( mss::eff_crc_wr_latency(i_target, l_crc_wr_latency) );
FAPI_TRY( mss::eff_mpr_rd_format(i_target, l_read_format) );
@@ -454,7 +454,7 @@ static fapi2::ReturnCode ddr4_mrs03(const fapi2::Target<TARGET_TYPE_DIMM>& i_tar
io_inst.arr0.writeBit<A4>(l_pda);
io_inst.arr0.writeBit<A5>(l_temp_readout);
- mss::swizzle<A6 , 3, 7>(l_fine_refresh, io_inst.arr0);
+ mss::swizzle<A6 , 3, 7>(fapi2::buffer<uint8_t>(l_fine_refresh), io_inst.arr0);
mss::swizzle<A9 , 2, 7>(l_crc_wr_latency_buffer, io_inst.arr0);
mss::swizzle<A11, 2, 7>(l_read_format, io_inst.arr0);
@@ -524,7 +524,7 @@ static fapi2::ReturnCode ddr4_mrs04(const fapi2::Target<TARGET_TYPE_DIMM>& i_tar
fapi2::buffer<uint8_t> l_cs_cmd_latency_buffer;
FAPI_TRY( mss::eff_max_powerdown_mode(i_target, l_max_pd_mode) );
- FAPI_TRY( mss::eff_temp_ref_range(i_target, l_temp_ref_range) );
+ FAPI_TRY( mss::mrw_temp_ref_range(l_temp_ref_range) );
FAPI_TRY( mss::eff_temp_ref_mode(i_target, l_temp_ref_mode) );
FAPI_TRY( mss::eff_int_vref_mon(i_target, l_vref_mon) );
FAPI_TRY( mss::eff_cs_cmd_latency(i_target, l_cs_cmd_latency) );
@@ -729,7 +729,7 @@ static fapi2::ReturnCode ddr4_mrs06(const fapi2::Target<TARGET_TYPE_DIMM>& i_tar
FAPI_TRY( mss::vref_dq_train_value(i_target, l_vrefdq_train_value) );
FAPI_TRY( mss::vref_dq_train_range(i_target, l_vrefdq_train_range) );
FAPI_TRY( mss::vref_dq_train_enable(i_target, l_vrefdq_train_enable) );
- FAPI_TRY( mss::tccd_l(i_target, l_tccd_l) );
+ FAPI_TRY( mss::eff_dram_tccd_l(i_target, l_tccd_l) );
l_tccd_l_buffer = tccd_l_map[l_tccd_l];
l_vrefdq_train_value_buffer = l_vrefdq_train_value[mss::index(i_rank)];
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C
index f2587076f..c8527a890 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C
@@ -44,7 +44,7 @@ namespace mss
/// @brief Determines & sets effective config for DRAM generation from SPD
/// @param[in] i_target FAPI2 target
/// @param[in] i_pDecoder shared pointer to decoder factory
-/// @return fapi2::ReturnCode
+/// @return fapi2::FAPI2_RC_SUCCESS if okay
///
fapi2::ReturnCode eff_config::dram_gen(const fapi2::Target<TARGET_TYPE_DIMM>& i_target,
const std::shared_ptr<spd::decoder>& i_pDecoder)
@@ -75,7 +75,7 @@ fapi_try_exit:
///
/// @brief Determines & sets effective config for DIMM type from SPD
/// @param[in] i_target FAPI2 target
-/// @return fapi2::ReturnCode
+/// @return fapi2::FAPI2_RC_SUCCESS if okay
///
fapi2::ReturnCode eff_config::dimm_type(const fapi2::Target<TARGET_TYPE_DIMM>& i_target,
const std::vector<uint8_t>& i_spd_data )
@@ -106,7 +106,7 @@ fapi_try_exit:
/// @brief Determines & sets effective config for Hybrid memory type from SPD
/// @param[in] i_target FAPI2 target
/// @param[in] i_pDecoder shared pointer to decoder factory
-/// @return fapi2::ReturnCode
+/// @return fapi2::FAPI2_RC_SUCCESS if okay
///
fapi2::ReturnCode eff_config::hybrid_memory_type(const fapi2::Target<TARGET_TYPE_DIMM>& i_target,
const std::shared_ptr<spd::decoder>& i_pDecoder)
@@ -131,129 +131,132 @@ fapi2::ReturnCode eff_config::hybrid_memory_type(const fapi2::Target<TARGET_TYPE
fapi_try_exit:
return fapi2::current_err;
+
}// dimm_type
///
-/// @brief Sets effective config for temperature controlled refresh mode
+/// @brief Determines & sets effective config for refresh interval time (tREFI)
/// @param[in] i_target FAPI2 target
-/// @return fapi2::ReturnCode
-/// @note Proposed DDR4 Full spec update(79-4A)
-/// @note Committee: JC42.3C
-/// @note Committee Item Number: 1716.78C
-/// @note 4.8.2 Extended temperature mode (pg. 44)
-fapi2::ReturnCode eff_config::temp_ref_range(const fapi2::Target<TARGET_TYPE_DIMM>& i_target)
+/// @return fapi2::FAPI2_RC_SUCCESS if okay
+///
+fapi2::ReturnCode eff_config::refresh_interval_time(const fapi2::Target<TARGET_TYPE_DIMM>& i_target)
{
- uint8_t l_mcs_attrs[PORTS_PER_MCS] = {0};
-
- // Targets
- const auto l_mcs = find_target<TARGET_TYPE_MCS>(i_target);
- const auto l_mca = find_target<TARGET_TYPE_MCA>(i_target);
-
- // Current index
- const auto l_port_num = index(l_mca);
-
- FAPI_TRY( mss::eff_temp_ref_range(l_mcs, &l_mcs_attrs[0]) );
-
- // TK - I think this will become a platform attribute so this function
- // will eventuall get removed - AAM
+ uint8_t l_refresh_mode = 0;
+ uint64_t l_trefi_in_ps = 0;
- // This is defaulted to Extended temperature mode
- l_mcs_attrs[l_port_num] = fapi2::ENUM_ATTR_EFF_TEMP_REF_RANGE_EXTEND;
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_TEMP_REF_RANGE, l_mcs, l_mcs_attrs) );
+ FAPI_TRY ( mss::mrw_fine_refresh_mode(l_refresh_mode) );
-fapi_try_exit:
- return fapi2::current_err;
-}// temp_ref_range
+ switch(l_refresh_mode)
+ {
+ case fapi2::ENUM_ATTR_MRW_FINE_REFRESH_MODE_NORMAL:
+ calc_trefi1(i_target, l_trefi_in_ps);
+ break;
-///
-/// @brief Determines & sets effective config for Refresh Mode
-/// @param[in] i_target FAPI2 target
-/// @return fapi2::ReturnCode
-///
-fapi2::ReturnCode eff_config::fine_refresh_mode(const fapi2::Target<TARGET_TYPE_DIMM>& i_target)
-{
- uint8_t l_mcs_attrs[PORTS_PER_MCS] = {0};
- // Targets
- const auto l_mcs = find_target<TARGET_TYPE_MCS>(i_target);
- const auto l_mca = find_target<TARGET_TYPE_MCA>(i_target);
+ case fapi2::ENUM_ATTR_MRW_FINE_REFRESH_MODE_FIXED_2X:
+ case fapi2::ENUM_ATTR_MRW_FINE_REFRESH_MODE_FLY_2X:
+ calc_trefi2(i_target, l_trefi_in_ps);
+ break;
- // Current index
- const auto l_port_num = index(l_mca);
+ case fapi2::ENUM_ATTR_MRW_FINE_REFRESH_MODE_FIXED_4X:
+ case fapi2::ENUM_ATTR_MRW_FINE_REFRESH_MODE_FLY_4X:
+ calc_trefi4(i_target, l_trefi_in_ps);
+ break;
+ }
- // Per Warren - should be in Normal mode, might change based on lab test results - AAM
- // Get & update MCS attribute
- FAPI_TRY( mss::eff_fine_refresh_mode(l_mcs, &l_mcs_attrs[0])) ;
- l_mcs_attrs[l_port_num] = fapi2::ENUM_ATTR_EFF_FINE_REFRESH_MODE_NORMAL;
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_FINE_REFRESH_MODE, l_mcs, l_mcs_attrs) );
+ {
+ // Calculate clock period (tCK) from selected freq from mss_freq
+ uint64_t l_tCK_in_ps = 0;
+ FAPI_TRY( clock_period(i_target, l_tCK_in_ps) );
+
+ {
+ // Calculate refresh cycle time in nCK & set attribute
+ const auto l_mcs = find_target<TARGET_TYPE_MCS>(i_target);
+ const auto l_port_num = index( find_target<TARGET_TYPE_MCA>(i_target) );
+
+ std::vector<uint8_t> l_mcs_attrs_trefi(PORTS_PER_MCS, 0);
+ uint8_t l_trefi_in_nck ;
+
+ // Get & update MCS attribute
+ FAPI_TRY( eff_dram_trefi(l_mcs, &l_mcs_attrs_trefi[0]) );
+
+ l_trefi_in_nck = calc_nck(l_trefi_in_ps, l_tCK_in_ps, uint64_t(INVERSE_DDR4_CORRECTION_FACTOR));
+ l_mcs_attrs_trefi[l_port_num] = uint8_t(l_trefi_in_nck);
+
+ // casts vector into the type FAPI_ATTR_SET is expecting by deduction
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DRAM_TREFI,
+ l_mcs,
+ UINT8_VECTOR_TO_1D_ARRAY(l_mcs_attrs_trefi, PORTS_PER_MCS)),
+ "Failed to set tREFI attribute");
+ }
+ }
fapi_try_exit:
return fapi2::current_err;
-}// refresh_mode
+}// refresh_interval
-/// @brief Determines & sets effective config for refresh interval time (tREFI)
+///
+/// @brief Determines & sets effective config for refresh cycle time (tRFC)
/// @param[in] i_target FAPI2 target
-/// @return fapi2::ReturnCode
+/// @param[in] i_pDecoder shared pointer to decoder factory
+/// @return fapi2::FAPI2_RC_SUCCESS if okay
///
-fapi2::ReturnCode eff_config::refresh_interval_time(const fapi2::Target<TARGET_TYPE_DIMM>& i_target)
+fapi2::ReturnCode eff_config::refresh_cycle_time(const fapi2::Target<TARGET_TYPE_DIMM>& i_target,
+ const std::shared_ptr<spd::decoder>& i_pDecoder)
{
- uint8_t l_mcs_attrs_refresh[PORTS_PER_MCS] = {0};
uint8_t l_refresh_mode = 0;
+ int64_t l_trfc_in_ps = 0;
- uint8_t l_mcs_attrs_trefi[PORTS_PER_MCS][MAX_DIMM_PER_PORT] = {0};
- uint64_t l_trefi_in_ps = 0;
- uint8_t l_trefi_in_nck = 0;
-
- uint64_t l_mss_freq = 0;
- uint64_t l_tCK_in_ps = 0;
-
- // Targets
- const auto l_mcs = find_target<TARGET_TYPE_MCS>(i_target);
- const auto l_mca = find_target<TARGET_TYPE_MCA>(i_target);
- const auto l_target_mcbist = find_target<TARGET_TYPE_MCBIST>(i_target);
-
- // Current index
- const auto l_port_num = index(l_mca);
- const auto l_dimm_num = index(i_target);
-
- // Retrieve attributes values
- FAPI_TRY( mss::freq(l_target_mcbist, l_mss_freq) );
- FAPI_TRY ( mss::eff_fine_refresh_mode(l_mcs, &l_mcs_attrs_refresh[0]) );
-
- l_refresh_mode = l_mcs_attrs_refresh[l_port_num];
+ FAPI_TRY ( mss::mrw_fine_refresh_mode(l_refresh_mode) );
switch(l_refresh_mode)
{
- case fapi2::ENUM_ATTR_EFF_FINE_REFRESH_MODE_NORMAL:
- calc_trefi1(i_target, l_trefi_in_ps);
+ case fapi2::ENUM_ATTR_MRW_FINE_REFRESH_MODE_NORMAL:
+ i_pDecoder->min_refresh_recovery_delay_time_1(i_target, l_trfc_in_ps);
break;
- case fapi2::ENUM_ATTR_EFF_FINE_REFRESH_MODE_FIXED_2X:
- case fapi2::ENUM_ATTR_EFF_FINE_REFRESH_MODE_FLY_2X:
- calc_trefi2(i_target, l_trefi_in_ps);
+ case fapi2::ENUM_ATTR_MRW_FINE_REFRESH_MODE_FIXED_2X:
+ case fapi2::ENUM_ATTR_MRW_FINE_REFRESH_MODE_FLY_2X:
+ i_pDecoder->min_refresh_recovery_delay_time_2(i_target, l_trfc_in_ps);
break;
- case fapi2::ENUM_ATTR_EFF_FINE_REFRESH_MODE_FIXED_4X:
- case fapi2::ENUM_ATTR_EFF_FINE_REFRESH_MODE_FLY_4X:
- calc_trefi4(i_target, l_trefi_in_ps);
+ case fapi2::ENUM_ATTR_MRW_FINE_REFRESH_MODE_FIXED_4X:
+ case fapi2::ENUM_ATTR_MRW_FINE_REFRESH_MODE_FLY_4X:
+ i_pDecoder->min_refresh_recovery_delay_time_4(i_target, l_trfc_in_ps);
break;
}
- // Calculate clock period (tCK) from selected freq from mss_freq
- l_tCK_in_ps = freq_to_ps(l_mss_freq);
+ {
+ // Calculate clock period (tCK) from selected freq from mss_freq
+ int64_t l_tCK_in_ps = 0;
+ FAPI_TRY( clock_period(i_target, l_tCK_in_ps) );
- // Get & update MCS attribute
- FAPI_TRY( eff_dram_trefi(l_mcs, &l_mcs_attrs_trefi[0][0]) );
+ {
+ // Calculate refresh cycle time in nCK & set attribute
+ const auto l_mcs = find_target<TARGET_TYPE_MCS>(i_target);
+ const auto l_port_num = index( find_target<TARGET_TYPE_MCA>(i_target) );
- l_trefi_in_nck = calc_nck(l_trefi_in_ps, l_tCK_in_ps, uint64_t(INVERSE_DDR4_CORRECTION_FACTOR));
- l_mcs_attrs_trefi[l_port_num][l_dimm_num] = uint8_t(l_trefi_in_nck);
+ uint8_t l_trfc_in_nck = 0;
+ std::vector<uint8_t> l_mcs_attrs_trfc(PORTS_PER_MCS, 0);
- FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DRAM_TREFI, l_mcs, l_mcs_attrs_trefi) );
+ // Retrieve MCS attribute data
+ FAPI_TRY( eff_dram_trfc(l_mcs, l_mcs_attrs_trfc.data()) );
-fapi_try_exit:
- return fapi2::current_err;
-}// refresh_interval
+ // Calculate nck
+ l_trfc_in_nck = calc_nck(l_trfc_in_ps, l_tCK_in_ps, int64_t(INVERSE_DDR4_CORRECTION_FACTOR));
+ // Update MCS attribute
+ l_mcs_attrs_trfc[l_port_num] = uint8_t(l_trfc_in_nck);
+ // casts vector into the type FAPI_ATTR_SET is expecting by deduction
+ FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DRAM_TRFC,
+ l_mcs,
+ UINT8_VECTOR_TO_1D_ARRAY(l_mcs_attrs_trfc, PORTS_PER_MCS)),
+ "Failed to set tRFC attribute");
+ }
+ }
+fapi_try_exit:
+ return fapi2::current_err;
+}
}// mss
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.H b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.H
index 9643d72d5..256d73144 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.H
@@ -57,7 +57,7 @@ class eff_config
/// @brief Determines & sets effective config for DRAM generation from SPD
/// @param[in] i_target FAPI2 target
/// @param[in] i_pDecoder shared pointer to decoder factory
- /// @return fapi2::ReturnCode
+ /// @return fapi2::FAPI2_RC_SUCCESS if okay
///
fapi2::ReturnCode dram_gen(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
const std::shared_ptr<spd::decoder>& i_pDecoder);
@@ -65,7 +65,7 @@ class eff_config
///
/// @brief Determines & sets effective config for DIMM type
/// @param[in] i_target FAPI2 target
- /// @return fapi2::ReturnCode
+ /// @return fapi2::FAPI2_RC_SUCCESS if okay
///
fapi2::ReturnCode dimm_type(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
const std::vector<uint8_t>& i_spd_data);
@@ -74,33 +74,24 @@ class eff_config
/// @brief Determines & sets effective config for Hybrid memory type from SPD
/// @param[in] i_target FAPI2 target
/// @param[in] i_pDecoder shared pointer to decoder factory
- /// @return fapi2::ReturnCode
+ /// @return fapi2::FAPI2_RC_SUCCESS if okay
///
fapi2::ReturnCode hybrid_memory_type(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
const std::shared_ptr<spd::decoder>& i_pDecoder);
- ///
- /// @brief Sets effective config for temperature controlled refresh mode
- /// @param[in] i_target FAPI2 target
- /// @return fapi2::ReturnCode
- /// @note Proposed DDR4 Full spec update(79-4A)
- /// @note Committee: JC42.3C
- /// @note Committee Item Number: 1716.78C
- /// @note 4.8.2 Extended temperature mode (pg. 44)
- ///
- fapi2::ReturnCode temp_ref_range(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target);
-
- /// @brief Determines & sets effective config for Refresh Mode
+ /// @brief Determines & sets effective config for refresh interval time (tREFI)
/// @param[in] i_target FAPI2 target
- /// @return fapi2::ReturnCode
+ /// @return fapi2::FAPI2_RC_SUCCESS if okay
///
- fapi2::ReturnCode fine_refresh_mode(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target);
+ fapi2::ReturnCode refresh_interval_time(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target);
- /// @brief Determines & sets effective config for refresh interval time (tREFI)
+ /// @brief Determines & sets effective config for refresh cycle time (tRFC)
/// @param[in] i_target FAPI2 target
- /// @return fapi2::ReturnCode
+ /// @param[in] i_pDecoder shared pointer to decoder factory
+ /// @return fapi2::FAPI2_RC_SUCCESS if okay
///
- fapi2::ReturnCode refresh_interval_time(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target);
+ fapi2::ReturnCode refresh_cycle_time(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+ const std::shared_ptr<spd::decoder>& i_pDecoder);
};// eff_config
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/timing.H b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/timing.H
index be4c00838..f84fe7575 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/timing.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/timing.H
@@ -30,11 +30,8 @@
#define _MSS_TIMING_H_
#include <cstdint>
-
#include <fapi2.H>
-
-
namespace mss
{
@@ -50,13 +47,13 @@ enum GUARD_BAND
};
///
-/// @brief Calculates timing value
-/// @tparam T input and output type
-/// @param[in] i_timing_mtb timing value in MTB units
-/// @param[in] i_mtb_multiplier SPD medium timebase
-/// @param[in] i_timing_ftb fine offset of timing value
-/// @param[in] i_ftb_multiplier SPD fine timebase
-/// @return the timing value in picoseconds
+/// @brief Calculates timing value
+/// @tparam T input and output type
+/// @param[in] i_timing_mtb timing value in MTB units
+/// @param[in] i_mtb_multiplier SPD medium timebase
+/// @param[in] i_timing_ftb fine offset of timing value
+/// @param[in] i_ftb_multiplier SPD fine timebase
+/// @return the timing value in picoseconds
///
template<typename T>
inline T calc_timing_from_timebase(const T i_timing_mtb,
@@ -73,14 +70,14 @@ inline T calc_timing_from_timebase(const T i_timing_mtb,
///
-/// @brief Returns clock cycles
-/// @tparam T input and output type
-/// @param[in] timing_in_ps timing parameter in ps
-/// @param[in] tck_in_ps clock period in ps
-/// @param[in] inverse_corr_factor inverse correction factor (defined by JEDEC)
-/// @return the clock cycles of timing parameter (provided in ps)
-/// @note DDR4 SPD Contents Rounding Algorithm
-/// @note Item 2220.46
+/// @brief Returns clock cycles
+/// @tparam T input and output type
+/// @param[in] timing_in_ps timing parameter in ps
+/// @param[in] tck_in_ps clock period in ps
+/// @param[in] inverse_corr_factor inverse correction factor (defined by JEDEC)
+/// @return the clock cycles of timing parameter (provided in ps)
+/// @note DDR4 SPD Contents Rounding Algorithm
+/// @note Item 2220.46
///
template<typename T>
inline T calc_nck(T timing_in_ps, T tck_in_ps, T inverse_corr_factor)
@@ -94,6 +91,28 @@ inline T calc_nck(T timing_in_ps, T tck_in_ps, T inverse_corr_factor)
return temp_nck / 1000;
}
+///
+/// @brief Returns application clock period (tCK) based on dimm transfer rate
+/// @tparam T output type
+/// @param[in] i_target FAPI2 target
+/// @param[out] o_tCK_in_ps application period in ps
+/// @return fapi2::FAPI2_RC_SUCCESS if okay
+///
+template< typename T>
+inline fapi2::ReturnCode clock_period(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
+ T& o_tCK_in_ps)
+{
+ uint64_t l_dimm_transfer_rate = 0;
+
+ FAPI_TRY( freq(find_target<fapi2::TARGET_TYPE_MCBIST>(i_target),
+ l_dimm_transfer_rate) );
+
+ o_tCK_in_ps = freq_to_ps(l_dimm_transfer_rate);
+
+fapi_try_exit:
+ return fapi2::current_err;
+}
+
/// @brief Calculates refresh interval time 1 (tREFI 1)
/// @param[in] i_target FAPI2 target
/// @param[out] o_value timing val in ps
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 558d30947..ba5ee9f29 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
@@ -79,7 +79,7 @@ fapi_try_exit:
/// @param[out] uint64_t& reference to store the value
/// @note Generated by gen_accessors.pl generateParameters (MCBIST A)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note FOR LAB USE ONLY: Frequency override of this memory channel in MHz, comprising
+/// @note FOR LAB USE ONLY: Frequency override of this memory channel in MT/s comprising
/// of up to three DIMMs. Set by config file or an attribute writing program.
/// Consumed by mss_freq. The default of AUTO means mss_freq will find the best
/// frequencies given the DIMMs plugged in and other rules. Otherwise, this is the
@@ -234,116 +234,13 @@ fapi_try_exit:
}
///
-/// @brief ATTR_EFF_DIMM_RANKS_CONFIGED 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 (F)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Bit wise representation of master ranks in each DIMM that are used for reads and
-/// writes. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Dimensions are
-/// [port][dimm] A/B=Mba_0 C/D=Mba_1 There are only two DIMM ranks: DIMM0 and DIMM1
-/// where DIMM0 is the furthest from the centaur. creator: mss_eff_cnfg consumer:
-/// various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dimm_ranks_configed(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- uint8_t& o_value)
-{
- uint8_t l_value[2][2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DIMM_RANKS_CONFIGED, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DIMM_RANKS_CONFIGED: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DIMM_RANKS_CONFIGED getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint8_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Bit wise representation of master ranks in each DIMM that are used for reads and
-/// writes. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Dimensions are
-/// [port][dimm] A/B=Mba_0 C/D=Mba_1 There are only two DIMM ranks: DIMM0 and DIMM1
-/// where DIMM0 is the furthest from the centaur. creator: mss_eff_cnfg consumer:
-/// various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dimm_ranks_configed(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& 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][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DIMM_RANKS_CONFIGED, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DIMM_RANKS_CONFIGED: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DIMM_RANKS_CONFIGED 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 (H)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Bit wise representation of master ranks in each DIMM that are used for reads and
-/// writes. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Dimensions are
-/// [port][dimm] A/B=Mba_0 C/D=Mba_1 There are only two DIMM ranks: DIMM0 and DIMM1
-/// where DIMM0 is the furthest from the centaur. creator: mss_eff_cnfg consumer:
-/// various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dimm_ranks_configed(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][2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DIMM_RANKS_CONFIGED, i_target, l_value) );
- memcpy(o_array, &l_value, 4);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DIMM_RANKS_CONFIGED: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
/// @brief ATTR_EFF_NUM_RANKS_PER_DIMM 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 (F)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Number of ranks in each DIMM. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. values are 0,1,2, 4 up to 32 creator: mss_eff_cnfg consumer:
+/// mss_eff_cnfg. values are 0,1,2, 4 up to 32 creator: mss_eff_cnfg consumer:
/// various firmware notes:
/// none
///
@@ -371,8 +268,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (G)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Number of ranks in each DIMM. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. values are 0,1,2, 4 up to 32 creator: mss_eff_cnfg consumer:
+/// mss_eff_cnfg. values are 0,1,2, 4 up to 32 creator: mss_eff_cnfg consumer:
/// various firmware notes:
/// none
///
@@ -404,8 +300,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (H)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Number of ranks in each DIMM. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. values are 0,1,2, 4 up to 32 creator: mss_eff_cnfg consumer:
+/// mss_eff_cnfg. values are 0,1,2, 4 up to 32 creator: mss_eff_cnfg consumer:
/// various firmware notes:
/// none
///
@@ -703,7 +598,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -729,7 +623,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -756,7 +649,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -788,7 +680,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -814,7 +705,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -841,7 +731,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -873,7 +762,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -899,7 +787,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -926,7 +813,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -958,7 +844,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -984,7 +869,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1011,7 +895,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1043,7 +926,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1069,7 +951,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1096,7 +977,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1128,7 +1008,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1154,7 +1033,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1181,7 +1059,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1213,7 +1090,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1239,7 +1115,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1266,7 +1141,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1298,7 +1172,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1324,7 +1197,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1351,7 +1223,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1383,7 +1254,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1409,7 +1279,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1436,7 +1305,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1468,7 +1336,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1494,7 +1361,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1521,7 +1387,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1553,7 +1418,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1579,7 +1443,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1606,7 +1469,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1638,7 +1500,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1664,7 +1525,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1691,7 +1551,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1723,7 +1582,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1750,7 +1608,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1777,7 +1634,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1809,7 +1665,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1836,7 +1691,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1863,7 +1717,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1895,7 +1748,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1922,7 +1774,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1949,7 +1800,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -1981,7 +1831,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -2008,7 +1857,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -2035,7 +1883,6 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note RankGroup. Used in various locations and is computed in mss_eff_cnfg_rank_group.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg.
/// creator: mss_eff_cnfg_rank_group consumer: various firmware notes:
/// none
///
@@ -2067,8 +1914,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (A)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Spare DRAM availability. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes: load from
+/// mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes: load from
/// spd OBSOLETE: Use
/// ATTR_VPD_DIMM_SPARE
///
@@ -2101,8 +1947,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (B)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Spare DRAM availability. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes: load from
+/// mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes: load from
/// spd OBSOLETE: Use
/// ATTR_VPD_DIMM_SPARE
///
@@ -2134,8 +1979,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (C)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Spare DRAM availability. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes: load from
+/// mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes: load from
/// spd OBSOLETE: Use
/// ATTR_VPD_DIMM_SPARE
///
@@ -2166,8 +2010,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note DRAM Write Vref. Used in various locations and comes from the MT keyword of the
-/// VPD or is computed in mss_eff_cnfg_termination. Can be overwritten by ODM
-/// vendors if done from the PNOR or odm_eff_cnfg. creator: VPD(MT) or
+/// VPD or is computed in mss_eff_cnfg_termination. creator: VPD(MT) or
/// mss_eff_cnfg_termination consumer: various.C and initfile firmware notes: none
/// This is the nominal value This is for
/// DDR3
@@ -2193,8 +2036,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note DRAM Write Vref. Used in various locations and comes from the MT keyword of the
-/// VPD or is computed in mss_eff_cnfg_termination. Can be overwritten by ODM
-/// vendors if done from the PNOR or odm_eff_cnfg. creator: VPD(MT) or
+/// VPD or is computed in mss_eff_cnfg_termination. creator: VPD(MT) or
/// mss_eff_cnfg_termination consumer: various.C and initfile firmware notes: none
/// This is the nominal value This is for
/// DDR3
@@ -2221,8 +2063,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note DRAM Write Vref. Used in various locations and comes from the MT keyword of the
-/// VPD or is computed in mss_eff_cnfg_termination. Can be overwritten by ODM
-/// vendors if done from the PNOR or odm_eff_cnfg. creator: VPD(MT) or
+/// VPD or is computed in mss_eff_cnfg_termination. creator: VPD(MT) or
/// mss_eff_cnfg_termination consumer: various.C and initfile firmware notes: none
/// This is the nominal value This is for
/// DDR3
@@ -2413,1314 +2254,6 @@ fapi_try_exit:
}
///
-/// @brief ATTR_EFF_CEN_DRV_IMP_DQ_DQS 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 Centaur DQ and DQS Drive Impedance Used in various locations and comes from the
-/// MT Keyword of the VPD or is computed in mss_eff_cnfg_termination. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. creator:
-/// VPD(MT)/mss_eff_cnfg_termination consumer: initfile,various.C files firmware
-/// notes: none This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_dq_dqs(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_EFF_CEN_DRV_IMP_DQ_DQS, 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_EFF_CEN_DRV_IMP_DQ_DQS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_DQ_DQS 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 Centaur DQ and DQS Drive Impedance Used in various locations and comes from the
-/// MT Keyword of the VPD or is computed in mss_eff_cnfg_termination. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. creator:
-/// VPD(MT)/mss_eff_cnfg_termination consumer: initfile,various.C files firmware
-/// notes: none This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_dq_dqs(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_EFF_CEN_DRV_IMP_DQ_DQS, 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_EFF_CEN_DRV_IMP_DQ_DQS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_DQ_DQS 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 Centaur DQ and DQS Drive Impedance Used in various locations and comes from the
-/// MT Keyword of the VPD or is computed in mss_eff_cnfg_termination. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. creator:
-/// VPD(MT)/mss_eff_cnfg_termination consumer: initfile,various.C files firmware
-/// notes: none This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_dq_dqs(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_EFF_CEN_DRV_IMP_DQ_DQS, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_DRV_IMP_DQ_DQS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_DQ_DQS_SCHMOO getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] ref to the value uint32_t
-/// @note Generated by gen_accessors.pl generateParameters (D)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible driver strengths and start
-/// with the first value down to the last (largest) impedance as the LSB of the 8
-/// bit
-/// field.
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_dq_dqs_schmoo(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
- uint32_t& o_value)
-{
- uint32_t l_value[2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_CEN_DRV_IMP_DQ_DQS_SCHMOO, 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_EFF_CEN_DRV_IMP_DQ_DQS_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_DQ_DQS_SCHMOO getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
-/// @param[out] ref to the value uint32_t
-/// @note Generated by gen_accessors.pl generateParameters (D.1)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible driver strengths and start
-/// with the first value down to the last (largest) impedance as the LSB of the 8
-/// bit
-/// field.
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_dq_dqs_schmoo(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- uint32_t& o_value)
-{
- uint32_t l_value[2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_CEN_DRV_IMP_DQ_DQS_SCHMOO, 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_EFF_CEN_DRV_IMP_DQ_DQS_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_DQ_DQS_SCHMOO getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[out] uint32_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 Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible driver strengths and start
-/// with the first value down to the last (largest) impedance as the LSB of the 8
-/// bit
-/// field.
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_dq_dqs_schmoo(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
- uint32_t* o_array)
-{
- if (o_array == nullptr)
- {
- FAPI_ERR("nullptr passed to attribute accessor %s", __func__);
- return fapi2::FAPI2_RC_INVALID_PARAMETER;
- }
-
- uint32_t l_value[2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_CEN_DRV_IMP_DQ_DQS_SCHMOO, i_target, l_value) );
- memcpy(o_array, &l_value, 8);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_DRV_IMP_DQ_DQS_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_CLK_SCHMOO 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 Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible driver strengths and start
-/// with the first value down to the last (largest) impedance as the LSB of the 8
-/// bit
-/// field.
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_clk_schmoo(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_EFF_CEN_DRV_IMP_CLK_SCHMOO, 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_EFF_CEN_DRV_IMP_CLK_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_CLK_SCHMOO 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 Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible driver strengths and start
-/// with the first value down to the last (largest) impedance as the LSB of the 8
-/// bit
-/// field.
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_clk_schmoo(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_EFF_CEN_DRV_IMP_CLK_SCHMOO, 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_EFF_CEN_DRV_IMP_CLK_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_CLK_SCHMOO 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 Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible driver strengths and start
-/// with the first value down to the last (largest) impedance as the LSB of the 8
-/// bit
-/// field.
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_clk_schmoo(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_EFF_CEN_DRV_IMP_CLK_SCHMOO, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_DRV_IMP_CLK_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_SPCKE_SCHMOO 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 Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible driver strengths and start
-/// with the first value down to the last (largest) impedance as the LSB of the 8
-/// bit
-/// field.
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_spcke_schmoo(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_EFF_CEN_DRV_IMP_SPCKE_SCHMOO, 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_EFF_CEN_DRV_IMP_SPCKE_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_SPCKE_SCHMOO 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 Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible driver strengths and start
-/// with the first value down to the last (largest) impedance as the LSB of the 8
-/// bit
-/// field.
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_spcke_schmoo(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_EFF_CEN_DRV_IMP_SPCKE_SCHMOO, 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_EFF_CEN_DRV_IMP_SPCKE_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_SPCKE_SCHMOO 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 Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible driver strengths and start
-/// with the first value down to the last (largest) impedance as the LSB of the 8
-/// bit
-/// field.
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_spcke_schmoo(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_EFF_CEN_DRV_IMP_SPCKE_SCHMOO, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_DRV_IMP_SPCKE_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_CNTL_SCHMOO 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 Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible driver strengths and start
-/// with the first value down to the last (largest) impedance as the LSB of the 8
-/// bit field. This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_cntl_schmoo(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_EFF_CEN_DRV_IMP_CNTL_SCHMOO, 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_EFF_CEN_DRV_IMP_CNTL_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_CNTL_SCHMOO 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 Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible driver strengths and start
-/// with the first value down to the last (largest) impedance as the LSB of the 8
-/// bit field. This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_cntl_schmoo(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_EFF_CEN_DRV_IMP_CNTL_SCHMOO, 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_EFF_CEN_DRV_IMP_CNTL_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_DRV_IMP_CNTL_SCHMOO 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 Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible driver strengths and start
-/// with the first value down to the last (largest) impedance as the LSB of the 8
-/// bit field. This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_drv_imp_cntl_schmoo(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_EFF_CEN_DRV_IMP_CNTL_SCHMOO, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_DRV_IMP_CNTL_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_RCV_IMP_DQ_DQS 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 Centaur DQ and DQS Receiver Impedance Used in various locations and it comes
-/// from the VPD MT keyword for custom DIMMs or is computed in
-/// mss_eff_cnfg_termination. Can be overwritten by ODM vendors if done from the
-/// PNOR or odm_eff_cnfg. creator: VPD, mss_eff_cnfg_termination Consumer: initfile
-/// + C code firmware notes: none This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_rcv_imp_dq_dqs(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_EFF_CEN_RCV_IMP_DQ_DQS, 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_EFF_CEN_RCV_IMP_DQ_DQS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_RCV_IMP_DQ_DQS 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 Centaur DQ and DQS Receiver Impedance Used in various locations and it comes
-/// from the VPD MT keyword for custom DIMMs or is computed in
-/// mss_eff_cnfg_termination. Can be overwritten by ODM vendors if done from the
-/// PNOR or odm_eff_cnfg. creator: VPD, mss_eff_cnfg_termination Consumer: initfile
-/// + C code firmware notes: none This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_rcv_imp_dq_dqs(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_EFF_CEN_RCV_IMP_DQ_DQS, 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_EFF_CEN_RCV_IMP_DQ_DQS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_RCV_IMP_DQ_DQS 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 Centaur DQ and DQS Receiver Impedance Used in various locations and it comes
-/// from the VPD MT keyword for custom DIMMs or is computed in
-/// mss_eff_cnfg_termination. Can be overwritten by ODM vendors if done from the
-/// PNOR or odm_eff_cnfg. creator: VPD, mss_eff_cnfg_termination Consumer: initfile
-/// + C code firmware notes: none This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_rcv_imp_dq_dqs(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_EFF_CEN_RCV_IMP_DQ_DQS, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_RCV_IMP_DQ_DQS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_RCV_IMP_DQ_DQS_SCHMOO getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] ref to the value uint32_t
-/// @note Generated by gen_accessors.pl generateParameters (D)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible receiver termination and
-/// start with the first value down to the last (largest) impedance as the LSB of
-/// the 32 bit
-/// field.
-///
-inline fapi2::ReturnCode eff_cen_rcv_imp_dq_dqs_schmoo(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
- uint32_t& o_value)
-{
- uint32_t l_value[2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_CEN_RCV_IMP_DQ_DQS_SCHMOO, 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_EFF_CEN_RCV_IMP_DQ_DQS_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_RCV_IMP_DQ_DQS_SCHMOO getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
-/// @param[out] ref to the value uint32_t
-/// @note Generated by gen_accessors.pl generateParameters (D.1)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible receiver termination and
-/// start with the first value down to the last (largest) impedance as the LSB of
-/// the 32 bit
-/// field.
-///
-inline fapi2::ReturnCode eff_cen_rcv_imp_dq_dqs_schmoo(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- uint32_t& o_value)
-{
- uint32_t l_value[2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_CEN_RCV_IMP_DQ_DQS_SCHMOO, 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_EFF_CEN_RCV_IMP_DQ_DQS_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_RCV_IMP_DQ_DQS_SCHMOO getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[out] uint32_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 Enables for which impedance values can be used and tested in a timing test. The
-/// bits have a one to one correspondence to the possible receiver termination and
-/// start with the first value down to the last (largest) impedance as the LSB of
-/// the 32 bit
-/// field.
-///
-inline fapi2::ReturnCode eff_cen_rcv_imp_dq_dqs_schmoo(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
- uint32_t* o_array)
-{
- if (o_array == nullptr)
- {
- FAPI_ERR("nullptr passed to attribute accessor %s", __func__);
- return fapi2::FAPI2_RC_INVALID_PARAMETER;
- }
-
- uint32_t l_value[2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_CEN_RCV_IMP_DQ_DQS_SCHMOO, i_target, l_value) );
- memcpy(o_array, &l_value, 8);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_RCV_IMP_DQ_DQS_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_DQ_DQS 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 Centaur DQ and DQS Slew Rate Used in various locations and comes from the MT
-/// keyword of the VPD or is computed in mss_eff_cnfg_termination. Slowest slew rate
-/// is 0, incrementing by one. The lower the number the slower the slew rate the
-/// higher the faster. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. creator: VPD(MT), mss_eff_cnfg_termination consumer:
-/// initfiles,various.C firmware notes: none This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_dq_dqs(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_EFF_CEN_SLEW_RATE_DQ_DQS, 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_EFF_CEN_SLEW_RATE_DQ_DQS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_DQ_DQS 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 Centaur DQ and DQS Slew Rate Used in various locations and comes from the MT
-/// keyword of the VPD or is computed in mss_eff_cnfg_termination. Slowest slew rate
-/// is 0, incrementing by one. The lower the number the slower the slew rate the
-/// higher the faster. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. creator: VPD(MT), mss_eff_cnfg_termination consumer:
-/// initfiles,various.C firmware notes: none This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_dq_dqs(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_EFF_CEN_SLEW_RATE_DQ_DQS, 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_EFF_CEN_SLEW_RATE_DQ_DQS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_DQ_DQS 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 Centaur DQ and DQS Slew Rate Used in various locations and comes from the MT
-/// keyword of the VPD or is computed in mss_eff_cnfg_termination. Slowest slew rate
-/// is 0, incrementing by one. The lower the number the slower the slew rate the
-/// higher the faster. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. creator: VPD(MT), mss_eff_cnfg_termination consumer:
-/// initfiles,various.C firmware notes: none This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_dq_dqs(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_EFF_CEN_SLEW_RATE_DQ_DQS, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_SLEW_RATE_DQ_DQS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_DQ_DQS_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_dq_dqs_schmoo(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_EFF_CEN_SLEW_RATE_DQ_DQS_SCHMOO, 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_EFF_CEN_SLEW_RATE_DQ_DQS_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_DQ_DQS_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_dq_dqs_schmoo(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_EFF_CEN_SLEW_RATE_DQ_DQS_SCHMOO, 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_EFF_CEN_SLEW_RATE_DQ_DQS_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_DQ_DQS_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_dq_dqs_schmoo(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_EFF_CEN_SLEW_RATE_DQ_DQS_SCHMOO, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_SLEW_RATE_DQ_DQS_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_CLK_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_clk_schmoo(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_EFF_CEN_SLEW_RATE_CLK_SCHMOO, 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_EFF_CEN_SLEW_RATE_CLK_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_CLK_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_clk_schmoo(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_EFF_CEN_SLEW_RATE_CLK_SCHMOO, 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_EFF_CEN_SLEW_RATE_CLK_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_CLK_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_clk_schmoo(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_EFF_CEN_SLEW_RATE_CLK_SCHMOO, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_SLEW_RATE_CLK_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_SPCKE_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_spcke_schmoo(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_EFF_CEN_SLEW_RATE_SPCKE_SCHMOO, 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_EFF_CEN_SLEW_RATE_SPCKE_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_SPCKE_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_spcke_schmoo(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_EFF_CEN_SLEW_RATE_SPCKE_SCHMOO, 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_EFF_CEN_SLEW_RATE_SPCKE_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_SPCKE_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_spcke_schmoo(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_EFF_CEN_SLEW_RATE_SPCKE_SCHMOO, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_SLEW_RATE_SPCKE_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_ADDR_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_addr_schmoo(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_EFF_CEN_SLEW_RATE_ADDR_SCHMOO, 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_EFF_CEN_SLEW_RATE_ADDR_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_ADDR_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_addr_schmoo(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_EFF_CEN_SLEW_RATE_ADDR_SCHMOO, 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_EFF_CEN_SLEW_RATE_ADDR_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_ADDR_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_addr_schmoo(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_EFF_CEN_SLEW_RATE_ADDR_SCHMOO, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_SLEW_RATE_ADDR_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_CNTL_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_cntl_schmoo(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_EFF_CEN_SLEW_RATE_CNTL_SCHMOO, 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_EFF_CEN_SLEW_RATE_CNTL_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_CNTL_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_cntl_schmoo(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_EFF_CEN_SLEW_RATE_CNTL_SCHMOO, 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_EFF_CEN_SLEW_RATE_CNTL_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_SLEW_RATE_CNTL_SCHMOO 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 Slew Rates that can be selected during timing adjustments. The fastest rate is
-/// the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_slew_rate_cntl_schmoo(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_EFF_CEN_SLEW_RATE_CNTL_SCHMOO, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_SLEW_RATE_CNTL_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_RD_VREF getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] ref to the value uint32_t
-/// @note Generated by gen_accessors.pl generateParameters (D)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Centaur Read Vref. Used in various locations and comes from the MT keyword of
-/// the VPD or is computed in mss_eff_cnfg_termination. Can be overwritten by ODM
-/// vendors if done from the PNOR or odm_eff_cnfg. Creator: VPD(MT) or
-/// mss_eff_cnfg_termination consumer: various.C and initfiles firmware notes: none
-/// This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_rd_vref(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint32_t& o_value)
-{
- uint32_t l_value[2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_CEN_RD_VREF, 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_EFF_CEN_RD_VREF: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_RD_VREF getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
-/// @param[out] ref to the value uint32_t
-/// @note Generated by gen_accessors.pl generateParameters (D.1)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Centaur Read Vref. Used in various locations and comes from the MT keyword of
-/// the VPD or is computed in mss_eff_cnfg_termination. Can be overwritten by ODM
-/// vendors if done from the PNOR or odm_eff_cnfg. Creator: VPD(MT) or
-/// mss_eff_cnfg_termination consumer: various.C and initfiles firmware notes: none
-/// This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_rd_vref(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint32_t& o_value)
-{
- uint32_t l_value[2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_CEN_RD_VREF, 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_EFF_CEN_RD_VREF: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_RD_VREF getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[out] uint32_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 Centaur Read Vref. Used in various locations and comes from the MT keyword of
-/// the VPD or is computed in mss_eff_cnfg_termination. Can be overwritten by ODM
-/// vendors if done from the PNOR or odm_eff_cnfg. Creator: VPD(MT) or
-/// mss_eff_cnfg_termination consumer: various.C and initfiles firmware notes: none
-/// This is the nominal
-/// value
-///
-inline fapi2::ReturnCode eff_cen_rd_vref(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint32_t* o_array)
-{
- if (o_array == nullptr)
- {
- FAPI_ERR("nullptr passed to attribute accessor %s", __func__);
- return fapi2::FAPI2_RC_INVALID_PARAMETER;
- }
-
- uint32_t l_value[2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_CEN_RD_VREF, i_target, l_value) );
- memcpy(o_array, &l_value, 8);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_RD_VREF: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_RD_VREF_SCHMOO getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] ref to the value uint32_t
-/// @note Generated by gen_accessors.pl generateParameters (D)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Enables for which VREF value can be used in timing adjustments. The highest
-/// voltage corresponds to the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_rd_vref_schmoo(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
- uint32_t& o_value)
-{
- uint32_t l_value[2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_CEN_RD_VREF_SCHMOO, 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_EFF_CEN_RD_VREF_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_RD_VREF_SCHMOO getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
-/// @param[out] ref to the value uint32_t
-/// @note Generated by gen_accessors.pl generateParameters (D.1)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Enables for which VREF value can be used in timing adjustments. The highest
-/// voltage corresponds to the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_rd_vref_schmoo(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- uint32_t& o_value)
-{
- uint32_t l_value[2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_CEN_RD_VREF_SCHMOO, 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_EFF_CEN_RD_VREF_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_CEN_RD_VREF_SCHMOO getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[out] uint32_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 Enables for which VREF value can be used in timing adjustments. The highest
-/// voltage corresponds to the
-/// LSB
-///
-inline fapi2::ReturnCode eff_cen_rd_vref_schmoo(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
- uint32_t* o_array)
-{
- if (o_array == nullptr)
- {
- FAPI_ERR("nullptr passed to attribute accessor %s", __func__);
- return fapi2::FAPI2_RC_INVALID_PARAMETER;
- }
-
- uint32_t l_value[2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_CEN_RD_VREF_SCHMOO, i_target, l_value) );
- memcpy(o_array, &l_value, 8);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_CEN_RD_VREF_SCHMOO: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
/// @brief ATTR_EFF_DIMM_SIZE getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint32_t
@@ -3805,711 +2338,14 @@ fapi_try_exit:
}
///
-/// @brief ATTR_EFF_DRAM_TRCD 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 (F)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note RAS to CAS Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_trcd(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
-{
- uint8_t l_value[2][2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRCD, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRCD: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRCD getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint8_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note RAS to CAS Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_trcd(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& 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][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRCD, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRCD: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRCD 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 (H)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note RAS to CAS Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_trcd(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][2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRCD, i_target, l_value) );
- memcpy(o_array, &l_value, 4);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRCD: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRRD 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 Row ACT to Row ACT Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_trrd(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_EFF_DRAM_TRRD, 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_EFF_DRAM_TRRD: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRRD 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 Row ACT to Row ACT Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_trrd(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_EFF_DRAM_TRRD, 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_EFF_DRAM_TRRD: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRRD 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 Row ACT to Row ACT Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_trrd(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_EFF_DRAM_TRRD, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRRD: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRP 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 (F)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Row Precharge Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer:
-/// various
-///
-inline fapi2::ReturnCode eff_dram_trp(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
-{
- uint8_t l_value[2][2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRP, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRP: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRP getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint8_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Row Precharge Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer:
-/// various
-///
-inline fapi2::ReturnCode eff_dram_trp(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& 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][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRP, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRP: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRP 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 (H)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Row Precharge Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer:
-/// various
-///
-inline fapi2::ReturnCode eff_dram_trp(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][2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRP, i_target, l_value) );
- memcpy(o_array, &l_value, 4);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRP: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRAS 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 ACT to Precharge Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer:
-/// various
-///
-inline fapi2::ReturnCode eff_dram_tras(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_EFF_DRAM_TRAS, 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_EFF_DRAM_TRAS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRAS 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 ACT to Precharge Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer:
-/// various
-///
-inline fapi2::ReturnCode eff_dram_tras(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_EFF_DRAM_TRAS, 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_EFF_DRAM_TRAS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRAS 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 ACT to Precharge Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer:
-/// various
-///
-inline fapi2::ReturnCode eff_dram_tras(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_EFF_DRAM_TRAS, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRAS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRC 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 ACT to ACT/Refresh Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_trc(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_EFF_DRAM_TRC, 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_EFF_DRAM_TRC: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRC 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 ACT to ACT/Refresh Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_trc(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_EFF_DRAM_TRC, 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_EFF_DRAM_TRC: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRC 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 ACT to ACT/Refresh Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_trc(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_EFF_DRAM_TRC, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRC: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TWTR 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 Internal Write to Read Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_twtr(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_EFF_DRAM_TWTR, 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_EFF_DRAM_TWTR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TWTR 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 Internal Write to Read Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_twtr(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_EFF_DRAM_TWTR, 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_EFF_DRAM_TWTR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TWTR 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 Internal Write to Read Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_twtr(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_EFF_DRAM_TWTR, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TWTR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRTP 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 Internal Read to Precharge Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_trtp(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_EFF_DRAM_TRTP, 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_EFF_DRAM_TRTP: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRTP 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 Internal Read to Precharge Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_trtp(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_EFF_DRAM_TRTP, 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_EFF_DRAM_TRTP: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TRTP 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 Internal Read to Precharge Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_trtp(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_EFF_DRAM_TRTP, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRTP: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TFAW 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 Four ACT Window Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_tfaw(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_EFF_DRAM_TFAW, 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_EFF_DRAM_TFAW: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TFAW 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 Four ACT Window Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_tfaw(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_EFF_DRAM_TFAW, 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_EFF_DRAM_TFAW: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TFAW 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 Four ACT Window Delay. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_tfaw(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_EFF_DRAM_TFAW, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TFAW: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
/// @brief ATTR_EFF_DRAM_BL 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 Burst Length. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note Burst Length. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_burst_length(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t& o_value)
@@ -4532,10 +2368,9 @@ fapi_try_exit:
/// @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 Burst Length. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note Burst Length. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_burst_length(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
@@ -4559,10 +2394,9 @@ fapi_try_exit:
/// @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 Burst Length. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note Burst Length. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_burst_length(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
@@ -4588,16 +2422,16 @@ fapi_try_exit:
///
/// @brief ATTR_EFF_DRAM_CL getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] ref to the value uint64_t
+/// @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 CAS Latency. Each memory channel will have a value. creator: mss_freq consumer:
/// various firmware notes:
/// none
///
-inline fapi2::ReturnCode eff_dram_cas_latency(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint64_t& o_value)
+inline fapi2::ReturnCode eff_dram_cas_latency(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t& o_value)
{
- uint64_t l_value[2];
+ uint8_t l_value[2];
FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_CL, i_target.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
o_value = l_value[mss::index(i_target)];
@@ -4612,16 +2446,16 @@ fapi_try_exit:
///
/// @brief ATTR_EFF_DRAM_CL getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
-/// @param[out] ref to the value uint64_t
+/// @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 CAS Latency. Each memory channel will have a value. creator: mss_freq consumer:
/// various firmware notes:
/// none
///
-inline fapi2::ReturnCode eff_dram_cas_latency(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint64_t& o_value)
+inline fapi2::ReturnCode eff_dram_cas_latency(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
{
- uint64_t l_value[2];
+ uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_CL, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
@@ -4637,14 +2471,14 @@ fapi_try_exit:
///
/// @brief ATTR_EFF_DRAM_CL getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[out] uint64_t* memory to store the value
+/// @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 CAS Latency. Each memory channel will have a value. creator: mss_freq consumer:
/// various firmware notes:
/// none
///
-inline fapi2::ReturnCode eff_dram_cas_latency(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint64_t* o_array)
+inline fapi2::ReturnCode eff_dram_cas_latency(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -4652,10 +2486,10 @@ inline fapi2::ReturnCode eff_dram_cas_latency(const fapi2::Target<fapi2::TARGET_
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint64_t l_value[2];
+ uint8_t l_value[2];
FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_CL, i_target, l_value) );
- memcpy(o_array, &l_value, 16);
+ memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
@@ -4671,8 +2505,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Additive Latency. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
+/// mss_eff_cnfg_timing. Each memory channel will have a value. creator:
/// mss_eff_cnfg_timing consumer: various firmware notes:
/// none
///
@@ -4697,8 +2530,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Additive Latency. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
+/// mss_eff_cnfg_timing. Each memory channel will have a value. creator:
/// mss_eff_cnfg_timing consumer: various firmware notes:
/// none
///
@@ -4724,8 +2556,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Additive Latency. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
+/// mss_eff_cnfg_timing. Each memory channel will have a value. creator:
/// mss_eff_cnfg_timing consumer: various firmware notes:
/// none
///
@@ -4756,8 +2587,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note CAS Write Latency. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
+/// mss_eff_cnfg_timing. Each memory channel will have a value. creator:
/// mss_eff_cnfg_timing consumer: various firmware notes:
/// none
///
@@ -4782,8 +2612,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note CAS Write Latency. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
+/// mss_eff_cnfg_timing. Each memory channel will have a value. creator:
/// mss_eff_cnfg_timing consumer: various firmware notes:
/// none
///
@@ -4809,8 +2638,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note CAS Write Latency. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
+/// mss_eff_cnfg_timing. Each memory channel will have a value. creator:
/// mss_eff_cnfg_timing consumer: various firmware notes:
/// none
///
@@ -4840,10 +2668,9 @@ fapi_try_exit:
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (F)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Read Burst Type. Used in various locations and is computed in mss_eff_cnfg. Can
-/// be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note Read Burst Type. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_read_burst_type(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
@@ -4869,10 +2696,9 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (G)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Read Burst Type. Used in various locations and is computed in mss_eff_cnfg. Can
-/// be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note Read Burst Type. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_read_burst_type(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
@@ -4903,10 +2729,9 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (H)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Read Burst Type. Used in various locations and is computed in mss_eff_cnfg. Can
-/// be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note Read Burst Type. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_read_burst_type(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
@@ -4936,10 +2761,9 @@ fapi_try_exit:
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (F)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Test Mode. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note Test Mode. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_tm(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
@@ -4964,10 +2788,9 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (G)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Test Mode. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note Test Mode. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_tm(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
@@ -4997,10 +2820,9 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (H)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Test Mode. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note Test Mode. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_tm(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
@@ -5029,10 +2851,9 @@ fapi_try_exit:
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (F)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DLL Reset. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note DLL Reset. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_dll_reset(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
@@ -5057,10 +2878,9 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (G)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DLL Reset. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note DLL Reset. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_dll_reset(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
@@ -5090,10 +2910,9 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (H)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DLL Reset. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note DLL Reset. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_dll_reset(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
@@ -5117,111 +2936,14 @@ fapi_try_exit:
}
///
-/// @brief ATTR_EFF_DRAM_WR 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 (F)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Write Recovery. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendofrs if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_write_recovery(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- uint8_t& o_value)
-{
- uint8_t l_value[2][2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_WR, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_WR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_WR getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint8_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Write Recovery. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendofrs if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_write_recovery(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& 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][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_WR, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_WR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_WR 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 (H)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Write Recovery. Used in various locations and is computed in
-/// mss_eff_cnfg_timing. Can be overwritten by ODM vendofrs if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator:
-/// mss_eff_cnfg_timing consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_write_recovery(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][2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_WR, i_target, l_value) );
- memcpy(o_array, &l_value, 4);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_WR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
/// @brief ATTR_EFF_DRAM_DLL_PPD 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 DLL Precharge PD. Used in various locations and is computed in mss_eff_cnfg. Can
-/// be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note DLL Precharge PD. Used in various locations and is computed in mss_eff_cnfg.
+/// Each memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_dll_ppd(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t& o_value)
@@ -5244,10 +2966,9 @@ fapi_try_exit:
/// @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 DLL Precharge PD. Used in various locations and is computed in mss_eff_cnfg. Can
-/// be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note DLL Precharge PD. Used in various locations and is computed in mss_eff_cnfg.
+/// Each memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_dll_ppd(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
@@ -5271,10 +2992,9 @@ fapi_try_exit:
/// @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 DLL Precharge PD. Used in various locations and is computed in mss_eff_cnfg. Can
-/// be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note DLL Precharge PD. Used in various locations and is computed in mss_eff_cnfg.
+/// Each memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_dll_ppd(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
@@ -5303,10 +3023,9 @@ fapi_try_exit:
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (F)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DLL Enable. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note DLL Enable. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_dll_enable(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
@@ -5331,10 +3050,9 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (G)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DLL Enable. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note DLL Enable. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_dll_enable(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
@@ -5364,10 +3082,9 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (H)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DLL Enable. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
+/// @note DLL Enable. Used in various locations and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_dll_enable(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
@@ -5391,99 +3108,13 @@ fapi_try_exit:
}
///
-/// @brief ATTR_EFF_DRAM_TDQS 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 TDQS. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_tdqs(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_EFF_DRAM_TDQS, 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_EFF_DRAM_TDQS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TDQS 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 TDQS. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_tdqs(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_EFF_DRAM_TDQS, 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_EFF_DRAM_TDQS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TDQS 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 TDQS. Used in various locations and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_tdqs(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_EFF_DRAM_TDQS, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TDQS: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
/// @brief ATTR_EFF_DRAM_WR_LVL_ENABLE 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 Write Level Enable. Used in various locations and is computed in mss_eff_cnfg.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each
-/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// Each memory channel will have a value. creator: mss_eff_cnfg consumer: various
/// firmware notes:
/// none
///
@@ -5508,8 +3139,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Write Level Enable. Used in various locations and is computed in mss_eff_cnfg.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each
-/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// Each memory channel will have a value. creator: mss_eff_cnfg consumer: various
/// firmware notes:
/// none
///
@@ -5536,8 +3166,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Write Level Enable. Used in various locations and is computed in mss_eff_cnfg.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each
-/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// Each memory channel will have a value. creator: mss_eff_cnfg consumer: various
/// firmware notes:
/// none
///
@@ -5568,8 +3197,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note DRAM Qoff. Enables or disables DRAM output. Used in various locations and is
-/// computed in mss_eff_cnfg. Can be overwritten by ODM vendors if done from the
-/// PNOR or odm_eff_cnfg. Each memory channel will have a value. creator:
+/// computed in mss_eff_cnfg. Each memory channel will have a value. creator:
/// mss_eff_cnfg consumer: various firmware notes:
/// none
///
@@ -5594,8 +3222,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note DRAM Qoff. Enables or disables DRAM output. Used in various locations and is
-/// computed in mss_eff_cnfg. Can be overwritten by ODM vendors if done from the
-/// PNOR or odm_eff_cnfg. Each memory channel will have a value. creator:
+/// computed in mss_eff_cnfg. Each memory channel will have a value. creator:
/// mss_eff_cnfg consumer: various firmware notes:
/// none
///
@@ -5622,8 +3249,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note DRAM Qoff. Enables or disables DRAM output. Used in various locations and is
-/// computed in mss_eff_cnfg. Can be overwritten by ODM vendors if done from the
-/// PNOR or odm_eff_cnfg. Each memory channel will have a value. creator:
+/// computed in mss_eff_cnfg. Each memory channel will have a value. creator:
/// mss_eff_cnfg consumer: various firmware notes:
/// none
///
@@ -5654,8 +3280,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Partial Array Self-Refresh. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
+/// mss_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
/// consumer: various firmware notes:
/// none
///
@@ -5680,8 +3305,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Partial Array Self-Refresh. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
+/// mss_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
/// consumer: various firmware notes:
/// none
///
@@ -5707,8 +3331,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Partial Array Self-Refresh. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
+/// mss_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
/// consumer: various firmware notes:
/// none
///
@@ -5739,8 +3362,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Auto Self-Refresh. Used in various locations and is computed in mss_eff_cnfg.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each
-/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// Each memory channel will have a value. creator: mss_eff_cnfg consumer: various
/// firmware notes:
/// none
///
@@ -5765,8 +3387,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Auto Self-Refresh. Used in various locations and is computed in mss_eff_cnfg.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each
-/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// Each memory channel will have a value. creator: mss_eff_cnfg consumer: various
/// firmware notes:
/// none
///
@@ -5792,8 +3413,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Auto Self-Refresh. Used in various locations and is computed in mss_eff_cnfg.
-/// Can be overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each
-/// memory channel will have a value. creator: mss_eff_cnfg consumer: various
+/// Each memory channel will have a value. creator: mss_eff_cnfg consumer: various
/// firmware notes:
/// none
///
@@ -5824,8 +3444,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Self-Refresh Temperature Range. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
+/// mss_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
/// consumer: various firmware notes:
/// none
///
@@ -5850,8 +3469,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Self-Refresh Temperature Range. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
+/// mss_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
/// consumer: various firmware notes:
/// none
///
@@ -5877,8 +3495,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Self-Refresh Temperature Range. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
+/// mss_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
/// consumer: various firmware notes:
/// none
///
@@ -5909,8 +3526,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Multi Purpose Register Location. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
+/// mss_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
/// consumer: various firmware notes:
/// none
///
@@ -5935,8 +3551,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Multi Purpose Register Location. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
+/// mss_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
/// consumer: various firmware notes:
/// none
///
@@ -5962,8 +3577,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Multi Purpose Register Location. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
+/// mss_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
/// consumer: various firmware notes:
/// none
///
@@ -5994,8 +3608,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Multi Purpose Register Mode. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
+/// mss_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
/// consumer: various firmware notes:
/// none
///
@@ -6020,8 +3633,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Multi Purpose Register Mode. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
+/// mss_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
/// consumer: various firmware notes:
/// none
///
@@ -6047,8 +3659,7 @@ fapi_try_exit:
/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
/// @note Multi Purpose Register Mode. Used in various locations and is computed in
-/// mss_eff_cnfg. Can be overwritten by ODM vendors if done from the PNOR or
-/// odm_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
+/// mss_eff_cnfg. Each memory channel will have a value. creator: mss_eff_cnfg
/// consumer: various firmware notes:
/// none
///
@@ -8472,8 +6083,7 @@ fapi_try_exit:
/// @param[out] ref to the value uint32_t
/// @note Generated by gen_accessors.pl generateParameters (F)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note RCD IBT. Used in mss_dram_init and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
+/// @note RCD IBT. Used in mss_dram_init and is computed in mss_eff_cnfg. Each memory
/// channel will have a value. creator: mss_eff_cnfg consumer: mss_dram_init
/// firmware notes:
/// none
@@ -8500,8 +6110,7 @@ fapi_try_exit:
/// @param[out] uint32_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (G)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note RCD IBT. Used in mss_dram_init and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
+/// @note RCD IBT. Used in mss_dram_init and is computed in mss_eff_cnfg. Each memory
/// channel will have a value. creator: mss_eff_cnfg consumer: mss_dram_init
/// firmware notes:
/// none
@@ -8533,8 +6142,7 @@ fapi_try_exit:
/// @param[out] uint32_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (H)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note RCD IBT. Used in mss_dram_init and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
+/// @note RCD IBT. Used in mss_dram_init and is computed in mss_eff_cnfg. Each memory
/// channel will have a value. creator: mss_eff_cnfg consumer: mss_dram_init
/// firmware notes:
/// none
@@ -8565,9 +6173,8 @@ fapi_try_exit:
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (F)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note RCD Mirroring. Used in mss_dram_init and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: mss_dram_init
+/// @note RCD Mirroring. Used in mss_dram_init and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: mss_dram_init
/// firmware notes:
/// none
///
@@ -8594,9 +6201,8 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (G)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note RCD Mirroring. Used in mss_dram_init and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: mss_dram_init
+/// @note RCD Mirroring. Used in mss_dram_init and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: mss_dram_init
/// firmware notes:
/// none
///
@@ -8628,9 +6234,8 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (H)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note RCD Mirroring. Used in mss_dram_init and is computed in mss_eff_cnfg. Can be
-/// overwritten by ODM vendors if done from the PNOR or odm_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: mss_dram_init
+/// @note RCD Mirroring. Used in mss_dram_init and is computed in mss_eff_cnfg. Each
+/// memory channel will have a value. creator: mss_eff_cnfg consumer: mss_dram_init
/// firmware notes:
/// none
///
@@ -11348,54 +8953,6 @@ fapi_try_exit:
}
///
-/// @brief ATTR_MSS_MBA_ADDR_INTERLEAVE_BIT getter
-/// @param[out] uint8_t& reference to store the value
-/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note This dial sets the Centaur address bits used to interleave addresses between
-/// MBA01 and MBA23. Valid values are 23 through 32. See Centaur Spec Chapter 5 for
-/// details. Used in the intifile. Will be obsolete when the
-/// MSS_DERIVED_MBA_ADDR_INTERLEAVE_BIT is set This attribute will only be found in
-/// a Tuelta
-/// system.
-///
-inline fapi2::ReturnCode mba_addr_interleave_bit(uint8_t& o_value)
-{
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_MBA_ADDR_INTERLEAVE_BIT, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_MBA_ADDR_INTERLEAVE_BIT: 0x%lx (system target)",
- uint64_t(fapi2::current_err));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_MSS_MBA_CACHELINE_INTERLEAVE_MODE getter
-/// @param[out] uint8_t& reference to store the value
-/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Value of on or off. On is 256 bit interleave. Off, the translation is on 128 bit
-/// interleave mode. See centaur workbook chapter 5. Will be obsolete when
-/// MSS_DERIVED_MBA_CACHELINE_INTERLEAVE_MODE is set. This attribute will only be
-/// alive in the Tuelta
-/// system.
-///
-inline fapi2::ReturnCode mba_cacheline_interleave_mode(uint8_t& o_value)
-{
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_MBA_CACHELINE_INTERLEAVE_MODE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(),
- o_value) );
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_MBA_CACHELINE_INTERLEAVE_MODE: 0x%lx (system target)",
- uint64_t(fapi2::current_err));
- return fapi2::current_err;
-}
-
-///
/// @brief ATTR_MSS_PREFETCH_ENABLE getter
/// @param[out] uint8_t& reference to store the value
/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
@@ -11448,10 +9005,9 @@ fapi_try_exit:
/// 0x80 means port 0, DIMM 0 is functional, 0x40 means port 0, DIMM 1 is
/// functional. 0x08 means port 1, DIMM 0 is functional and 0x04 means port 1 DIMM 1
/// is functional. A fully populated system would have the value of 0xCC. Used in
-/// various locations and is computed in mss_eff_cnfg. Can be overwritten by ODM
-/// vendors if done from the PNOR or odm_eff_cnfg. Each memory channel will have a
-/// value. creator: mss_eff_cnfg consumer: various firmware notes: none This factors
-/// in
+/// various locations and is computed in mss_eff_cnfg. Each memory channel will have
+/// a value. creator: mss_eff_cnfg consumer: various firmware notes: none This
+/// factors in
/// functionality
///
inline fapi2::ReturnCode eff_dimm_functional_vector(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
@@ -11481,10 +9037,9 @@ fapi_try_exit:
/// 0x80 means port 0, DIMM 0 is functional, 0x40 means port 0, DIMM 1 is
/// functional. 0x08 means port 1, DIMM 0 is functional and 0x04 means port 1 DIMM 1
/// is functional. A fully populated system would have the value of 0xCC. Used in
-/// various locations and is computed in mss_eff_cnfg. Can be overwritten by ODM
-/// vendors if done from the PNOR or odm_eff_cnfg. Each memory channel will have a
-/// value. creator: mss_eff_cnfg consumer: various firmware notes: none This factors
-/// in
+/// various locations and is computed in mss_eff_cnfg. Each memory channel will have
+/// a value. creator: mss_eff_cnfg consumer: various firmware notes: none This
+/// factors in
/// functionality
///
inline fapi2::ReturnCode eff_dimm_functional_vector(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
@@ -11515,10 +9070,9 @@ fapi_try_exit:
/// 0x80 means port 0, DIMM 0 is functional, 0x40 means port 0, DIMM 1 is
/// functional. 0x08 means port 1, DIMM 0 is functional and 0x04 means port 1 DIMM 1
/// is functional. A fully populated system would have the value of 0xCC. Used in
-/// various locations and is computed in mss_eff_cnfg. Can be overwritten by ODM
-/// vendors if done from the PNOR or odm_eff_cnfg. Each memory channel will have a
-/// value. creator: mss_eff_cnfg consumer: various firmware notes: none This factors
-/// in
+/// various locations and is computed in mss_eff_cnfg. Each memory channel will have
+/// a value. creator: mss_eff_cnfg consumer: various firmware notes: none This
+/// factors in
/// functionality
///
inline fapi2::ReturnCode eff_dimm_functional_vector(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
@@ -13809,85 +11363,6 @@ fapi_try_exit:
}
///
-/// @brief ATTR_TCCD_L 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 tccd_l. This is for DDR4 MRS6. Computed in mss_eff_cnfg. Each memory channel
-/// will have a value. Creator: mss_eff_cnfg Consumer:various Firmware notes:
-/// none
-///
-inline fapi2::ReturnCode tccd_l(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_TCCD_L, 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_TCCD_L: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_TCCD_L 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 tccd_l. This is for DDR4 MRS6. Computed in mss_eff_cnfg. Each memory channel
-/// will have a value. Creator: mss_eff_cnfg Consumer:various Firmware notes:
-/// none
-///
-inline fapi2::ReturnCode tccd_l(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_TCCD_L, 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_TCCD_L: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_TCCD_L 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 tccd_l. This is for DDR4 MRS6. Computed in mss_eff_cnfg. Each memory channel
-/// will have a value. Creator: mss_eff_cnfg Consumer:various Firmware notes:
-/// none
-///
-inline fapi2::ReturnCode tccd_l(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_TCCD_L, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_TCCD_L: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
/// @brief ATTR_EFF_WRITE_CRC getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
@@ -14865,9 +12340,8 @@ fapi_try_exit:
/// @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 LRDIMM rank multiplication mode. Will be set at an MBA level with one policy to
-/// be
-/// used
+/// @note LRDIMM rank multiplication
+/// mode.
///
inline fapi2::ReturnCode lrdimm_rank_mult_mode(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t& o_value)
{
@@ -14889,9 +12363,8 @@ fapi_try_exit:
/// @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 LRDIMM rank multiplication mode. Will be set at an MBA level with one policy to
-/// be
-/// used
+/// @note LRDIMM rank multiplication
+/// mode.
///
inline fapi2::ReturnCode lrdimm_rank_mult_mode(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
{
@@ -14914,9 +12387,8 @@ fapi_try_exit:
/// @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 LRDIMM rank multiplication mode. Will be set at an MBA level with one policy to
-/// be
-/// used
+/// @note LRDIMM rank multiplication
+/// mode.
///
inline fapi2::ReturnCode lrdimm_rank_mult_mode(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
@@ -15205,176 +12677,13 @@ fapi_try_exit:
}
///
-/// @brief ATTR_MSS_AVDD_OFFSET_DISABLE getter
-/// @param[out] uint8_t& reference to store the value
-/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Used for to determine whether to apply an offset to AVDD. Supplied by
-/// MRW.
-///
-inline fapi2::ReturnCode avdd_offset_disable(uint8_t& o_value)
-{
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_AVDD_OFFSET_DISABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_AVDD_OFFSET_DISABLE: 0x%lx (system target)",
- uint64_t(fapi2::current_err));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_MSS_VDD_OFFSET_DISABLE getter
-/// @param[out] uint8_t& reference to store the value
-/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Used for to determine whether to apply an offset to VDD. Supplied by
-/// MRW.
-///
-inline fapi2::ReturnCode vdd_offset_disable(uint8_t& o_value)
-{
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VDD_OFFSET_DISABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VDD_OFFSET_DISABLE: 0x%lx (system target)",
- uint64_t(fapi2::current_err));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_MSS_VCS_OFFSET_DISABLE getter
-/// @param[out] uint8_t& reference to store the value
-/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Used for to determine whether to apply an offset to VCS. Supplied by
-/// MRW.
-///
-inline fapi2::ReturnCode vcs_offset_disable(uint8_t& o_value)
-{
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VCS_OFFSET_DISABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VCS_OFFSET_DISABLE: 0x%lx (system target)",
- uint64_t(fapi2::current_err));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_MSS_VPP_OFFSET_DISABLE getter
-/// @param[out] uint8_t& reference to store the value
-/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Used for to determine whether to apply an offset to VCS. Supplied by
-/// MRW.
-///
-inline fapi2::ReturnCode vpp_offset_disable(uint8_t& o_value)
-{
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VPP_OFFSET_DISABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VPP_OFFSET_DISABLE: 0x%lx (system target)",
- uint64_t(fapi2::current_err));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_MSS_VDDR_OFFSET_DISABLE getter
-/// @param[out] uint8_t& reference to store the value
-/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Used for to determine whether to apply an offset to VDDR. Supplied by
-/// MRW.
-///
-inline fapi2::ReturnCode vddr_offset_disable(uint8_t& o_value)
-{
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VDDR_OFFSET_DISABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VDDR_OFFSET_DISABLE: 0x%lx (system target)",
- uint64_t(fapi2::current_err));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_MSS_AVDD_SLOPE_ACTIVE getter
-/// @param[out] uint32_t& reference to store the value
-/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Slope value used to determine the dynamic VID AVDD adjustment for ACTIVE parts.
-/// In
-/// uV/Centaur.
-///
-inline fapi2::ReturnCode avdd_slope_active(uint32_t& o_value)
-{
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_AVDD_SLOPE_ACTIVE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_AVDD_SLOPE_ACTIVE: 0x%lx (system target)",
- uint64_t(fapi2::current_err));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_MSS_AVDD_SLOPE_INACTIVE getter
-/// @param[out] uint32_t& reference to store the value
-/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Slope value used to determine the dynamic VID AVDD adjustment for INACTIVE
-/// parts. In
-/// uV/Centaur.
-///
-inline fapi2::ReturnCode avdd_slope_inactive(uint32_t& o_value)
-{
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_AVDD_SLOPE_INACTIVE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_AVDD_SLOPE_INACTIVE: 0x%lx (system target)",
- uint64_t(fapi2::current_err));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_MSS_AVDD_SLOPE_INTERCEPT getter
-/// @param[out] uint32_t& reference to store the value
-/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Intercept value used to determine the dynamic VID AVDD adjustment for all parts.
-/// In
-/// mV.
-///
-inline fapi2::ReturnCode avdd_slope_intercept(uint32_t& o_value)
-{
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_AVDD_SLOPE_INTERCEPT, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_AVDD_SLOPE_INTERCEPT: 0x%lx (system target)",
- uint64_t(fapi2::current_err));
- return fapi2::current_err;
-}
-
-///
/// @brief ATTR_MSS_VOLT_OVERRIDE getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCBIST>
/// @param[out] uint8_t& reference to store the value
/// @note Generated by gen_accessors.pl generateParameters (MCBIST A)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Possible DRAM voltage
-/// override.
+/// @note Possible DRAM voltage override. Firmware notes: Default should be NONE
+/// (0x00).
///
inline fapi2::ReturnCode volt_override(const fapi2::Target<fapi2::TARGET_TYPE_MCBIST>& i_target, uint8_t& o_value)
{
@@ -15389,28 +12698,6 @@ fapi_try_exit:
}
///
-/// @brief ATTR_MSS_VOLT_COMPLIANT_DIMMS getter
-/// @param[out] uint8_t& reference to store the value
-/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note List of Voltages that are compliant with the system. DIMMs that do not have
-/// voltages listed in their SPD as supported are errored out. Procedure defined is
-/// currently 1.2V and 1.35V
-/// only.
-///
-inline fapi2::ReturnCode volt_compliant_dimms(uint8_t& o_value)
-{
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_VOLT_COMPLIANT_DIMMS, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MSS_VOLT_COMPLIANT_DIMMS: 0x%lx (system target)",
- uint64_t(fapi2::current_err));
- return fapi2::current_err;
-}
-
-///
/// @brief ATTR_MSS_VDDR_OVERIDE_SPD getter
/// @param[out] uint8_t& reference to store the value
/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
@@ -15736,3717 +13023,6 @@ fapi_try_exit:
}
///
-/// @brief ATTR_EFF_DRAM_TMAW getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
-/// @param[out] ref to the value uint16_t
-/// @note Generated by gen_accessors.pl generateParameters (F)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Maximum Activate Window. Used in various locations and is computed in
-/// mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_tmaw(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint16_t& o_value)
-{
- uint16_t l_value[2][2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TMAW, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TMAW: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TMAW getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint16_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Maximum Activate Window. Used in various locations and is computed in
-/// mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_tmaw(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint16_t* o_array)
-{
- if (o_array == nullptr)
- {
- FAPI_ERR("nullptr passed to attribute accessor %s", __func__);
- return fapi2::FAPI2_RC_INVALID_PARAMETER;
- }
-
- uint16_t l_value[2][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TMAW, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 4);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TMAW: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_TMAW getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[out] uint16_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (H)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Maximum Activate Window. Used in various locations and is computed in
-/// mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_tmaw(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint16_t* o_array)
-{
- if (o_array == nullptr)
- {
- FAPI_ERR("nullptr passed to attribute accessor %s", __func__);
- return fapi2::FAPI2_RC_INVALID_PARAMETER;
- }
-
- uint16_t l_value[2][2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TMAW, i_target, l_value) );
- memcpy(o_array, &l_value, 8);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TMAW: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_PPR 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 (F)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Post Package Repair. Used in various locations and is evaluated in mss_eff_cnfg.
-/// creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_ppr(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
-{
- uint8_t l_value[2][2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_PPR, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_PPR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_PPR getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint8_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Post Package Repair. Used in various locations and is evaluated in mss_eff_cnfg.
-/// creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_ppr(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& 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][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_PPR, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_PPR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_PPR 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 (H)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Post Package Repair. Used in various locations and is evaluated in mss_eff_cnfg.
-/// creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_ppr(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][2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_PPR, i_target, l_value) );
- memcpy(o_array, &l_value, 4);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_PPR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_SOFT_PPR 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 (F)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Soft Post Package Repair. Used in various locations and is evaluated in
-/// mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_soft_ppr(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
-{
- uint8_t l_value[2][2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_SOFT_PPR, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_SOFT_PPR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_SOFT_PPR getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint8_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Soft Post Package Repair. Used in various locations and is evaluated in
-/// mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_soft_ppr(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& 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][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_SOFT_PPR, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_SOFT_PPR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_SOFT_PPR 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 (H)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Soft Post Package Repair. Used in various locations and is evaluated in
-/// mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_soft_ppr(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][2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_SOFT_PPR, i_target, l_value) );
- memcpy(o_array, &l_value, 4);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_SOFT_PPR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_MR_LAYOUT_VERSION 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode layout_version(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_VPD_CEN_MR_LAYOUT_VERSION, 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_VPD_CEN_MR_LAYOUT_VERSION: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_MR_LAYOUT_VERSION 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode layout_version(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_VPD_CEN_MR_LAYOUT_VERSION, 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_VPD_CEN_MR_LAYOUT_VERSION: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_MR_LAYOUT_VERSION 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode layout_version(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_VPD_CEN_MR_LAYOUT_VERSION, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_MR_LAYOUT_VERSION: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_MR_DATA_VERSION 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode data_version(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_VPD_CEN_MR_DATA_VERSION, 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_VPD_CEN_MR_DATA_VERSION: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_MR_DATA_VERSION 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode data_version(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_VPD_CEN_MR_DATA_VERSION, 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_VPD_CEN_MR_DATA_VERSION: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_MR_DATA_VERSION 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode data_version(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_VPD_CEN_MR_DATA_VERSION, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_MR_DATA_VERSION: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A0 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a0(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_VPD_CEN_PHASE_ROT_ADDR_A0, 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_VPD_CEN_PHASE_ROT_ADDR_A0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A0 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a0(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_VPD_CEN_PHASE_ROT_ADDR_A0, 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_VPD_CEN_PHASE_ROT_ADDR_A0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A0 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a0(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_VPD_CEN_PHASE_ROT_ADDR_A0, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A1 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a1(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_VPD_CEN_PHASE_ROT_ADDR_A1, 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_VPD_CEN_PHASE_ROT_ADDR_A1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A1 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a1(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_VPD_CEN_PHASE_ROT_ADDR_A1, 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_VPD_CEN_PHASE_ROT_ADDR_A1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A1 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a1(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_VPD_CEN_PHASE_ROT_ADDR_A1, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a2(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_VPD_CEN_PHASE_ROT_ADDR_A2, 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_VPD_CEN_PHASE_ROT_ADDR_A2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a2(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_VPD_CEN_PHASE_ROT_ADDR_A2, 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_VPD_CEN_PHASE_ROT_ADDR_A2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a2(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_VPD_CEN_PHASE_ROT_ADDR_A2, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A3 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A3 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a3(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_VPD_CEN_PHASE_ROT_ADDR_A3, 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_VPD_CEN_PHASE_ROT_ADDR_A3: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A3 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A3 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a3(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_VPD_CEN_PHASE_ROT_ADDR_A3, 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_VPD_CEN_PHASE_ROT_ADDR_A3: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A3 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A3 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a3(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_VPD_CEN_PHASE_ROT_ADDR_A3, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A3: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A4 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A4 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a4(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_VPD_CEN_PHASE_ROT_ADDR_A4, 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_VPD_CEN_PHASE_ROT_ADDR_A4: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A4 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A4 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a4(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_VPD_CEN_PHASE_ROT_ADDR_A4, 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_VPD_CEN_PHASE_ROT_ADDR_A4: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A4 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A4 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a4(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_VPD_CEN_PHASE_ROT_ADDR_A4, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A4: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A5 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A5 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a5(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_VPD_CEN_PHASE_ROT_ADDR_A5, 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_VPD_CEN_PHASE_ROT_ADDR_A5: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A5 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A5 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a5(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_VPD_CEN_PHASE_ROT_ADDR_A5, 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_VPD_CEN_PHASE_ROT_ADDR_A5: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A5 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A5 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a5(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_VPD_CEN_PHASE_ROT_ADDR_A5, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A5: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A6 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A6 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a6(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_VPD_CEN_PHASE_ROT_ADDR_A6, 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_VPD_CEN_PHASE_ROT_ADDR_A6: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A6 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A6 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a6(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_VPD_CEN_PHASE_ROT_ADDR_A6, 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_VPD_CEN_PHASE_ROT_ADDR_A6: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A6 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A6 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a6(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_VPD_CEN_PHASE_ROT_ADDR_A6, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A6: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A7 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A7 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a7(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_VPD_CEN_PHASE_ROT_ADDR_A7, 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_VPD_CEN_PHASE_ROT_ADDR_A7: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A7 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A7 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a7(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_VPD_CEN_PHASE_ROT_ADDR_A7, 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_VPD_CEN_PHASE_ROT_ADDR_A7: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A7 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A7 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a7(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_VPD_CEN_PHASE_ROT_ADDR_A7, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A7: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A8 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A8 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a8(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_VPD_CEN_PHASE_ROT_ADDR_A8, 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_VPD_CEN_PHASE_ROT_ADDR_A8: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A8 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A8 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a8(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_VPD_CEN_PHASE_ROT_ADDR_A8, 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_VPD_CEN_PHASE_ROT_ADDR_A8: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A8 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A8 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a8(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_VPD_CEN_PHASE_ROT_ADDR_A8, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A8: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A9 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A9 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a9(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_VPD_CEN_PHASE_ROT_ADDR_A9, 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_VPD_CEN_PHASE_ROT_ADDR_A9: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A9 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A9 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a9(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_VPD_CEN_PHASE_ROT_ADDR_A9, 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_VPD_CEN_PHASE_ROT_ADDR_A9: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A9 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A9 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a9(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_VPD_CEN_PHASE_ROT_ADDR_A9, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A9: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A10 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A10 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a10(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_VPD_CEN_PHASE_ROT_ADDR_A10, 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_VPD_CEN_PHASE_ROT_ADDR_A10: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A10 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A10 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a10(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_VPD_CEN_PHASE_ROT_ADDR_A10, 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_VPD_CEN_PHASE_ROT_ADDR_A10: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A10 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A10 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a10(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_VPD_CEN_PHASE_ROT_ADDR_A10, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A10: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A11 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A11 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a11(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_VPD_CEN_PHASE_ROT_ADDR_A11, 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_VPD_CEN_PHASE_ROT_ADDR_A11: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A11 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A11 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a11(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_VPD_CEN_PHASE_ROT_ADDR_A11, 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_VPD_CEN_PHASE_ROT_ADDR_A11: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A11 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A11 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a11(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_VPD_CEN_PHASE_ROT_ADDR_A11, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A11: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A12 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A12 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a12(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_VPD_CEN_PHASE_ROT_ADDR_A12, 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_VPD_CEN_PHASE_ROT_ADDR_A12: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A12 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A12 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a12(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_VPD_CEN_PHASE_ROT_ADDR_A12, 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_VPD_CEN_PHASE_ROT_ADDR_A12: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A12 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A12 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a12(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_VPD_CEN_PHASE_ROT_ADDR_A12, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A12: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A13 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A13 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a13(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_VPD_CEN_PHASE_ROT_ADDR_A13, 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_VPD_CEN_PHASE_ROT_ADDR_A13: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A13 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A13 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a13(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_VPD_CEN_PHASE_ROT_ADDR_A13, 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_VPD_CEN_PHASE_ROT_ADDR_A13: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A13 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A13 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a13(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_VPD_CEN_PHASE_ROT_ADDR_A13, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A13: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A17 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A17 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a17(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_VPD_CEN_PHASE_ROT_ADDR_A17, 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_VPD_CEN_PHASE_ROT_ADDR_A17: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A17 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A17 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a17(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_VPD_CEN_PHASE_ROT_ADDR_A17, 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_VPD_CEN_PHASE_ROT_ADDR_A17: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_A17 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_A17 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_a17(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_VPD_CEN_PHASE_ROT_ADDR_A17, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_A17: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_C0 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_C0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_c0(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_VPD_CEN_PHASE_ROT_ADDR_C0, 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_VPD_CEN_PHASE_ROT_ADDR_C0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_C0 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_C0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_c0(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_VPD_CEN_PHASE_ROT_ADDR_C0, 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_VPD_CEN_PHASE_ROT_ADDR_C0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_C0 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_C0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_c0(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_VPD_CEN_PHASE_ROT_ADDR_C0, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_C0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_C1 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_C1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_c1(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_VPD_CEN_PHASE_ROT_ADDR_C1, 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_VPD_CEN_PHASE_ROT_ADDR_C1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_C1 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_C1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_c1(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_VPD_CEN_PHASE_ROT_ADDR_C1, 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_VPD_CEN_PHASE_ROT_ADDR_C1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_C1 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_C1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_c1(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_VPD_CEN_PHASE_ROT_ADDR_C1, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_C1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_C2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_C2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_c2(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_VPD_CEN_PHASE_ROT_ADDR_C2, 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_VPD_CEN_PHASE_ROT_ADDR_C2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_C2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_C2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_c2(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_VPD_CEN_PHASE_ROT_ADDR_C2, 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_VPD_CEN_PHASE_ROT_ADDR_C2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_C2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_C2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_c2(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_VPD_CEN_PHASE_ROT_ADDR_C2, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_C2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_BA0 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_BA0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_ba0(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_VPD_CEN_PHASE_ROT_ADDR_BA0, 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_VPD_CEN_PHASE_ROT_ADDR_BA0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_BA0 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_BA0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_ba0(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_VPD_CEN_PHASE_ROT_ADDR_BA0, 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_VPD_CEN_PHASE_ROT_ADDR_BA0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_BA0 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_BA0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_ba0(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_VPD_CEN_PHASE_ROT_ADDR_BA0, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_BA0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_BA1 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_BA1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_ba1(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_VPD_CEN_PHASE_ROT_ADDR_BA1, 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_VPD_CEN_PHASE_ROT_ADDR_BA1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_BA1 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_BA1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_ba1(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_VPD_CEN_PHASE_ROT_ADDR_BA1, 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_VPD_CEN_PHASE_ROT_ADDR_BA1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_BA1 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_BA1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_ba1(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_VPD_CEN_PHASE_ROT_ADDR_BA1, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_BA1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_BG0 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_BG0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_bg0(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_VPD_CEN_PHASE_ROT_ADDR_BG0, 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_VPD_CEN_PHASE_ROT_ADDR_BG0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_BG0 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_BG0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_bg0(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_VPD_CEN_PHASE_ROT_ADDR_BG0, 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_VPD_CEN_PHASE_ROT_ADDR_BG0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_BG0 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_BG0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_bg0(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_VPD_CEN_PHASE_ROT_ADDR_BG0, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_BG0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_BG1 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_BG1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_bg1(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_VPD_CEN_PHASE_ROT_ADDR_BG1, 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_VPD_CEN_PHASE_ROT_ADDR_BG1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_BG1 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_BG1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_bg1(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_VPD_CEN_PHASE_ROT_ADDR_BG1, 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_VPD_CEN_PHASE_ROT_ADDR_BG1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_ADDR_BG1 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_ADDR_BG1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_addr_bg1(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_VPD_CEN_PHASE_ROT_ADDR_BG1, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_ADDR_BG1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CLK0 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 (F)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CLK0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_clk0(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
-{
- uint8_t l_value[2][2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_VPD_CEN_PHASE_ROT_CLK0, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CLK0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CLK0 getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint8_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CLK0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_clk0(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& 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][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_VPD_CEN_PHASE_ROT_CLK0, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CLK0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CLK0 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 (H)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CLK0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_clk0(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][2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_VPD_CEN_PHASE_ROT_CLK0, i_target, l_value) );
- memcpy(o_array, &l_value, 4);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CLK0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CLK1 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 (F)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CLK1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_clk1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
-{
- uint8_t l_value[2][2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_VPD_CEN_PHASE_ROT_CLK1, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CLK1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CLK1 getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint8_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CLK1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_clk1(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& 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][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_VPD_CEN_PHASE_ROT_CLK1, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CLK1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CLK1 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 (H)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Phase rotator value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CLK1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_clk1(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][2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_VPD_CEN_PHASE_ROT_CLK1, i_target, l_value) );
- memcpy(o_array, &l_value, 4);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CLK1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_ACTN creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode 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_VPD_CEN_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_VPD_CEN_PHASE_ROT_CMD_ACTN: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_ACTN creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode 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_VPD_CEN_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_VPD_CEN_PHASE_ROT_CMD_ACTN: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_ACTN creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cmd_actn(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_VPD_CEN_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_VPD_CEN_PHASE_ROT_CMD_ACTN: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_ADDR_WEN_A14 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode 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_VPD_CEN_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_VPD_CEN_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_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_ADDR_WEN_A14 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode 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_VPD_CEN_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_VPD_CEN_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_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_ADDR_WEN_A14 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cmd_addr_wen_a14(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_VPD_CEN_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_VPD_CEN_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_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_ADDR_CASN_A15 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode 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_VPD_CEN_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_VPD_CEN_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_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_ADDR_CASN_A15 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode 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_VPD_CEN_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_VPD_CEN_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_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_ADDR_CASN_A15 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cmd_addr_casn_a15(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_VPD_CEN_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_VPD_CEN_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_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_ADDR_RASN_A16 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode 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_VPD_CEN_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_VPD_CEN_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_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_ADDR_RASN_A16 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode 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_VPD_CEN_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_VPD_CEN_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_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_ADDR_RASN_A16 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cmd_addr_rasn_a16(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_VPD_CEN_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_VPD_CEN_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_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_PAR creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode 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_VPD_CEN_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_VPD_CEN_PHASE_ROT_CMD_PAR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_PAR creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode 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_VPD_CEN_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_VPD_CEN_PHASE_ROT_CMD_PAR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CMD_PAR creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cmd_par(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_VPD_CEN_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_VPD_CEN_PHASE_ROT_CMD_PAR: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CKE0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_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_VPD_CEN_PHASE_ROT_CNTL_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_VPD_CEN_PHASE_ROT_CNTL_CKE0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CKE0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_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_VPD_CEN_PHASE_ROT_CNTL_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_VPD_CEN_PHASE_ROT_CNTL_CKE0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CKE0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_cke0(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_VPD_CEN_PHASE_ROT_CNTL_CKE0, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CNTL_CKE0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CKE1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_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_VPD_CEN_PHASE_ROT_CNTL_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_VPD_CEN_PHASE_ROT_CNTL_CKE1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CKE1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_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_VPD_CEN_PHASE_ROT_CNTL_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_VPD_CEN_PHASE_ROT_CNTL_CKE1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CKE1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_cke1(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_VPD_CEN_PHASE_ROT_CNTL_CKE1, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CNTL_CKE1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_CKE2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CKE2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_cke2(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_VPD_CEN_PHASE_ROT_CNTL_CKE2, 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_VPD_CEN_PHASE_ROT_CNTL_CKE2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_CKE2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CKE2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_cke2(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_VPD_CEN_PHASE_ROT_CNTL_CKE2, 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_VPD_CEN_PHASE_ROT_CNTL_CKE2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_CKE2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CKE2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_cke2(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_VPD_CEN_PHASE_ROT_CNTL_CKE2, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CNTL_CKE2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_CKE3 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CKE3 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_cke3(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_VPD_CEN_PHASE_ROT_CNTL_CKE3, 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_VPD_CEN_PHASE_ROT_CNTL_CKE3: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_CKE3 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CKE3 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_cke3(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_VPD_CEN_PHASE_ROT_CNTL_CKE3, 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_VPD_CEN_PHASE_ROT_CNTL_CKE3: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_CKE3 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CKE3 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_cke3(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_VPD_CEN_PHASE_ROT_CNTL_CKE3, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CNTL_CKE3: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CSN0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_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_VPD_CEN_PHASE_ROT_CNTL_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_VPD_CEN_PHASE_ROT_CNTL_CSN0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CSN0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_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_VPD_CEN_PHASE_ROT_CNTL_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_VPD_CEN_PHASE_ROT_CNTL_CSN0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CSN0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_csn0(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_VPD_CEN_PHASE_ROT_CNTL_CSN0, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CNTL_CSN0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CSN1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_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_VPD_CEN_PHASE_ROT_CNTL_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_VPD_CEN_PHASE_ROT_CNTL_CSN1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CSN1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_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_VPD_CEN_PHASE_ROT_CNTL_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_VPD_CEN_PHASE_ROT_CNTL_CSN1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CSN1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_csn1(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_VPD_CEN_PHASE_ROT_CNTL_CSN1, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CNTL_CSN1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_CSN2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CSN2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_csn2(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_VPD_CEN_PHASE_ROT_CNTL_CSN2, 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_VPD_CEN_PHASE_ROT_CNTL_CSN2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_CSN2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CSN2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_csn2(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_VPD_CEN_PHASE_ROT_CNTL_CSN2, 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_VPD_CEN_PHASE_ROT_CNTL_CSN2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_CSN2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CSN2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_csn2(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_VPD_CEN_PHASE_ROT_CNTL_CSN2, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CNTL_CSN2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_CSN3 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CSN3 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_csn3(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_VPD_CEN_PHASE_ROT_CNTL_CSN3, 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_VPD_CEN_PHASE_ROT_CNTL_CSN3: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_CSN3 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CSN3 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_csn3(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_VPD_CEN_PHASE_ROT_CNTL_CSN3, 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_VPD_CEN_PHASE_ROT_CNTL_CSN3: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_CSN3 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_CSN3 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_csn3(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_VPD_CEN_PHASE_ROT_CNTL_CSN3, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CNTL_CSN3: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_ODT0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_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_VPD_CEN_PHASE_ROT_CNTL_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_VPD_CEN_PHASE_ROT_CNTL_ODT0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_ODT0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_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_VPD_CEN_PHASE_ROT_CNTL_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_VPD_CEN_PHASE_ROT_CNTL_ODT0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_ODT0 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_odt0(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_VPD_CEN_PHASE_ROT_CNTL_ODT0, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CNTL_ODT0: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_ODT1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_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_VPD_CEN_PHASE_ROT_CNTL_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_VPD_CEN_PHASE_ROT_CNTL_ODT1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_ODT1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_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_VPD_CEN_PHASE_ROT_CNTL_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_VPD_CEN_PHASE_ROT_CNTL_ODT1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_ODT1 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_odt1(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_VPD_CEN_PHASE_ROT_CNTL_ODT1, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CNTL_ODT1: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_ODT2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_ODT2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_odt2(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_VPD_CEN_PHASE_ROT_CNTL_ODT2, 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_VPD_CEN_PHASE_ROT_CNTL_ODT2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_ODT2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_ODT2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_odt2(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_VPD_CEN_PHASE_ROT_CNTL_ODT2, 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_VPD_CEN_PHASE_ROT_CNTL_ODT2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_ODT2 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_ODT2 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_odt2(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_VPD_CEN_PHASE_ROT_CNTL_ODT2, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CNTL_ODT2: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_ODT3 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_ODT3 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_odt3(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_VPD_CEN_PHASE_ROT_CNTL_ODT3, 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_VPD_CEN_PHASE_ROT_CNTL_ODT3: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_ODT3 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_ODT3 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_odt3(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_VPD_CEN_PHASE_ROT_CNTL_ODT3, 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_VPD_CEN_PHASE_ROT_CNTL_ODT3: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_VPD_CEN_PHASE_ROT_CNTL_ODT3 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 value that comes from MR keyword on the CDIMM VPD. This controls
-/// the IO PHASE_ROT_CNTL_ODT3 creator:vpd consumer: various fw
-/// notes:
-///
-inline fapi2::ReturnCode phase_rot_cntl_odt3(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_VPD_CEN_PHASE_ROT_CNTL_ODT3, i_target, l_value) );
- memcpy(o_array, &l_value, 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_CEN_PHASE_ROT_CNTL_ODT3: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
/// @brief ATTR_VPD_RLO getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] ref to the value uint8_t
@@ -19701,186 +13277,6 @@ fapi_try_exit:
}
///
-/// @brief ATTR_EFF_DRAM_MIN_CYCLE_TIME 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 (F)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Minimum Cycle time for SDRAM module. Used in various locations and is evaluated
-/// in mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_min_cycle_time(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- uint8_t& o_value)
-{
- uint8_t l_value[2][2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_MIN_CYCLE_TIME, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_MIN_CYCLE_TIME: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_MIN_CYCLE_TIME getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint8_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Minimum Cycle time for SDRAM module. Used in various locations and is evaluated
-/// in mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_min_cycle_time(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& 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][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_MIN_CYCLE_TIME, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_MIN_CYCLE_TIME: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_MIN_CYCLE_TIME 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 (H)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Minimum Cycle time for SDRAM module. Used in various locations and is evaluated
-/// in mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_min_cycle_time(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][2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_MIN_CYCLE_TIME, i_target, l_value) );
- memcpy(o_array, &l_value, 4);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_MIN_CYCLE_TIME: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_MAX_CYCLE_TIME 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 (F)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Maximum Cycle time for SDRAM module. Used in various locations and is evaluated
-/// in mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_max_cycle_time(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- uint8_t& o_value)
-{
- uint8_t l_value[2][2];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_MAX_CYCLE_TIME, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_MAX_CYCLE_TIME: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_MAX_CYCLE_TIME getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint8_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Maximum Cycle time for SDRAM module. Used in various locations and is evaluated
-/// in mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_max_cycle_time(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& 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][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_MAX_CYCLE_TIME, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_MAX_CYCLE_TIME: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
-/// @brief ATTR_EFF_DRAM_MAX_CYCLE_TIME 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 (H)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Maximum Cycle time for SDRAM module. Used in various locations and is evaluated
-/// in mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
-/// none
-///
-inline fapi2::ReturnCode eff_dram_max_cycle_time(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][2];
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_MAX_CYCLE_TIME, i_target, l_value) );
- memcpy(o_array, &l_value, 4);
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_MAX_CYCLE_TIME: 0x%lx (target: %s)",
- uint64_t(fapi2::current_err), mss::c_str(i_target));
- return fapi2::current_err;
-}
-
-///
/// @brief ATTR_EFF_DIMM_DDR4_BC00 getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] ref to the value uint8_t
@@ -25119,46 +18515,48 @@ fapi_try_exit:
}
///
-/// @brief ATTR_SPD_CAS_LATENCIES_SUPPORTED getter
+/// @brief ATTR_EFF_ODT_RD getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
-/// @param[out] ref to the value uint64_t
-/// @note Generated by gen_accessors.pl generateParameters (F)
+/// @param[out] uint8_t* memory to store the value
+/// @note Generated by gen_accessors.pl generateParameters (A)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note CAS Latencies supported (bitmap). Located in DDR4 SPD byte 20 (LSB) through byte
-/// 23 The raw data has different meanings for DDR3 and DDR4. HWPs must use this DDR
-/// neutral enumeration to decode. Platform support must call an Accessor
-/// HWP.
+/// @note Read ODT. Used in various locations and comes from the MT keyword of the VPD
+/// creator: eff_config consumer: various and initfiles firmware notes:
+/// none
///
-inline fapi2::ReturnCode cas_latencies_supported(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- uint64_t& o_value)
+inline fapi2::ReturnCode eff_odt_rd(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t* o_array)
{
- uint64_t l_value[2][2];
+ if (o_array == nullptr)
+ {
+ FAPI_ERR("nullptr passed to attribute accessor %s", __func__);
+ return fapi2::FAPI2_RC_INVALID_PARAMETER;
+ }
+
+ uint8_t l_value[2][2][4];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_SPD_CAS_LATENCIES_SUPPORTED, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_ODT_RD, l_mcs, l_value) );
+ memcpy(o_array, &(l_value[mss::index(l_mca)][mss::index(i_target)][0]), 4);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_SPD_CAS_LATENCIES_SUPPORTED: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_ODT_RD: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_SPD_CAS_LATENCIES_SUPPORTED getter
+/// @brief ATTR_EFF_ODT_RD getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint64_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
+/// @param[out] uint8_t* memory to store the value
+/// @note Generated by gen_accessors.pl generateParameters (B)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note CAS Latencies supported (bitmap). Located in DDR4 SPD byte 20 (LSB) through byte
-/// 23 The raw data has different meanings for DDR3 and DDR4. HWPs must use this DDR
-/// neutral enumeration to decode. Platform support must call an Accessor
-/// HWP.
+/// @note Read ODT. Used in various locations and comes from the MT keyword of the VPD
+/// creator: eff_config consumer: various and initfiles firmware notes:
+/// none
///
-inline fapi2::ReturnCode cas_latencies_supported(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
- uint64_t* o_array)
+inline fapi2::ReturnCode eff_odt_rd(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25166,32 +18564,30 @@ inline fapi2::ReturnCode cas_latencies_supported(const fapi2::Target<fapi2::TARG
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint64_t l_value[2][2];
+ uint8_t l_value[2][2][4];
auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_SPD_CAS_LATENCIES_SUPPORTED, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 16);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_ODT_RD, l_mcs, l_value) );
+ memcpy(o_array, &(l_value[mss::index(i_target)][0]), 8);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_SPD_CAS_LATENCIES_SUPPORTED: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_ODT_RD: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_SPD_CAS_LATENCIES_SUPPORTED getter
+/// @brief ATTR_EFF_ODT_RD getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[out] uint64_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (H)
+/// @param[out] uint8_t* memory to store the value
+/// @note Generated by gen_accessors.pl generateParameters (C)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note CAS Latencies supported (bitmap). Located in DDR4 SPD byte 20 (LSB) through byte
-/// 23 The raw data has different meanings for DDR3 and DDR4. HWPs must use this DDR
-/// neutral enumeration to decode. Platform support must call an Accessor
-/// HWP.
+/// @note Read ODT. Used in various locations and comes from the MT keyword of the VPD
+/// creator: eff_config consumer: various and initfiles firmware notes:
+/// none
///
-inline fapi2::ReturnCode cas_latencies_supported(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
- uint64_t* o_array)
+inline fapi2::ReturnCode eff_odt_rd(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25199,55 +18595,61 @@ inline fapi2::ReturnCode cas_latencies_supported(const fapi2::Target<fapi2::TARG
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint64_t l_value[2][2];
+ uint8_t l_value[2][2][4];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_SPD_CAS_LATENCIES_SUPPORTED, i_target, l_value) );
- memcpy(o_array, &l_value, 32);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_ODT_RD, i_target, l_value) );
+ memcpy(o_array, &l_value, 16);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_SPD_CAS_LATENCIES_SUPPORTED: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_ODT_RD: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_SPD_MODULE_THERMAL_SENSOR getter
+/// @brief ATTR_EFF_ODT_WR 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 (F)
+/// @param[out] uint8_t* memory to store the value
+/// @note Generated by gen_accessors.pl generateParameters (A)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Module Thermal Sensor. Located in DDR4 SPD byte
-/// 14.
+/// @note Write ODT. Used in various locations and comes from the MT keyword of the VPD
+/// Creator: mss_eff_config consumer: various and initfile firmware notes:
+/// none
///
-inline fapi2::ReturnCode spd_module_thermal_sensor(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- uint8_t& o_value)
+inline fapi2::ReturnCode eff_odt_wr(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t* o_array)
{
- uint8_t l_value[2][2];
+ if (o_array == nullptr)
+ {
+ FAPI_ERR("nullptr passed to attribute accessor %s", __func__);
+ return fapi2::FAPI2_RC_INVALID_PARAMETER;
+ }
+
+ uint8_t l_value[2][2][4];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_SPD_MODULE_THERMAL_SENSOR, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_ODT_WR, l_mcs, l_value) );
+ memcpy(o_array, &(l_value[mss::index(l_mca)][mss::index(i_target)][0]), 4);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_SPD_MODULE_THERMAL_SENSOR: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_ODT_WR: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_SPD_MODULE_THERMAL_SENSOR getter
+/// @brief ATTR_EFF_ODT_WR getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] uint8_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
+/// @note Generated by gen_accessors.pl generateParameters (B)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Module Thermal Sensor. Located in DDR4 SPD byte
-/// 14.
+/// @note Write ODT. Used in various locations and comes from the MT keyword of the VPD
+/// Creator: mss_eff_config consumer: various and initfile firmware notes:
+/// none
///
-inline fapi2::ReturnCode spd_module_thermal_sensor(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
- uint8_t* o_array)
+inline fapi2::ReturnCode eff_odt_wr(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25255,30 +18657,30 @@ inline fapi2::ReturnCode spd_module_thermal_sensor(const fapi2::Target<fapi2::TA
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint8_t l_value[2][2];
+ uint8_t l_value[2][2][4];
auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_SPD_MODULE_THERMAL_SENSOR, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_ODT_WR, l_mcs, l_value) );
+ memcpy(o_array, &(l_value[mss::index(i_target)][0]), 8);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_SPD_MODULE_THERMAL_SENSOR: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_ODT_WR: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_SPD_MODULE_THERMAL_SENSOR getter
+/// @brief ATTR_EFF_ODT_WR 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 (H)
+/// @note Generated by gen_accessors.pl generateParameters (C)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Module Thermal Sensor. Located in DDR4 SPD byte
-/// 14.
+/// @note Write ODT. Used in various locations and comes from the MT keyword of the VPD
+/// Creator: mss_eff_config consumer: various and initfile firmware notes:
+/// none
///
-inline fapi2::ReturnCode spd_module_thermal_sensor(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
- uint8_t* o_array)
+inline fapi2::ReturnCode eff_odt_wr(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25286,55 +18688,55 @@ inline fapi2::ReturnCode spd_module_thermal_sensor(const fapi2::Target<fapi2::TA
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint8_t l_value[2][2];
+ uint8_t l_value[2][2][4];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_SPD_MODULE_THERMAL_SENSOR, i_target, l_value) );
- memcpy(o_array, &l_value, 4);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_ODT_WR, i_target, l_value) );
+ memcpy(o_array, &l_value, 16);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_SPD_MODULE_THERMAL_SENSOR: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_ODT_WR: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_SPD_MODULE_NOMINAL_VOLTAGE getter
+/// @brief ATTR_EFF_DRAM_RON getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
-/// @param[out] ref to the value uint64_t
+/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (F)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note mss_eff_config should decode the nominal voltage in milivolts and write out the
-/// value
+/// @note DRAM Ron. Used in various locations and comes from the MT keyword of the VPD
+/// OHM48 is for
+/// DDR4.
///
-inline fapi2::ReturnCode spd_module_nominal_voltage(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
- uint64_t& o_value)
+inline fapi2::ReturnCode eff_dram_ron(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
{
- uint64_t l_value[2][2];
+ uint8_t l_value[2][2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_SPD_MODULE_NOMINAL_VOLTAGE, l_mcs, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RON, l_mcs, l_value) );
o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_SPD_MODULE_NOMINAL_VOLTAGE: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_RON: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_SPD_MODULE_NOMINAL_VOLTAGE getter
+/// @brief ATTR_EFF_DRAM_RON getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint64_t* memory to store the value
+/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (G)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note mss_eff_config should decode the nominal voltage in milivolts and write out the
-/// value
+/// @note DRAM Ron. Used in various locations and comes from the MT keyword of the VPD
+/// OHM48 is for
+/// DDR4.
///
-inline fapi2::ReturnCode spd_module_nominal_voltage(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target,
- uint64_t* o_array)
+inline fapi2::ReturnCode eff_dram_ron(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25342,30 +18744,30 @@ inline fapi2::ReturnCode spd_module_nominal_voltage(const fapi2::Target<fapi2::T
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint64_t l_value[2][2];
+ uint8_t l_value[2][2];
auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_SPD_MODULE_NOMINAL_VOLTAGE, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 16);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RON, l_mcs, l_value) );
+ memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_SPD_MODULE_NOMINAL_VOLTAGE: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_RON: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_SPD_MODULE_NOMINAL_VOLTAGE getter
+/// @brief ATTR_EFF_DRAM_RON getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[out] uint64_t* memory to store the value
+/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (H)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note mss_eff_config should decode the nominal voltage in milivolts and write out the
-/// value
+/// @note DRAM Ron. Used in various locations and comes from the MT keyword of the VPD
+/// OHM48 is for
+/// DDR4.
///
-inline fapi2::ReturnCode spd_module_nominal_voltage(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
- uint64_t* o_array)
+inline fapi2::ReturnCode eff_dram_ron(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25373,31 +18775,28 @@ inline fapi2::ReturnCode spd_module_nominal_voltage(const fapi2::Target<fapi2::T
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint64_t l_value[2][2];
+ uint8_t l_value[2][2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_SPD_MODULE_NOMINAL_VOLTAGE, i_target, l_value) );
- memcpy(o_array, &l_value, 32);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RON, i_target, l_value) );
+ memcpy(o_array, &l_value, 4);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_SPD_MODULE_NOMINAL_VOLTAGE: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_RON: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_ODT_RD getter
+/// @brief ATTR_EFF_DRAM_RTT_NOM getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (A)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Read ODT. Used in various locations and comes from the MT keyword of the VPD or
-/// is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or odm_eff_cnfg. creator: VPD(MT),mss_eff_cnfg_termination
-/// consumer: various.C files and initfiles firmware notes:
-/// none
+/// @note DRAM Rtt_Nom. Used in various locations and comes from the MT keyword of the
+/// VPD
///
-inline fapi2::ReturnCode eff_odt_rd(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_rtt_nom(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25409,29 +18808,26 @@ inline fapi2::ReturnCode eff_odt_rd(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_ODT_RD, l_mcs, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RTT_NOM, l_mcs, l_value) );
memcpy(o_array, &(l_value[mss::index(l_mca)][mss::index(i_target)][0]), 4);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_ODT_RD: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_RTT_NOM: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_ODT_RD getter
+/// @brief ATTR_EFF_DRAM_RTT_NOM getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (B)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Read ODT. Used in various locations and comes from the MT keyword of the VPD or
-/// is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or odm_eff_cnfg. creator: VPD(MT),mss_eff_cnfg_termination
-/// consumer: various.C files and initfiles firmware notes:
-/// none
+/// @note DRAM Rtt_Nom. Used in various locations and comes from the MT keyword of the
+/// VPD
///
-inline fapi2::ReturnCode eff_odt_rd(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_rtt_nom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25442,29 +18838,26 @@ inline fapi2::ReturnCode eff_odt_rd(const fapi2::Target<fapi2::TARGET_TYPE_MCA>&
uint8_t l_value[2][2][4];
auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_ODT_RD, l_mcs, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RTT_NOM, l_mcs, l_value) );
memcpy(o_array, &(l_value[mss::index(i_target)][0]), 8);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_ODT_RD: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_RTT_NOM: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_ODT_RD getter
+/// @brief ATTR_EFF_DRAM_RTT_NOM 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 (C)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Read ODT. Used in various locations and comes from the MT keyword of the VPD or
-/// is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or odm_eff_cnfg. creator: VPD(MT),mss_eff_cnfg_termination
-/// consumer: various.C files and initfiles firmware notes:
-/// none
+/// @note DRAM Rtt_Nom. Used in various locations and comes from the MT keyword of the
+/// VPD
///
-inline fapi2::ReturnCode eff_odt_rd(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_rtt_nom(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25474,29 +18867,26 @@ inline fapi2::ReturnCode eff_odt_rd(const fapi2::Target<fapi2::TARGET_TYPE_MCS>&
uint8_t l_value[2][2][4];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_ODT_RD, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RTT_NOM, i_target, l_value) );
memcpy(o_array, &l_value, 16);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_ODT_RD: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_RTT_NOM: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_ODT_WR getter
+/// @brief ATTR_EFF_DRAM_RTT_WR getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (A)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Write ODT. Used in various locations and comes from the MT keyword of the VPD or
-/// is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or odm_eff_cnfg. Creator: VPD(MT)/ mss_eff_cnfg_termination
-/// consumer: various.C and initfile firmware notes:
-/// none
+/// @note DRAM Rtt_WR. Used in various locations and comes from the MT keyword of the
+/// VPD
///
-inline fapi2::ReturnCode eff_odt_wr(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_rtt_wr(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25508,29 +18898,26 @@ inline fapi2::ReturnCode eff_odt_wr(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_ODT_WR, l_mcs, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RTT_WR, l_mcs, l_value) );
memcpy(o_array, &(l_value[mss::index(l_mca)][mss::index(i_target)][0]), 4);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_ODT_WR: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_RTT_WR: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_ODT_WR getter
+/// @brief ATTR_EFF_DRAM_RTT_WR getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (B)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Write ODT. Used in various locations and comes from the MT keyword of the VPD or
-/// is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or odm_eff_cnfg. Creator: VPD(MT)/ mss_eff_cnfg_termination
-/// consumer: various.C and initfile firmware notes:
-/// none
+/// @note DRAM Rtt_WR. Used in various locations and comes from the MT keyword of the
+/// VPD
///
-inline fapi2::ReturnCode eff_odt_wr(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_rtt_wr(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25541,29 +18928,26 @@ inline fapi2::ReturnCode eff_odt_wr(const fapi2::Target<fapi2::TARGET_TYPE_MCA>&
uint8_t l_value[2][2][4];
auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_ODT_WR, l_mcs, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RTT_WR, l_mcs, l_value) );
memcpy(o_array, &(l_value[mss::index(i_target)][0]), 8);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_ODT_WR: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_RTT_WR: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_ODT_WR getter
+/// @brief ATTR_EFF_DRAM_RTT_WR 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 (C)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Write ODT. Used in various locations and comes from the MT keyword of the VPD or
-/// is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or odm_eff_cnfg. Creator: VPD(MT)/ mss_eff_cnfg_termination
-/// consumer: various.C and initfile firmware notes:
-/// none
+/// @note DRAM Rtt_WR. Used in various locations and comes from the MT keyword of the
+/// VPD
///
-inline fapi2::ReturnCode eff_odt_wr(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_rtt_wr(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25573,55 +18957,76 @@ inline fapi2::ReturnCode eff_odt_wr(const fapi2::Target<fapi2::TARGET_TYPE_MCS>&
uint8_t l_value[2][2][4];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_ODT_WR, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RTT_WR, i_target, l_value) );
memcpy(o_array, &l_value, 16);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_ODT_WR: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_RTT_WR: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_RON getter
+/// @brief ATTR_VPD_GPO 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 This value comes from the VPD keyword MT bytes 61 MT(61) for the Logical DIMM
+/// associated with port A. Bytes 125 for port B, 189 for port C and 253 for port
+/// D
+///
+inline fapi2::ReturnCode vpd_gpo(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_VPD_GPO, 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_VPD_GPO: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_VPD_GPO 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 (F)
+/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DRAM Ron. Used in various locations and comes from the MT keyword of the VPD or
-/// is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or odm_eff_cnfg. OHM48 is for
-/// DDR4.
+/// @note This value comes from the VPD keyword MT bytes 61 MT(61) for the Logical DIMM
+/// associated with port A. Bytes 125 for port B, 189 for port C and 253 for port
+/// D
///
-inline fapi2::ReturnCode eff_dram_ron(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
+inline fapi2::ReturnCode vpd_gpo(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
{
- uint8_t l_value[2][2];
+ uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RON, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_VPD_GPO, 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_EFF_DRAM_RON: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_VPD_GPO: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_RON getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
+/// @brief ATTR_VPD_GPO 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 (G)
+/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DRAM Ron. Used in various locations and comes from the MT keyword of the VPD or
-/// is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or odm_eff_cnfg. OHM48 is for
-/// DDR4.
+/// @note This value comes from the VPD keyword MT bytes 61 MT(61) for the Logical DIMM
+/// associated with port A. Bytes 125 for port B, 189 for port C and 253 for port
+/// D
///
-inline fapi2::ReturnCode eff_dram_ron(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode vpd_gpo(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25629,31 +19034,81 @@ inline fapi2::ReturnCode eff_dram_ron(const fapi2::Target<fapi2::TARGET_TYPE_MCA
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint8_t l_value[2][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RON, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_VPD_GPO, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_RON: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_VPD_GPO: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_RON getter
+/// @brief ATTR_EFF_DRAM_TDQS 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 TDQS. Used in various locations and is computed in mss_eff_cnfg. Each memory
+/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
+/// notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_tdqs(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_EFF_DRAM_TDQS, 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_EFF_DRAM_TDQS: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TDQS 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 TDQS. Used in various locations and is computed in mss_eff_cnfg. Each memory
+/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
+/// notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_tdqs(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_EFF_DRAM_TDQS, 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_EFF_DRAM_TDQS: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TDQS 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 (H)
+/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DRAM Ron. Used in various locations and comes from the MT keyword of the VPD or
-/// is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or odm_eff_cnfg. OHM48 is for
-/// DDR4.
+/// @note TDQS. Used in various locations and is computed in mss_eff_cnfg. Each memory
+/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
+/// notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_ron(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_tdqs(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25661,30 +19116,78 @@ inline fapi2::ReturnCode eff_dram_ron(const fapi2::Target<fapi2::TARGET_TYPE_MCS
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint8_t l_value[2][2];
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RON, i_target, l_value) );
- memcpy(o_array, &l_value, 4);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TDQS, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_RON: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TDQS: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_RTT_NOM getter
+/// @brief ATTR_EFF_DRAM_TREFI 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 Average Refresh Interval (tREFI) in nck (number of clock cycles). creator:
+/// mss_eff_config consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_trefi(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_EFF_DRAM_TREFI, 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_EFF_DRAM_TREFI: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TREFI 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 Average Refresh Interval (tREFI) in nck (number of clock cycles). creator:
+/// mss_eff_config consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_trefi(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_EFF_DRAM_TREFI, 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_EFF_DRAM_TREFI: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TREFI 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 (A)
+/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DRAM Rtt_Nom. Used in various locations and comes from the MT keyword of the VPD
-/// or is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or
-/// odm_eff_cnfg.
+/// @note Average Refresh Interval (tREFI) in nck (number of clock cycles). creator:
+/// mss_eff_config consumer: various firmware notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_rtt_nom(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_trefi(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25692,64 +19195,78 @@ inline fapi2::ReturnCode eff_dram_rtt_nom(const fapi2::Target<fapi2::TARGET_TYPE
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint8_t l_value[2][2][4];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RTT_NOM, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(l_mca)][mss::index(i_target)][0]), 4);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TREFI, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_RTT_NOM: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TREFI: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_RTT_NOM getter
+/// @brief ATTR_EFF_DRAM_TRTP getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint8_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (B)
+/// @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 DRAM Rtt_Nom. Used in various locations and comes from the MT keyword of the VPD
-/// or is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or
-/// odm_eff_cnfg.
+/// @note Internal Read to Precharge Delay. Each memory channel will have a value.
+/// creator: mss_eff_cnfg_timing consumer: various firmware notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_rtt_nom(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_trtp(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t& o_value)
{
- if (o_array == nullptr)
- {
- FAPI_ERR("nullptr passed to attribute accessor %s", __func__);
- return fapi2::FAPI2_RC_INVALID_PARAMETER;
- }
+ uint8_t l_value[2];
- uint8_t l_value[2][2][4];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRTP, i_target.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ o_value = l_value[mss::index(i_target)];
+ return fapi2::current_err;
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RTT_NOM, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 8);
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRTP: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TRTP 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 Internal Read to Precharge Delay. Each memory channel will have a value.
+/// creator: mss_eff_cnfg_timing consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_trtp(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_EFF_DRAM_TRTP, 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_EFF_DRAM_RTT_NOM: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRTP: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_RTT_NOM getter
+/// @brief ATTR_EFF_DRAM_TRTP 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 (C)
+/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DRAM Rtt_Nom. Used in various locations and comes from the MT keyword of the VPD
-/// or is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or
-/// odm_eff_cnfg.
+/// @note Internal Read to Precharge Delay. Each memory channel will have a value.
+/// creator: mss_eff_cnfg_timing consumer: various firmware notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_rtt_nom(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_trtp(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25757,30 +19274,87 @@ inline fapi2::ReturnCode eff_dram_rtt_nom(const fapi2::Target<fapi2::TARGET_TYPE
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint8_t l_value[2][2][4];
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RTT_NOM, i_target, l_value) );
- memcpy(o_array, &l_value, 16);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRTP, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_RTT_NOM: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRTP: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_RTT_WR getter
+/// @brief ATTR_EFF_DRAM_TRFC_DLR 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 Minimum Refresh Recovery Delay Time in nck (number of clock cyles). Selected
+/// tRFC value (tRFC_dl1, tRFC_dl2, or tRFC_dl4) depends on MRW attribute that
+/// selects fine refresh mode (x1, x2, x4). For 3DS, The tRFC time to different
+/// logical ranks are defined as tRFC_dlr creator: eff_config consumer: various
+/// firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_trfc_dlr(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_EFF_DRAM_TRFC_DLR, 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_EFF_DRAM_TRFC_DLR: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TRFC_DLR 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 Minimum Refresh Recovery Delay Time in nck (number of clock cyles). Selected
+/// tRFC value (tRFC_dl1, tRFC_dl2, or tRFC_dl4) depends on MRW attribute that
+/// selects fine refresh mode (x1, x2, x4). For 3DS, The tRFC time to different
+/// logical ranks are defined as tRFC_dlr creator: eff_config consumer: various
+/// firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_trfc_dlr(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_EFF_DRAM_TRFC_DLR, 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_EFF_DRAM_TRFC_DLR: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TRFC_DLR 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 (A)
+/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DRAM Rtt_WR. Used in various locations and comes from the MT keyword of the VPD
-/// or is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or
-/// odm_eff_cnfg.
+/// @note Minimum Refresh Recovery Delay Time in nck (number of clock cyles). Selected
+/// tRFC value (tRFC_dl1, tRFC_dl2, or tRFC_dl4) depends on MRW attribute that
+/// selects fine refresh mode (x1, x2, x4). For 3DS, The tRFC time to different
+/// logical ranks are defined as tRFC_dlr creator: eff_config consumer: various
+/// firmware notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_rtt_wr(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_trfc_dlr(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25788,64 +19362,84 @@ inline fapi2::ReturnCode eff_dram_rtt_wr(const fapi2::Target<fapi2::TARGET_TYPE_
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint8_t l_value[2][2][4];
- auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RTT_WR, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(l_mca)][mss::index(i_target)][0]), 4);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRFC_DLR, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_RTT_WR: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRFC_DLR: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_RTT_WR getter
+/// @brief ATTR_EFF_DRAM_TFAW_DLR getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint8_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (B)
+/// @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 DRAM Rtt_WR. Used in various locations and comes from the MT keyword of the VPD
-/// or is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or
-/// odm_eff_cnfg.
+/// @note Minimum Four Activate Window Delay Time in nck (number of clock cycles). For
+/// 3DS, the tFAW time to different logical ranks are defined as tFAW_dlr Each
+/// memory channel will have a value. creator: eff_cnfg consumer: various firmware
+/// notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_rtt_wr(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_tfaw_dlr(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t& o_value)
{
- if (o_array == nullptr)
- {
- FAPI_ERR("nullptr passed to attribute accessor %s", __func__);
- return fapi2::FAPI2_RC_INVALID_PARAMETER;
- }
+ uint8_t l_value[2];
- uint8_t l_value[2][2][4];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TFAW_DLR, i_target.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ o_value = l_value[mss::index(i_target)];
+ return fapi2::current_err;
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RTT_WR, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 8);
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TFAW_DLR: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TFAW_DLR 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 Minimum Four Activate Window Delay Time in nck (number of clock cycles). For
+/// 3DS, the tFAW time to different logical ranks are defined as tFAW_dlr Each
+/// memory channel will have a value. creator: eff_cnfg consumer: various firmware
+/// notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_tfaw_dlr(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_EFF_DRAM_TFAW_DLR, 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_EFF_DRAM_RTT_WR: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TFAW_DLR: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_RTT_WR getter
+/// @brief ATTR_EFF_DRAM_TFAW_DLR 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 (C)
+/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DRAM Rtt_WR. Used in various locations and comes from the MT keyword of the VPD
-/// or is computed in mss_eff_cnfg_termination. Can be overwritten by ODM vendors if
-/// done from the PNOR or
-/// odm_eff_cnfg.
+/// @note Minimum Four Activate Window Delay Time in nck (number of clock cycles). For
+/// 3DS, the tFAW time to different logical ranks are defined as tFAW_dlr Each
+/// memory channel will have a value. creator: eff_cnfg consumer: various firmware
+/// notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_rtt_wr(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_tfaw_dlr(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25853,78 +19447,81 @@ inline fapi2::ReturnCode eff_dram_rtt_wr(const fapi2::Target<fapi2::TARGET_TYPE_
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint8_t l_value[2][2][4];
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_RTT_WR, i_target, l_value) );
- memcpy(o_array, &l_value, 16);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TFAW_DLR, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_RTT_WR: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TFAW_DLR: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_VPD_GPO getter
+/// @brief ATTR_EFF_DRAM_TXS 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 This value comes from the VPD keyword MT bytes 61 MT(61) for the Logical DIMM
-/// associated with port A. Bytes 125 for port B, 189 for port C and 253 for port
-/// D
+/// @note Exit Self-Refresh to commands not requiring a locked DLL. In nck (number of
+/// clock cycles). Each memory channel will have a value. creator: eff_config
+/// consumer: various firmware notes:
+/// none
///
-inline fapi2::ReturnCode vpd_gpo(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t& o_value)
+inline fapi2::ReturnCode eff_dram_txs(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_VPD_GPO, i_target.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TXS, 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_VPD_GPO: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TXS: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_VPD_GPO getter
+/// @brief ATTR_EFF_DRAM_TXS 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 This value comes from the VPD keyword MT bytes 61 MT(61) for the Logical DIMM
-/// associated with port A. Bytes 125 for port B, 189 for port C and 253 for port
-/// D
+/// @note Exit Self-Refresh to commands not requiring a locked DLL. In nck (number of
+/// clock cycles). Each memory channel will have a value. creator: eff_config
+/// consumer: various firmware notes:
+/// none
///
-inline fapi2::ReturnCode vpd_gpo(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
+inline fapi2::ReturnCode eff_dram_txs(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_VPD_GPO, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TXS, 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_VPD_GPO: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TXS: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_VPD_GPO getter
+/// @brief ATTR_EFF_DRAM_TXS 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 This value comes from the VPD keyword MT bytes 61 MT(61) for the Logical DIMM
-/// associated with port A. Bytes 125 for port B, 189 for port C and 253 for port
-/// D
+/// @note Exit Self-Refresh to commands not requiring a locked DLL. In nck (number of
+/// clock cycles). Each memory channel will have a value. creator: eff_config
+/// consumer: various firmware notes:
+/// none
///
-inline fapi2::ReturnCode vpd_gpo(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_txs(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -25934,12 +19531,12 @@ inline fapi2::ReturnCode vpd_gpo(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_VPD_GPO, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TXS, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_VPD_GPO: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TXS: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
@@ -26040,8 +19637,8 @@ fapi_try_exit:
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (F)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DRAM Device Type. Decodes byte 2 of SPD. Generation of memory: DDR3, DDR4.
-/// creator: mss_eff_config consumer: various firmware notes:
+/// @note DRAM Device Type. Decodes SPD byte 2. Generation of memory: DDR3, DDR4. creator:
+/// mss_eff_config consumer: various firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_gen(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
@@ -26066,8 +19663,8 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (G)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DRAM Device Type. Decodes byte 2 of SPD. Generation of memory: DDR3, DDR4.
-/// creator: mss_eff_config consumer: various firmware notes:
+/// @note DRAM Device Type. Decodes SPD byte 2. Generation of memory: DDR3, DDR4. creator:
+/// mss_eff_config consumer: various firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_gen(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
@@ -26097,8 +19694,8 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (H)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note DRAM Device Type. Decodes byte 2 of SPD. Generation of memory: DDR3, DDR4.
-/// creator: mss_eff_config consumer: various firmware notes:
+/// @note DRAM Device Type. Decodes SPD byte 2. Generation of memory: DDR3, DDR4. creator:
+/// mss_eff_config consumer: various firmware notes:
/// none
///
inline fapi2::ReturnCode eff_dram_gen(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
@@ -26127,7 +19724,7 @@ fapi_try_exit:
/// @param[out] ref to the value uint8_t
/// @note Generated by gen_accessors.pl generateParameters (F)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Base Module Type. Decodes SPD Byte 3 (bits 3~0) Type of DIMM: RDIMM, UDIMM,
+/// @note Base Module Type. Decodes SPD Byte 3 (bits 3~0). Type of DIMM: RDIMM, UDIMM,
/// LRDIMM as specified by the JEDIC standard. creator: mss_eff_config consumer:
/// various firmware notes:
/// none
@@ -26154,7 +19751,7 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (G)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Base Module Type. Decodes SPD Byte 3 (bits 3~0) Type of DIMM: RDIMM, UDIMM,
+/// @note Base Module Type. Decodes SPD Byte 3 (bits 3~0). Type of DIMM: RDIMM, UDIMM,
/// LRDIMM as specified by the JEDIC standard. creator: mss_eff_config consumer:
/// various firmware notes:
/// none
@@ -26186,7 +19783,7 @@ fapi_try_exit:
/// @param[out] uint8_t* memory to store the value
/// @note Generated by gen_accessors.pl generateParameters (H)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Base Module Type. Decodes SPD Byte 3 (bits 3~0) Type of DIMM: RDIMM, UDIMM,
+/// @note Base Module Type. Decodes SPD Byte 3 (bits 3~0). Type of DIMM: RDIMM, UDIMM,
/// LRDIMM as specified by the JEDIC standard. creator: mss_eff_config consumer:
/// various firmware notes:
/// none
@@ -26933,65 +20530,242 @@ fapi_try_exit:
}
///
-/// @brief ATTR_EFF_TEMP_REF_RANGE getter
+/// @brief ATTR_EFF_DRAM_PPR 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 (F)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Post Package Repair. Used in various locations and is evaluated in mss_eff_cnfg.
+/// creator: mss_eff_cnfg consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_ppr(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
+{
+ uint8_t l_value[2][2];
+ auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
+ auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_PPR, l_mcs, l_value) );
+ o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_PPR: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_PPR getter
+/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
+/// @param[out] uint8_t* memory to store the value
+/// @note Generated by gen_accessors.pl generateParameters (G)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Post Package Repair. Used in various locations and is evaluated in mss_eff_cnfg.
+/// creator: mss_eff_cnfg consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_ppr(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& 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][2];
+ auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_PPR, l_mcs, l_value) );
+ memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_PPR: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_PPR 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 (H)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Post Package Repair. Used in various locations and is evaluated in mss_eff_cnfg.
+/// creator: mss_eff_cnfg consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_ppr(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][2];
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_PPR, i_target, l_value) );
+ memcpy(o_array, &l_value, 4);
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_PPR: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_SOFT_PPR 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 (F)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Soft Post Package Repair. Used in various locations and is evaluated in
+/// mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_soft_ppr(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
+{
+ uint8_t l_value[2][2];
+ auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
+ auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_SOFT_PPR, l_mcs, l_value) );
+ o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_SOFT_PPR: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_SOFT_PPR getter
+/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
+/// @param[out] uint8_t* memory to store the value
+/// @note Generated by gen_accessors.pl generateParameters (G)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Soft Post Package Repair. Used in various locations and is evaluated in
+/// mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_soft_ppr(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& 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][2];
+ auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_SOFT_PPR, l_mcs, l_value) );
+ memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_SOFT_PPR: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_SOFT_PPR 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 (H)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Soft Post Package Repair. Used in various locations and is evaluated in
+/// mss_eff_cnfg. creator: mss_eff_cnfg consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_soft_ppr(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][2];
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_SOFT_PPR, i_target, l_value) );
+ memcpy(o_array, &l_value, 4);
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_SOFT_PPR: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TRCD 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 Temp ref range. This is for DDR4 MRS4. creator: mss_eff_cnfg consumer: various
-/// firmware notes:
+/// @note Minimum RAS to CAS Delay Time in nck (number of clock cyles). Decodes SPD byte
+/// 25 (7~0) and byte 112 (7~0). Each memory channel will have a value. creator:
+/// eff_config consumer: various firmware notes:
/// none
///
-inline fapi2::ReturnCode eff_temp_ref_range(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t& o_value)
+inline fapi2::ReturnCode eff_dram_trcd(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_EFF_TEMP_REF_RANGE, i_target.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRCD, 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_EFF_TEMP_REF_RANGE: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRCD: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_TEMP_REF_RANGE getter
+/// @brief ATTR_EFF_DRAM_TRCD 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 Temp ref range. This is for DDR4 MRS4. creator: mss_eff_cnfg consumer: various
-/// firmware notes:
+/// @note Minimum RAS to CAS Delay Time in nck (number of clock cyles). Decodes SPD byte
+/// 25 (7~0) and byte 112 (7~0). Each memory channel will have a value. creator:
+/// eff_config consumer: various firmware notes:
/// none
///
-inline fapi2::ReturnCode eff_temp_ref_range(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
+inline fapi2::ReturnCode eff_dram_trcd(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_EFF_TEMP_REF_RANGE, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRCD, 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_EFF_TEMP_REF_RANGE: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRCD: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_TEMP_REF_RANGE getter
+/// @brief ATTR_EFF_DRAM_TRCD 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 Temp ref range. This is for DDR4 MRS4. creator: mss_eff_cnfg consumer: various
-/// firmware notes:
+/// @note Minimum RAS to CAS Delay Time in nck (number of clock cyles). Decodes SPD byte
+/// 25 (7~0) and byte 112 (7~0). Each memory channel will have a value. creator:
+/// eff_config consumer: various firmware notes:
/// none
///
-inline fapi2::ReturnCode eff_temp_ref_range(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_trcd(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -27001,79 +20775,79 @@ inline fapi2::ReturnCode eff_temp_ref_range(const fapi2::Target<fapi2::TARGET_TY
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_TEMP_REF_RANGE, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRCD, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_TEMP_REF_RANGE: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRCD: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_FINE_REFRESH_MODE getter
+/// @brief ATTR_EFF_DRAM_TRP 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 Fine refresh mode. This is for DDR4 MRS3. Computed in mss_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
-/// none
+/// @note SDRAM Row Precharge Delay Time in nck (number of clock cycles). Decodes SPD byte
+/// 26 (bits 7~0) and byte 121 (bits 7~0). Each memory channel will have a value.
+/// creator: eff_config consumer:
+/// various
///
-inline fapi2::ReturnCode eff_fine_refresh_mode(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t& o_value)
+inline fapi2::ReturnCode eff_dram_trp(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_EFF_FINE_REFRESH_MODE, i_target.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRP, 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_EFF_FINE_REFRESH_MODE: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRP: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_FINE_REFRESH_MODE getter
+/// @brief ATTR_EFF_DRAM_TRP 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 Fine refresh mode. This is for DDR4 MRS3. Computed in mss_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
-/// none
+/// @note SDRAM Row Precharge Delay Time in nck (number of clock cycles). Decodes SPD byte
+/// 26 (bits 7~0) and byte 121 (bits 7~0). Each memory channel will have a value.
+/// creator: eff_config consumer:
+/// various
///
-inline fapi2::ReturnCode eff_fine_refresh_mode(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
+inline fapi2::ReturnCode eff_dram_trp(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_EFF_FINE_REFRESH_MODE, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRP, 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_EFF_FINE_REFRESH_MODE: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRP: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_FINE_REFRESH_MODE getter
+/// @brief ATTR_EFF_DRAM_TRP 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 Fine refresh mode. This is for DDR4 MRS3. Computed in mss_eff_cnfg. Each memory
-/// channel will have a value. creator: mss_eff_cnfg consumer: various firmware
-/// notes:
-/// none
+/// @note SDRAM Row Precharge Delay Time in nck (number of clock cycles). Decodes SPD byte
+/// 26 (bits 7~0) and byte 121 (bits 7~0). Each memory channel will have a value.
+/// creator: eff_config consumer:
+/// various
///
-inline fapi2::ReturnCode eff_fine_refresh_mode(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_trp(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -27083,51 +20857,79 @@ inline fapi2::ReturnCode eff_fine_refresh_mode(const fapi2::Target<fapi2::TARGET
uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_FINE_REFRESH_MODE, i_target, l_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRP, i_target, l_value) );
memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_FINE_REFRESH_MODE: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRP: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_TREFI getter
+/// @brief ATTR_EFF_DRAM_TRAS 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 Minimum Active to Precharge Delay Time in nck (number of clock cycles). Decodes
+/// SPD byte 27 (bits 3~0) and byte 28 (7~0). Each memory channel will have a value.
+/// creator: mss_eff_cnfg_timing consumer:
+/// various
+///
+inline fapi2::ReturnCode eff_dram_tras(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_EFF_DRAM_TRAS, 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_EFF_DRAM_TRAS: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TRAS 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 (F)
+/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Refresh Interval. creator: mss_eff_config consumer: various firmware notes:
-/// none
+/// @note Minimum Active to Precharge Delay Time in nck (number of clock cycles). Decodes
+/// SPD byte 27 (bits 3~0) and byte 28 (7~0). Each memory channel will have a value.
+/// creator: mss_eff_cnfg_timing consumer:
+/// various
///
-inline fapi2::ReturnCode eff_dram_trefi(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
+inline fapi2::ReturnCode eff_dram_tras(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
{
- uint8_t l_value[2][2];
+ uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TREFI, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRAS, 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_EFF_DRAM_TREFI: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRAS: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_TREFI getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
+/// @brief ATTR_EFF_DRAM_TRAS 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 (G)
+/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Refresh Interval. creator: mss_eff_config consumer: various firmware notes:
-/// none
+/// @note Minimum Active to Precharge Delay Time in nck (number of clock cycles). Decodes
+/// SPD byte 27 (bits 3~0) and byte 28 (7~0). Each memory channel will have a value.
+/// creator: mss_eff_cnfg_timing consumer:
+/// various
///
-inline fapi2::ReturnCode eff_dram_trefi(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_tras(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -27135,29 +20937,81 @@ inline fapi2::ReturnCode eff_dram_trefi(const fapi2::Target<fapi2::TARGET_TYPE_M
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint8_t l_value[2][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TREFI, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRAS, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TREFI: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRAS: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_TREFI getter
+/// @brief ATTR_EFF_DRAM_TRC 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 Minimum Active to Active/Refresh Delay in nck (number of clock cyles). Decodes
+/// SPD byte 27 (bits 7~4), byte 29 (bits 7~0), and byte 120. Each memory channel
+/// will have a value. creator: eff_confg consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_trc(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_EFF_DRAM_TRC, 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_EFF_DRAM_TRC: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TRC 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 Minimum Active to Active/Refresh Delay in nck (number of clock cyles). Decodes
+/// SPD byte 27 (bits 7~4), byte 29 (bits 7~0), and byte 120. Each memory channel
+/// will have a value. creator: eff_confg consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_trc(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_EFF_DRAM_TRC, 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_EFF_DRAM_TRC: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TRC 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 (H)
+/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Refresh Interval. creator: mss_eff_config consumer: various firmware notes:
+/// @note Minimum Active to Active/Refresh Delay in nck (number of clock cyles). Decodes
+/// SPD byte 27 (bits 7~4), byte 29 (bits 7~0), and byte 120. Each memory channel
+/// will have a value. creator: eff_confg consumer: various firmware notes:
/// none
///
-inline fapi2::ReturnCode eff_dram_trefi(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_trc(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -27165,14 +21019,44 @@ inline fapi2::ReturnCode eff_dram_trefi(const fapi2::Target<fapi2::TARGET_TYPE_M
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint8_t l_value[2][2];
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TREFI, i_target, l_value) );
- memcpy(o_array, &l_value, 4);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRC, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TREFI: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRC: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TRFC 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 DDR4 Spec defined as Refresh Cycle Time (tRFC). SPD Spec refers it to the
+/// Minimum Refresh Recovery Delay Time. In nck (number of clock cyles). Decodes SPD
+/// byte 31 (bits 15~8) and byte 30 (bits 7~0) for tRFC1. Decodes SPD byte 33 (bits
+/// 15~8) and byte 32 (bits 7~0) for tRFC2. Decodes SPD byte 35 (bits 15~8) and byte
+/// 34 (bits 7~0) for tRFC4. Selected tRFC value depends on MRW attribute that
+/// selects refresh mode. For 3DS, The tRFC time to the same logical rank is defined
+/// as tRFC_slr and is specificed as the value as for a monolithic DDR4 SDRAM of
+/// equivalent density. creator: eff_config consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_trfc(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_EFF_DRAM_TRFC, 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_EFF_DRAM_TRFC: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
@@ -27180,21 +21064,26 @@ fapi_try_exit:
///
/// @brief ATTR_EFF_DRAM_TRFC getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
-/// @param[out] ref to the value uint32_t
-/// @note Generated by gen_accessors.pl generateParameters (F)
+/// @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 Refresh Recovery Delay. creator: mss_eff_config consumer: various firmware
-/// notes:
+/// @note DDR4 Spec defined as Refresh Cycle Time (tRFC). SPD Spec refers it to the
+/// Minimum Refresh Recovery Delay Time. In nck (number of clock cyles). Decodes SPD
+/// byte 31 (bits 15~8) and byte 30 (bits 7~0) for tRFC1. Decodes SPD byte 33 (bits
+/// 15~8) and byte 32 (bits 7~0) for tRFC2. Decodes SPD byte 35 (bits 15~8) and byte
+/// 34 (bits 7~0) for tRFC4. Selected tRFC value depends on MRW attribute that
+/// selects refresh mode. For 3DS, The tRFC time to the same logical rank is defined
+/// as tRFC_slr and is specificed as the value as for a monolithic DDR4 SDRAM of
+/// equivalent density. creator: eff_config consumer: various firmware notes:
/// none
///
-inline fapi2::ReturnCode eff_dram_trfc(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint32_t& o_value)
+inline fapi2::ReturnCode eff_dram_trfc(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
{
- uint32_t l_value[2][2];
+ uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRFC, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRFC, l_mca.getParent<fapi2::TARGET_TYPE_MCS>(), l_value) );
+ o_value = l_value[mss::index(l_mca)];
return fapi2::current_err;
fapi_try_exit:
@@ -27205,15 +21094,21 @@ fapi_try_exit:
///
/// @brief ATTR_EFF_DRAM_TRFC getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint32_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
+/// @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 Refresh Recovery Delay. creator: mss_eff_config consumer: various firmware
-/// notes:
+/// @note DDR4 Spec defined as Refresh Cycle Time (tRFC). SPD Spec refers it to the
+/// Minimum Refresh Recovery Delay Time. In nck (number of clock cyles). Decodes SPD
+/// byte 31 (bits 15~8) and byte 30 (bits 7~0) for tRFC1. Decodes SPD byte 33 (bits
+/// 15~8) and byte 32 (bits 7~0) for tRFC2. Decodes SPD byte 35 (bits 15~8) and byte
+/// 34 (bits 7~0) for tRFC4. Selected tRFC value depends on MRW attribute that
+/// selects refresh mode. For 3DS, The tRFC time to the same logical rank is defined
+/// as tRFC_slr and is specificed as the value as for a monolithic DDR4 SDRAM of
+/// equivalent density. creator: eff_config consumer: various firmware notes:
/// none
///
-inline fapi2::ReturnCode eff_dram_trfc(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint32_t* o_array)
+inline fapi2::ReturnCode eff_dram_trfc(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -27221,11 +21116,10 @@ inline fapi2::ReturnCode eff_dram_trfc(const fapi2::Target<fapi2::TARGET_TYPE_MC
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint32_t l_value[2][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRFC, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 8);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRFC, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
@@ -27235,16 +21129,77 @@ fapi_try_exit:
}
///
-/// @brief ATTR_EFF_DRAM_TRFC getter
+/// @brief ATTR_EFF_DRAM_TFAW 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 Minimum Four Activate Window Delay Time in nck (number of clock cycles). Decodes
+/// SPD byte 36 (bits 3~0) and byte 37 (bits 7~0). For 3DS, tFAW time to the same
+/// logical rank is defined as tFAW_slr_x4 or tFAW_slr_x8 (for x4 and x8 devices
+/// only) and specificed as the value as for a monolithic DDR4 SDRAM equivalent
+/// density. Each memory channel will have a value. creator: eff_cnfg consumer:
+/// various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_tfaw(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_EFF_DRAM_TFAW, 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_EFF_DRAM_TFAW: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TFAW 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 Minimum Four Activate Window Delay Time in nck (number of clock cycles). Decodes
+/// SPD byte 36 (bits 3~0) and byte 37 (bits 7~0). For 3DS, tFAW time to the same
+/// logical rank is defined as tFAW_slr_x4 or tFAW_slr_x8 (for x4 and x8 devices
+/// only) and specificed as the value as for a monolithic DDR4 SDRAM equivalent
+/// density. Each memory channel will have a value. creator: eff_cnfg consumer:
+/// various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_tfaw(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_EFF_DRAM_TFAW, 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_EFF_DRAM_TFAW: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TFAW getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[out] uint32_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (H)
+/// @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 Refresh Recovery Delay. creator: mss_eff_config consumer: various firmware
-/// notes:
+/// @note Minimum Four Activate Window Delay Time in nck (number of clock cycles). Decodes
+/// SPD byte 36 (bits 3~0) and byte 37 (bits 7~0). For 3DS, tFAW time to the same
+/// logical rank is defined as tFAW_slr_x4 or tFAW_slr_x8 (for x4 and x8 devices
+/// only) and specificed as the value as for a monolithic DDR4 SDRAM equivalent
+/// density. Each memory channel will have a value. creator: eff_cnfg consumer:
+/// various firmware notes:
/// none
///
-inline fapi2::ReturnCode eff_dram_trfc(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint32_t* o_array)
+inline fapi2::ReturnCode eff_dram_tfaw(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -27252,55 +21207,90 @@ inline fapi2::ReturnCode eff_dram_trfc(const fapi2::Target<fapi2::TARGET_TYPE_MC
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint32_t l_value[2][2];
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRFC, i_target, l_value) );
- memcpy(o_array, &l_value, 16);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TFAW, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRFC: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TFAW: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TRRD_S 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 Minimum Activate to Activate Delay Time, different bank group in nck (number of
+/// clock cycles). Decodes SPD byte 38 (bits 7~0). For 3DS, The tRRD_S time to a
+/// different bank group in the same logical rank is defined as tRRD_slr and is
+/// specificed as the value as for a monolithic DDR4 SDRAM of equivalent density.
+/// Each memory channel will have a value. creator: eff_confg consumer: various
+/// firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_trrd_s(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_EFF_DRAM_TRRD_S, 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_EFF_DRAM_TRRD_S: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_TCKMIN getter
+/// @brief ATTR_EFF_DRAM_TRRD_S getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
-/// @param[out] ref to the value uint64_t
-/// @note Generated by gen_accessors.pl generateParameters (F)
+/// @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 Minimum cycle time (tCKmin) in ps. Decoded using DDR4 SPD byte 18 and byte 125.
-/// Right aligned. Bit 0 is
-/// rightmost.
+/// @note Minimum Activate to Activate Delay Time, different bank group in nck (number of
+/// clock cycles). Decodes SPD byte 38 (bits 7~0). For 3DS, The tRRD_S time to a
+/// different bank group in the same logical rank is defined as tRRD_slr and is
+/// specificed as the value as for a monolithic DDR4 SDRAM of equivalent density.
+/// Each memory channel will have a value. creator: eff_confg consumer: various
+/// firmware notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_tckmin(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint64_t& o_value)
+inline fapi2::ReturnCode eff_dram_trrd_s(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
{
- uint64_t l_value[2][2];
+ uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TCKMIN, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRRD_S, 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_EFF_DRAM_TCKMIN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRRD_S: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_TCKMIN getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint64_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
+/// @brief ATTR_EFF_DRAM_TRRD_S 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 Minimum cycle time (tCKmin) in ps. Decoded using DDR4 SPD byte 18 and byte 125.
-/// Right aligned. Bit 0 is
-/// rightmost.
+/// @note Minimum Activate to Activate Delay Time, different bank group in nck (number of
+/// clock cycles). Decodes SPD byte 38 (bits 7~0). For 3DS, The tRRD_S time to a
+/// different bank group in the same logical rank is defined as tRRD_slr and is
+/// specificed as the value as for a monolithic DDR4 SDRAM of equivalent density.
+/// Each memory channel will have a value. creator: eff_confg consumer: various
+/// firmware notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_tckmin(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint64_t* o_array)
+inline fapi2::ReturnCode eff_dram_trrd_s(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -27308,30 +21298,87 @@ inline fapi2::ReturnCode eff_dram_tckmin(const fapi2::Target<fapi2::TARGET_TYPE_
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint64_t l_value[2][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TCKMIN, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 16);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRRD_S, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRRD_S: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TRRD_L 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 Minimum Activate to Activate Delay Time, same bank group in nck (number of clock
+/// cycles). Decodes SPD byte 39 (bits 7~0). For 3DS, The tRRD_L time to the same
+/// bank group in the same logical rank is defined as tRRD_L_slr and is specificed
+/// as the value as for a monolithic DDR4 SDRAM of equivalent density. Each memory
+/// channel will have a value. creator: eff_confg consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_trrd_l(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_EFF_DRAM_TRRD_L, 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_EFF_DRAM_TRRD_L: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TRRD_L 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 Minimum Activate to Activate Delay Time, same bank group in nck (number of clock
+/// cycles). Decodes SPD byte 39 (bits 7~0). For 3DS, The tRRD_L time to the same
+/// bank group in the same logical rank is defined as tRRD_L_slr and is specificed
+/// as the value as for a monolithic DDR4 SDRAM of equivalent density. Each memory
+/// channel will have a value. creator: eff_confg consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_trrd_l(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_EFF_DRAM_TRRD_L, 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_EFF_DRAM_TCKMIN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRRD_L: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_TCKMIN getter
+/// @brief ATTR_EFF_DRAM_TRRD_L getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[out] uint64_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (H)
+/// @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 Minimum cycle time (tCKmin) in ps. Decoded using DDR4 SPD byte 18 and byte 125.
-/// Right aligned. Bit 0 is
-/// rightmost.
+/// @note Minimum Activate to Activate Delay Time, same bank group in nck (number of clock
+/// cycles). Decodes SPD byte 39 (bits 7~0). For 3DS, The tRRD_L time to the same
+/// bank group in the same logical rank is defined as tRRD_L_slr and is specificed
+/// as the value as for a monolithic DDR4 SDRAM of equivalent density. Each memory
+/// channel will have a value. creator: eff_confg consumer: various firmware notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_tckmin(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint64_t* o_array)
+inline fapi2::ReturnCode eff_dram_trrd_l(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -27339,55 +21386,84 @@ inline fapi2::ReturnCode eff_dram_tckmin(const fapi2::Target<fapi2::TARGET_TYPE_
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint64_t l_value[2][2];
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TCKMIN, i_target, l_value) );
- memcpy(o_array, &l_value, 32);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TRRD_L, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TRRD_L: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TCCD_L 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 Minimum CAS to CAS Delay Time, same bank group in nck (number of clock cycles).
+/// Decodes SPD byte 40 (bits 7~0) and byte 117 (bits 7~0). This is for DDR4 MRS6.
+/// Each memory channel will have a value. Creator: eff_config Consumer:various
+/// Firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_tccd_l(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_EFF_DRAM_TCCD_L, 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_EFF_DRAM_TCKMIN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TCCD_L: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_TCKMAX getter
+/// @brief ATTR_EFF_DRAM_TCCD_L getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
-/// @param[out] ref to the value uint64_t
-/// @note Generated by gen_accessors.pl generateParameters (F)
+/// @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 Maximum cycle time (tCKmax) in ps. Decoded using DDR4 SPD byte 19 and byte 124.
-/// Right aligned. Bit 0 is
-/// rightmost.
+/// @note Minimum CAS to CAS Delay Time, same bank group in nck (number of clock cycles).
+/// Decodes SPD byte 40 (bits 7~0) and byte 117 (bits 7~0). This is for DDR4 MRS6.
+/// Each memory channel will have a value. Creator: eff_config Consumer:various
+/// Firmware notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_tckmax(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint64_t& o_value)
+inline fapi2::ReturnCode eff_dram_tccd_l(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
{
- uint64_t l_value[2][2];
+ uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TCKMAX, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TCCD_L, 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_EFF_DRAM_TCKMAX: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TCCD_L: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_TCKMAX getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
-/// @param[out] uint64_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (G)
+/// @brief ATTR_EFF_DRAM_TCCD_L 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 Maximum cycle time (tCKmax) in ps. Decoded using DDR4 SPD byte 19 and byte 124.
-/// Right aligned. Bit 0 is
-/// rightmost.
+/// @note Minimum CAS to CAS Delay Time, same bank group in nck (number of clock cycles).
+/// Decodes SPD byte 40 (bits 7~0) and byte 117 (bits 7~0). This is for DDR4 MRS6.
+/// Each memory channel will have a value. Creator: eff_config Consumer:various
+/// Firmware notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_tckmax(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint64_t* o_array)
+inline fapi2::ReturnCode eff_dram_tccd_l(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -27395,30 +21471,84 @@ inline fapi2::ReturnCode eff_dram_tckmax(const fapi2::Target<fapi2::TARGET_TYPE_
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint64_t l_value[2][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TCKMAX, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 16);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TCCD_L, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TCCD_L: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TWR 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 Minimum Write Recovery Time. Decodes SPD byte 41 (bits 3~0) and byte 42 (bits
+/// 7~0). Each memory channel will have a value. creator: mss_eff_cnfg_timing
+/// consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_write_recovery(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_EFF_DRAM_TWR, 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_EFF_DRAM_TWR: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TWR 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 Minimum Write Recovery Time. Decodes SPD byte 41 (bits 3~0) and byte 42 (bits
+/// 7~0). Each memory channel will have a value. creator: mss_eff_cnfg_timing
+/// consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_write_recovery(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_EFF_DRAM_TWR, 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_EFF_DRAM_TCKMAX: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TWR: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_TCKMAX getter
+/// @brief ATTR_EFF_DRAM_TWR getter
/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
-/// @param[out] uint64_t* memory to store the value
-/// @note Generated by gen_accessors.pl generateParameters (H)
+/// @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 Maximum cycle time (tCKmax) in ps. Decoded using DDR4 SPD byte 19 and byte 124.
-/// Right aligned. Bit 0 is
-/// rightmost.
+/// @note Minimum Write Recovery Time. Decodes SPD byte 41 (bits 3~0) and byte 42 (bits
+/// 7~0). Each memory channel will have a value. creator: mss_eff_cnfg_timing
+/// consumer: various firmware notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_tckmax(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint64_t* o_array)
+inline fapi2::ReturnCode eff_dram_write_recovery(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
+ uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -27426,55 +21556,81 @@ inline fapi2::ReturnCode eff_dram_tckmax(const fapi2::Target<fapi2::TARGET_TYPE_
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint64_t l_value[2][2];
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TCKMAX, i_target, l_value) );
- memcpy(o_array, &l_value, 32);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TWR, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TWR: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TWTR_S 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 Minimum Write to Read Time, different bank group in nck (number of clock
+/// cycles). Decodes SPD byte 43 (3~0) and byte 44 (bits 7~0). Each memory channel
+/// will have a value. creator: eff_config consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_twtr_s(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_EFF_DRAM_TWTR_S, 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_EFF_DRAM_TCKMAX: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TWTR_S: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_TAAMIN getter
+/// @brief ATTR_EFF_DRAM_TWTR_S 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 (F)
+/// @note Generated by gen_accessors.pl generateParameters (D.1)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Minimum CAS Latency Time (tAAmin) in nCK. Decoded using DDR4 SPD byte 24 and
-/// byte 123. Right aligned. Bit 0 is
-/// rightmost.
+/// @note Minimum Write to Read Time, different bank group in nck (number of clock
+/// cycles). Decodes SPD byte 43 (3~0) and byte 44 (bits 7~0). Each memory channel
+/// will have a value. creator: eff_config consumer: various firmware notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_taamin(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
+inline fapi2::ReturnCode eff_dram_twtr_s(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint8_t& o_value)
{
- uint8_t l_value[2][2];
+ uint8_t l_value[2];
auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
- auto l_mcs = l_mca.getParent<fapi2::TARGET_TYPE_MCS>();
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TAAMIN, l_mcs, l_value) );
- o_value = l_value[mss::index(l_mca)][mss::index(i_target)];
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TWTR_S, 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_EFF_DRAM_TAAMIN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TWTR_S: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_TAAMIN getter
-/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
+/// @brief ATTR_EFF_DRAM_TWTR_S 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 (G)
+/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Minimum CAS Latency Time (tAAmin) in nCK. Decoded using DDR4 SPD byte 24 and
-/// byte 123. Right aligned. Bit 0 is
-/// rightmost.
+/// @note Minimum Write to Read Time, different bank group in nck (number of clock
+/// cycles). Decodes SPD byte 43 (3~0) and byte 44 (bits 7~0). Each memory channel
+/// will have a value. creator: eff_config consumer: various firmware notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_taamin(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_twtr_s(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -27482,30 +21638,81 @@ inline fapi2::ReturnCode eff_dram_taamin(const fapi2::Target<fapi2::TARGET_TYPE_
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint8_t l_value[2][2];
- auto l_mcs = i_target.getParent<fapi2::TARGET_TYPE_MCS>();
+ uint8_t l_value[2];
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TAAMIN, l_mcs, l_value) );
- memcpy(o_array, &(l_value[mss::index(i_target)][0]), 2);
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TWTR_S, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TWTR_S: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TWTR_L 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 Minimum Write to Read Time, same bank group in nck (number of clock cycles).
+/// Decodes byte 43 (7~4) and byte 45 (bits 7~0). Each memory channel will have a
+/// value. creator: eff_config consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_twtr_l(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_EFF_DRAM_TWTR_L, 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_EFF_DRAM_TWTR_L: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TWTR_L 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 Minimum Write to Read Time, same bank group in nck (number of clock cycles).
+/// Decodes byte 43 (7~4) and byte 45 (bits 7~0). Each memory channel will have a
+/// value. creator: eff_config consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_twtr_l(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_EFF_DRAM_TWTR_L, 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_EFF_DRAM_TAAMIN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TWTR_L: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
///
-/// @brief ATTR_EFF_DRAM_TAAMIN getter
+/// @brief ATTR_EFF_DRAM_TWTR_L 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 (H)
+/// @note Generated by gen_accessors.pl generateParameters (E)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Minimum CAS Latency Time (tAAmin) in nCK. Decoded using DDR4 SPD byte 24 and
-/// byte 123. Right aligned. Bit 0 is
-/// rightmost.
+/// @note Minimum Write to Read Time, same bank group in nck (number of clock cycles).
+/// Decodes byte 43 (7~4) and byte 45 (bits 7~0). Each memory channel will have a
+/// value. creator: eff_config consumer: various firmware notes:
+/// none
///
-inline fapi2::ReturnCode eff_dram_taamin(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
+inline fapi2::ReturnCode eff_dram_twtr_l(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t* o_array)
{
if (o_array == nullptr)
{
@@ -27513,14 +21720,96 @@ inline fapi2::ReturnCode eff_dram_taamin(const fapi2::Target<fapi2::TARGET_TYPE_
return fapi2::FAPI2_RC_INVALID_PARAMETER;
}
- uint8_t l_value[2][2];
+ uint8_t l_value[2];
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TWTR_L, i_target, l_value) );
+ memcpy(o_array, &l_value, 2);
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TWTR_L: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TMAW getter
+/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCA>
+/// @param[out] ref to the value uint16_t
+/// @note Generated by gen_accessors.pl generateParameters (D)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Maximum Activate Window in nck (number of clock cycles). Decodes SPD byte 7
+/// (bits 5~4). Depends on tREFI multiplier. Each memory channel will have a value.
+/// creator: mss_eff_cnfg consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_tmaw(const fapi2::Target<fapi2::TARGET_TYPE_MCA>& i_target, uint16_t& o_value)
+{
+ uint16_t l_value[2];
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TMAW, 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_EFF_DRAM_TMAW: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TMAW getter
+/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_DIMM>
+/// @param[out] ref to the value uint16_t
+/// @note Generated by gen_accessors.pl generateParameters (D.1)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Maximum Activate Window in nck (number of clock cycles). Decodes SPD byte 7
+/// (bits 5~4). Depends on tREFI multiplier. Each memory channel will have a value.
+/// creator: mss_eff_cnfg consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_tmaw(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target, uint16_t& o_value)
+{
+ uint16_t l_value[2];
+ auto l_mca = i_target.getParent<fapi2::TARGET_TYPE_MCA>();
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TMAW, 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_EFF_DRAM_TMAW: 0x%lx (target: %s)",
+ uint64_t(fapi2::current_err), mss::c_str(i_target));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_EFF_DRAM_TMAW getter
+/// @param[in] const ref to the fapi2::Target<fapi2::TARGET_TYPE_MCS>
+/// @param[out] uint16_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 Maximum Activate Window in nck (number of clock cycles). Decodes SPD byte 7
+/// (bits 5~4). Depends on tREFI multiplier. Each memory channel will have a value.
+/// creator: mss_eff_cnfg consumer: various firmware notes:
+/// none
+///
+inline fapi2::ReturnCode eff_dram_tmaw(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint16_t* o_array)
+{
+ if (o_array == nullptr)
+ {
+ FAPI_ERR("nullptr passed to attribute accessor %s", __func__);
+ return fapi2::FAPI2_RC_INVALID_PARAMETER;
+ }
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TAAMIN, i_target, l_value) );
+ uint16_t l_value[2];
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EFF_DRAM_TMAW, i_target, l_value) );
memcpy(o_array, &l_value, 4);
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_EFF_DRAM_TAAMIN: 0x%lx (target: %s)",
+ FAPI_ERR("failed accessing ATTR_EFF_DRAM_TMAW: 0x%lx (target: %s)",
uint64_t(fapi2::current_err), mss::c_str(i_target));
return fapi2::current_err;
}
@@ -27590,28 +21879,6 @@ fapi_try_exit:
}
///
-/// @brief ATTR_MRW_MBA_CACHELINE_INTERLEAVE_MODE_CONTROL getter
-/// @param[out] uint8_t& reference to store the value
-/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
-/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note At a system level, this attribute controls if interleaving is required,
-/// requested or never. The
-/// MRW.
-///
-inline fapi2::ReturnCode mrw_mba_cacheline_interleave_mode_control(uint8_t& o_value)
-{
-
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_MBA_CACHELINE_INTERLEAVE_MODE_CONTROL,
- fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
- return fapi2::current_err;
-
-fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MRW_MBA_CACHELINE_INTERLEAVE_MODE_CONTROL: 0x%lx (system target)",
- uint64_t(fapi2::current_err));
- return fapi2::current_err;
-}
-
-///
/// @brief ATTR_MRW_DIMM_POWER_CURVE_PERCENT_UPLIFT getter
/// @param[out] uint8_t& reference to store the value
/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
@@ -27698,178 +21965,229 @@ fapi_try_exit:
}
///
-/// @brief ATTR_MRW_STRICT_MBA_PLUG_RULE_CHECKING getter
+/// @brief ATTR_MRW_MCS_PREFETCH_RETRY_THRESHOLD getter
/// @param[out] uint8_t& reference to store the value
/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note The MRW for a system should set this to TRUE for systems that must obey plug
-/// rules. Lab environments should default this to off and allow the user to
-/// override using normal methods to
-/// test.
+/// @note Option to control MCS prefetch retry threshold, for performance optimization.
+/// This attribute controls the number of retries in the prefetch engine. Retry
+/// threshold available ranges from 16 to 30. Note: Values outside those ranges will
+/// default to 30. In
+/// MRW.
///
-inline fapi2::ReturnCode mrw_strict_mba_plug_rule_checking(uint8_t& o_value)
+inline fapi2::ReturnCode mrw_mcs_prefetch_retry_threshold(uint8_t& o_value)
{
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_STRICT_MBA_PLUG_RULE_CHECKING, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(),
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_MCS_PREFETCH_RETRY_THRESHOLD, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(),
o_value) );
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MRW_STRICT_MBA_PLUG_RULE_CHECKING: 0x%lx (system target)",
+ FAPI_ERR("failed accessing ATTR_MRW_MCS_PREFETCH_RETRY_THRESHOLD: 0x%lx (system target)",
+ uint64_t(fapi2::current_err));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_MRW_POWER_CONTROL_REQUESTED getter
+/// @param[out] uint8_t& reference to store the value
+/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Capable power control settings. In
+/// MRW.
+///
+inline fapi2::ReturnCode mrw_power_control_requested(uint8_t& o_value)
+{
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_POWER_CONTROL_REQUESTED, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_MRW_POWER_CONTROL_REQUESTED: 0x%lx (system target)",
uint64_t(fapi2::current_err));
return fapi2::current_err;
}
///
-/// @brief ATTR_MRW_CDIMM_MASTER_I2C_TEMP_SENSOR_ENABLE getter
+/// @brief ATTR_MRW_VMEM_REGULATOR_POWER_LIMIT_PER_DIMM_ADJ_ENABLE getter
/// @param[out] uint8_t& reference to store the value
/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Used for Custom DIMMs to not enable the reading of the dimm temperature sensor
-/// on the master i2c
-/// bus
+/// @note Machine Readable Workbook enablement of the HWP code to adjust the VMEM
+/// regulator power limit based on number of installed
+/// DIMMs.
///
-inline fapi2::ReturnCode mrw_cdimm_master_i2c_temp_sensor_enable(uint8_t& o_value)
+inline fapi2::ReturnCode mrw_vmem_regulator_power_limit_per_dimm_adj_enable(uint8_t& o_value)
{
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_CDIMM_MASTER_I2C_TEMP_SENSOR_ENABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(),
- o_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_VMEM_REGULATOR_POWER_LIMIT_PER_DIMM_ADJ_ENABLE,
+ fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MRW_CDIMM_MASTER_I2C_TEMP_SENSOR_ENABLE: 0x%lx (system target)",
+ FAPI_ERR("failed accessing ATTR_MRW_VMEM_REGULATOR_POWER_LIMIT_PER_DIMM_ADJ_ENABLE: 0x%lx (system target)",
uint64_t(fapi2::current_err));
return fapi2::current_err;
}
///
-/// @brief ATTR_MRW_CDIMM_SPARE_I2C_TEMP_SENSOR_ENABLE getter
+/// @brief ATTR_MRW_MAX_NUMBER_DIMMS_POSSIBLE_PER_VMEM_REGULATOR getter
/// @param[out] uint8_t& reference to store the value
/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Used for Custom DIMMs to not enable the reading of the dimm temperature sensor
-/// on the spare i2c
-/// bus
+/// @note Machine Readable Workbook value for the maximum possible number of dimms that
+/// can be installed under any of the VMEM
+/// regulators.
///
-inline fapi2::ReturnCode mrw_cdimm_spare_i2c_temp_sensor_enable(uint8_t& o_value)
+inline fapi2::ReturnCode mrw_max_number_dimms_possible_per_vmem_regulator(uint8_t& o_value)
{
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_CDIMM_SPARE_I2C_TEMP_SENSOR_ENABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(),
- o_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_MAX_NUMBER_DIMMS_POSSIBLE_PER_VMEM_REGULATOR,
+ fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MRW_CDIMM_SPARE_I2C_TEMP_SENSOR_ENABLE: 0x%lx (system target)",
+ FAPI_ERR("failed accessing ATTR_MRW_MAX_NUMBER_DIMMS_POSSIBLE_PER_VMEM_REGULATOR: 0x%lx (system target)",
uint64_t(fapi2::current_err));
return fapi2::current_err;
}
///
-/// @brief ATTR_MRW_MCS_PREFETCH_RETRY_THRESHOLD getter
+/// @brief ATTR_MRW_AVDD_OFFSET_DISABLE getter
/// @param[out] uint8_t& reference to store the value
/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Option to control MCS prefetch retry threshold, for performance optimization.
-/// This attribute controls the number of retries in the prefetch engine. Retry
-/// threshold available ranges from 16 to 30. Note: Values outside those ranges will
-/// default to 30. In
+/// @note Used for to determine whether to apply an offset to AVDD. Supplied by
/// MRW.
///
-inline fapi2::ReturnCode mrw_mcs_prefetch_retry_threshold(uint8_t& o_value)
+inline fapi2::ReturnCode mrw_avdd_offset_disable(uint8_t& o_value)
{
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_MCS_PREFETCH_RETRY_THRESHOLD, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(),
- o_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_AVDD_OFFSET_DISABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MRW_MCS_PREFETCH_RETRY_THRESHOLD: 0x%lx (system target)",
+ FAPI_ERR("failed accessing ATTR_MRW_AVDD_OFFSET_DISABLE: 0x%lx (system target)",
uint64_t(fapi2::current_err));
return fapi2::current_err;
}
///
-/// @brief ATTR_MRW_POWER_CONTROL_REQUESTED getter
+/// @brief ATTR_MRW_VDD_OFFSET_DISABLE getter
/// @param[out] uint8_t& reference to store the value
/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Capable power control settings. In
+/// @note Used for to determine whether to apply an offset to VDD. Supplied by
/// MRW.
///
-inline fapi2::ReturnCode mrw_power_control_requested(uint8_t& o_value)
+inline fapi2::ReturnCode mrw_vdd_offset_disable(uint8_t& o_value)
{
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_POWER_CONTROL_REQUESTED, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_VDD_OFFSET_DISABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MRW_POWER_CONTROL_REQUESTED: 0x%lx (system target)",
+ FAPI_ERR("failed accessing ATTR_MRW_VDD_OFFSET_DISABLE: 0x%lx (system target)",
uint64_t(fapi2::current_err));
return fapi2::current_err;
}
///
-/// @brief ATTR_MRW_VMEM_REGULATOR_POWER_LIMIT_PER_DIMM_ADJ_ENABLE getter
+/// @brief ATTR_MRW_VCS_OFFSET_DISABLE getter
/// @param[out] uint8_t& reference to store the value
/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Machine Readable Workbook enablement of the HWP code to adjust the VMEM
-/// regulator power limit based on number of installed
-/// DIMMs.
+/// @note Used for to determine whether to apply an offset to VCS. Supplied by
+/// MRW.
///
-inline fapi2::ReturnCode mrw_vmem_regulator_power_limit_per_dimm_adj_enable(uint8_t& o_value)
+inline fapi2::ReturnCode mrw_vcs_offset_disable(uint8_t& o_value)
{
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_VMEM_REGULATOR_POWER_LIMIT_PER_DIMM_ADJ_ENABLE,
- fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_VCS_OFFSET_DISABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MRW_VMEM_REGULATOR_POWER_LIMIT_PER_DIMM_ADJ_ENABLE: 0x%lx (system target)",
+ FAPI_ERR("failed accessing ATTR_MRW_VCS_OFFSET_DISABLE: 0x%lx (system target)",
uint64_t(fapi2::current_err));
return fapi2::current_err;
}
///
-/// @brief ATTR_MRW_MAX_NUMBER_DIMMS_POSSIBLE_PER_VMEM_REGULATOR getter
+/// @brief ATTR_MRW_VPP_OFFSET_DISABLE getter
/// @param[out] uint8_t& reference to store the value
/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Machine Readable Workbook value for the maximum possible number of dimms that
-/// can be installed under any of the VMEM
-/// regulators.
+/// @note Used for to determine whether to apply an offset to VCS. Supplied by
+/// MRW.
///
-inline fapi2::ReturnCode mrw_max_number_dimms_possible_per_vmem_regulator(uint8_t& o_value)
+inline fapi2::ReturnCode mrw_vpp_offset_disable(uint8_t& o_value)
{
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_MAX_NUMBER_DIMMS_POSSIBLE_PER_VMEM_REGULATOR,
- fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_VPP_OFFSET_DISABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MRW_MAX_NUMBER_DIMMS_POSSIBLE_PER_VMEM_REGULATOR: 0x%lx (system target)",
+ FAPI_ERR("failed accessing ATTR_MRW_VPP_OFFSET_DISABLE: 0x%lx (system target)",
uint64_t(fapi2::current_err));
return fapi2::current_err;
}
///
-/// @brief ATTR_MRW_VMEM_REGULATOR_MEMORY_POWER_LIMIT_PER_DIMM getter
-/// @param[out] uint32_t& reference to store the value
+/// @brief ATTR_MRW_VDDR_OFFSET_DISABLE getter
+/// @param[out] uint8_t& reference to store the value
/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
-/// @note Machine Readable Workbook VMEM regulator power limit per CDIMM assuming a full
-/// configuration. Units in
-/// cW.
+/// @note Used for to determine whether to apply an offset to VDDR. Supplied by
+/// MRW.
///
-inline fapi2::ReturnCode mrw_vmem_regulator_memory_power_limit_per_dimm(uint32_t& o_value)
+inline fapi2::ReturnCode mrw_vddr_offset_disable(uint8_t& o_value)
{
- FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_VMEM_REGULATOR_MEMORY_POWER_LIMIT_PER_DIMM,
- fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_VDDR_OFFSET_DISABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_MRW_VDDR_OFFSET_DISABLE: 0x%lx (system target)",
+ uint64_t(fapi2::current_err));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_MRW_FINE_REFRESH_MODE getter
+/// @param[out] uint8_t& reference to store the value
+/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Fine refresh mode. Should be defaulted to normal mode. This is for DDR4
+/// MRS3.
+///
+inline fapi2::ReturnCode mrw_fine_refresh_mode(uint8_t& o_value)
+{
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_FINE_REFRESH_MODE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
+ return fapi2::current_err;
+
+fapi_try_exit:
+ FAPI_ERR("failed accessing ATTR_MRW_FINE_REFRESH_MODE: 0x%lx (system target)",
+ uint64_t(fapi2::current_err));
+ return fapi2::current_err;
+}
+
+///
+/// @brief ATTR_MRW_TEMP_REF_RANGE getter
+/// @param[out] uint8_t& reference to store the value
+/// @note Generated by gen_accessors.pl generateParameters (SYSTEM)
+/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK
+/// @note Temp ref range. Should be defaulted to extended range. This is for DDR4
+/// MRS4.
+///
+inline fapi2::ReturnCode mrw_temp_ref_range(uint8_t& o_value)
+{
+
+ FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_TEMP_REF_RANGE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) );
return fapi2::current_err;
fapi_try_exit:
- FAPI_ERR("failed accessing ATTR_MRW_VMEM_REGULATOR_MEMORY_POWER_LIMIT_PER_DIMM: 0x%lx (system target)",
+ FAPI_ERR("failed accessing ATTR_MRW_TEMP_REF_RANGE: 0x%lx (system target)",
uint64_t(fapi2::current_err));
return fapi2::current_err;
}
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/spd/spd_decoder.H b/src/import/chips/p9/procedures/hwp/memory/lib/spd/spd_decoder.H
index 6f983686b..df1979547 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/spd/spd_decoder.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/spd/spd_decoder.H
@@ -851,8 +851,8 @@ class decoder
/// integer and the Fine Offset for tRCmin (SPD byte 120)
/// used for correction to get the actual value.
///
- virtual fapi2::ReturnCode min_active_to_active_refresh_delay_time(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>&
- i_target,
+ virtual
+ fapi2::ReturnCode min_active_to_active_refresh_delay_time(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
int64_t& o_value);
///
/// @brief Decodes SDRAM Minimum Refresh Recovery Delay Time 1
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/utils/checker.H b/src/import/chips/p9/procedures/hwp/memory/lib/utils/checker.H
index 028c272d3..90db0ff9c 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/utils/checker.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/utils/checker.H
@@ -79,49 +79,6 @@ fapi_try_exit:
}// dram_type
-
-///
-/// @brief Checks nominal voltage is correct for all DIMMs
-/// @param[in] i_target the fapi2 target
-/// @param[in] i_dimm_state (i.e. functional or non-functional)
-/// @return ReturnCode
-///
-inline fapi2::ReturnCode module_nominal_voltage(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
- fapi2::TargetState i_dimm_state)
-{
-
- uint64_t l_module_nom_voltage[mss::PORTS_PER_MCS][mss::MAX_DIMM_PER_PORT] = {0};
-
- FAPI_TRY(mss::spd_module_nominal_voltage(i_target, &l_module_nom_voltage[0][0]));
-
- for (const auto& l_mca : i_target.getChildren<fapi2::TARGET_TYPE_MCA>())
- {
- const auto l_port_num = mss::index(l_mca);
-
- for (const auto& l_dimm : l_mca.getChildren<fapi2::TARGET_TYPE_DIMM>(i_dimm_state))
- {
- const auto l_dimm_num = mss::index(l_dimm);
-
- FAPI_INF("%s DRAM nominal voltage (in milliseconds) is %d",
- mss::c_str(l_dimm),
- l_module_nom_voltage[l_port_num][l_dimm_num]);
-
- // All DIMMs have to be operable at 1.2 V, else don't IPL (according to Warren)
- FAPI_ASSERT( l_module_nom_voltage[l_port_num][l_dimm_num] == fapi2::ENUM_ATTR_SPD_MODULE_NOMINAL_VOLTAGE_OPERABLE,
- fapi2::MSS_VOLT_DDR_TYPE_REQUIRED_VOLTAGE().
- set_DIMM_VOLTAGE(l_module_nom_voltage[l_port_num][l_dimm_num]),
- "%s.Failed conditional, data returned:o %d.",
- mss::c_str(l_dimm),
- l_module_nom_voltage[l_port_num][l_dimm_num] );
- }
- }
-
-fapi_try_exit:
- return fapi2::current_err;
-
-}// module_nominal_voltage
-
-
///
/// @brief Checks conditional and implements traces & exits if it fails
/// @param[in] i_target the dimm target
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/utils/conversions.H b/src/import/chips/p9/procedures/hwp/memory/lib/utils/conversions.H
index b273deff0..34926062c 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/utils/conversions.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/utils/conversions.H
@@ -30,12 +30,23 @@
#ifndef _MSS_CONVERSIONS_H_
#define _MSS_CONVERSIONS_H_
+#include <vector>
#include <fapi2.H>
#include <lib/mss_attribute_accessors.H>
-
#include <lib/shared/mss_const.H>
#include <lib/utils/find.H>
+///
+/// @brief Dereferences pointer of the vector's underlying data
+// and casts it to uint8_t[Y] that FAPI_ATTR_SET is expecting by deduction
+/// @param[in] X is the input vector
+/// @param[in] Y is the size of the vector
+///
+#define UINT8_VECTOR_TO_1D_ARRAY(X, Y)\
+ {\
+ reinterpret_cast<uint8_t(&)[Y]>(*X.data())\
+ }
+
// Mutiplication factor to go from clocks to simcycles.
// Is this just 2400 speed or does this hold for all? BRS
static const uint64_t SIM_CYCLES_PER_CYCLE = 8;
@@ -268,6 +279,7 @@ inline T ps_to_ns(const T i_time_in_ps)
return l_time_in_ns + ( remainder == 0 ? 0 : 1 );
}
+
};// mss namespace
#endif
diff --git a/src/import/chips/p9/procedures/hwp/memory/p9_mss_freq.C b/src/import/chips/p9/procedures/hwp/memory/p9_mss_freq.C
index 46096c172..8fc7c3ac1 100644
--- a/src/import/chips/p9/procedures/hwp/memory/p9_mss_freq.C
+++ b/src/import/chips/p9/procedures/hwp/memory/p9_mss_freq.C
@@ -99,7 +99,7 @@ extern "C"
FAPI_TRY(mss::set_freq_attrs(i_target, l_min_dimm_freq),
"Failed set_freq_attrs()");
- FAPI_TRY(mss::set_CL_attr(i_target, l_desired_cas_latency),
+ FAPI_TRY(mss::set_CL_attr(i_target, l_desired_cas_latency ),
"Failed set_CL_attr()");
FAPI_DBG( "Final Chosen Frequency: %d", l_min_dimm_freq);
diff --git a/src/import/chips/p9/procedures/hwp/memory/p9_mss_freq.H b/src/import/chips/p9/procedures/hwp/memory/p9_mss_freq.H
index 3be3259bd..fa1089a7b 100644
--- a/src/import/chips/p9/procedures/hwp/memory/p9_mss_freq.H
+++ b/src/import/chips/p9/procedures/hwp/memory/p9_mss_freq.H
@@ -71,18 +71,15 @@ fapi_try_exit:
inline fapi2::ReturnCode set_CL_attr(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target,
uint64_t i_cas_latency)
{
- // TK - Not sure if we still want this set at a port level - AAM
-
// Declaration of the vector correctly initializes it to the right size
// in the case the enum for PORTS_PER_MCS changes
- std::vector<uint64_t> l_cls_vect(mss::PORTS_PER_MCS, i_cas_latency);
+ std::vector<uint8_t> l_cls_vect(PORTS_PER_MCS, uint8_t(i_cas_latency) );
// set CAS latency attribute
- // Dereferences pointer of the vector's underlying data
- // and casts it to uint64_t[2] that FAPI_ATTR_SET is expecting by deduction
+ // casts vector into the type FAPI_ATTR_SET is expecting by deduction
FAPI_TRY( FAPI_ATTR_SET(fapi2::ATTR_EFF_DRAM_CL,
i_target,
- reinterpret_cast<uint64_t(&)[2]>(*l_cls_vect.data()) ) ,
+ UINT8_VECTOR_TO_1D_ARRAY(l_cls_vect, PORTS_PER_MCS)) ,
"Failed to set CAS latency attribute");
fapi_try_exit:
OpenPOWER on IntegriCloud