summaryrefslogtreecommitdiffstats
path: root/src/hwpf/src/plat
diff options
context:
space:
mode:
authorSantosh Puranik <santosh.puranik@in.ibm.com>2017-03-22 07:14:44 -0500
committerSachin Gupta <sgupta2m@in.ibm.com>2017-04-06 08:36:10 -0400
commitf0cc20d3a251e14890c8d39bce29e38b9d6899c4 (patch)
treefc98ed160afb02963be143a5db5e143d31847b04 /src/hwpf/src/plat
parent05164ddf60324e68224344a12e320ed440e1b032 (diff)
downloadtalos-sbe-f0cc20d3a251e14890c8d39bce29e38b9d6899c4.tar.gz
talos-sbe-f0cc20d3a251e14890c8d39bce29e38b9d6899c4.zip
Support for TARGET_TYPE_PHB
Change-Id: Id4c2407655c38325431eff256aa10f3b0b48fff2 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/38281 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'src/hwpf/src/plat')
-rw-r--r--src/hwpf/src/plat/plat_hw_access.C31
-rw-r--r--src/hwpf/src/plat/target.C30
2 files changed, 60 insertions, 1 deletions
diff --git a/src/hwpf/src/plat/plat_hw_access.C b/src/hwpf/src/plat/plat_hw_access.C
index 07580d50..a87e864a 100644
--- a/src/hwpf/src/plat/plat_hw_access.C
+++ b/src/hwpf/src/plat/plat_hw_access.C
@@ -205,6 +205,37 @@ static uint32_t getEffectiveAddress(const plat_target_handle_t &i_target, const
l_addr.iv_chiplet = i_target.fields.chiplet_num;
l_addr.iv_satId = (2 * (i_target.getTargetInstance() % 2));
break;
+ case PPE_TARGET_TYPE_PHB:
+ if(l_addr.iv_chiplet == N2_CHIPLET)
+ {
+ if (i_target.getTargetInstance() == 0)
+ {
+ l_addr.iv_ring = 0x3;
+ l_addr.iv_satId = ((l_addr.iv_satId < 4) ? (1) : (4));
+ }
+ else
+ {
+ l_addr.iv_ring = (0x3 + (i_target.getTargetInstance() / 3) + 1) & 0xF;
+ l_addr.iv_satId = ((l_addr.iv_satId < 4) ? (1) : (4)) +
+ ((i_target.getTargetInstance() % 2) ? (0) : (1)) +
+ (2 * (i_target.getTargetInstance() / 5));
+ }
+ }
+ else
+ {
+ l_addr.iv_chiplet = i_target.fields.chiplet_num;
+ if (i_target.getTargetInstance() == 0)
+ {
+ l_addr.iv_satId = ((l_addr.iv_satId < 4) ? (1) : (4));
+ }
+ else
+ {
+ l_addr.iv_satId = (((l_addr.iv_satId < 4) ? (1) : (4)) +
+ ((i_target.getTargetInstance() % 2) ? (0) : (1)) +
+ (2 * (i_target.getTargetInstance() / 5)));
+ }
+ }
+ break;
default:
if(0 != i_target.getAddressOverlay())
{
diff --git a/src/hwpf/src/plat/target.C b/src/hwpf/src/plat/target.C
index dbf8413b..3532f521 100644
--- a/src/hwpf/src/plat/target.C
+++ b/src/hwpf/src/plat/target.C
@@ -5,7 +5,7 @@
/* */
/* OpenPOWER sbe Project */
/* */
-/* Contributors Listed Below - COPYRIGHT 2012,2016 */
+/* Contributors Listed Below - COPYRIGHT 2012,2017 */
/* [+] International Business Machines Corp. */
/* */
/* */
@@ -135,6 +135,9 @@ namespace fapi2
case PPE_TARGET_TYPE_MCS:
l_targetType = TARGET_TYPE_MCS;
break;
+ case PPE_TARGET_TYPE_PHB:
+ l_targetType = TARGET_TYPE_PHB;
+ break;
case PPE_TARGET_TYPE_CORE | PPE_TARGET_TYPE_PERV:
l_targetType = TARGET_TYPE_CORE;
break;
@@ -589,6 +592,31 @@ fapi_try_exit:
G_vec_targets.at(l_beginning_offset+i) = revle32((fapi2::plat_target_handle_t)(target_name.get()));
}
+ /*
+ * PHB Targets
+ */
+ l_beginning_offset = PHB_TARGET_OFFSET;
+ for (uint32_t i = 0; i < PHB_TARGET_COUNT; ++i)
+ {
+ fapi2::Target<fapi2::TARGET_TYPE_PHB> target_name(createPlatTargetHandle<fapi2::TARGET_TYPE_PHB>(i));
+
+ fapi2::Target<fapi2::TARGET_TYPE_PERV>
+ l_pciTarget((plat_getTargetHandleByChipletNumber<TARGET_TYPE_PERV>(target_name.getChipletNumber())));
+
+ constexpr uint16_t l_pciPgArray[] = {0xE1FD, 0xE0FD, 0xE07D};
+ uint16_t l_attrPg = 0;
+
+ FAPI_ATTR_GET(fapi2::ATTR_PG, l_pciTarget, l_attrPg);
+
+ if(l_pciPgArray[target_name.getChipletNumber() - PCI0_CHIPLET] == l_attrPg)
+ {
+ static_cast<plat_target_handle_t&>(target_name.operator ()()).setPresent();
+ static_cast<plat_target_handle_t&>(target_name.operator ()()).setFunctional(true);
+ }
+
+ G_vec_targets.at(l_beginning_offset+i) = revle32((fapi2::plat_target_handle_t)(target_name.get()));
+ }
+
fapi_try_exit:
return fapi2::current_err;
OpenPOWER on IntegriCloud