diff options
author | Santosh Puranik <santosh.puranik@in.ibm.com> | 2016-08-17 07:56:16 -0500 |
---|---|---|
committer | Sachin Gupta <sgupta2m@in.ibm.com> | 2016-08-19 02:05:36 -0400 |
commit | a8e1626a766b5855eea1ac13bc13ebba6c8d689b (patch) | |
tree | 5e9d0d515f4aaace6b71ee4fab646de40cf60356 /hwpf/src/plat/target.C | |
parent | 580b62eab0864fef4fc30afc75621e7fdcb5c2b8 (diff) | |
download | talos-sbe-a8e1626a766b5855eea1ac13bc13ebba6c8d689b.tar.gz talos-sbe-a8e1626a766b5855eea1ac13bc13ebba6c8d689b.zip |
Fix plat_getTargetHandle API for PERV
-- Added specializations that handle PERV and EQ
Change-Id: I2391f3dfd20a4e1012c0d2f6debc2a6c51291b32
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/28378
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Shakeeb A. Pasha B K <shakeebbk@in.ibm.com>
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'hwpf/src/plat/target.C')
-rw-r--r-- | hwpf/src/plat/target.C | 133 |
1 files changed, 78 insertions, 55 deletions
diff --git a/hwpf/src/plat/target.C b/hwpf/src/plat/target.C index fbfa0687..31be400d 100644 --- a/hwpf/src/plat/target.C +++ b/hwpf/src/plat/target.C @@ -46,6 +46,84 @@ fapi2attr::EXAttributes_t* G_ex_attributes_ptr; namespace fapi2 { + // Get the plat target handle by chiplet number - For PERV targets + template<> + plat_target_handle_t plat_getTargetHandleByChipletNumber<TARGET_TYPE_PERV>( + const uint8_t i_chipletNumber) + { + uint32_t l_idx = 0; + + if((i_chipletNumber > 0) && + (i_chipletNumber < (EQ_CHIPLET_OFFSET + EQ_TARGET_COUNT))) + { + l_idx = (i_chipletNumber - NEST_GROUP1_CHIPLET_OFFSET) + + NEST_GROUP1_TARGET_OFFSET; + } + else if((i_chipletNumber >= CORE_CHIPLET_OFFSET) && + (i_chipletNumber < (CORE_CHIPLET_OFFSET + CORE_TARGET_COUNT))) + { + l_idx = (i_chipletNumber - CORE_CHIPLET_OFFSET) + + CORE_TARGET_OFFSET; + } + else + { + assert(false); + } + return G_vec_targets[l_idx]; + } + + // Get the plat target handle by chiplet number - For EQ targets + template<> + plat_target_handle_t plat_getTargetHandleByChipletNumber<TARGET_TYPE_EQ>( + const uint8_t i_chipletNumber) + { + assert(((i_chipletNumber >= EQ_CHIPLET_OFFSET) && + (i_chipletNumber < (EQ_CHIPLET_OFFSET + EQ_TARGET_COUNT)))) + + uint32_t l_idx = (i_chipletNumber - EQ_CHIPLET_OFFSET) + + EQ_TARGET_OFFSET; + return G_vec_targets[l_idx]; + } + + // Get the plat target handle by chiplet number - For CORE targets + template<> + plat_target_handle_t plat_getTargetHandleByChipletNumber<TARGET_TYPE_CORE>( + const uint8_t i_chipletNumber) + { + assert(((i_chipletNumber >= CORE_CHIPLET_OFFSET) && + (i_chipletNumber < (CORE_CHIPLET_OFFSET + CORE_TARGET_COUNT)))); + + uint32_t l_idx = (i_chipletNumber - CORE_CHIPLET_OFFSET) + + CORE_TARGET_OFFSET; + + return G_vec_targets[l_idx]; + } + + // Get the plat target handle by chiplet number - For EX targets + template<> + plat_target_handle_t plat_getTargetHandleByChipletNumber<TARGET_TYPE_EX>( + const uint8_t i_chipletNumber) + { + assert(((i_chipletNumber >= CORE_CHIPLET_OFFSET) && + (i_chipletNumber < (CORE_CHIPLET_OFFSET + CORE_TARGET_COUNT)))); + + uint32_t l_idx = ((i_chipletNumber - CORE_CHIPLET_OFFSET) / 2) + + EX_TARGET_OFFSET; + + return G_vec_targets[l_idx]; + } + + // Get plat target handle by instance number - For EX targets + template <> + plat_target_handle_t plat_getTargetHandleByInstance<TARGET_TYPE_EX>( + const uint8_t i_targetNum) + { + assert(i_targetNum < EX_TARGET_COUNT); + + return G_vec_targets[i_targetNum + EX_TARGET_OFFSET]; + } + + TargetType plat_target_handle_t::getFapiTargetType() const { TargetType l_targetType = TARGET_TYPE_NONE; @@ -529,59 +607,4 @@ fapi_try_exit: return fapi2::current_err; } - template plat_target_handle_t plat_getTargetHandleByChipletNumber<TARGET_TYPE_PERV>(const uint8_t); - template plat_target_handle_t plat_getTargetHandleByChipletNumber<TARGET_TYPE_EQ>(const uint8_t); - // Get the plat target handle by chiplet number - For PERV and EQ targets - template<TargetType K> - plat_target_handle_t plat_getTargetHandleByChipletNumber( - const uint8_t i_chipletNumber) - { - static_assert((K == TARGET_TYPE_EQ) || (K == TARGET_TYPE_PERV), - "Invalid target type"); - assert(((i_chipletNumber > 0) && - (i_chipletNumber < (EQ_CHIPLET_OFFSET + EQ_TARGET_COUNT)))) - - uint32_t l_idx = (i_chipletNumber - NEST_GROUP1_CHIPLET_OFFSET) + - NEST_GROUP1_TARGET_OFFSET; - return G_vec_targets[l_idx]; - } - - // Get the plat target handle by chiplet number - For CORE targets - template<> - plat_target_handle_t plat_getTargetHandleByChipletNumber<TARGET_TYPE_CORE>( - const uint8_t i_chipletNumber) - { - assert(((i_chipletNumber >= CORE_CHIPLET_OFFSET) && - (i_chipletNumber < (CORE_CHIPLET_OFFSET + CORE_TARGET_COUNT)))); - - uint32_t l_idx = (i_chipletNumber - CORE_CHIPLET_OFFSET) + - CORE_TARGET_OFFSET; - - return G_vec_targets[l_idx]; - } - - // Get the plat target handle by chiplet number - For EX targets - template<> - plat_target_handle_t plat_getTargetHandleByChipletNumber<TARGET_TYPE_EX>( - const uint8_t i_chipletNumber) - { - assert(((i_chipletNumber >= CORE_CHIPLET_OFFSET) && - (i_chipletNumber < (CORE_CHIPLET_OFFSET + CORE_TARGET_COUNT)))); - - uint32_t l_idx = ((i_chipletNumber - CORE_CHIPLET_OFFSET) / 2) + - EX_TARGET_OFFSET; - - return G_vec_targets[l_idx]; - } - - // Get plat target handle by instance number - For EX targets - template <> - plat_target_handle_t plat_getTargetHandleByInstance<TARGET_TYPE_EX>( - const uint8_t i_targetNum) - { - assert(i_targetNum < EX_TARGET_COUNT); - - return G_vec_targets[i_targetNum + EX_TARGET_OFFSET]; - } - } // fapi2 |