diff options
author | Santosh Puranik <santosh.puranik@in.ibm.com> | 2017-03-22 07:14:44 -0500 |
---|---|---|
committer | Sachin Gupta <sgupta2m@in.ibm.com> | 2017-04-06 08:36:10 -0400 |
commit | f0cc20d3a251e14890c8d39bce29e38b9d6899c4 (patch) | |
tree | fc98ed160afb02963be143a5db5e143d31847b04 /src/hwpf/src/plat | |
parent | 05164ddf60324e68224344a12e320ed440e1b032 (diff) | |
download | talos-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.C | 31 | ||||
-rw-r--r-- | src/hwpf/src/plat/target.C | 30 |
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; |