summaryrefslogtreecommitdiffstats
path: root/hwpf/include/plat/target.H
diff options
context:
space:
mode:
authorSantosh Puranik <santosh.puranik@in.ibm.com>2016-06-28 05:51:59 -0500
committerJennifer A. Stofer <stofer@us.ibm.com>2016-06-29 13:48:25 -0400
commit8bd4d78ccbe225f99b6f61f63757b9b30837b3c5 (patch)
treedf414db1364f5016a66ee6c2e1e4916d06b8cfe8 /hwpf/include/plat/target.H
parenta874a8d59dc7fad583e785a9ea227cdf424100ab (diff)
downloadtalos-sbe-8bd4d78ccbe225f99b6f61f63757b9b30837b3c5.tar.gz
talos-sbe-8bd4d78ccbe225f99b6f61f63757b9b30837b3c5.zip
Add MCBIST Target Support
-- Support MCBIST targets -- Fix MCS targets Change-Id: Ib80e0986171102877059fd3142412277b6d0189f Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/26330 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-by: Sunil Kumar <skumar8j@in.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com>
Diffstat (limited to 'hwpf/include/plat/target.H')
-rw-r--r--hwpf/include/plat/target.H28
1 files changed, 18 insertions, 10 deletions
diff --git a/hwpf/include/plat/target.H b/hwpf/include/plat/target.H
index 4d37d4e6..0b7e9d89 100644
--- a/hwpf/include/plat/target.H
+++ b/hwpf/include/plat/target.H
@@ -47,6 +47,8 @@ static const uint8_t CORES_PER_QUAD = 4;
static const uint8_t EX_PER_QUAD = 2;
static const uint8_t CORES_PER_EX = 2;
static const uint8_t N3_CHIPLET = 5;
+static const uint8_t MCS_PER_MCBIST = 2;
+
struct ScomAddr
{
ScomAddr(uint32_t i_addr) : iv_addr(i_addr)
@@ -128,11 +130,17 @@ namespace fapi2
this->iv_handle.fields.type = TARGET_TYPE_EX;
this->iv_handle.fields.type_target_num = l_plat_argument;
}
- else if(K & TARGET_TYPE_MCS)
+ else if(K & TARGET_TYPE_MCBIST)
{
- this->iv_handle.fields.chiplet_num = l_plat_argument + MCS_CHIPLET_OFFSET;
- this->iv_handle.fields.type = TARGET_TYPE_MCS | TARGET_TYPE_PERV;
+ this->iv_handle.fields.chiplet_num = l_plat_argument + MCBIST_CHIPLET_OFFSET;
+ this->iv_handle.fields.type = TARGET_TYPE_MCBIST | TARGET_TYPE_PERV;
+ this->iv_handle.fields.type_target_num = l_plat_argument;
+ }
+ else if(K & TARGET_TYPE_MCS)
+ {
+ this->iv_handle.fields.chiplet_num = N3_CHIPLET - (MCS_PER_MCBIST * (l_plat_argument / MCS_PER_MCBIST));
+ this->iv_handle.fields.type = TARGET_TYPE_MCS;
this->iv_handle.fields.type_target_num = l_plat_argument;
}
else if(K == TARGET_TYPE_ALL)
@@ -199,7 +207,7 @@ namespace fapi2
{
static_assert(((K == TARGET_TYPE_EQ) ||
(K == TARGET_TYPE_CORE) ||
- (K == TARGET_TYPE_MCS) ||
+ (K == TARGET_TYPE_MCBIST) ||
(K == TARGET_TYPE_PERV) ||
(K == TARGET_TYPE_EX)) &&
((T == TARGET_TYPE_EQ) ||
@@ -214,10 +222,10 @@ namespace fapi2
"Invalid parent for EQ target, must be PERV or "
"PROC_CHIP");
- static_assert(!((K == TARGET_TYPE_MCS) &&
+ static_assert(!((K == TARGET_TYPE_MCBIST) &&
(T != TARGET_TYPE_PERV) &&
(T != TARGET_TYPE_PROC_CHIP)),
- "Invalid parent for MCS target, must be PERV or "
+ "Invalid parent for MCBIST target, must be PERV or "
"PROC_CHIP");
static_assert(!((K == TARGET_TYPE_CORE) &&
@@ -240,11 +248,11 @@ namespace fapi2
"Invalid parent for EX target, must be PERV or "
"PROC_CHIP or EQ");
- if(TARGET_TYPE_PERV == T) // EQ/EC/MCS/PERV ===> PERV
+ if(TARGET_TYPE_PERV == T) // EQ/EC/MCBIST/PERV ===> PERV
{
return this->iv_handle;
}
- if(TARGET_TYPE_PROC_CHIP == T) // EQ/EC/EX/MCS/PERV ===> PROC
+ if(TARGET_TYPE_PROC_CHIP == T) // EQ/EC/EX/MCBIST/PERV ===> PROC
{
return G_vec_targets[CHIP_TARGET_OFFSET];
}
@@ -396,7 +404,7 @@ namespace fapi2
{
static_assert((K == TARGET_TYPE_PROC_CHIP), "Parent target must be the proc chip");
static_assert((T == TARGET_TYPE_EQ) || (T == TARGET_TYPE_CORE)
- || (T == TARGET_TYPE_PERV) || (T == TARGET_TYPE_MCS),
+ || (T == TARGET_TYPE_PERV) || (T == TARGET_TYPE_MCBIST),
"Child target type must be a pervasive chiplet");
std::vector<Target<T> > l_children;
@@ -524,7 +532,7 @@ namespace fapi2
const uint32_t i_addr)
{
ScomAddr l_addr = i_addr;
- l_addr.iv_chiplet = N3_CHIPLET - (2 * (i_target.getTargetNumber() / 2));
+ l_addr.iv_chiplet = i_target.getChipletNumber();
l_addr.iv_satId = (2 * (i_target.getTargetNumber() % 2));
return l_addr;
}
OpenPOWER on IntegriCloud