summaryrefslogtreecommitdiffstats
path: root/hwpf/src
diff options
context:
space:
mode:
authorSantosh Puranik <santosh.puranik@in.ibm.com>2016-07-18 05:27:58 -0500
committerGregory S. Still <stillgs@us.ibm.com>2016-07-18 12:23:36 -0400
commitb06df3e99d5c2a1f2ada40206c9f317cbe2f1b6f (patch)
tree0c3df08484d4f43ca715dbb946bfe5525e866acf /hwpf/src
parentfb90c414ce973311513a531e58bfd31b54d3004a (diff)
downloadtalos-sbe-b06df3e99d5c2a1f2ada40206c9f317cbe2f1b6f.tar.gz
talos-sbe-b06df3e99d5c2a1f2ada40206c9f317cbe2f1b6f.zip
Update to plat_getTargetHandleByChipletNumber
Templatized to take in a fapi2 Target type Change-Id: Icd55f82e6c8dd0bed92eb245678722ec15f12617 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/27127 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
Diffstat (limited to 'hwpf/src')
-rw-r--r--hwpf/src/plat/target.C56
1 files changed, 34 insertions, 22 deletions
diff --git a/hwpf/src/plat/target.C b/hwpf/src/plat/target.C
index b1a7a7a6..61d8d00b 100644
--- a/hwpf/src/plat/target.C
+++ b/hwpf/src/plat/target.C
@@ -267,7 +267,8 @@ fapi_try_exit:
{
fapi2::Target<fapi2::TARGET_TYPE_MCS> target_name((fapi2::plat_target_handle_t)i);
- fapi2::Target<fapi2::TARGET_TYPE_PERV> l_nestTarget((plat_getTargetHandleByChipletNumber(N3_CHIPLET - (MCS_PER_MCBIST * (i / MCS_PER_MCBIST)))));
+ fapi2::Target<fapi2::TARGET_TYPE_PERV>
+ l_nestTarget((plat_getTargetHandleByChipletNumber<TARGET_TYPE_PERV>(N3_CHIPLET - (MCS_PER_MCBIST * (i / MCS_PER_MCBIST)))));
uint32_t l_attrPg = 0;
@@ -368,35 +369,46 @@ fapi_try_exit:
return fapi2::current_err;
}
- /// @brief Function to return a platform target handle, given the chiplet
- // number
- // @param i_chipletNumber The chiplet number of the target
- // @return Platform target handle
- // @note The caller can use the platform target handle to construct a
- // Target of it's choice. Ex:
- // fapi2::Target<fapi2::TARGET_TYPE_CORE>
- // l_core(plat_getTargetHandleByChipletNumber(0x20);
+ // 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))) ||
- ((i_chipletNumber >= CORE_CHIPLET_OFFSET) &&
+ (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 = 0;
+ uint32_t l_idx = (i_chipletNumber - CORE_CHIPLET_OFFSET) +
+ CORE_TARGET_OFFSET;
- if(i_chipletNumber < (EQ_CHIPLET_OFFSET + EQ_TARGET_COUNT))
- {
- l_idx = (i_chipletNumber - NEST_GROUP1_CHIPLET_OFFSET) +
- NEST_GROUP1_TARGET_OFFSET;
- }
- else
- {
- 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];
+ }
} // fapi2
OpenPOWER on IntegriCloud