diff options
author | Andre Marin <aamarin@us.ibm.com> | 2016-04-19 20:15:17 -0500 |
---|---|---|
committer | Daniel M. Crowell <dcrowell@us.ibm.com> | 2016-05-12 11:10:06 -0400 |
commit | 26753f805150fca2ada15f8527b4433a7a4edaa0 (patch) | |
tree | 9cbec57bd369c16a21f4deee8223ccb203d0663b /src/import/chips | |
parent | effcd0c0d34e5e4032324e57a4d6d8d881167e32 (diff) | |
download | talos-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
Diffstat (limited to 'src/import/chips')
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: |