summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp
diff options
context:
space:
mode:
authorLouis Stermole <stermole@us.ibm.com>2016-09-14 07:39:10 -0500
committerChristian R. Geddes <crgeddes@us.ibm.com>2016-10-04 18:48:09 -0400
commit6a41be7a1e83d4ede3116b926719caa1037992b9 (patch)
treece085832d7d8683bd7cff767200e8257d4d519cc /src/import/chips/p9/procedures/hwp
parente1e8610960d9b5124a656b662144ff6b76631e85 (diff)
downloadtalos-hostboot-6a41be7a1e83d4ede3116b926719caa1037992b9.tar.gz
talos-hostboot-6a41be7a1e83d4ede3116b926719caa1037992b9.zip
Add DIMM to PHY mapping to access_delay_regs
Add mss::is_odd util function Change-Id: Ia549f538e139e5431531e33f76d04ab4b64cf466 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29889 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com> Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com> Reviewed-by: Brian R. Silver <bsilver@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/30582 Reviewed-by: Hostboot Team <hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp')
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/ecc/mbs_error_vector_trap.H32
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/mcbist/mcbist.H3
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/utils/num.H31
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/mss.H1
4 files changed, 50 insertions, 17 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/ecc/mbs_error_vector_trap.H b/src/import/chips/p9/procedures/hwp/memory/lib/ecc/mbs_error_vector_trap.H
index eea838239..732f334ad 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/ecc/mbs_error_vector_trap.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/ecc/mbs_error_vector_trap.H
@@ -105,8 +105,8 @@ inline void set_nce_galois( const fapi2::Target<T>& i_target,
{
const auto& l_port = mss::relative_pos<fapi2::TARGET_TYPE_MCBIST>(i_target);
- // divide by 2 because each register holds info for a pair of ports
- if ((l_port % 2) == 0)
+ // check for even/odd since each register holds info for a pair of ports
+ if (!mss::is_odd(l_port))
{
io_data.insertFromRight<TT::P0_NCE_GALOIS, TT::P0_NCE_GALOIS_LEN>(i_value);
}
@@ -133,8 +133,8 @@ inline void get_nce_galois( const fapi2::Target<T>& i_target,
{
const auto& l_port = mss::relative_pos<fapi2::TARGET_TYPE_MCBIST>(i_target);
- // divide by 2 because each register holds info for a pair of ports
- if ((l_port % 2) == 0)
+ // check for even/odd since each register holds info for a pair of ports
+ if (!mss::is_odd(l_port))
{
i_data.extractToRight<TT::P0_NCE_GALOIS, TT::P0_NCE_GALOIS_LEN>(o_value);
}
@@ -161,8 +161,8 @@ inline void set_nce_magnitude( const fapi2::Target<T>& i_target,
{
const auto& l_port = mss::relative_pos<fapi2::TARGET_TYPE_MCBIST>(i_target);
- // divide by 2 because each register holds info for a pair of ports
- if ((l_port % 2) == 0)
+ // check for even/odd since each register holds info for a pair of ports
+ if (!mss::is_odd(l_port))
{
io_data.insertFromRight<TT::P0_NCE_MAGNITUDE, TT::P0_NCE_MAGNITUDE_LEN>(i_value);
}
@@ -189,8 +189,8 @@ inline void get_nce_magnitude( const fapi2::Target<T>& i_target,
{
const auto& l_port = mss::relative_pos<fapi2::TARGET_TYPE_MCBIST>(i_target);
- // divide by 2 because each register holds info for a pair of ports
- if ((l_port % 2) == 0)
+ // check for even/odd since each register holds info for a pair of ports
+ if (!mss::is_odd(l_port))
{
i_data.extractToRight<TT::P0_NCE_MAGNITUDE, TT::P0_NCE_MAGNITUDE_LEN>(o_value);
}
@@ -217,8 +217,8 @@ inline void set_tce_galois( const fapi2::Target<T>& i_target,
{
const auto& l_port = mss::relative_pos<fapi2::TARGET_TYPE_MCBIST>(i_target);
- // divide by 2 because each register holds info for a pair of ports
- if ((l_port % 2) == 0)
+ // check for even/odd since each register holds info for a pair of ports
+ if (!mss::is_odd(l_port))
{
io_data.insertFromRight<TT::P0_TCE_GALOIS, TT::P0_TCE_GALOIS_LEN>(i_value);
}
@@ -245,8 +245,8 @@ inline void get_tce_galois( const fapi2::Target<T>& i_target,
{
const auto& l_port = mss::relative_pos<fapi2::TARGET_TYPE_MCBIST>(i_target);
- // divide by 2 because each register holds info for a pair of ports
- if ((l_port % 2) == 0)
+ // check for even/odd since each register holds info for a pair of ports
+ if (!mss::is_odd(l_port))
{
i_data.extractToRight<TT::P0_TCE_GALOIS, TT::P0_TCE_GALOIS_LEN>(o_value);
}
@@ -273,8 +273,8 @@ inline void set_tce_magnitude( const fapi2::Target<T>& i_target,
{
const auto& l_port = mss::relative_pos<fapi2::TARGET_TYPE_MCBIST>(i_target);
- // divide by 2 because each register holds info for a pair of ports
- if ((l_port % 2) == 0)
+ // check for even/odd since each register holds info for a pair of ports
+ if (!mss::is_odd(l_port))
{
io_data.insertFromRight<TT::P0_TCE_MAGNITUDE, TT::P0_TCE_MAGNITUDE_LEN>(i_value);
}
@@ -301,8 +301,8 @@ inline void get_tce_magnitude( const fapi2::Target<T>& i_target,
{
const auto& l_port = mss::relative_pos<fapi2::TARGET_TYPE_MCBIST>(i_target);
- // divide by 2 because each register holds info for a pair of ports
- if ((l_port % 2) == 0)
+ // check for even/odd since each register holds info for a pair of ports
+ if (!mss::is_odd(l_port))
{
i_data.extractToRight<TT::P0_TCE_MAGNITUDE, TT::P0_TCE_MAGNITUDE_LEN>(o_value);
}
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/mcbist.H b/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/mcbist.H
index 333698600..460b0725c 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/mcbist.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/mcbist/mcbist.H
@@ -45,6 +45,7 @@
#include <lib/eff_config/memory_size.H>
#include <lib/shared/mss_const.H>
#include <lib/utils/bit_count.H>
+#include <lib/utils/num.H>
#include <lib/mcbist/patterns.H>
#include <lib/mcbist/settings.H>
@@ -2254,7 +2255,7 @@ inline fapi2::ReturnCode load_pattern( const fapi2::Target<T>& i_target, uint64_
// The indexes are split in to even and odd where the odd indexes don't really exist.
// They're just indicating that we want to grab the even index and invert it. So calculate
// the proper vector index and acknowledge the inversion if necessary.
- if ((i_pattern % 2) != 0)
+ if (mss::is_odd(i_pattern))
{
l_invert = true;
i_pattern -= 1;
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/utils/num.H b/src/import/chips/p9/procedures/hwp/memory/lib/utils/num.H
index f025b19df..61a04a680 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/utils/num.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/utils/num.H
@@ -22,3 +22,34 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */
+
+///
+/// @file num.H
+/// @brief Miscellaneous number checking functions
+///
+// *HWP HWP Owner: Louis Stermole <stermole@us.ibm.com>
+// *HWP HWP Backup: Brian Silver <bsilver@us.ibm.com>
+// *HWP Team: Memory
+// *HWP Level: 2
+// *HWP Consumed by: HB:FSP
+
+#ifndef _MSS_NUM_H_
+#define _MSS_NUM_H_
+
+namespace mss
+{
+
+///
+/// @brief Return whether or not a number is odd
+/// @param[in] i_number the number to check
+/// @return true if i_number is odd
+///
+template< typename T >
+constexpr bool is_odd(const T i_number)
+{
+ return (i_number & 0x1);
+}
+
+
+}
+#endif
diff --git a/src/import/chips/p9/procedures/hwp/memory/mss.H b/src/import/chips/p9/procedures/hwp/memory/mss.H
index 619d71c10..d85840698 100644
--- a/src/import/chips/p9/procedures/hwp/memory/mss.H
+++ b/src/import/chips/p9/procedures/hwp/memory/mss.H
@@ -47,6 +47,7 @@
#include <lib/utils/index.H>
#include <lib/utils/c_str.H>
+#include <lib/utils/num.H>
#include <lib/utils/pos.H>
#include <lib/utils/swizzle.H>
OpenPOWER on IntegriCloud