summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--hwpf/include/plat/plat_target_parms.H34
-rw-r--r--hwpf/include/plat/target.H2
-rw-r--r--hwpf/src/fapi2PlatAttributeService.C40
-rw-r--r--hwpf/src/plat/target.C76
-rw-r--r--importtemp/xml/p9_ppe_attributes.xml123
-rw-r--r--tools/image/sbe_default_tool.c36
-rwxr-xr-xtools/scripts/ppeCreateAttrGetSetMacros.pl33
7 files changed, 206 insertions, 138 deletions
diff --git a/hwpf/include/plat/plat_target_parms.H b/hwpf/include/plat/plat_target_parms.H
index eee8e9fe..72a00d48 100644
--- a/hwpf/include/plat/plat_target_parms.H
+++ b/hwpf/include/plat/plat_target_parms.H
@@ -36,13 +36,23 @@
CONST_UINT32_T(CHIP_TARGET_OFFSET, 0);
CONST_UINT32_T(CHIP_TARGET_COUNT , 1);
-// Pervasive Targets (note; these include the MCS targets as well)
-CONST_UINT32_T(PERV_TARGET_OFFSET, CHIP_TARGET_OFFSET + CHIP_TARGET_COUNT);
-CONST_UINT32_T(PERV_CHIPLET_OFFSET, 0x1);
-CONST_UINT32_T(PERV_TARGET_COUNT, 15);
+// Nest targets - Group 1
+CONST_UINT32_T(NEST_GROUP1_TARGET_OFFSET, CHIP_TARGET_OFFSET + CHIP_TARGET_COUNT);
+CONST_UINT32_T(NEST_GROUP1_CHIPLET_OFFSET, 0x1);
+CONST_UINT32_T(NEST_GROUP1_TARGET_COUNT, 6);
+
+// MCS targets
+CONST_UINT32_T(MCS_TARGET_OFFSET, NEST_GROUP1_TARGET_OFFSET + NEST_GROUP1_TARGET_COUNT);
+CONST_UINT32_T(MCS_CHIPLET_OFFSET, 0x7);
+CONST_UINT32_T(MCS_TARGET_COUNT, 2);
+
+// Nest targets - Group 2
+CONST_UINT32_T(NEST_GROUP2_TARGET_OFFSET, MCS_TARGET_OFFSET + MCS_TARGET_COUNT);
+CONST_UINT32_T(NEST_GROUP2_TARGET_COUNT, 7);
+CONST_UINT32_T(NEST_GROUP2_CHIPLET_OFFSET, 0x9);
// Cache Targets
-CONST_UINT32_T(EQ_TARGET_OFFSET, PERV_TARGET_OFFSET + PERV_TARGET_COUNT);
+CONST_UINT32_T(EQ_TARGET_OFFSET, NEST_GROUP2_TARGET_OFFSET + NEST_GROUP2_TARGET_COUNT);
CONST_UINT32_T(EQ_CHIPLET_OFFSET, 0x10);
CONST_UINT32_T(EQ_TARGET_COUNT, 6);
@@ -51,12 +61,7 @@ CONST_UINT32_T(CORE_TARGET_OFFSET, EQ_TARGET_OFFSET + EQ_TARGET_COUNT);
CONST_UINT32_T(CORE_CHIPLET_OFFSET, 0x20);
CONST_UINT32_T(CORE_TARGET_COUNT, 24);
-// MCS Targets (note: these are phyically Pervasive targets)
-CONST_UINT32_T(MCS_TARGET_OFFSET, CORE_TARGET_OFFSET + CORE_TARGET_COUNT);
-CONST_UINT32_T(MCS_CHIPLET_OFFSET, 0x7);
-CONST_UINT32_T(MCS_TARGET_COUNT, 2);
-
-CONST_UINT32_T(EX_TARGET_OFFSET, MCS_TARGET_OFFSET + MCS_TARGET_COUNT);
+CONST_UINT32_T(EX_TARGET_OFFSET, CORE_TARGET_OFFSET + CORE_TARGET_COUNT);
CONST_UINT32_T(EX_CHIPLET_OFFSET, 0x10);
CONST_UINT32_T(EX_TARGET_COUNT, 12);
@@ -67,12 +72,13 @@ CONST_UINT32_T(MCAST_TARGET_OFFSET, SYSTEM_TARGET_OFFSET + SYSTEM_TARGET_COUNT);
CONST_UINT32_T(MCAST_CHIPLET_OFFSET, 4);
CONST_UINT32_T(MCAST_TARGET_COUNT, 3); // PPE only needs multicast groups 4-6
+// Total number of pervasive targets (Both NEST groups + EQs + COREs +MCSs)
+CONST_UINT32_T(PERV_TARGET_COUNT, NEST_GROUP1_TARGET_COUNT + NEST_GROUP2_TARGET_COUNT +
+ MCS_TARGET_COUNT + EQ_TARGET_COUNT + CORE_TARGET_COUNT);
+
// Total Target Count
CONST_UINT32_T(TARGET_COUNT, CHIP_TARGET_COUNT +
PERV_TARGET_COUNT +
- EQ_TARGET_COUNT +
- CORE_TARGET_COUNT +
- MCS_TARGET_COUNT +
EX_TARGET_COUNT +
SYSTEM_TARGET_COUNT +
MCAST_TARGET_COUNT);
diff --git a/hwpf/include/plat/target.H b/hwpf/include/plat/target.H
index 12b6b566..2f1ec73d 100644
--- a/hwpf/include/plat/target.H
+++ b/hwpf/include/plat/target.H
@@ -69,7 +69,7 @@ namespace fapi2
if(K & TARGET_TYPE_PERV)
{
- this->iv_handle.fields.chiplet_num = Value;
+ this->iv_handle.fields.chiplet_num = Value + NEST_GROUP1_CHIPLET_OFFSET;
this->iv_handle.fields.type = TARGET_TYPE_PERV;
this->iv_handle.fields.type_target_num = Value;
}
diff --git a/hwpf/src/fapi2PlatAttributeService.C b/hwpf/src/fapi2PlatAttributeService.C
index 2fd8ac83..f9a13dd0 100644
--- a/hwpf/src/fapi2PlatAttributeService.C
+++ b/hwpf/src/fapi2PlatAttributeService.C
@@ -8,6 +8,28 @@
namespace fapi2 {
+uint32_t getPervAttrIndex(const fapi2::Target<TARGET_TYPE_PERV> &i_target)
+{
+ uint32_t l_index = i_target.getTargetNumber();
+ if(TARGET_TYPE_EQ & i_target.getTargetType())
+ {
+ l_index += (EQ_TARGET_OFFSET);
+ }
+ else if(TARGET_TYPE_CORE & i_target.getTargetType())
+ {
+ l_index += (CORE_TARGET_OFFSET);
+ }
+ else if(TARGET_TYPE_MCS & i_target.getTargetType())
+ {
+ l_index += (MCS_TARGET_OFFSET);
+ }
+ else
+ {
+ l_index += (NEST_GROUP1_TARGET_OFFSET);
+ }
+ return (l_index - NEST_GROUP1_TARGET_OFFSET);
+}
+
template<> void __get<fapi2::TARGET_TYPE_PROC_CHIP, fapi2attr::ProcChipAttributes_t, uint8_t, fapi2::ATTR_BACKUP_SEEPROM_SELECT> ( const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_ptarget, const fapi2attr::ProcChipAttributes_t* object, const fapi2::AttributeId attrid, uint8_t* o_pvalue )
{
*o_pvalue = object->fapi2attr::ProcChipAttributes_t::ATTR_BACKUP_SEEPROM_SELECT;
@@ -15,8 +37,7 @@ template<> void __get<fapi2::TARGET_TYPE_PROC_CHIP, fapi2attr::ProcChipAttribute
template<> void __get<fapi2::TARGET_TYPE_PERV, fapi2attr::PervAttributes_t, uint8_t, fapi2::ATTR_CHIP_UNIT_POS> ( const fapi2::Target<fapi2::TARGET_TYPE_PERV>& i_ptarget, const fapi2attr::PervAttributes_t* object, const fapi2::AttributeId attrid, uint8_t* o_pvalue )
{
- uint32_t index = i_ptarget.getTargetNumber();
- *o_pvalue = object->fapi2attr::PervAttributes_t::ATTR_CHIP_UNIT_POS[index];
+ *o_pvalue = object->fapi2attr::PervAttributes_t::ATTR_CHIP_UNIT_POS[getPervAttrIndex(i_ptarget)];
}
template<> void __get<fapi2::TARGET_TYPE_CORE, fapi2attr::CoreAttributes_t, uint32_t, fapi2::ATTR_CORE_GPTR_RING> ( const fapi2::Target<fapi2::TARGET_TYPE_CORE>& i_ptarget, const fapi2attr::CoreAttributes_t* object, const fapi2::AttributeId attrid, uint32_t* o_pvalue )
@@ -68,8 +89,7 @@ template<> void __get<fapi2::TARGET_TYPE_PROC_CHIP, fapi2attr::ProcChipAttribute
template<> void __get<fapi2::TARGET_TYPE_PERV, fapi2attr::PervAttributes_t, uint32_t, fapi2::ATTR_GPTR_RING> ( const fapi2::Target<fapi2::TARGET_TYPE_PERV>& i_ptarget, const fapi2attr::PervAttributes_t* object, const fapi2::AttributeId attrid, uint32_t* o_pvalue )
{
- uint32_t index = i_ptarget.getTargetNumber();
- *o_pvalue = object->fapi2attr::PervAttributes_t::ATTR_GPTR_RING[index];
+ *o_pvalue = object->fapi2attr::PervAttributes_t::ATTR_GPTR_RING[getPervAttrIndex(i_ptarget)];
}
template<> void __get<fapi2::TARGET_TYPE_EX, fapi2attr::EXAttributes_t, uint32_t, fapi2::ATTR_L2_GPTR_RING> ( const fapi2::Target<fapi2::TARGET_TYPE_EX>& i_ptarget, const fapi2attr::EXAttributes_t* object, const fapi2::AttributeId attrid, uint32_t* o_pvalue )
@@ -345,14 +365,12 @@ template<> void __get<fapi2::TARGET_TYPE_PROC_CHIP, fapi2attr::ProcChipAttribute
template<> void __get<fapi2::TARGET_TYPE_PERV, fapi2attr::PervAttributes_t, uint32_t, fapi2::ATTR_PLL_RING> ( const fapi2::Target<fapi2::TARGET_TYPE_PERV>& i_ptarget, const fapi2attr::PervAttributes_t* object, const fapi2::AttributeId attrid, uint32_t* o_pvalue )
{
- uint32_t index = i_ptarget.getTargetNumber();
- *o_pvalue = object->fapi2attr::PervAttributes_t::ATTR_PLL_RING[index];
+ *o_pvalue = object->fapi2attr::PervAttributes_t::ATTR_PLL_RING[getPervAttrIndex(i_ptarget)];
}
template<> void __get<fapi2::TARGET_TYPE_PERV, fapi2attr::PervAttributes_t, uint32_t, fapi2::ATTR_REPR_RING> ( const fapi2::Target<fapi2::TARGET_TYPE_PERV>& i_ptarget, const fapi2attr::PervAttributes_t* object, const fapi2::AttributeId attrid, uint32_t* o_pvalue )
{
- uint32_t index = i_ptarget.getTargetNumber();
- *o_pvalue = object->fapi2attr::PervAttributes_t::ATTR_REPR_RING[index];
+ *o_pvalue = object->fapi2attr::PervAttributes_t::ATTR_REPR_RING[getPervAttrIndex(i_ptarget)];
}
template<> void __get<fapi2::TARGET_TYPE_PROC_CHIP, fapi2attr::ProcChipAttributes_t, int32_t, fapi2::ATTR_SCRATCH_INT32_1> ( const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_ptarget, const fapi2attr::ProcChipAttributes_t* object, const fapi2::AttributeId attrid, int32_t* o_pvalue )
@@ -427,8 +445,7 @@ template<> void __set<fapi2::TARGET_TYPE_PROC_CHIP, fapi2attr::ProcChipAttribute
template<> void __get<fapi2::TARGET_TYPE_PERV, fapi2attr::PervAttributes_t, uint32_t, fapi2::ATTR_SCRATCH_UINT32_PERV_ARRAY> ( const fapi2::Target<fapi2::TARGET_TYPE_PERV>& i_ptarget, const fapi2attr::PervAttributes_t* object, const fapi2::AttributeId attrid, uint32_t* o_pvalue )
{
- uint32_t index = i_ptarget.getTargetNumber();
- *o_pvalue = object->fapi2attr::PervAttributes_t::ATTR_SCRATCH_UINT32_PERV_ARRAY[index];
+ *o_pvalue = object->fapi2attr::PervAttributes_t::ATTR_SCRATCH_UINT32_PERV_ARRAY[getPervAttrIndex(i_ptarget)];
}
template<> void __set<fapi2::TARGET_TYPE_PERV, fapi2attr::PervAttributes_t, uint32_t, fapi2::ATTR_SCRATCH_UINT32_PERV_ARRAY> ( const fapi2::Target<fapi2::TARGET_TYPE_PERV>& i_ptarget, fapi2attr::PervAttributes_t* object, const fapi2::AttributeId attrid, const uint32_t& i_pvalue )
@@ -479,8 +496,7 @@ template<> void __get<fapi2::TARGET_TYPE_SYSTEM, fapi2attr::SystemAttributes_t,
template<> void __get<fapi2::TARGET_TYPE_PERV, fapi2attr::PervAttributes_t, uint32_t, fapi2::ATTR_TIME_RING> ( const fapi2::Target<fapi2::TARGET_TYPE_PERV>& i_ptarget, const fapi2attr::PervAttributes_t* object, const fapi2::AttributeId attrid, uint32_t* o_pvalue )
{
- uint32_t index = i_ptarget.getTargetNumber();
- *o_pvalue = object->fapi2attr::PervAttributes_t::ATTR_TIME_RING[index];
+ *o_pvalue = object->fapi2attr::PervAttributes_t::ATTR_TIME_RING[getPervAttrIndex(i_ptarget)];
}
} // namespace fapi2
diff --git a/hwpf/src/plat/target.C b/hwpf/src/plat/target.C
index 378bf14e..846fab64 100644
--- a/hwpf/src/plat/target.C
+++ b/hwpf/src/plat/target.C
@@ -315,103 +315,93 @@ fapi_try_exit:
for (uint32_t i = 0; i < TARGET_COUNT; ++i)
{
G_vec_targets.push_back((fapi2::plat_target_handle_t)0x0);
- FAPI_DBG("Nulling G_vec_targets[%u] hi value=0x%08X",
- i, (uint32_t)(G_vec_targets.at(i)>>32));
-
}
- FAPI_DBG("Vector size: %u", G_vec_targets.size());
/*
* Chip Target is the first one
*/
- FAPI_DBG("Chip Target info: CHIP_TARGET_OFFSET %u CHIP_TARGET_COUNT %u ",
- CHIP_TARGET_OFFSET,CHIP_TARGET_COUNT);
-
l_beginning_offset = CHIP_TARGET_OFFSET;
fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> chip_target((fapi2::plat_target_handle_t)0);
G_vec_targets.at(l_beginning_offset) = revle64((fapi2::plat_target_handle_t)(chip_target.get()));
/*
- * Pervasive Targets
+ * Nest Targets - group 1
*/
- FAPI_DBG("Pervasive Target info: PERV_TARGET_OFFSET %u PERV_TARGET_COUNT %u",
- PERV_TARGET_OFFSET, PERV_TARGET_COUNT);
-
- l_beginning_offset = PERV_TARGET_OFFSET;
- for (uint32_t i = 0; i < PERV_TARGET_COUNT; ++i)
+ l_beginning_offset = NEST_GROUP1_TARGET_OFFSET;
+ for (uint32_t i = 0; i < NEST_GROUP1_TARGET_COUNT; ++i)
{
- fapi2::Target<fapi2::TARGET_TYPE_PERV> target_name((fapi2::plat_target_handle_t)i+1);
- FAPI_DBG("target_name i = %d hi word = 0x%08X", i+1, (uint32_t)(target_name.get()>>32));
+ fapi2::Target<fapi2::TARGET_TYPE_PERV> target_name((fapi2::plat_target_handle_t)i);
// Determine if the chiplet is present and, thus, functional
// via partial good attributes
FAPI_TRY(plat_TargetPresent(chip_target, target_name, b_present));
G_vec_targets.at(l_beginning_offset+i) = revle64((fapi2::plat_target_handle_t)(target_name.get()));
- FAPI_DBG("G offset = %d", l_beginning_offset+i);
}
/*
- * Cache (EQ) Targets
+ * Memory Controller Synchronous (MCS) Targets
*/
- FAPI_DBG("EQ Target info: EQ_TARGET_OFFSET %u EQ_TARGET_COUNT %u",
- EQ_TARGET_OFFSET, EQ_TARGET_COUNT);
- l_beginning_offset = EQ_TARGET_OFFSET;
- for (uint32_t i = 0; i < EQ_TARGET_COUNT; ++i)
+
+ l_beginning_offset = MCS_TARGET_OFFSET;
+ for (uint32_t i = 0; i < MCS_TARGET_COUNT; ++i)
{
- fapi2::Target<fapi2::TARGET_TYPE_EQ> target_name((fapi2::plat_target_handle_t)i);
- FAPI_DBG("target_name i = %d hi word = 0x%08X", i, (uint32_t)(target_name.get()>>32));
+ fapi2::Target<fapi2::TARGET_TYPE_MCS> target_name((fapi2::plat_target_handle_t)i);
// Determine if the chiplet is present and, thus, functional
// via partial good attributes
FAPI_TRY(plat_TargetPresent(chip_target, target_name, b_present));
G_vec_targets.at(l_beginning_offset+i) = revle64((fapi2::plat_target_handle_t)(target_name.get()));
- FAPI_DBG("G offset = %d", l_beginning_offset+i);
+
}
/*
- * Core (EC) Targets
+ * Nest Targets - group 2
*/
- FAPI_DBG("Core Target info: CORE_TARGET_OFFSET %u CORE_TARGET_COUNT %u",
- CORE_TARGET_OFFSET, CORE_TARGET_COUNT);
+ l_beginning_offset = NEST_GROUP2_TARGET_OFFSET;
+ for (uint32_t i = NEST_GROUP2_TARGET_OFFSET;
+ i < (NEST_GROUP2_TARGET_OFFSET + NEST_GROUP2_TARGET_COUNT); ++i)
+ {
+ fapi2::Target<fapi2::TARGET_TYPE_PERV> target_name((fapi2::plat_target_handle_t)(i - 1));
- l_beginning_offset = CORE_TARGET_OFFSET;
- FAPI_DBG("Core beginning offset =%u", l_beginning_offset);
- for (uint32_t i = 0; i < CORE_TARGET_COUNT; ++i)
+ // Determine if the chiplet is present and, thus, functional
+ // via partial good attributes
+ FAPI_TRY(plat_TargetPresent(chip_target, target_name, b_present));
+
+ G_vec_targets.at(i) = revle64((fapi2::plat_target_handle_t)(target_name.get()));
+ }
+
+ /*
+ * Cache (EQ) Targets
+ */
+ l_beginning_offset = EQ_TARGET_OFFSET;
+ for (uint32_t i = 0; i < EQ_TARGET_COUNT; ++i)
{
- fapi2::Target<fapi2::TARGET_TYPE_CORE> target_name((fapi2::plat_target_handle_t)i);
- FAPI_DBG("target_name i = %d hi word = 0x%08X", i, (uint32_t)(target_name.get()>>32));
+ fapi2::Target<fapi2::TARGET_TYPE_EQ> target_name((fapi2::plat_target_handle_t)i);
// Determine if the chiplet is present and, thus, functional
// via partial good attributes
FAPI_TRY(plat_TargetPresent(chip_target, target_name, b_present));
G_vec_targets.at(l_beginning_offset+i) = revle64((fapi2::plat_target_handle_t)(target_name.get()));
- FAPI_DBG("G offset = %d", l_beginning_offset+i);
}
/*
- * Memory Controller Synchronous (MCS) Targets
+ * Core (EC) Targets
*/
- FAPI_DBG("MCS Target info: MCS_TARGET_OFFSET %u MCS_TARGET_COUNT %u",
- MCS_TARGET_OFFSET, MCS_TARGET_COUNT);
- l_beginning_offset = MCS_TARGET_OFFSET;
- FAPI_DBG("MCS beginning offset =%u", l_beginning_offset);
- for (uint32_t i = 0; i < MCS_TARGET_COUNT; ++i)
+ l_beginning_offset = CORE_TARGET_OFFSET;
+ for (uint32_t i = 0; i < CORE_TARGET_COUNT; ++i)
{
- fapi2::Target<fapi2::TARGET_TYPE_MCS> target_name((fapi2::plat_target_handle_t)i);
- FAPI_DBG("target_name i = %d hi word = 0x%08X", i, (uint32_t)(target_name.get()>>32));
+ fapi2::Target<fapi2::TARGET_TYPE_CORE> target_name((fapi2::plat_target_handle_t)i);
// Determine if the chiplet is present and, thus, functional
// via partial good attributes
FAPI_TRY(plat_TargetPresent(chip_target, target_name, b_present));
G_vec_targets.at(l_beginning_offset+i) = revle64((fapi2::plat_target_handle_t)(target_name.get()));
- FAPI_DBG("G offset = %d", l_beginning_offset+i);
-
}
// Trace all entries
diff --git a/importtemp/xml/p9_ppe_attributes.xml b/importtemp/xml/p9_ppe_attributes.xml
index ebd09259..a5576303 100644
--- a/importtemp/xml/p9_ppe_attributes.xml
+++ b/importtemp/xml/p9_ppe_attributes.xml
@@ -40,10 +40,10 @@
<entry>
<name>ATTR_SCRATCH_INT64_2</name>
</entry>
- <entry>
+ <entry>
<name>ATTR_SCRATCH_UINT32_ARRAY</name>
</entry>
- <entry>
+ <entry>
<name>ATTR_SCRATCH_UINT32_PERV_ARRAY</name>
</entry>
<entry>
@@ -99,19 +99,19 @@
<entry>
<name>ATTR_PG_FSI</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_PRV</name>
<value>0xF07D</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_N0</name>
<value>0xF03F</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_N1</name>
<value>0xF03F</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_N2</name>
<value>0xF03F</value>
@@ -119,55 +119,55 @@
<entry>
<name>ATTR_PG_N3</name>
<value>0xF01F</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_XB</name>
<value>0xF01D</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_MC01</name>
<value>0xF0FD</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_MC23</name>
<value>0xF0FD</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_OB0</name>
<value>0xF1FD</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_OB1</name>
<value>0xF1FD</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_OB2</name>
<value>0xF1FD</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_OB3</name>
<value>0xF1FD</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_PCI0</name>
<value>0xF1FD</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_PCI1</name>
<value>0xF0FD</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_PCI2</name>
<value>0xF07D</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EQ0</name>
<value>0xF019</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EQ1</name>
<value>0xF019</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EQ2</name>
<value>0xF019</value>
@@ -175,115 +175,114 @@
<entry>
<name>ATTR_PG_EQ3</name>
<value>0xF019</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EQ4</name>
<value>0xF019</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EQ5</name>
<value>0xF019</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC00</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC01</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC02</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC03</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC04</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC05</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC06</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC07</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC08</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC09</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC10</name>
<value>0xF1FF</value>
</entry>
-
+
<entry>
<name>ATTR_PG_EC11</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC12</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC13</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC14</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC15</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC16</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC17</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC18</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC19</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC20</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC21</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC22</name>
<value>0xF1FF</value>
- </entry>
+ </entry>
<entry>
<name>ATTR_PG_EC23</name>
<value>0xF1FF</value>
</entry>
<entry>
<name>ATTR_CHIP_UNIT_POS</name>
- <value>0x00</value>
<value>0x01</value>
<value>0x02</value>
<value>0x03</value>
@@ -299,6 +298,36 @@
<value>0x0D</value>
<value>0x0E</value>
<value>0x0F</value>
+ <value>0x10</value>
+ <value>0x11</value>
+ <value>0x12</value>
+ <value>0x13</value>
+ <value>0x14</value>
+ <value>0x15</value>
+ <value>0x20</value>
+ <value>0x21</value>
+ <value>0x22</value>
+ <value>0x23</value>
+ <value>0x24</value>
+ <value>0x25</value>
+ <value>0x26</value>
+ <value>0x27</value>
+ <value>0x28</value>
+ <value>0x29</value>
+ <value>0x2A</value>
+ <value>0x2B</value>
+ <value>0x2C</value>
+ <value>0x2D</value>
+ <value>0x2E</value>
+ <value>0x2F</value>
+ <value>0x30</value>
+ <value>0x31</value>
+ <value>0x32</value>
+ <value>0x33</value>
+ <value>0x34</value>
+ <value>0x35</value>
+ <value>0x36</value>
+ <value>0x37</value>
</entry>
<entry>
<name>ATTR_FABRIC_SYSTEM_ID</name>
@@ -308,7 +337,7 @@
<name>ATTR_SYSTEM_IPL_PHASE</name>
<value>0x1</value>
</entry>
-
+
<entry>
<name>ATTR_BACKUP_SEEPROM_SELECT</name>
</entry>
diff --git a/tools/image/sbe_default_tool.c b/tools/image/sbe_default_tool.c
index 975c017d..3bd90438 100644
--- a/tools/image/sbe_default_tool.c
+++ b/tools/image/sbe_default_tool.c
@@ -50,37 +50,37 @@ void assertTarget(const char* str, unsigned int index)
if (index > 0) {
fprintf(stderr, "sbe_default_tool: index (%d) is larger than 0\n", index);
exit(1);
- }
+ }
} else if(strcmp(str, "TARGET_TYPE_EX") == 0) {
if (index > EX_TARGET_COUNT) {
- fprintf(stderr, "sbe_default_tool: index (%d) is larger than EX_TARGET_COUNT (%d)\n",
+ fprintf(stderr, "sbe_default_tool: index (%d) is larger than EX_TARGET_COUNT (%d)\n",
index, EX_TARGET_COUNT);
exit(1);
- }
+ }
} else if(strcmp(str, "TARGET_TYPE_EQ") == 0) {
if (index > EQ_TARGET_COUNT) {
- fprintf(stderr, "sbe_default_tool: index (%d) is larger than EQ_TARGET_COUNT (%d)\n",
+ fprintf(stderr, "sbe_default_tool: index (%d) is larger than EQ_TARGET_COUNT (%d)\n",
index, EQ_TARGET_COUNT);
exit(1);
- }
+ }
} else if(strcmp(str, "TARGET_TYPE_CORE") == 0) {
if (index > CORE_TARGET_COUNT) {
- fprintf(stderr, "sbe_default_tool: index (%d) is larger than CORE_TARGET_COUNT (%d)\n",
+ fprintf(stderr, "sbe_default_tool: index (%d) is larger than CORE_TARGET_COUNT (%d)\n",
index, CORE_TARGET_COUNT);
exit(1);
- }
+ }
} else if(strcmp(str, "TARGET_TYPE_PERV") == 0) {
if (index > PERV_TARGET_COUNT) {
- fprintf(stderr, "sbe_default_tool: index (%d) is larger than PERV_TARGET_COUNT (%d)\n",
+ fprintf(stderr, "sbe_default_tool: index (%d) is larger than PERV_TARGET_COUNT (%d)\n",
index, PERV_TARGET_COUNT);
exit(1);
- }
+ }
} else {
if (index >= PERV_TARGET_COUNT) {
fprintf(stderr, "sbe_default_tool: target not supported:");
fprintf(stderr, " %s\n", str);
exit(1);
- }
+ }
}
return;
}
@@ -176,17 +176,17 @@ uint64_t getAttribute(void* image, const char* attribute, unsigned int index) {
fprintf(stderr, " %s", attribute);
exit(1);
}
-
+
sbe_xip_image2host(image, item.iv_address, &thePointer);
if(item.iv_toc->iv_type == SBE_XIP_UINT8) {
val = *((uint8_t*)thePointer + (index * sizeof(uint8_t)));
-
+
} else if(item.iv_toc->iv_type == SBE_XIP_INT8) {
val = *((int8_t*)thePointer + (index * sizeof(int8_t)));
- val &= 0xFF;
+ val &= 0xFF;
} else if(item.iv_toc->iv_type == SBE_XIP_UINT16) {
@@ -195,7 +195,7 @@ uint64_t getAttribute(void* image, const char* attribute, unsigned int index) {
} else if(item.iv_toc->iv_type == SBE_XIP_INT16) {
val = xipRevLe16(*((int16_t*)thePointer + (index * sizeof(int16_t))));
- val &= 0xFFFF;
+ val &= 0xFFFF;
} else if(item.iv_toc->iv_type == SBE_XIP_UINT32) {
@@ -204,7 +204,7 @@ uint64_t getAttribute(void* image, const char* attribute, unsigned int index) {
} else if(item.iv_toc->iv_type == SBE_XIP_INT32) {
val = xipRevLe32(*((int32_t*)thePointer + (index * sizeof(int32_t))));
- val &= 0xFFFFFFFF;
+ val &= 0xFFFFFFFF;
} else if(item.iv_toc->iv_type == SBE_XIP_UINT64) {
@@ -235,7 +235,7 @@ int main(int argc, const char** argv)
fprintf(stderr, "sbe_default_tool: argument missing\n");
fprintf(stderr, g_usage);
exit(1);
- }
+ }
printf("sbe_default_tool %s %s %s %s %s\n", argv[1], argv[2], argv[3], argv[4], argv[5]);
@@ -269,7 +269,7 @@ int main(int argc, const char** argv)
uint64_t check = getAttribute(image, argv[2], index);
if((check & val) != check) {
-
+
fprintf(stderr, "sbe_default_tool: set and get values not equal -> ");
fprintf(stderr, "%lx != %lx\n", check, val);
exit(1);
@@ -282,6 +282,6 @@ int main(int argc, const char** argv)
exit(1);
}
-
+
return 0;
}
diff --git a/tools/scripts/ppeCreateAttrGetSetMacros.pl b/tools/scripts/ppeCreateAttrGetSetMacros.pl
index bdbbcae3..7ac64372 100755
--- a/tools/scripts/ppeCreateAttrGetSetMacros.pl
+++ b/tools/scripts/ppeCreateAttrGetSetMacros.pl
@@ -271,10 +271,15 @@ for my $attribute (sort keys %{$enums{AttributeId}}) {
$targetImplementation .= "\n" . $targetFunction . "\n{\n *o_pvalue = object->fapi2attr::${macroTarget}::${attribute};\n}\n";
- } else {
+ } elsif($targetMacro eq "TARGET_TYPE_PERV") {
- $targetImplementation .= "\n" . $targetFunction . "\n{\n uint32_t index = i_ptarget.getTargetNumber();\n *o_pvalue = object->fapi2attr::${macroTarget}::${attribute}[index];\n}\n";
+ $targetImplementation .= "\n" . $targetFunction .
+"\n{
+ *o_pvalue = object->fapi2attr::${macroTarget}::${attribute}[getPervAttrIndex(i_ptarget)];
+}\n";
+ } else {
+$targetImplementation .= "\n" . $targetFunction . "\n{\n uint32_t index = i_ptarget.getTargetNumber();\n *o_pvalue = object->fapi2attr::${macroTarget}::${attribute}[index];\n}\n"
}
push(@newTargetImplementations, $targetImplementation);
}
@@ -363,7 +368,29 @@ if (@newAttributeDefines != 0) {
print OUTFILE "#include \"proc_sbe_fixed.H\"\n";
print OUTFILE "#include \"plat_target_parms.H\"\n\n";
print OUTFILE "namespace fapi2 {\n";
-
+ print OUTFILE "
+uint32_t getPervAttrIndex(const fapi2::Target<TARGET_TYPE_PERV> &i_target)
+{
+ uint32_t l_index = i_target.getTargetNumber();
+ if(TARGET_TYPE_EQ & i_target.getTargetType())
+ {
+ l_index += (EQ_TARGET_OFFSET);
+ }
+ else if(TARGET_TYPE_CORE & i_target.getTargetType())
+ {
+ l_index += (CORE_TARGET_OFFSET);
+ }
+ else if(TARGET_TYPE_MCS & i_target.getTargetType())
+ {
+ l_index += (MCS_TARGET_OFFSET);
+ }
+ else
+ {
+ l_index += (NEST_GROUP1_TARGET_OFFSET);
+ }
+ return (l_index - NEST_GROUP1_TARGET_OFFSET);
+}
+";
foreach my $impl (@newTargetImplementations) {
OpenPOWER on IntegriCloud