summaryrefslogtreecommitdiffstats
path: root/src/hwpf/include/plat
diff options
context:
space:
mode:
authorSantosh Puranik <santosh.puranik@in.ibm.com>2016-09-26 03:14:57 -0500
committerSantosh S. Puranik <santosh.puranik@in.ibm.com>2016-09-30 02:34:33 -0400
commitd203132a331691e653aee54b339453b391b5e7a0 (patch)
tree7613274c63d11a0b113b3232089f0dfcd57366a9 /src/hwpf/include/plat
parent57475477182adeecc322a4a3852857bd5b997993 (diff)
downloadtalos-sbe-d203132a331691e653aee54b339453b391b5e7a0.tar.gz
talos-sbe-d203132a331691e653aee54b339453b391b5e7a0.zip
Removed PPE specific code for SCOMs
Change-Id: Ib15f7f204d5afdba8ce23eaa2b749383b81ae3bc Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/30280 Reviewed-by: RANGANATHPRASAD G. BRAHMASAMUDRA <prasadbgr@in.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: PPE CI <ppe-ci+hostboot@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-by: PARVATHI RACHAKONDA <prachako@in.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/30286 Reviewed-by: Hostboot Team <hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Santosh S. Puranik <santosh.puranik@in.ibm.com>
Diffstat (limited to 'src/hwpf/include/plat')
-rw-r--r--src/hwpf/include/plat/plat_hw_access.H10
-rw-r--r--src/hwpf/include/plat/target.H59
2 files changed, 15 insertions, 54 deletions
diff --git a/src/hwpf/include/plat/plat_hw_access.H b/src/hwpf/include/plat/plat_hw_access.H
index c7c73325..cd0078f9 100644
--- a/src/hwpf/include/plat/plat_hw_access.H
+++ b/src/hwpf/include/plat/plat_hw_access.H
@@ -34,6 +34,7 @@
#include <plat_includes.H>
#include "hw_access_def.H"
#include <return_code.H>
+#include <fapi2_target.H>
// PIB errors
enum PCB_ERRORS
@@ -84,11 +85,11 @@ asm volatile \
/// GetScom
#define PLAT_GETSCOM(_m_rc, _m_base, _m_offset, _m_data) \
- _m_rc = fapi2::getscom_abs_wrap(getEffectiveAddress(_m_base, _m_offset), _m_data)
+ _m_rc = fapi2::getscom_abs_wrap(&(_m_base), _m_offset, _m_data)
/// PutScom
#define PLAT_PUTSCOM(_m_rc, _m_base, _m_offset, _m_data) \
- _m_rc = fapi2::putscom_abs_wrap(getEffectiveAddress(_m_base, _m_offset), _m_data)
+ _m_rc = fapi2::putscom_abs_wrap(&(_m_base), _m_offset, _m_data)
/// GetCFAM
#define PLAT_GETCFAM(_m_base, _m_offset, _m_data) \
@@ -135,6 +136,7 @@ namespace fapi2
fapi2::ReturnCode getRing_verifyAndcleanup(const uint32_t i_ringAddress,
const fapi2::RingMode i_ringMode);
+ typedef union plat_target_handle plat_target_handle_t;
///
/// @brief Platform wrapper over PK getscom_abs
///
@@ -143,7 +145,7 @@ namespace fapi2
///
/// @return PCB-PIB return code
///
- uint32_t getscom_abs_wrap(const uint32_t i_addr, uint64_t *o_data);
+ uint32_t getscom_abs_wrap(const void *i_target, const uint32_t i_addr, uint64_t *o_data);
///
/// @brief Platform wrapper over PK putscom_abs
@@ -153,7 +155,7 @@ namespace fapi2
///
/// @return PCB-PIB return code
///
- uint32_t putscom_abs_wrap(const uint32_t i_addr, uint64_t i_data);
+ uint32_t putscom_abs_wrap(const void *i_target, const uint32_t i_addr, uint64_t i_data);
///
/// @brief Platform wrapper to retry scom for parity/timeout errors
diff --git a/src/hwpf/include/plat/target.H b/src/hwpf/include/plat/target.H
index 09c27d0b..c7baef55 100644
--- a/src/hwpf/include/plat/target.H
+++ b/src/hwpf/include/plat/target.H
@@ -178,18 +178,19 @@ namespace fapi2
template<TargetType T>
inline Target<T, V> Target<K, V>::getParent(void) const
{
- static_assert(((K == TARGET_TYPE_EQ) ||
+ static_assert((((K == TARGET_TYPE_EQ) ||
(K == TARGET_TYPE_CORE) ||
(K == TARGET_TYPE_MCBIST) ||
(K == TARGET_TYPE_PERV) ||
(K == TARGET_TYPE_EX) ||
(K == TARGET_TYPE_PROC_CHIP) ||
(K == (TARGET_TYPE_PROC_CHIP | TARGET_TYPE_EQ)) ||
- (K == (TARGET_TYPE_PROC_CHIP | TARGET_TYPE_CORE))) &&
+ (K == (TARGET_TYPE_PROC_CHIP | TARGET_TYPE_CORE)) ||
+ (K == TARGET_TYPE_ALL)) &&
((T == TARGET_TYPE_EQ) ||
(T == TARGET_TYPE_EX) ||
(T == TARGET_TYPE_PROC_CHIP) ||
- (T == TARGET_TYPE_PERV)),
+ (T == TARGET_TYPE_PERV))),
"Invalid parent/child target type passed");
static_assert(!((K == TARGET_TYPE_EQ) &&
@@ -198,6 +199,11 @@ namespace fapi2
"Invalid parent for EQ target, must be PERV or "
"PROC_CHIP");
+ static_assert(!((K == TARGET_TYPE_ALL) &&
+ (T != TARGET_TYPE_PROC_CHIP)),
+ "Invalid parent for ALL target, must be "
+ "PROC_CHIP");
+
static_assert(!((K == TARGET_TYPE_MCBIST) &&
(T != TARGET_TYPE_PERV) &&
(T != TARGET_TYPE_PROC_CHIP)),
@@ -348,53 +354,6 @@ namespace fapi2
snprintf(i_buffer, i_bsize, "Target 0x%lx/0x%x", i_target.get(), T);
}
- template<TargetType T, typename V>
- __attribute__((always_inline))
- inline uint32_t getEffectiveAddress(const Target<T, V> &i_target,
- const uint32_t i_addr)
- {
- ScomAddr l_addr = i_addr;
- if(0 != static_cast<plat_target_handle_t>(i_target.get()).getAddressOverlay())
- {
- l_addr.iv_chiplet = i_target.getChipletNumber();
- }
- return l_addr;
- }
-
- inline uint32_t getEffectiveAddress(const Target<TARGET_TYPE_EX> &i_target,
- const uint32_t i_addr)
- {
- ScomAddr l_addr = i_addr;
-
- if((EQ_CHIPLET_OFFSET <= l_addr.iv_chiplet) &&
- ((EQ_CHIPLET_OFFSET + EQ_TARGET_COUNT) > l_addr.iv_chiplet))
- {
- l_addr.iv_chiplet = i_target.getChipletNumber();
- l_addr.iv_ring = (l_addr.iv_ring - (l_addr.iv_ring % 2)) +
- (static_cast<plat_target_handle_t>(i_target.get()).getTargetInstance() % 2);
- }
- else if ((CORE_CHIPLET_OFFSET <= l_addr.iv_chiplet) &&
- ((CORE_CHIPLET_OFFSET + CORE_TARGET_COUNT) > l_addr.iv_chiplet))
- {
- l_addr.iv_chiplet = CORE_CHIPLET_OFFSET + (l_addr.iv_chiplet % 2) +
- (static_cast<plat_target_handle_t>(i_target.get()).getTargetInstance() * 2);
- }
- else
- {
- assert(false);
- }
- return l_addr;
- }
-
- inline uint32_t getEffectiveAddress(const Target<TARGET_TYPE_MCS> &i_target,
- const uint32_t i_addr)
- {
- ScomAddr l_addr = i_addr;
- l_addr.iv_chiplet = i_target.getChipletNumber();
- l_addr.iv_satId = (2 * (static_cast<plat_target_handle_t>(i_target.get()).getTargetInstance() % 2));
- return l_addr;
- }
-
///
/// @brief Return the string interpretation of this target
/// @tparam T The type of the target
OpenPOWER on IntegriCloud