diff options
author | Andre Marin <aamarin@us.ibm.com> | 2016-09-16 13:21:20 -0500 |
---|---|---|
committer | Christian R. Geddes <crgeddes@us.ibm.com> | 2016-10-02 21:07:06 -0400 |
commit | 16e2f6839de31703f94dc190e85449d8cade9db5 (patch) | |
tree | acf07b4489257342d8877ad13eae5d2101a1cd7b /src/import/chips/p9 | |
parent | ed49b243442362bb9bb961e3ad709fdece4b10c6 (diff) | |
download | talos-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.C | 2 | ||||
-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.C | 4 | ||||
-rw-r--r-- | src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder.H | 8 | ||||
-rw-r--r-- | src/import/chips/p9/procedures/hwp/memory/lib/spd/common/spd_decoder_v1_1.C | 2 | ||||
-rw-r--r-- | src/import/chips/p9/procedures/hwp/memory/lib/spd/spd_factory.C | 6 |
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; |