summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9
diff options
context:
space:
mode:
authorAndre Marin <aamarin@us.ibm.com>2016-09-16 13:21:20 -0500
committerChristian R. Geddes <crgeddes@us.ibm.com>2016-10-02 21:07:06 -0400
commit16e2f6839de31703f94dc190e85449d8cade9db5 (patch)
treeacf07b4489257342d8877ad13eae5d2101a1cd7b /src/import/chips/p9
parented49b243442362bb9bb961e3ad709fdece4b10c6 (diff)
downloadtalos-hostboot-16e2f6839de31703f94dc190e85449d8cade9db5.tar.gz
talos-hostboot-16e2f6839de31703f94dc190e85449d8cade9db5.zip
Modify raw_card infras. to take in general raw card revs
Added rcd01 namespace to prevent possible future clashes with rcd02. Moved raw_card data structure from RDIMM to common since this will used by all dimm modules. Added fake LRDIMM RCD settings to move forward, added a TODO to figure what RCD settings we want... Change-Id: I849c3bd6b988247d652e34c4c50569d6a28c343b Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29895 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Brian R. Silver <bsilver@us.ibm.com> Reviewed-by: Louis Stermole <stermole@us.ibm.com> Reviewed-by: STEPHEN GLANCY <sglancy@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29899 Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: Christian R. Geddes <crgeddes@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9')
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C2
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/spd/common/raw_cards.C (renamed from src/import/chips/p9/procedures/hwp/memory/lib/spd/rdimm/raw_cards.C)87
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/spd/common/raw_cards.H (renamed from src/import/chips/p9/procedures/hwp/memory/lib/spd/rdimm/raw_cards.H)49
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder.C4
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder.H8
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder_v1_1.C2
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/spd/spd_factory.C6
7 files changed, 88 insertions, 70 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C
index 0a5abdbb2..70aa4306e 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/eff_config/eff_config.C
@@ -42,7 +42,7 @@
#include <lib/mss_vpd_decoder.H>
#include <lib/spd/spd_factory.H>
#include <lib/spd/common/spd_decoder.H>
-#include <lib/spd/rdimm/raw_cards.H>
+#include <lib/spd/common/raw_cards.H>
#include <lib/eff_config/timing.H>
#include <lib/dimm/rank.H>
#include <lib/utils/conversions.H>
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/spd/rdimm/raw_cards.C b/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/raw_cards.C
index 025eee61f..31c58d4e6 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/spd/rdimm/raw_cards.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/raw_cards.C
@@ -1,7 +1,7 @@
/* IBM_PROLOG_BEGIN_TAG */
/* This is an automatically generated prolog. */
/* */
-/* $Source: src/import/chips/p9/procedures/hwp/memory/lib/spd/rdimm/raw_cards.C $ */
+/* $Source: src/import/chips/p9/procedures/hwp/memory/lib/spd/common/raw_cards.C $ */
/* */
/* OpenPOWER HostBoot Project */
/* */
@@ -40,52 +40,41 @@
#include <fapi2.H>
// mss lib
-#include <lib/spd/rdimm/raw_cards.H>
+#include <lib/spd/common/raw_cards.H>
namespace mss
{
+namespace rcd01
+{
enum raw_card_rev : uint8_t
{
+ // TODO RTC:160116 Fill in valid RCD data for LRDIMM
+ B0 = 0x01,
+
+ // RDIMM power-on
C1 = 0x22,
+ // TK - Change to 0xFF - AAM
// In the spec hex XF (where X - don't care)
// means no JEDEC reference raw card design used.
// We will want to redefine it to be VBU reference raw card
// since it is unlikely we will use a DIMM w/o a
// reference caw card design.
-
- // TODO RTC:159662 Fill in valid RCD data for power on
VBU = 0x23,
};
-// RDIMM raw card C1
-// TODO RTC:159662 Fill in valid RCD data for power on
-//
-// The following parameters need a valid setting:
-//
-// RC0E - Parity, NV Mode Enable, and ALERT Configuration Control Word - TK ADD - AAM
-// RC0F - Command Latency Adder Control Word - TK ADD - AAM
-// RC1x - Internal VrefCA Control Word - TK ADD - AAM
-// RC2x - I2C Bus Control Words - TK ADD - AAM
-// RC4x - CW Selection Control Words - TK ADD - AAM
-// RC5x: CW Destination Selection & Write/Read Additional QxODT[1:0] Signal High - TK ADD - AAM
-// RC6x: CW Data Control Word - TK ADD - AAM ,
-// RC7x: IBT Control Word - TK ADD - AAM
-// RC8x: ODT Input Buffer/IBT, QxODT Output Buffer and Timing Control Word - TK ADD - AAM
-// RC9x: QxODT[1:0] Write Pattern Control Word - TK ADD - AAM
-// RCAx: QxODT[1:0] Read Pattern Control Word - TK ADD - AAM
-// RCBx: IBT and MRS Snoop Control Word - - TK ADD - AAM
///
-/// @brief raw card C1 settings
+/// @brief raw card B0 settings
///
-raw_card_t raw_card_c1( 0x00,
- 0x0B,
+// TODO RTC:160116 Fill in valid RCD data for LRDIMM
+raw_card_t raw_card_b0( 0x00,
+ 0x00,
0x00,
0x0F,
+ 0x03,
0x00,
0x0E,
- 0x0E,
0x00,
0x00,
0x00,
@@ -97,20 +86,21 @@ raw_card_t raw_card_c1( 0x00,
0x00,
0x00,
0x00,
- 0x00);
+ 0x07);
///
-/// @brief raw card VBU settings
+/// @brief raw card C1 settings
///
-raw_card_t raw_card_vbu(0x00,
- 0x00,
+raw_card_t raw_card_c1( 0x00,
+ 0x0B,
0x00,
0x0F,
0x03,
- 0x00,
+ 0x0F,
0x0E,
0x00,
0x00,
+ 0x04,
0x00,
0x00,
0x00,
@@ -119,14 +109,41 @@ raw_card_t raw_card_vbu(0x00,
0x00,
0x00,
0x00,
- 0x00,
- 0x07 );
+ 0x07);
+
+///
+/// @brief raw card VBU settings
+///
+raw_card_t raw_card_vbu( 0x00,
+ 0x00,
+ 0x00,
+ 0x0F,
+ 0x03,
+ 0x00,
+ 0x0E,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x00,
+ 0x07);
+
// TODO - RTC:160121 Catch all for adding raw card data for DIMMs
-const std::vector< std::pair< uint8_t , raw_card_t> > RDIMM_RAW_CARDS =
+// Not sure if we can have the same raw card revision for rcd01 and rcd02,
+// if not, then we can move this vector outside of the rcd01 namespace.
+const std::vector< std::pair< uint8_t , rcd01::raw_card_t> > RAW_CARDS =
{
- {raw_card_rev::C1, raw_card_c1},
- {raw_card_rev::VBU, raw_card_vbu},
+ {raw_card_rev::B0, rcd01::raw_card_b0},
+ {raw_card_rev::C1, rcd01::raw_card_c1},
+ {raw_card_rev::VBU, rcd01::raw_card_vbu},
};
+}// rcd01
}// mss
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/spd/rdimm/raw_cards.H b/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/raw_cards.H
index 7e7cd7252..a32fa3534 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/spd/rdimm/raw_cards.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/raw_cards.H
@@ -1,7 +1,7 @@
/* IBM_PROLOG_BEGIN_TAG */
/* This is an automatically generated prolog. */
/* */
-/* $Source: src/import/chips/p9/procedures/hwp/memory/lib/spd/rdimm/raw_cards.H $ */
+/* $Source: src/import/chips/p9/procedures/hwp/memory/lib/spd/common/raw_cards.H $ */
/* */
/* OpenPOWER HostBoot Project */
/* */
@@ -41,24 +41,24 @@
namespace mss
{
+namespace rcd01
+{
///
/// @brief raw card VBU settings
/// @note contains RCD settings for hard-coded values
/// that are not application specific.
+/// Application specific settings are dervied in eff_config
struct raw_card_t
{
uint64_t iv_rc00;
uint64_t iv_rc01;
uint64_t iv_rc02;
- uint64_t iv_rc03;
uint64_t iv_rc06_07;
uint64_t iv_rc08;
uint64_t iv_rc09;
- uint64_t iv_rc0a;
uint64_t iv_rc0b;
uint64_t iv_rc0c;
- uint64_t iv_rc0d;
uint64_t iv_rc0e;
uint64_t iv_rc0f;
uint64_t iv_rc1x;
@@ -98,25 +98,25 @@ struct raw_card_t
/// @param[in] i_rcax setting for register control word (RCAX)
/// @param[in] i_rcbx setting for register control word (RCBX)
///
- raw_card_t( uint64_t i_rc00,
- uint64_t i_rc01,
- uint64_t i_rc02,
- uint64_t i_rc06_07,
- uint64_t i_rc08,
- uint64_t i_rc09,
- uint64_t i_rc0b,
- uint64_t i_rc0c,
- uint64_t i_rc0e,
- uint64_t i_rc0f,
- uint64_t i_rc1x,
- uint64_t i_rc2x,
- uint64_t i_rc4x,
- uint64_t i_rc5x,
- uint64_t i_rc6x,
- uint64_t i_rc8x,
- uint64_t i_rc9x,
- uint64_t i_rcax,
- uint64_t i_rcbx )
+ constexpr raw_card_t( const uint64_t i_rc00,
+ const uint64_t i_rc01,
+ const uint64_t i_rc02,
+ const uint64_t i_rc06_07,
+ const uint64_t i_rc08,
+ const uint64_t i_rc09,
+ const uint64_t i_rc0b,
+ const uint64_t i_rc0c,
+ const uint64_t i_rc0e,
+ const uint64_t i_rc0f,
+ const uint64_t i_rc1x,
+ const uint64_t i_rc2x,
+ const uint64_t i_rc4x,
+ const uint64_t i_rc5x,
+ const uint64_t i_rc6x,
+ const uint64_t i_rc8x,
+ const uint64_t i_rc9x,
+ const uint64_t i_rcax,
+ const uint64_t i_rcbx )
: iv_rc00(i_rc00),
iv_rc01(i_rc01),
iv_rc02(i_rc02),
@@ -144,8 +144,9 @@ struct raw_card_t
~raw_card_t() = default;
};
-extern const std::vector< std::pair< uint8_t, raw_card_t> > RDIMM_RAW_CARDS;
+extern const std::vector< std::pair< uint8_t, rcd01::raw_card_t> > RAW_CARDS;
+}// rcd01
}// mss
#endif //_MSS_RAW_CARDS_H_
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder.C b/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder.C
index 869ab0832..1e71de864 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder.C
@@ -42,7 +42,7 @@
// mss lib
#include <lib/spd/common/spd_decoder.H>
#include <lib/spd/rdimm/rdimm_decoder.H>
-#include <lib/spd/rdimm/raw_cards.H>
+#include <lib/spd/common/raw_cards.H>
#include <lib/utils/checker.H>
#include <lib/utils/c_str.H>
#include <lib/utils/find.H>
@@ -70,7 +70,7 @@ namespace spd
decoder::decoder(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
const std::vector<uint8_t>& i_spd_data,
const std::shared_ptr<dimm_module_decoder>& i_module_decoder,
- const raw_card_t& i_raw_card)
+ const rcd01::raw_card_t& i_raw_card)
: iv_module_decoder(i_module_decoder),
iv_spd_data(i_spd_data),
iv_raw_card(i_raw_card),
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder.H b/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder.H
index fdffd3653..38cceccdc 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder.H
@@ -46,9 +46,9 @@
// mss lib
#include <lib/spd/common/dimm_module_decoder.H>
+#include <lib/spd/common/raw_cards.H>
#include <lib/spd/rdimm/rdimm_decoder.H>
#include <lib/spd/lrdimm/lrdimm_decoder.H>
-#include <lib/spd/rdimm/raw_cards.H>
#include <lib/utils/c_str.H>
namespace mss
@@ -442,7 +442,7 @@ class decoder
public:
std::shared_ptr<dimm_module_decoder> iv_module_decoder;
std::vector<uint8_t> iv_spd_data;
- raw_card_t iv_raw_card;
+ rcd01::raw_card_t iv_raw_card;
// Default constructor deleted
decoder() = delete;
@@ -457,7 +457,7 @@ class decoder
decoder(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
const std::vector<uint8_t>& i_spd_data,
const std::shared_ptr<dimm_module_decoder>& i_module_decoder,
- const raw_card_t& i_raw_card);
+ const rcd01::raw_card_t& i_raw_card);
///
/// @brief Default dtor
@@ -1405,7 +1405,7 @@ class decoder_v1_1 : public decoder
decoder_v1_1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
const std::vector<uint8_t>& i_spd_data,
const std::shared_ptr<dimm_module_decoder>& i_module_decoder,
- const raw_card_t& i_raw_card);
+ const rcd01::raw_card_t& i_raw_card);
///
/// @brief Default dtor
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder_v1_1.C b/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder_v1_1.C
index 340cac41c..0ae108f32 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder_v1_1.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder_v1_1.C
@@ -65,7 +65,7 @@ namespace spd
decoder_v1_1::decoder_v1_1(const fapi2::Target<fapi2::TARGET_TYPE_DIMM>& i_target,
const std::vector<uint8_t>& i_spd_data,
const std::shared_ptr<dimm_module_decoder>& i_module_decoder,
- const raw_card_t& i_raw_card)
+ const rcd01::raw_card_t& i_raw_card)
: decoder(i_target, i_spd_data, i_module_decoder, i_raw_card)
{}
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/spd/spd_factory.C b/src/import/chips/p9/procedures/hwp/memory/lib/spd/spd_factory.C
index fd04a1592..026aebff9 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/spd/spd_factory.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/spd/spd_factory.C
@@ -43,7 +43,7 @@
// mss lib
#include <lib/spd/spd_factory.H>
#include <lib/spd/common/spd_decoder.H>
-#include <lib/spd/rdimm/raw_cards.H>
+#include <lib/spd/common/raw_cards.H>
#include <lib/utils/checker.H>
#include <lib/utils/c_str.H>
#include <lib/utils/conversions.H>
@@ -445,7 +445,7 @@ fapi2::ReturnCode factory(const fapi2::Target<TARGET_TYPE_DIMM>& i_target,
uint8_t l_encoding_rev = 0;
uint8_t l_additions_rev = 0;
uint8_t l_ref_raw_card_rev = 0;
- raw_card_t l_raw_card;
+ rcd01::raw_card_t l_raw_card;
// Attribute setting needed by mss::c_str() which is used in
// the SPD decoder for debugging help
@@ -462,7 +462,7 @@ fapi2::ReturnCode factory(const fapi2::Target<TARGET_TYPE_DIMM>& i_target,
// raw card settings
FAPI_TRY( reference_raw_card(i_target, i_spd_data, l_ref_raw_card_rev) );
- if( !find_value_from_key(RDIMM_RAW_CARDS, l_ref_raw_card_rev, l_raw_card) )
+ if( !find_value_from_key( rcd01::RAW_CARDS, l_ref_raw_card_rev, l_raw_card) )
{
FAPI_ERR( "Invalid reference raw card recieved: %d", l_ref_raw_card_rev );
return fapi2::FAPI2_RC_FALSE;
OpenPOWER on IntegriCloud