summaryrefslogtreecommitdiffstats
path: root/hwpf/src/plat/target.C
diff options
context:
space:
mode:
authorSantosh Puranik <santosh.puranik@in.ibm.com>2016-08-17 07:56:16 -0500
committerSachin Gupta <sgupta2m@in.ibm.com>2016-08-19 02:05:36 -0400
commita8e1626a766b5855eea1ac13bc13ebba6c8d689b (patch)
tree5e9d0d515f4aaace6b71ee4fab646de40cf60356 /hwpf/src/plat/target.C
parent580b62eab0864fef4fc30afc75621e7fdcb5c2b8 (diff)
downloadtalos-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.C133
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
OpenPOWER on IntegriCloud