diff options
author | Andre Marin <aamarin@us.ibm.com> | 2019-07-09 15:50:06 -0400 |
---|---|---|
committer | Daniel M Crowell <dcrowell@us.ibm.com> | 2019-07-19 09:07:03 -0500 |
commit | 831f9e0d8b3297f38acd3f059b853f5711877530 (patch) | |
tree | a9b405fc568edca26ce2239fc15adc442c520794 /src | |
parent | dd6aa0faadde7069f8bf628b5557b98206730c2c (diff) | |
download | talos-hostboot-831f9e0d8b3297f38acd3f059b853f5711877530.tar.gz talos-hostboot-831f9e0d8b3297f38acd3f059b853f5711877530.zip |
Fix HB error with -Os compile flag due to eff_config
Top level template is NOT unique between the two files
when using the -Os compile flag. The linker just picks
the wrong file template definition between p9a and p9n.
In -O3 everything is left in place, inline so it just works
which is why we didn't hit this error before in HB
Change-Id: I529f93fc91684ae14a132d96f518a5f66f036d4b
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/80167
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Tested-by: HWSV CI <hwsv-ci+hostboot@us.ibm.com>
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com>
Reviewed-by: Louis Stermole <stermole@us.ibm.com>
Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com>
Dev-Ready: STEPHEN GLANCY <sglancy@us.ibm.com>
Reviewed-by: Jennifer A Stofer <stofer@us.ibm.com>
Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/80229
Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com>
Reviewed-by: Daniel M Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src')
16 files changed, 529 insertions, 575 deletions
diff --git a/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/eff_config/pmic_attr_engine_traits.H b/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/eff_config/pmic_attr_engine_traits.H index 4f5d51df3..cd4ee2a02 100644 --- a/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/eff_config/pmic_attr_engine_traits.H +++ b/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/eff_config/pmic_attr_engine_traits.H @@ -52,19 +52,21 @@ namespace mss /// /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, ATTR_EFF_BASE_CASE specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, ATTR_EFF_BASE_CASE partial specialization /// NOP for base case needed to trigger partial specialization of attr_engine /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::ATTR_EFF_BASE_CASE> {}; +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::ATTR_EFF_BASE_CASE> {}; /// /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, DRAM_MODULE_HEIGHT specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, DRAM_MODULE_HEIGHT partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::DRAM_MODULE_HEIGHT> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::DRAM_MODULE_HEIGHT> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_MODULE_HEIGHT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -115,10 +117,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::DRAM_MODULE_HEIGHT> /// /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_MFG_ID specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_MFG_ID partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_MFG_ID> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_MFG_ID> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_MFG_ID_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -165,10 +168,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_MFG_ID> /// /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWA_VOLTAGE_SETTING specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWA_VOLTAGE_SETTING partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWA_VOLTAGE_SETTING> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWA_VOLTAGE_SETTING> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWA_VOLTAGE_SETTING_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -215,10 +219,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWA_VOLTAGE_SE // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWA_VOLTAGE_RANGE_SELECT specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWA_VOLTAGE_RANGE_SELECT partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWA_VOLTAGE_RANGE_SELECT> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWA_VOLTAGE_RANGE_SELECT> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWA_VOLTAGE_RANGE_SELECT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -265,10 +270,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWA_VOLTAGE_RA // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWA_VOLTAGE_OFFSET specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWA_VOLTAGE_OFFSET partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWA_VOLTAGE_OFFSET> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWA_VOLTAGE_OFFSET> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWA_VOLTAGE_OFFSET_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -323,10 +329,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWA_VOLTAGE_OF // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWA_SEQUENCE_DELAY specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWA_SEQUENCE_DELAY partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWA_SEQUENCE_DELAY> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWA_SEQUENCE_DELAY> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWA_SEQUENCE_DELAY_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -373,10 +380,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWA_SEQUENCE_D // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWA_SEQUENCE_ORDER specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWA_SEQUENCE_ORDER partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWA_SEQUENCE_ORDER> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWA_SEQUENCE_ORDER> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWA_SEQUENCE_ORDER_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -423,10 +431,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWA_SEQUENCE_O /// /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWB_VOLTAGE_SETTING specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWB_VOLTAGE_SETTING partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWB_VOLTAGE_SETTING> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWB_VOLTAGE_SETTING> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWB_VOLTAGE_SETTING_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -473,10 +482,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWB_VOLTAGE_SE // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWB_VOLTAGE_RANGE_SELECT specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWB_VOLTAGE_RANGE_SELECT partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWB_VOLTAGE_RANGE_SELECT> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWB_VOLTAGE_RANGE_SELECT> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWB_VOLTAGE_RANGE_SELECT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -523,10 +533,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWB_VOLTAGE_RA // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWB_VOLTAGE_OFFSET specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWB_VOLTAGE_OFFSET partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWB_VOLTAGE_OFFSET> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWB_VOLTAGE_OFFSET> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWB_VOLTAGE_OFFSET_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -581,10 +592,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWB_VOLTAGE_OF // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWB_SEQUENCE_DELAY specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWB_SEQUENCE_DELAY partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWB_SEQUENCE_DELAY> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWB_SEQUENCE_DELAY> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWB_SEQUENCE_DELAY_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -631,10 +643,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWB_SEQUENCE_D // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWB_SEQUENCE_ORDER specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWB_SEQUENCE_ORDER partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWB_SEQUENCE_ORDER> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWB_SEQUENCE_ORDER> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWB_SEQUENCE_ORDER_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -682,10 +695,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWB_SEQUENCE_O /// /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWC_VOLTAGE_SETTING specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWC_VOLTAGE_SETTING partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWC_VOLTAGE_SETTING> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWC_VOLTAGE_SETTING> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWC_VOLTAGE_SETTING_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -732,10 +746,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWC_VOLTAGE_SE // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWC_VOLTAGE_RANGE_SELECT specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWC_VOLTAGE_RANGE_SELECT partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWC_VOLTAGE_RANGE_SELECT> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWC_VOLTAGE_RANGE_SELECT> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWC_VOLTAGE_RANGE_SELECT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -782,10 +797,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWC_VOLTAGE_RA // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWC_VOLTAGE_OFFSET specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWC_VOLTAGE_OFFSET partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWC_VOLTAGE_OFFSET> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWC_VOLTAGE_OFFSET> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWC_VOLTAGE_OFFSET_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -840,10 +856,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWC_VOLTAGE_OF // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWC_SEQUENCE_DELAY specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWC_SEQUENCE_DELAY partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWC_SEQUENCE_DELAY> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWC_SEQUENCE_DELAY> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWC_SEQUENCE_DELAY_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -890,10 +907,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWC_SEQUENCE_D // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWC_SEQUENCE_ORDER specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWC_SEQUENCE_ORDER partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWC_SEQUENCE_ORDER> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWC_SEQUENCE_ORDER> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWC_SEQUENCE_ORDER_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -941,10 +959,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWC_SEQUENCE_O /// /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWD_VOLTAGE_SETTING specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWD_VOLTAGE_SETTING partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWD_VOLTAGE_SETTING> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWD_VOLTAGE_SETTING> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWD_VOLTAGE_SETTING_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -991,10 +1010,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWD_VOLTAGE_SE // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWD_VOLTAGE_RANGE_SELECT specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWD_VOLTAGE_RANGE_SELECT partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWD_VOLTAGE_RANGE_SELECT> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWD_VOLTAGE_RANGE_SELECT> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWD_VOLTAGE_RANGE_SELECT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1041,10 +1061,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWD_VOLTAGE_RA // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWD_VOLTAGE_OFFSET specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWD_VOLTAGE_OFFSET partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWD_VOLTAGE_OFFSET> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWD_VOLTAGE_OFFSET> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWD_VOLTAGE_OFFSET_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1099,10 +1120,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWD_VOLTAGE_OF // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWD_SEQUENCE_DELAY specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWD_SEQUENCE_DELAY partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWD_SEQUENCE_DELAY> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWD_SEQUENCE_DELAY> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWD_SEQUENCE_DELAY_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1149,10 +1171,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWD_SEQUENCE_D // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_SWD_SEQUENCE_ORDER specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_SWD_SEQUENCE_ORDER partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWD_SEQUENCE_ORDER> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_SWD_SEQUENCE_ORDER> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_SWD_SEQUENCE_ORDER_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1199,10 +1222,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_SWD_SEQUENCE_O // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC0_PHASE_COMB specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC0_PHASE_COMB partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_PHASE_COMB> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC0_PHASE_COMB> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC0_PHASE_COMB_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1254,10 +1278,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC0_PHASE_COMB> /// /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_MFG_ID specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_MFG_ID partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_MFG_ID> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_MFG_ID> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_MFG_ID_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1304,10 +1329,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_MFG_ID> /// /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWA_VOLTAGE_SETTING specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWA_VOLTAGE_SETTING partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWA_VOLTAGE_SETTING> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWA_VOLTAGE_SETTING> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWA_VOLTAGE_SETTING_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1354,10 +1380,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWA_VOLTAGE_SE // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWA_VOLTAGE_RANGE_SELECT specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWA_VOLTAGE_RANGE_SELECT partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWA_VOLTAGE_RANGE_SELECT> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWA_VOLTAGE_RANGE_SELECT> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWA_VOLTAGE_RANGE_SELECT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1404,10 +1431,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWA_VOLTAGE_RA // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWA_VOLTAGE_OFFSET specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWA_VOLTAGE_OFFSET partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWA_VOLTAGE_OFFSET> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWA_VOLTAGE_OFFSET> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWA_VOLTAGE_OFFSET_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1462,10 +1490,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWA_VOLTAGE_OF // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWA_SEQUENCE_DELAY specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWA_SEQUENCE_DELAY partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWA_SEQUENCE_DELAY> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWA_SEQUENCE_DELAY> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWA_SEQUENCE_DELAY_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1512,10 +1541,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWA_SEQUENCE_D // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWA_SEQUENCE_ORDER specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWA_SEQUENCE_ORDER partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWA_SEQUENCE_ORDER> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWA_SEQUENCE_ORDER> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWA_SEQUENCE_ORDER_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1562,10 +1592,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWA_SEQUENCE_O /// /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWB_VOLTAGE_SETTING specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWB_VOLTAGE_SETTING partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWB_VOLTAGE_SETTING> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWB_VOLTAGE_SETTING> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWB_VOLTAGE_SETTING_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1612,10 +1643,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWB_VOLTAGE_SE // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWB_VOLTAGE_RANGE_SELECT specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWB_VOLTAGE_RANGE_SELECT partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWB_VOLTAGE_RANGE_SELECT> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWB_VOLTAGE_RANGE_SELECT> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWB_VOLTAGE_RANGE_SELECT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1662,10 +1694,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWB_VOLTAGE_RA // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWB_VOLTAGE_OFFSET specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWB_VOLTAGE_OFFSET partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWB_VOLTAGE_OFFSET> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWB_VOLTAGE_OFFSET> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWB_VOLTAGE_OFFSET_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1720,10 +1753,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWB_VOLTAGE_OF // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWB_SEQUENCE_DELAY specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWB_SEQUENCE_DELAY partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWB_SEQUENCE_DELAY> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWB_SEQUENCE_DELAY> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWB_SEQUENCE_DELAY_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1770,10 +1804,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWB_SEQUENCE_D // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWB_SEQUENCE_ORDER specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWB_SEQUENCE_ORDER partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWB_SEQUENCE_ORDER> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWB_SEQUENCE_ORDER> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWB_SEQUENCE_ORDER_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1820,10 +1855,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWB_SEQUENCE_O /// /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWC_VOLTAGE_SETTING specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWC_VOLTAGE_SETTING partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWC_VOLTAGE_SETTING> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWC_VOLTAGE_SETTING> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWC_VOLTAGE_SETTING_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1870,10 +1906,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWC_VOLTAGE_SE // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWC_VOLTAGE_RANGE_SELECT specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWC_VOLTAGE_RANGE_SELECT partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWC_VOLTAGE_RANGE_SELECT> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWC_VOLTAGE_RANGE_SELECT> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWC_VOLTAGE_RANGE_SELECT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1920,10 +1957,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWC_VOLTAGE_RA // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWC_VOLTAGE_OFFSET specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWC_VOLTAGE_OFFSET partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWC_VOLTAGE_OFFSET> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWC_VOLTAGE_OFFSET> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWC_VOLTAGE_OFFSET_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1978,10 +2016,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWC_VOLTAGE_OF // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWC_SEQUENCE_DELAY specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWC_SEQUENCE_DELAY partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWC_SEQUENCE_DELAY> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWC_SEQUENCE_DELAY> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWC_SEQUENCE_DELAY_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2028,10 +2067,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWC_SEQUENCE_D // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWC_SEQUENCE_ORDER specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWC_SEQUENCE_ORDER partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWC_SEQUENCE_ORDER> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWC_SEQUENCE_ORDER> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWC_SEQUENCE_ORDER_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2078,10 +2118,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWC_SEQUENCE_O /// /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWD_VOLTAGE_SETTING specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWD_VOLTAGE_SETTING partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWD_VOLTAGE_SETTING> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWD_VOLTAGE_SETTING> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWD_VOLTAGE_SETTING_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2128,10 +2169,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWD_VOLTAGE_SE // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWD_VOLTAGE_RANGE_SELECT specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWD_VOLTAGE_RANGE_SELECT partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWD_VOLTAGE_RANGE_SELECT> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWD_VOLTAGE_RANGE_SELECT> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWD_VOLTAGE_RANGE_SELECT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2178,10 +2220,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWD_VOLTAGE_RA // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWD_VOLTAGE_OFFSET specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWD_VOLTAGE_OFFSET partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWD_VOLTAGE_OFFSET> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWD_VOLTAGE_OFFSET> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWD_VOLTAGE_OFFSET_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2236,10 +2279,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWD_VOLTAGE_OF // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWD_SEQUENCE_DELAY specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWD_SEQUENCE_DELAY partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWD_SEQUENCE_DELAY> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWD_SEQUENCE_DELAY> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWD_SEQUENCE_DELAY_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2286,10 +2330,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWD_SEQUENCE_D // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_SWD_SEQUENCE_ORDER specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_SWD_SEQUENCE_ORDER partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWD_SEQUENCE_ORDER> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_SWD_SEQUENCE_ORDER> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_SWD_SEQUENCE_ORDER_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2336,10 +2381,11 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_SWD_SEQUENCE_O // /// @brief Traits for attr_engine /// @class attrEngineTraits -/// @note attr_eff_engine_fields, PMIC1_PHASE_COMB specialization +/// @tparam P processor type +/// @note P, pmic::attr_eff_engine_fields, PMIC1_PHASE_COMB partial specialization /// -template<> -struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_PHASE_COMB> +template< proc_type P> +struct attrEngineTraits<P, pmic::attr_eff_engine_fields, pmic::attr_eff_engine_fields::PMIC1_PHASE_COMB> { using attr_type = fapi2::ATTR_MEM_EFF_PMIC1_PHASE_COMB_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2383,17 +2429,6 @@ struct attrEngineTraits<pmic::attr_eff_engine_fields, pmic::PMIC1_PHASE_COMB> } }; -/// -/// @brief Value traits for attr_eff_engine_fields -/// @class attrEngineTraits -/// @note attr_eff_engine_fields -/// -template < > -struct attrEnumTraits<pmic::attr_eff_engine_fields> -{ - static constexpr size_t DISPATCHER = pmic::ATTR_EFF_DISPATCHER; -}; - }//mss #endif diff --git a/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/eff_config/pmic_efd_processing.C b/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/eff_config/pmic_efd_processing.C index 58bbc9aa2..32e3157cb 100644 --- a/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/eff_config/pmic_efd_processing.C +++ b/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/eff_config/pmic_efd_processing.C @@ -34,9 +34,6 @@ // *HWP Consumed by: HB:CI #include <fapi2.H> -#include <generic/memory/lib/data_engine/data_engine_traits_def.H> -#include <generic/memory/lib/data_engine/data_engine.H> -#include <generic/memory/lib/spd/spd_facade.H> #include <lib/mss_pmic_attribute_setters.H> #include <lib/eff_config/pmic_efd_processing.H> #include <lib/utils/pmic_consts.H> diff --git a/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/eff_config/pmic_efd_processing.H b/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/eff_config/pmic_efd_processing.H index 9a6997889..e09d8087f 100644 --- a/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/eff_config/pmic_efd_processing.H +++ b/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/eff_config/pmic_efd_processing.H @@ -37,9 +37,7 @@ #define _MSS_PMIC_EFD_PROCESSING_H_ #include <fapi2.H> -#include <generic/memory/lib/data_engine/data_engine_traits_def.H> -#include <generic/memory/lib/data_engine/data_engine.H> -#include <generic/memory/lib/spd/spd_facade.H> +#include <generic/memory/lib/spd/ddimm/efd_decoder.H> namespace mss { diff --git a/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/utils/pmic_consts.H b/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/utils/pmic_consts.H index 96d7e9932..8908d8779 100644 --- a/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/utils/pmic_consts.H +++ b/src/import/chips/ocmb/common/procedures/hwp/pmic/lib/utils/pmic_consts.H @@ -98,7 +98,7 @@ enum rail SWD = 3, }; -enum attr_eff_engine_fields +enum class attr_eff_engine_fields { // Template recursive base case ATTR_EFF_BASE_CASE = 0, @@ -160,7 +160,7 @@ enum attr_eff_engine_fields DRAM_MODULE_HEIGHT = 45, // Dispatcher set to last enum value - ATTR_EFF_DISPATCHER = DRAM_MODULE_HEIGHT, + DISPATCHER = DRAM_MODULE_HEIGHT, }; /// diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_attr_engine_traits.H b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_attr_engine_traits.H index ff72e2e65..8ed2289b5 100644 --- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_attr_engine_traits.H +++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/eff_config/explorer_attr_engine_traits.H @@ -58,7 +58,7 @@ namespace mss /// @note exp::attr_eff_engine_fields, SPD_TAA_MIN /// template< > -struct setTimingTraits< exp::attr_eff_engine_fields, exp::SPD_TAA_MIN > +struct setTimingTraits< exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::SPD_TAA_MIN > { static constexpr const char* TIMING_NAME = "tAAmin"; @@ -74,19 +74,21 @@ struct setTimingTraits< exp::attr_eff_engine_fields, exp::SPD_TAA_MIN > /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, ATTR_EFF_BASE_CASE specialization /// NOP for base case needed to trigger partial specialization of attr_engine /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::ATTR_EFF_BASE_CASE> {}; +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::ATTR_EFF_BASE_CASE> {}; /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, ADDRESS_MIRROR specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::ADDRESS_MIRROR> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::ADDRESS_MIRROR> { using attr_type = fapi2::ATTR_MEM_EXP_DRAM_ADDRESS_MIRRORING_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -133,10 +135,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::ADDRESS_MIRROR> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, BYTE_ENABLES specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::BYTE_ENABLES> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::BYTE_ENABLES> { using attr_type = fapi2::ATTR_MEM_EFF_BYTE_ENABLES_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -183,10 +186,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::BYTE_ENABLES> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, NIBBLE_ENABLES specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::NIBBLE_ENABLES> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::NIBBLE_ENABLES> { using attr_type = fapi2::ATTR_MEM_EFF_NIBBLE_ENABLES_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -233,10 +237,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::NIBBLE_ENABLES> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, SPD_TAA_MIN specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::SPD_TAA_MIN> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::SPD_TAA_MIN> { using attr_type = fapi2::ATTR_MEM_EXP_SPD_TAA_MIN_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -276,17 +281,19 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::SPD_TAA_MIN> static fapi2::ReturnCode get_value_to_set(const spd::facade& i_spd_data, attr_integral_type& o_setting) { - return mss::calc_spd_time_in_ps<exp::attr_eff_engine_fields, exp::SPD_TAA_MIN>(i_spd_data, o_setting); + return mss::calc_spd_time_in_ps<exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::SPD_TAA_MIN>(i_spd_data, + o_setting); } }; /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, FOUR_RANK_MODE specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::FOUR_RANK_MODE> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::FOUR_RANK_MODE> { using attr_type = fapi2::ATTR_MEM_EFF_FOUR_RANK_MODE_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -340,10 +347,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::FOUR_RANK_MODE> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, DDP_COMPATIBILITY specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::DDP_COMPATIBILITY> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::DDP_COMPATIBILITY> { using attr_type = fapi2::ATTR_MEM_EFF_DDP_COMPATIBILITY_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -397,10 +405,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::DDP_COMPATIBILITY> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, TSV_8H_SUPPORT specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::TSV_8H_SUPPORT> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::TSV_8H_SUPPORT> { using attr_type = fapi2::ATTR_MEM_EFF_TSV_8H_SUPPORT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -447,10 +456,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::TSV_8H_SUPPORT> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, PSTATES specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::PSTATES> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::PSTATES> { using attr_type = fapi2::ATTR_MEM_EFF_PSTATES_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -497,10 +507,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::PSTATES> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, MRAM_SUPPORT specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::MRAM_SUPPORT> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::MRAM_SUPPORT> { using attr_type = fapi2::ATTR_MEM_EFF_MRAM_SUPPORT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -554,10 +565,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::MRAM_SUPPORT> /// /// @brief Traits for attr_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note attr_eff_engine_fields, SPD_CL_SUPPORTED specialization /// -template<> -struct attrEngineTraits<exp::attr_eff_engine_fields, exp::SPD_CL_SUPPORTED> +template< proc_type P > +struct attrEngineTraits<P, exp::attr_eff_engine_fields, exp::attr_eff_engine_fields::SPD_CL_SUPPORTED> { using attr_type = fapi2::ATTR_MEM_EXP_SPD_CL_SUPPORTED_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -610,10 +622,11 @@ struct attrEngineTraits<exp::attr_eff_engine_fields, exp::SPD_CL_SUPPORTED> /// /// @brief Traits for pre_data_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note AXONE, DIMM_TYPE_METADATA specialization /// -template<> -struct attrEngineTraits<generic_metadata_fields, DIMM_TYPE_METADATA> +template< proc_type P > +struct attrEngineTraits<P, generic_metadata_fields, generic_metadata_fields::DIMM_TYPE_METADATA> { using attr_type = fapi2::ATTR_MEM_DIMM_TYPE_METADATA_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -694,10 +707,11 @@ class dimmPosTraits<mss::mc_type::EXPLORER> /// /// @brief Traits for pre_data_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note generic_metadata_fields, DRAM_GEN_METADATA specialization /// -template<> -struct attrEngineTraits<generic_metadata_fields, DRAM_GEN_METADATA> +template< proc_type P > +struct attrEngineTraits<P, generic_metadata_fields, generic_metadata_fields::DRAM_GEN_METADATA> { using attr_type = fapi2::ATTR_MEM_DRAM_GEN_METADATA_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -744,10 +758,11 @@ struct attrEngineTraits<generic_metadata_fields, DRAM_GEN_METADATA> /// /// @brief Traits for pre_data_engine /// @class attrEngineTraits +/// @tparam P processor type /// @note generic_metadata_fields, DIMM_POS_METADATA specialization /// -template<> -struct attrEngineTraits<generic_metadata_fields, DIMM_POS_METADATA> +template< proc_type P > +struct attrEngineTraits<P, generic_metadata_fields, generic_metadata_fields::DIMM_POS_METADATA> { using attr_type = fapi2::ATTR_MEM_DIMM_POS_METADATA_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -792,33 +807,6 @@ struct attrEngineTraits<generic_metadata_fields, DIMM_POS_METADATA> } }; -//////////////////////////////////////////////////////// -// Explorer specific traits for attrEnumTraits -//////////////////////////////////////////////////////// - - -/// -/// @brief Value traits for attr_eff_engine_fields -/// @class attrEngineTraits -/// @note exp::attr_eff_engine_fields are exp DDIMM SPD fields -/// -template < > -struct attrEnumTraits<exp::attr_eff_engine_fields> -{ - static constexpr size_t DISPATCHER = exp::ATTR_EFF_DISPATCHER; -}; - -/// -/// @brief Value traits for attr_eff_engine_fields -/// @class attrEngineTraits -/// @note generic_metadata_fields used for dimm pos setting -/// -template < > -struct attrEnumTraits<generic_metadata_fields> -{ - static constexpr size_t DISPATCHER = ATTR_METADATA_DISPATCHER; -}; - }//mss #endif diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H index 910213e59..b2b93fedf 100644 --- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H +++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/shared/exp_consts.H @@ -90,9 +90,9 @@ enum attr_delay_index /// @brief enum list of explorer SPD derived attributes to set /// @note these attrs are strictly derived from SPD /// @warning wrapped in exp namesapce to be distinguished from -/// the generic attr_eff_engine_fields +/// the exp::attr_eff_engine_fields /// -enum attr_eff_engine_fields +enum class attr_eff_engine_fields { // Template recursive base case ATTR_EFF_BASE_CASE = 0, @@ -110,7 +110,7 @@ enum attr_eff_engine_fields ADDRESS_MIRROR = 10, // Dispatcher set to last enum value - ATTR_EFF_DISPATCHER = ADDRESS_MIRROR, + DISPATCHER = ADDRESS_MIRROR, }; /// diff --git a/src/import/chips/p9a/procedures/hwp/memory/p9a_mss_eff_config.C b/src/import/chips/p9a/procedures/hwp/memory/p9a_mss_eff_config.C index 059121ac3..2e20bac7a 100644 --- a/src/import/chips/p9a/procedures/hwp/memory/p9a_mss_eff_config.C +++ b/src/import/chips/p9a/procedures/hwp/memory/p9a_mss_eff_config.C @@ -94,7 +94,7 @@ fapi2::ReturnCode p9a_mss_eff_config( const fapi2::Target<fapi2::TARGET_TYPE_MEM FAPI_TRY( mss::efd::factory(l_ocmb, l_vpd_raw, l_vpd_info.iv_rank, l_efd_data) ); // Set up SI ATTRS - FAPI_TRY( mss::attr_si_engine<mss::attr_si_engine_fields>::set(l_efd_data) ); + FAPI_TRY( (mss::gen::attr_engine<mss::proc_type::AXONE, mss::attr_si_engine_fields>::set(l_efd_data)) ); // Explorer EFD FAPI_TRY( mss::exp::efd::process(dimm, l_efd_data)); @@ -115,18 +115,18 @@ fapi2::ReturnCode p9a_mss_eff_config( const fapi2::Target<fapi2::TARGET_TYPE_MEM FAPI_TRY( l_rc, "Failed to initialize SPD facade for %s", mss::spd::c_str(dimm) ); // Set up generic SPD ATTRS - FAPI_TRY( mss::attr_eff_engine<mss::attr_eff_engine_fields>::set(l_spd_decoder) ); + FAPI_TRY( (mss::gen::attr_engine<mss::proc_type::AXONE, mss::attr_eff_engine_fields>::set(l_spd_decoder)) ); // Set up explorer SPD ATTRS - FAPI_TRY( mss::attr_eff_engine<mss::exp::attr_eff_engine_fields>::set(l_spd_decoder) ); + FAPI_TRY( (mss::gen::attr_engine<mss::proc_type::AXONE, mss::exp::attr_eff_engine_fields>::set(l_spd_decoder)) ); // Set up pmic SPD ATTRS - FAPI_TRY( mss::attr_eff_engine<mss::pmic::attr_eff_engine_fields>::set(l_spd_decoder) ); + FAPI_TRY( (mss::gen::attr_engine<mss::proc_type::AXONE, mss::pmic::attr_eff_engine_fields>::set(l_spd_decoder)) ); } } // Set up derived ATTRS - FAPI_TRY( mss::attr_derived_engine<mss::attr_engine_derived_fields>::set(dimm) ); + FAPI_TRY( (mss::gen::attr_engine<mss::proc_type::AXONE, mss::attr_engine_derived_fields>::set(dimm)) ); }// dimm diff --git a/src/import/chips/p9a/procedures/hwp/memory/p9a_mss_freq.C b/src/import/chips/p9a/procedures/hwp/memory/p9a_mss_freq.C index 6646ba5c4..73b7ed5a8 100644 --- a/src/import/chips/p9a/procedures/hwp/memory/p9a_mss_freq.C +++ b/src/import/chips/p9a/procedures/hwp/memory/p9a_mss_freq.C @@ -78,8 +78,13 @@ fapi2::ReturnCode p9a_mss_freq( const fapi2::Target<fapi2::TARGET_TYPE_MEM_PORT> // Checks that the facade was setup correctly FAPI_TRY( l_rc, "Failed to initialize SPD facade for %s", mss::spd::c_str(d) ); - FAPI_TRY( mss::attr_eff_engine<mss::pre_data_init_fields>::set(l_spd_decoder) ); - FAPI_TRY( mss::attr_derived_engine<mss::generic_metadata_fields>::set(d) ); + // Set pre-eff_config SPD driven attributes + FAPI_TRY( (mss::gen::attr_engine<mss::proc_type::AXONE, mss::pre_data_init_fields>::set(l_spd_decoder)), + "Failed gen::attr_engine<mss::proc_type::AXONE, mss::pre_data_init_fields>::set on %s", mss::spd::c_str(d) ); + + // Set pre_eff_config attributes derived from other attributes + FAPI_TRY( (mss::gen::attr_engine<mss::proc_type::AXONE, mss::generic_metadata_fields>::set(d)), + "Failed gen::attr_engine<mss::proc_type::AXONE, mss::generic_metadata_fields>::set on %s", mss::spd::c_str(d) ); } } diff --git a/src/import/generic/memory/lib/data_engine/attr_engine_traits.H b/src/import/generic/memory/lib/data_engine/attr_engine_traits.H index d78a0aa95..4a89e13ec 100644 --- a/src/import/generic/memory/lib/data_engine/attr_engine_traits.H +++ b/src/import/generic/memory/lib/data_engine/attr_engine_traits.H @@ -53,11 +53,12 @@ namespace mss /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_eff_engine_fields, PRIM_STACK_TYPE specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, PRIM_STACK_TYPE> +template< proc_type P > +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::PRIM_STACK_TYPE> { using attr_type = fapi2::ATTR_MEM_EFF_PRIM_STACK_TYPE_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -103,11 +104,12 @@ struct attrEngineTraits<attr_eff_engine_fields, PRIM_STACK_TYPE> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_eff_engine_fields, PRIM_DIE_COUNT specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, PRIMARY_DIE_COUNT> +template< proc_type P > +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::PRIMARY_DIE_COUNT> { using attr_type = fapi2::ATTR_MEM_EFF_PRIM_DIE_COUNT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -182,11 +184,12 @@ struct attrEngineTraits<attr_eff_engine_fields, PRIMARY_DIE_COUNT> /// /// @brief Traits for pre_data_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_eff_engine_fields, DRAM_DENSITY specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_DENSITY> +template< proc_type P > +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_DENSITY> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_DENSITY_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -254,11 +257,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_DENSITY> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_engine_derived_fields, BUS_WIDTH specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, PRIM_BUS_WIDTH> +template< proc_type P > +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::PRIM_BUS_WIDTH> { using attr_type = fapi2::ATTR_MEM_EFF_PRIM_BUS_WIDTH_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -330,11 +334,12 @@ struct attrEngineTraits<attr_eff_engine_fields, PRIM_BUS_WIDTH> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_eff_engine_fields, DRAM_WIDTH specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_WIDTH> +template< proc_type P > +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_WIDTH> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_WIDTH_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -407,11 +412,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_WIDTH> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, COLUMN_ADDR_BITS specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, COLUMN_ADDR_BITS> +template< proc_type P > +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::COLUMN_ADDR_BITS> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_COLUMN_BITS_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -471,11 +477,12 @@ struct attrEngineTraits<attr_eff_engine_fields, COLUMN_ADDR_BITS> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, ROW_ADDR_BITS specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, ROW_ADDR_BITS> +template< proc_type P > +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::ROW_ADDR_BITS> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_ROW_BITS_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -543,19 +550,21 @@ struct attrEngineTraits<attr_eff_engine_fields, ROW_ADDR_BITS> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, ATTR_SI_BASE_CASE specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, ATTR_SI_BASE_CASE> {}; +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::ATTR_SI_BASE_CASE> {}; /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_MC_RCV_IMP_DQ_DQS specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_MC_RCV_IMP_DQ_DQS> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_MC_RCV_IMP_DQ_DQS> { using attr_type = fapi2::ATTR_MEM_SI_MC_RCV_IMP_DQ_DQS_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -622,11 +631,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_MC_RCV_IMP_DQ_DQS> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_MC_DRV_IMP_DQ_DQS_PULL_UP specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_IMP_DQ_DQS_PULL_UP> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_MC_DRV_IMP_DQ_DQS_PULL_UP> { using attr_type = fapi2::ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_UP_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -706,11 +716,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_IMP_DQ_DQS_PULL_UP> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN> { using attr_type = fapi2::ATTR_MEM_SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -791,11 +802,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_IMP_DQ_DQS_PULL_DOWN> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_MC_DRV_SLEW_RATE_DQ_DQS specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_SLEW_RATE_DQ_DQS> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_MC_DRV_SLEW_RATE_DQ_DQS> { using attr_type = fapi2::ATTR_MEM_SI_MC_DRV_SLEW_RATE_DQ_DQS_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -841,11 +853,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_SLEW_RATE_DQ_DQS> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_MC_DRV_IMP_CMD_ADDR specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_IMP_CMD_ADDR> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_MC_DRV_IMP_CMD_ADDR> { using attr_type = fapi2::ATTR_MEM_SI_MC_DRV_IMP_CMD_ADDR_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -913,11 +926,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_IMP_CMD_ADDR> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_MC_DRV_SLEW_RATE_CMD_ADDR specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_SLEW_RATE_CMD_ADDR> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_MC_DRV_SLEW_RATE_CMD_ADDR> { using attr_type = fapi2::ATTR_MEM_SI_MC_DRV_SLEW_RATE_CMD_ADDR_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -963,11 +977,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_SLEW_RATE_CMD_ADDR> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_MC_DRV_IMP_CLK specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_IMP_CLK> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_MC_DRV_IMP_CLK> { using attr_type = fapi2::ATTR_MEM_SI_MC_DRV_IMP_CLK_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1035,11 +1050,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_IMP_CLK> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_MC_DRV_SLEW_RATE_CLK specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_SLEW_RATE_CLK> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_MC_DRV_SLEW_RATE_CLK> { using attr_type = fapi2::ATTR_MEM_SI_MC_DRV_SLEW_RATE_CLK_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1085,11 +1101,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_SLEW_RATE_CLK> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_MC_RCV_IMP_ALERT_N specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_MC_RCV_IMP_ALERT_N> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_MC_RCV_IMP_ALERT_N> { using attr_type = fapi2::ATTR_MEM_SI_MC_RCV_IMP_ALERT_N_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1157,11 +1174,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_MC_RCV_IMP_ALERT_N> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_DRAM_RTT_NOM specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_DRAM_RTT_NOM> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_DRAM_RTT_NOM> { using attr_type = fapi2::ATTR_MEM_SI_DRAM_RTT_NOM_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1227,11 +1245,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_DRAM_RTT_NOM> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_DRAM_RTT_WR specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_DRAM_RTT_WR> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_DRAM_RTT_WR> { using attr_type = fapi2::ATTR_MEM_SI_DRAM_RTT_WR_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1294,11 +1313,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_DRAM_RTT_WR> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_DRAM_RTT_PARK specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_DRAM_RTT_PARK> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_DRAM_RTT_PARK> { using attr_type = fapi2::ATTR_MEM_SI_DRAM_RTT_PARK_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1366,11 +1386,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_DRAM_RTT_PARK> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_DRAM_PREAMBLE specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_DRAM_PREAMBLE> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_DRAM_PREAMBLE> { using attr_type = fapi2::ATTR_MEM_SI_DRAM_PREAMBLE_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1417,11 +1438,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_DRAM_PREAMBLE> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_MC_DRV_EQ_DQ_DQS specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_EQ_DQ_DQS> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_MC_DRV_EQ_DQ_DQS> { using attr_type = fapi2::ATTR_MEM_SI_MC_DRV_EQ_DQ_DQS_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1467,11 +1489,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_MC_DRV_EQ_DQ_DQS> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_DRAM_DRV_IMP_DQ_DQS specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_DRAM_DRV_IMP_DQ_DQS> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_DRAM_DRV_IMP_DQ_DQS> { using attr_type = fapi2::ATTR_MEM_SI_DRAM_DRV_IMP_DQ_DQS_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1534,11 +1557,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_DRAM_DRV_IMP_DQ_DQS> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_ODT_WR specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_ODT_WR> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_ODT_WR> { using attr_type = fapi2::ATTR_MEM_SI_ODT_WR_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1618,11 +1642,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_ODT_WR> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_ODT_RD specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_ODT_RD> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_ODT_RD> { using attr_type = fapi2::ATTR_MEM_SI_ODT_RD_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1702,11 +1727,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_ODT_RD> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_si_engine_fields, SI_GEARDOWN_MODE specialization /// -template<> -struct attrEngineTraits<attr_si_engine_fields, SI_GEARDOWN_MODE> +template< proc_type P > +struct attrEngineTraits<P, attr_si_engine_fields, attr_si_engine_fields::SI_GEARDOWN_MODE> { using attr_type = fapi2::ATTR_MEM_SI_GEARDOWN_MODE_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1756,11 +1782,12 @@ struct attrEngineTraits<attr_si_engine_fields, SI_GEARDOWN_MODE> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, MRANKS specialization /// -template<> -struct attrEngineTraits<attr_engine_derived_fields, LOGICAL_RANKS> +template< proc_type P > +struct attrEngineTraits<P, attr_engine_derived_fields, attr_engine_derived_fields::LOGICAL_RANKS> { using attr_type = fapi2::ATTR_MEM_EFF_LOGICAL_RANKS_PER_DIMM_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1825,11 +1852,12 @@ struct attrEngineTraits<attr_engine_derived_fields, LOGICAL_RANKS> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_engine_derived_fields, MEM_DIMM_SIZE specialization /// -template<> -struct attrEngineTraits<attr_engine_derived_fields, MEM_DIMM_SIZE> +template< proc_type P > +struct attrEngineTraits<P, attr_engine_derived_fields, attr_engine_derived_fields::MEM_DIMM_SIZE> { using attr_type = fapi2::ATTR_MEM_EFF_DIMM_SIZE_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1894,11 +1922,12 @@ struct attrEngineTraits<attr_engine_derived_fields, MEM_DIMM_SIZE> /// /// @brief Traits for attr_engine -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attr_engine_derived_fields, HEIGHT_3DS specialization /// -template<> -struct attrEngineTraits<attr_engine_derived_fields, HEIGHT_3DS> +template< proc_type P > +struct attrEngineTraits<P, attr_engine_derived_fields, attr_engine_derived_fields::HEIGHT_3DS> { using attr_type = fapi2::ATTR_MEM_3DS_HEIGHT_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -1966,11 +1995,12 @@ struct attrEngineTraits<attr_engine_derived_fields, HEIGHT_3DS> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_CWL specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_CWL> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_CWL> { using attr_type = fapi2::ATTR_MEM_DRAM_CWL_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2063,11 +2093,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_CWL> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TREFI specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TREFI> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TREFI> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TREFI_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2199,11 +2230,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_TREFI> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TCCD_L specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TCCD_L> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TCCD_L> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TCCD_L_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2299,11 +2331,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_TCCD_L> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TWTR_L specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TWTR_L> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TWTR_L> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TWTR_L_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2390,11 +2423,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_TWTR_L> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TWTR_S specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TWTR_S> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TWTR_S> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TWTR_S_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2481,11 +2515,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_TWTR_S> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TFAW specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TFAW> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TFAW> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TFAW_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2598,11 +2633,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_TFAW> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TRCD specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRCD> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TRCD> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TRCD_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2697,11 +2733,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRCD> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TRP specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRP> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TRP> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TRP_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2799,11 +2836,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRP> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TRAS specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRAS> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TRAS> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TRAS_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2883,11 +2921,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRAS> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TWR specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TWR> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TWR> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TWR_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -2980,11 +3019,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_TWR> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TRTP specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRTP> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TRTP> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TRTP_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -3056,11 +3096,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRTP> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TRRD_S specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRRD_S> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TRRD_S> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TRRD_S_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -3178,11 +3219,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRRD_S> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TRRD_L specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRRD_L> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TRRD_L> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TRRD_L_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -3300,11 +3342,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRRD_L> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TRFC specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRFC> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TRFC> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TRFC_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -3427,11 +3470,12 @@ struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRFC> /// /// @brief Traits for attrEngineTraits -/// @class attrEngineTraits +/// @class attrEngineTraits - partial specialization +/// @tparam P processor type /// @note attrEngineTraits, DRAM_TRFC_DLR specialization /// -template<> -struct attrEngineTraits<attr_eff_engine_fields, DRAM_TRFC_DLR> +template<proc_type P> +struct attrEngineTraits<P, attr_eff_engine_fields, attr_eff_engine_fields::DRAM_TRFC_DLR> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_TRFC_DLR_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; diff --git a/src/import/generic/memory/lib/data_engine/data_engine.H b/src/import/generic/memory/lib/data_engine/data_engine.H index 806fbf024..a4dfbf8ae 100644 --- a/src/import/generic/memory/lib/data_engine/data_engine.H +++ b/src/import/generic/memory/lib/data_engine/data_engine.H @@ -135,138 +135,6 @@ fapi_try_exit: return fapi2::current_err; } -/// -/// @brief Sets preliminary data fields -/// @tparam F pre_data_init_fields -/// @tparam T FAPI2 target type -/// @tparam IT Input data type -/// @tparam TT defaulted to preDataInitTraits<T> -/// @param[in] i_setting value we want to set attr with -/// @return FAPI2_RC_SUCCESS iff okay -/// -template< attr_eff_engine_fields F, - fapi2::TargetType T, - typename IT, - typename TT = mss::attrEngineTraits<decltype(F), F> - > -inline fapi2::ReturnCode set_field(const fapi2::Target<T>& i_target, - const IT i_setting) -{ - FAPI_TRY( (gen::set_field<TT>(i_target, i_setting)), - "Failed set_field() for %s", spd::c_str(i_target) ); - -fapi_try_exit: - return fapi2::current_err; -} - -/// -/// @brief Value traits for attrEnumTraits -/// @class attrEnumTraits - attr_si_engine_fields specialization -/// -template < > -struct attrEnumTraits<attr_si_engine_fields> -{ - static constexpr size_t DISPATCHER = ATTR_SI_DISPATCHER; -}; - -/// -/// @brief Value traits for attrEnumTraits -/// @class attrEnumTraits - attr_eff_engine_fields specialization -/// -template < > -struct attrEnumTraits<attr_eff_engine_fields> -{ - static constexpr size_t DISPATCHER = ATTR_EFF_DISPATCHER; -}; - -/// -/// @brief Value traits for attrEnumTraits -/// @class attrEnumTraits - attr_eff_engine_fields specialization -/// -template < > -struct attrEnumTraits<pre_data_init_fields> -{ - static constexpr size_t DISPATCHER = ATTR_PRE_DATA_ENG_DISPATCHER; -}; - -/// -/// @brief Value traits for attrEnumTraits -/// @class attrEnumTraits - attr_eff_engine_fields specialization -/// -template < > -struct attrEnumTraits<attr_engine_derived_fields> -{ - static constexpr size_t DISPATCHER = ATTR_DERIVED_DISPATCHER; -}; - -/// -/// @brief attribute signal integrity engine -/// @class attr_si_engine -/// @tparam ET field enumeration type -/// @tparam TT defaulted to attrEnumTraits<ET> -/// -template < typename ET, typename TT = attrEnumTraits<ET> > -struct attr_si_engine -{ - using attr_eng_t = gen::attr_engine<ET, static_cast<ET>(TT::DISPATCHER)>; - - /// - /// @brief Sets attr_si_engine_fields - /// @tparam[in] IT rank input type - /// @param[in] i_target the DIMM target - /// @param[in] i_efd_data EFD data - /// @param[in] i_rank current rank - /// @return FAPI2_RC_SUCCESS iff ok - /// - static fapi2::ReturnCode set(const std::shared_ptr<efd::base_decoder>& i_efd_data) - { - return attr_eng_t::set(i_efd_data); - } -}; - -/// -/// @brief Data structure to set effective config EFF data -/// @class pre_attr_eff_engine -/// @tparam F attr_eff_engine_fields enum -/// -template < typename ET, typename TT = attrEnumTraits<ET> > -struct attr_eff_engine -{ - using attr_eng_t = gen::attr_engine<ET, static_cast<ET>(TT::DISPATCHER)>; - - /// - /// @brief Sets attr_si_engine_fields - /// @param[in] i_target the DIMM target - /// @param[in] i_spd_data EFD data - /// @return FAPI2_RC_SUCCESS iff ok - /// - static fapi2::ReturnCode set(const mss::spd::facade& i_spd_data) - { - return attr_eng_t::set(i_spd_data); - } -}; - -/// -/// @brief Data structure to set effective config EFF data -/// @class attr_derived_engine -/// @tparam ET attr fields enum type -/// -template < typename ET, typename TT = attrEnumTraits<ET> > -struct attr_derived_engine -{ - using attr_eng_t = gen::attr_engine<ET, static_cast<ET>(TT::DISPATCHER)>; - - /// - /// @brief Sets attr fields denoted by an eum list - /// @param[in] i_target the DIMM target - /// @return FAPI2_RC_SUCCESS iff ok - /// - static fapi2::ReturnCode set(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target) - { - return attr_eng_t::set(i_target); - } -}; - }// mss #endif diff --git a/src/import/generic/memory/lib/data_engine/data_engine_traits_def.H b/src/import/generic/memory/lib/data_engine/data_engine_traits_def.H index 702e0db9a..14c6bc518 100644 --- a/src/import/generic/memory/lib/data_engine/data_engine_traits_def.H +++ b/src/import/generic/memory/lib/data_engine/data_engine_traits_def.H @@ -45,7 +45,7 @@ namespace mss /// /// @brief enum list of preliminary data fields needed before eff_config /// -enum pre_data_init_fields +enum class pre_data_init_fields { // Template recursive base case ATTR_PRE_DATA_ENGINE_CASE = 0, @@ -60,7 +60,7 @@ enum pre_data_init_fields DIMM_RANKS_CNFG = 7, // Dispatcher set to last enum value - ATTR_PRE_DATA_ENG_DISPATCHER = DIMM_RANKS_CNFG, + DISPATCHER = DIMM_RANKS_CNFG, }; /// @@ -70,7 +70,7 @@ enum pre_data_init_fields /// (e.g. Nimbus vs Axone) /// @warning these depend on pre_data_init_fields fields being set /// -enum generic_metadata_fields +enum class generic_metadata_fields { // Template recursive base case ATTR_METADATA_BASE_CASE = 0, @@ -81,13 +81,13 @@ enum generic_metadata_fields DIMM_POS_METADATA = 3, // Dispatcher set to last enum value - ATTR_METADATA_DISPATCHER = DIMM_POS_METADATA, + DISPATCHER = DIMM_POS_METADATA, }; /// /// @brief enum list of SPD based attr fields to set /// -enum attr_eff_engine_fields +enum class attr_eff_engine_fields { // Template recursive base case ATTR_EFF_BASE_CASE = 0, @@ -117,13 +117,13 @@ enum attr_eff_engine_fields ROW_ADDR_BITS = 22, // Dispatcher set to last enum value - ATTR_EFF_DISPATCHER = ROW_ADDR_BITS, + DISPATCHER = ROW_ADDR_BITS, }; /// /// @brief enum list of SI attr fields to set from EFD /// -enum attr_si_engine_fields +enum class attr_si_engine_fields { // Template recursive base case ATTR_SI_BASE_CASE = 0, @@ -149,7 +149,7 @@ enum attr_si_engine_fields SI_GEARDOWN_MODE = 18, // Dispatcher set to last enum value - ATTR_SI_DISPATCHER = SI_GEARDOWN_MODE, + DISPATCHER = SI_GEARDOWN_MODE, }; /// @@ -157,7 +157,7 @@ enum attr_si_engine_fields /// @note these are attributes that are derived from other /// attributes or other APIs. /// -enum attr_engine_derived_fields +enum class attr_engine_derived_fields { // Attributes are set recursively from the bottom up. // When adding attrs that depend on other attrs @@ -173,22 +173,22 @@ enum attr_engine_derived_fields LOGICAL_RANKS = 3, // Dispatcher set to last enum value - ATTR_DERIVED_DISPATCHER = LOGICAL_RANKS, + DISPATCHER = LOGICAL_RANKS, }; /// /// @brief Forward declartion of traits for pre_data_engine /// @class preDataInitTraits -/// @tparam T proc_type (e.g. Nimbus, Axone, etc.) +/// @tparam P processor type (e.g. Nimbus, Axone, etc.) /// @tparam TT pre_data_init_fields (e.g. DIMM_TYPE, MRANK, etc.) /// -template< proc_type T, pre_data_init_fields TT > +template< proc_type P, pre_data_init_fields TT > class preDataInitTraits; /// /// @brief Traits associated with DIMM positioning /// @class dimmPosTraits -/// @tparam MC the MC type +/// @tparam MC the memory controller type /// template< mss::mc_type MC > class dimmPosTraits; @@ -196,10 +196,11 @@ class dimmPosTraits; /// /// @brief Forward declartion of traits for attrEngineTraits /// @class attrEngineTraits +/// @tparam P processor type (e.g. Nimbus, Axone, etc.) /// @tparam ET enum type /// @tparam T enum value /// -template < typename ET, ET T> +template < proc_type P, typename ET, ET T = ET::DISPATCHER> struct attrEngineTraits; /// @@ -211,14 +212,25 @@ struct attrEngineTraits; template < typename ET, ET T > struct setTimingTraits; +namespace gen +{ /// -/// @brief Forward declartion of traits for attrEnumTraits -/// @class attrEnumTraits -/// @tparam ET enum type -/// -template < typename ET > -struct attrEnumTraits; - +/// @brief Template recursive algorithm for setting attrs +/// @class attr_engine +/// @tparam P processor type (e.g. Nimbus, Axone, etc.) +/// @tparam ET enum type - conceptually a list of attrs to set +/// @tparam F enum value - the specific attr value from ET to set +/// @tparam TT associated traits for attr_engine +/// @tparam B dispatch tag - defaulted to false +/// +template < proc_type P, + typename ET, + ET F = ET::DISPATCHER, + typename TT = attrEngineTraits<P, ET, F>, + bool B = false> +struct attr_engine; + +}// gen }// mss #endif diff --git a/src/import/generic/memory/lib/data_engine/data_engine_utils.H b/src/import/generic/memory/lib/data_engine/data_engine_utils.H index 56d2b2d3b..d43286d44 100644 --- a/src/import/generic/memory/lib/data_engine/data_engine_utils.H +++ b/src/import/generic/memory/lib/data_engine/data_engine_utils.H @@ -310,10 +310,15 @@ inline fapi2::ReturnCode set_field(const fapi2::Target<T>& i_target, { const auto l_attr_target = mss::find_target<TT::TARGET_TYPE>(i_target); typename TT::attr_type l_attr_list = {}; - FAPI_TRY( TT::get_attr(l_attr_target, l_attr_list) ); - FAPI_TRY( update_data(i_target, i_setting, TT::FFDC_CODE, l_attr_list) ); - FAPI_TRY( TT::set_attr(l_attr_target, l_attr_list) ); + FAPI_TRY( TT::get_attr(l_attr_target, l_attr_list), + "Failed get_attr() for %s", spd::c_str(i_target) ); + + FAPI_TRY( update_data(i_target, i_setting, TT::FFDC_CODE, l_attr_list), + "Failed update_data for %s", spd::c_str(i_target) ); + + FAPI_TRY( TT::set_attr(l_attr_target, l_attr_list), + "Failed set_attr() for %s", spd::c_str(i_target) ); fapi_try_exit: return fapi2::current_err; @@ -342,13 +347,16 @@ inline fapi2::ReturnCode set_field(const DT& i_data, // Get the attribute data in its entirety typename TT::attr_type l_attr_list = {}; - FAPI_TRY( TT::get_attr(l_attr_target, l_attr_list) ); + FAPI_TRY( TT::get_attr(l_attr_target, l_attr_list), + "Failed get_attr()"); // Update the portion of interest (can vary per dimm and/or rank) - FAPI_TRY( update_data(i_data, i_setting, TT::FFDC_CODE, l_attr_list) ); + FAPI_TRY( update_data(i_data, i_setting, TT::FFDC_CODE, l_attr_list), + "Failed update_data()"); // Set the contents back to the attribute - FAPI_TRY( TT::set_attr(l_attr_target, l_attr_list) ); + FAPI_TRY( TT::set_attr(l_attr_target, l_attr_list), + "Failed set_attr()"); fapi_try_exit: return fapi2::current_err; @@ -356,17 +364,14 @@ fapi_try_exit: /// /// @brief Template recursive algorithm for setting attrs -/// @class attr_engine +/// @class attr_engine - partial specialization when F != 0 +/// @tparam P processor type /// @tparam ET enum type - conceptually a list of attrs to set /// @tparam F enum value - the specific attr value from ET to set -/// @tparam TT defaulted to attrEngineTraits<ET, F> -/// @tparam V defaulted to void (dispatch tag) +/// @tparam TT associated traits for attr_engine /// -template < typename ET, - ET F, - typename TT = mss::attrEngineTraits<ET, F>, - typename V = void > -struct attr_engine +template < proc_type P, typename ET, ET F, typename TT > +struct attr_engine<P, ET, F, TT, false> { /// /// @brief Sets attributes fields F in ET @@ -378,9 +383,12 @@ struct attr_engine static fapi2::ReturnCode single_set(const IT& i_input) { typename TT::attr_integral_type l_value = 0; - FAPI_TRY( TT::get_value_to_set(i_input, l_value) ); - FAPI_TRY( set_field<TT>(i_input, l_value) ); + FAPI_TRY( TT::get_value_to_set(i_input, l_value), + "Failed get_value_to_set() for proc_type: %d and enum val: %d", P, F); + + FAPI_TRY( set_field<TT>(i_input, l_value), + "Failed set_field() for proc_type: %d and enum val: %d", P, F); fapi_try_exit: return fapi2::current_err; @@ -395,12 +403,20 @@ struct attr_engine template < typename IT > static fapi2::ReturnCode set(const IT& i_input) { - FAPI_TRY( (attr_engine<ET, F>::single_set(i_input)) ); + FAPI_TRY( (attr_engine<P, ET, F, TT, static_cast<size_t>(F) == 0u>::single_set(i_input)), + "Failed attr_engine<P, ET, F>::single_set() for proc_type: %d and enum val: %d", P, F); // Compiler isn't smart enough to deduce F - 1u (decrementing the enum values by 1) // Cast needed to help the compiler deduce this value is an ET type // This does the recursive call to unroll a compile-time looping of a enum list of attrs to set - FAPI_TRY( (attr_engine < ET, static_cast<ET>(F - 1u) >::set(i_input)) ); + // The recursion stops at the base case where NEXT_FLD == 0u + { + constexpr ET NEXT_FLD = static_cast<ET>( static_cast<size_t>(F) - 1u ); + using T = mss::attrEngineTraits<P, ET, NEXT_FLD>; + + FAPI_TRY( (attr_engine <P, ET, NEXT_FLD, T, 0u == static_cast<size_t>(NEXT_FLD)>::set(i_input)), + "Failed (attr_engine <P, ET, NEXT_FLD>::set() for proc_type: %d and enum val: %d", P, F); + } fapi_try_exit: return fapi2::current_err; @@ -408,17 +424,15 @@ struct attr_engine }; /// -/// @brief Algorithm for setting SI attrs -/// @class attr_engine -/// @tparam ET enum type -/// @tparam F enum value -/// @note partial specialization when F == 0 (base case). Which is a NOP. +/// @brief Template recursive algorithm for setting attrs +/// @class attr_engine - partial specialization where F == 0u +/// @tparam P processor type +/// @tparam ET attr fields enum type (conceptually a list of attrs to set) +/// @tparam F enum value - the specific attr value from ET to set +/// @tparam TT associated traits for attr_engine /// -template < typename ET, ET F> -struct attr_engine< ET, - F, - mss::attrEngineTraits<ET, F>, - typename std::enable_if<0u == F>::type > +template < proc_type P, typename ET, ET F, typename TT > +struct attr_engine< P, ET, F, TT, true > { /// /// @brief Sets attributes fields F in ET @@ -429,6 +443,7 @@ struct attr_engine< ET, template < typename IT > static fapi2::ReturnCode set(const IT& i_input) { + FAPI_DBG("NO-OP: Reached base case (0) of recursive template for proc_type: %d and enum value: %d", P, F); return fapi2::FAPI2_RC_SUCCESS; } }; diff --git a/src/import/generic/memory/lib/data_engine/p9a/p9a_data_init_traits.H b/src/import/generic/memory/lib/data_engine/p9a/p9a_data_init_traits.H index 9122c12da..f8b5abdc9 100644 --- a/src/import/generic/memory/lib/data_engine/p9a/p9a_data_init_traits.H +++ b/src/import/generic/memory/lib/data_engine/p9a/p9a_data_init_traits.H @@ -51,7 +51,7 @@ namespace mss /// @note pre_data_init_fields, DIMM_TYPE specialization /// template<> -struct attrEngineTraits<pre_data_init_fields, DIMM_TYPE> +struct attrEngineTraits<proc_type::AXONE, pre_data_init_fields, pre_data_init_fields::DIMM_TYPE> { using attr_type = fapi2::ATTR_MEM_EFF_DIMM_TYPE_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -124,7 +124,7 @@ struct attrEngineTraits<pre_data_init_fields, DIMM_TYPE> /// @note pre_data_init_fields, DRAM_GEN specialization /// template<> -struct attrEngineTraits<pre_data_init_fields, DRAM_GEN> +struct attrEngineTraits<proc_type::AXONE, pre_data_init_fields, pre_data_init_fields::DRAM_GEN> { using attr_type = fapi2::ATTR_MEM_EFF_DRAM_GEN_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -195,7 +195,7 @@ struct attrEngineTraits<pre_data_init_fields, DRAM_GEN> /// @note pre_data_init_fields, HOST_TO_DDR_SPEED_RATIO specialization /// template<> -struct attrEngineTraits<pre_data_init_fields, HOST_TO_DDR_SPEED_RATIO> +struct attrEngineTraits<proc_type::AXONE, pre_data_init_fields, pre_data_init_fields::HOST_TO_DDR_SPEED_RATIO> { using attr_type = fapi2::ATTR_MEM_EFF_HOST_TO_DDR_SPEED_RATIO_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -273,7 +273,7 @@ struct attrEngineTraits<pre_data_init_fields, HOST_TO_DDR_SPEED_RATIO> /// @note pre_data_init_fields, HYBRID specialization /// template<> -struct attrEngineTraits<pre_data_init_fields, HYBRID> +struct attrEngineTraits<proc_type::AXONE, pre_data_init_fields, pre_data_init_fields::HYBRID> { using attr_type = fapi2::ATTR_MEM_EFF_HYBRID_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -345,7 +345,7 @@ struct attrEngineTraits<pre_data_init_fields, HYBRID> /// @note pre_data_init_fields, HYBRID_MEDIA specialization /// template<> -struct attrEngineTraits<pre_data_init_fields, HYBRID_MEDIA> +struct attrEngineTraits<proc_type::AXONE, pre_data_init_fields, pre_data_init_fields::HYBRID_MEDIA> { using attr_type = fapi2::ATTR_MEM_EFF_HYBRID_MEMORY_TYPE_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -417,7 +417,7 @@ struct attrEngineTraits<pre_data_init_fields, HYBRID_MEDIA> /// @note pre_data_init_fields, MRANKS specialization /// template<> -struct attrEngineTraits<pre_data_init_fields, MRANKS> +struct attrEngineTraits<proc_type::AXONE, pre_data_init_fields, pre_data_init_fields::MRANKS> { using attr_type = fapi2::ATTR_MEM_EFF_NUM_MASTER_RANKS_PER_DIMM_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -489,7 +489,7 @@ struct attrEngineTraits<pre_data_init_fields, MRANKS> /// @note DIMM_RANKS_CNFG specialization /// template<> -struct attrEngineTraits<pre_data_init_fields, DIMM_RANKS_CNFG> +struct attrEngineTraits<proc_type::AXONE, pre_data_init_fields, pre_data_init_fields::DIMM_RANKS_CNFG> { using attr_type = fapi2::ATTR_MEM_EFF_DIMM_RANKS_CONFIGED_Type; @@ -536,7 +536,9 @@ struct attrEngineTraits<pre_data_init_fields, DIMM_RANKS_CNFG> // Make sure the number of master ranks is setup uint8_t l_master_ranks = 0; - FAPI_TRY( (attrEngineTraits<pre_data_init_fields, MRANKS>::get_value_to_set(i_spd_data, l_master_ranks)) ); + FAPI_TRY( (attrEngineTraits<proc_type::AXONE, pre_data_init_fields, pre_data_init_fields::MRANKS>::get_value_to_set( + i_spd_data, + l_master_ranks)) ); FAPI_TRY( l_ranks_configed.setBit(0, l_master_ranks), "%s. Failed to setBit", spd::c_str(i_spd_data.get_dimm_target()) ); diff --git a/src/import/generic/memory/lib/data_engine/p9n/p9n_data_init_traits.H b/src/import/generic/memory/lib/data_engine/p9n/p9n_data_init_traits.H index cf520c148..cb70955c0 100644 --- a/src/import/generic/memory/lib/data_engine/p9n/p9n_data_init_traits.H +++ b/src/import/generic/memory/lib/data_engine/p9n/p9n_data_init_traits.H @@ -50,7 +50,7 @@ namespace mss /// @note NIMBUS, DIMM_TYPE specialization /// template<> -class preDataInitTraits<mss::proc_type::NIMBUS, DIMM_TYPE> +class preDataInitTraits<mss::proc_type::NIMBUS, pre_data_init_fields::DIMM_TYPE> { public: using attr_type = fapi2::ATTR_EFF_DIMM_TYPE_Type; @@ -91,7 +91,7 @@ class preDataInitTraits<mss::proc_type::NIMBUS, DIMM_TYPE> /// @note NIMBUS, DRAM_GEN specialization /// template<> -class preDataInitTraits<mss::proc_type::NIMBUS, DRAM_GEN> +class preDataInitTraits<mss::proc_type::NIMBUS, pre_data_init_fields::DRAM_GEN> { public: using attr_type = fapi2::ATTR_EFF_DRAM_GEN_Type; @@ -132,7 +132,7 @@ class preDataInitTraits<mss::proc_type::NIMBUS, DRAM_GEN> /// @note NIMBUS, HYBRID specialization /// template<> -class preDataInitTraits<mss::proc_type::NIMBUS, HYBRID> +class preDataInitTraits<mss::proc_type::NIMBUS, pre_data_init_fields::HYBRID> { public: using attr_type = fapi2::ATTR_EFF_HYBRID_Type; @@ -173,7 +173,7 @@ class preDataInitTraits<mss::proc_type::NIMBUS, HYBRID> /// @note NIMBUS, HYBRID_MEDIA specialization /// template<> -class preDataInitTraits<mss::proc_type::NIMBUS, HYBRID_MEDIA> +class preDataInitTraits<mss::proc_type::NIMBUS, pre_data_init_fields::HYBRID_MEDIA> { public: using attr_type = fapi2::ATTR_EFF_HYBRID_MEMORY_TYPE_Type; @@ -214,7 +214,7 @@ class preDataInitTraits<mss::proc_type::NIMBUS, HYBRID_MEDIA> /// @note NIMBUS, MRANKS specialization /// template<> -class preDataInitTraits<mss::proc_type::NIMBUS, MRANKS> +class preDataInitTraits<mss::proc_type::NIMBUS, pre_data_init_fields::MRANKS> { public: using attr_type = fapi2::ATTR_EFF_NUM_MASTER_RANKS_PER_DIMM_Type; @@ -255,7 +255,7 @@ class preDataInitTraits<mss::proc_type::NIMBUS, MRANKS> /// @note NIMBUS, DIMM_RANKS_CNFG specialization /// template<> -struct preDataInitTraits<mss::proc_type::NIMBUS, DIMM_RANKS_CNFG> +struct preDataInitTraits<mss::proc_type::NIMBUS, pre_data_init_fields::DIMM_RANKS_CNFG> { using attr_type = fapi2::ATTR_EFF_DIMM_RANKS_CONFIGED_Type; static const fapi2::TargetType TARGET_TYPE = fapi2::ATTR_EFF_NUM_MASTER_RANKS_PER_DIMM_TargetType; @@ -292,7 +292,7 @@ struct preDataInitTraits<mss::proc_type::NIMBUS, DIMM_RANKS_CNFG> /// @note AXONE, DIMM_TYPE_METADATA specialization /// template<> -struct attrEngineTraits<generic_metadata_fields, DIMM_TYPE_METADATA> +struct attrEngineTraits<proc_type::NIMBUS, generic_metadata_fields, generic_metadata_fields::DIMM_TYPE_METADATA> { using attr_type = fapi2::ATTR_MEM_DIMM_TYPE_METADATA_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -373,7 +373,7 @@ class dimmPosTraits<mss::mc_type::NIMBUS> /// @note generic_metadata_fields, DRAM_GEN_METADATA specialization /// template<> -struct attrEngineTraits<generic_metadata_fields, DRAM_GEN_METADATA> +struct attrEngineTraits<proc_type::NIMBUS, generic_metadata_fields, generic_metadata_fields::DRAM_GEN_METADATA> { using attr_type = fapi2::ATTR_MEM_DRAM_GEN_METADATA_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -423,7 +423,7 @@ struct attrEngineTraits<generic_metadata_fields, DRAM_GEN_METADATA> /// @note generic_metadata_fields, DIMM_POS_METADATA specialization /// template<> -struct attrEngineTraits<generic_metadata_fields, DIMM_POS_METADATA> +struct attrEngineTraits<proc_type::NIMBUS, generic_metadata_fields, generic_metadata_fields::DIMM_POS_METADATA> { using attr_type = fapi2::ATTR_MEM_DIMM_POS_METADATA_Type; using attr_integral_type = std::remove_all_extents<attr_type>::type; @@ -468,17 +468,6 @@ struct attrEngineTraits<generic_metadata_fields, DIMM_POS_METADATA> } }; -/// -/// @brief Value traits for attr_eff_engine_fields -/// @class attrEngineTraits -/// @note attr_eff_engine_fields -/// -template < > -struct attrEnumTraits<generic_metadata_fields> -{ - static constexpr size_t DISPATCHER = ATTR_METADATA_DISPATCHER; -}; - }// mss #endif diff --git a/src/import/generic/memory/lib/data_engine/pre_data_init.H b/src/import/generic/memory/lib/data_engine/pre_data_init.H index 307c08aa1..52e358fc2 100644 --- a/src/import/generic/memory/lib/data_engine/pre_data_init.H +++ b/src/import/generic/memory/lib/data_engine/pre_data_init.H @@ -232,7 +232,7 @@ class pre_data_engine FAPI_TRY(iv_spd_data.base_module(l_base_module_type)); FAPI_TRY(lookup_table_check(iv_dimm, BASE_MODULE_TYPE_MAP, SET_ATTR_DIMM_TYPE, l_base_module_type, l_dimm_type)); - FAPI_TRY( (set_field<P, DIMM_TYPE>(iv_dimm, l_dimm_type)) ); + FAPI_TRY( (set_field<P, pre_data_init_fields::DIMM_TYPE>(iv_dimm, l_dimm_type)) ); fapi_try_exit: return fapi2::current_err; @@ -250,7 +250,7 @@ class pre_data_engine FAPI_TRY(iv_spd_data.device_type(l_device_type)); FAPI_TRY(lookup_table_check(iv_dimm, DRAM_GEN_MAP, SET_ATTR_DRAM_GEN, l_device_type, l_dram_gen)); - FAPI_TRY( (set_field<P, DRAM_GEN>(iv_dimm, l_dram_gen)) ); + FAPI_TRY( (set_field<P, pre_data_init_fields::DRAM_GEN>(iv_dimm, l_dram_gen)) ); fapi_try_exit: return fapi2::current_err; @@ -268,7 +268,7 @@ class pre_data_engine FAPI_TRY(iv_spd_data.hybrid(l_spd_hybrid_type)); FAPI_TRY(lookup_table_check(iv_dimm, HYBRID_MAP, SET_ATTR_HYBRID, l_spd_hybrid_type, l_hybrid)); - FAPI_TRY( (set_field<P, HYBRID>(iv_dimm, l_hybrid)) ); + FAPI_TRY( (set_field<P, pre_data_init_fields::HYBRID>(iv_dimm, l_hybrid)) ); fapi_try_exit: return fapi2::current_err; @@ -286,7 +286,7 @@ class pre_data_engine FAPI_TRY(iv_spd_data.hybrid_media(l_spd_hybrid_media)); FAPI_TRY(lookup_table_check(iv_dimm, HYBRID_MAP, SET_ATTR_HYBRID, l_spd_hybrid_media, l_hybrid_media)); - FAPI_TRY( (set_field<P, HYBRID_MEDIA>(iv_dimm, l_hybrid_media)) ); + FAPI_TRY( (set_field<P, pre_data_init_fields::HYBRID_MEDIA>(iv_dimm, l_hybrid_media)) ); fapi_try_exit: return fapi2::current_err; @@ -301,7 +301,7 @@ class pre_data_engine uint8_t l_master_ranks = 0; FAPI_TRY( get_master_ranks(l_master_ranks) ); - FAPI_TRY( (set_field<P, MRANKS>(iv_dimm, l_master_ranks)) ); + FAPI_TRY( (set_field<P, pre_data_init_fields::MRANKS>(iv_dimm, l_master_ranks)) ); fapi_try_exit: return fapi2::current_err; @@ -324,7 +324,7 @@ class pre_data_engine FAPI_TRY( l_ranks_configed.setBit(0, l_master_ranks), "%s. Failed to setBit", spd::c_str(iv_dimm) ); - FAPI_TRY( (set_field<P, DIMM_RANKS_CNFG>(iv_dimm, uint8_t(l_ranks_configed))) ); + FAPI_TRY( (set_field<P, pre_data_init_fields::DIMM_RANKS_CNFG>(iv_dimm, uint8_t(l_ranks_configed))) ); fapi_try_exit: return fapi2::current_err; @@ -395,7 +395,8 @@ inline fapi2::ReturnCode set_pre_init_attrs<mss::proc_type::NIMBUS>( const fapi2 mss::spd::c_str(i_target) ); // Adding metadata c-str fields derived from attrs set above - FAPI_TRY( mss::attr_derived_engine<mss::generic_metadata_fields>::set(i_target) ); + FAPI_TRY( (mss::gen::attr_engine<proc_type::NIMBUS, mss::generic_metadata_fields>::set(i_target)), + "Failed attr_engine<proc_type::NIMBUS, mss::generic_metadata_fields>::set for %s", mss::spd::c_str(i_target) ); fapi_try_exit: return fapi2::current_err; diff --git a/src/import/generic/memory/lib/utils/dimm/mss_timing.H b/src/import/generic/memory/lib/utils/dimm/mss_timing.H index aa1915e3d..8fd169508 100644 --- a/src/import/generic/memory/lib/utils/dimm/mss_timing.H +++ b/src/import/generic/memory/lib/utils/dimm/mss_timing.H @@ -213,7 +213,7 @@ inline fapi2::ReturnCode calc_trfc_dlr(const fapi2::Target<fapi2::TARGET_TYPE_DI // Item No. 1727.58A // pg. 69 - 71 // Table 42 - Refresh parameters by logical rank density - static const std::vector<std::pair<uint8_t, uint64_t> > TRFC_DLR1 = + const std::vector<std::pair<uint8_t, uint64_t> > TRFC_DLR1 = { // { density in GBs, tRFC4(min) in picoseconds } {4, 90000}, @@ -225,7 +225,7 @@ inline fapi2::ReturnCode calc_trfc_dlr(const fapi2::Target<fapi2::TARGET_TYPE_DI // Item No. 1727.58A // pg. 69 - 71 // Table 42 - Refresh parameters by logical rank density - static const std::vector<std::pair<uint8_t, uint64_t> > TRFC_DLR2 = + const std::vector<std::pair<uint8_t, uint64_t> > TRFC_DLR2 = { // { density in GBs, tRFC4(min) in picoseconds } {4, 55000}, @@ -237,7 +237,7 @@ inline fapi2::ReturnCode calc_trfc_dlr(const fapi2::Target<fapi2::TARGET_TYPE_DI // Item No. 1727.58A // pg. 69 - 71 // Table 42 - Refresh parameters by logical rank density - static const std::vector<std::pair<uint8_t, uint64_t> > TRFC_DLR4 = + const std::vector<std::pair<uint8_t, uint64_t> > TRFC_DLR4 = { // { density in GBs, tRFC4(min) in picoseconds } {4, 40000}, |