summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/dram_training/mss_draminit/mss_draminit.C
diff options
context:
space:
mode:
authorThi Tran <thi@us.ibm.com>2015-09-02 10:57:41 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-09-14 21:06:59 -0500
commita67ea7384ec6c326cfe553ee235b13eb434adee7 (patch)
tree32bf3967437a39da28e75feb8717c0693ea2a479 /src/usr/hwpf/hwp/dram_training/mss_draminit/mss_draminit.C
parent66921b4bc0df457e3ea44b804c8450b3d120e3b7 (diff)
downloadtalos-hostboot-a67ea7384ec6c326cfe553ee235b13eb434adee7.tar.gz
talos-hostboot-a67ea7384ec6c326cfe553ee235b13eb434adee7.zip
SW309472: INITPROC: HWP: DDR4 updates and #DS updates for DRAM initialization
CQ:SW309472 Change-Id: Ifddb0ede213eec6583e10a129ed287a543456605 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/19164 Reviewed-by: Thi N. Tran <thi@us.ibm.com> Tested-by: Thi N. Tran <thi@us.ibm.com> Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/19165 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/dram_training/mss_draminit/mss_draminit.C')
-rwxr-xr-xsrc/usr/hwpf/hwp/dram_training/mss_draminit/mss_draminit.C1807
1 files changed, 1114 insertions, 693 deletions
diff --git a/src/usr/hwpf/hwp/dram_training/mss_draminit/mss_draminit.C b/src/usr/hwpf/hwp/dram_training/mss_draminit/mss_draminit.C
index 26cc02380..e95011aee 100755
--- a/src/usr/hwpf/hwp/dram_training/mss_draminit/mss_draminit.C
+++ b/src/usr/hwpf/hwp/dram_training/mss_draminit/mss_draminit.C
@@ -5,7 +5,9 @@
/* */
/* OpenPOWER HostBoot Project */
/* */
-/* COPYRIGHT International Business Machines Corp. 2012,2014 */
+/* Contributors Listed Below - COPYRIGHT 2012,2015 */
+/* [+] International Business Machines Corp. */
+/* */
/* */
/* Licensed under the Apache License, Version 2.0 (the "License"); */
/* you may not use this file except in compliance with the License. */
@@ -20,7 +22,7 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: mss_draminit.C,v 1.66 2014/05/09 16:40:04 jdsloat Exp $
+// $Id: mss_draminit.C,v 1.70 2015/09/04 01:10:11 kmack Exp $
//------------------------------------------------------------------------------
// Don't forget to create CVS comments when you check in your changes!
//------------------------------------------------------------------------------
@@ -28,6 +30,10 @@
//------------------------------------------------------------------------------
// Version:| Author: | Date: | Comment:
//---------|----------|---------|-----------------------------------------------
+// 1.70 | kmack |01-Sep-15| Fixed more RCs and removed extraneous comments
+// 1.69 | kmack |28-Aug-15| Fixed an RC
+// 1.68 | kmack |10-Aug-15| Moved the mss_lrdimm_ddr4_db_load call to the be included or not included based on def FAPI_LRDIMM
+// 1.67 | kmack |05-Aug-15| Commented out FAPI_DDR4 code
// 1.66 | jdsloat |09-MAY-14| Added an explicit 500us delay before execution of MRS cmds.
// 1.65 | jdsloat |09-APL-14| Fixed ifdef around #include mss_lrdimm_ddr4_funcs.H
// 1.64 | jdsloat |01-APL-14| RAS review edits/changes
@@ -40,7 +46,7 @@
// 1.57 | jdsloat | 10/09/13| Added mrs_load_ddr4 with defines for ddr4 usage, added shadow regs, removed complicated flow
// 1.56 | bellows | 09/16/13| Hostboot compile fix
// 1.55 | kcook | 09/13/13| Updated define FAPI_LRDIMM token.
-// 1.54 | kcook | 08/27/13| Removed LRDIMM support to mss_lrdimm_funcs.C.
+// 1.54 | kcook | 08/27/13| Removed LRDIMM support to mss_lrdimm_funcs.C.
// | | | Added check for valid rank when flagging address mirroring.
// 1.53 | kcook | 08/16/13| Added LRDIMM support. Use with mss_funcs.C v1.32.
// 1.52 | jdsloat | 08/07/13| Added a single rc_num check and edited a debug/error message to make firmware happy.
@@ -145,48 +151,57 @@ ReturnCode mss_lrdimm_mrs_load(Target& i_target, uint32_t i_port_number, uint32_
return rc;
}
-#endif
-
-#ifndef FAPI_DDR4
-using namespace fapi;
-fapi::ReturnCode mss_mrs_load_ddr4(Target& i_target, uint32_t port_number, uint32_t& ccs_inst_cnt)
+fapi::ReturnCode mss_lrdimm_ddr4_db_load(Target& i_target, uint32_t i_port_number, uint32_t& io_ccs_inst_cnt)
{
ReturnCode rc;
- FAPI_ERR("Invalid exec of mrs_load_ddr4 %s!", i_target.toEcmdString());
+ FAPI_ERR("Invalid exec of lrdimm_ddr4_db_load %s!", i_target.toEcmdString());
FAPI_SET_HWP_ERROR(rc, RC_MSS_PLACE_HOLDER_ERROR);
return rc;
}
-fapi::ReturnCode mss_rcd_load_ddr4(Target& i_target, uint32_t i_port_number, uint32_t& io_ccs_inst_cnt)
-{
- ReturnCode rc;
+#endif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- FAPI_ERR("Invalid exec of rcd_load_ddr4 %s!", i_target.toEcmdString());
- FAPI_SET_HWP_ERROR(rc, RC_MSS_PLACE_HOLDER_ERROR);
- return rc;
-}
-fapi::ReturnCode mss_lrdimm_ddr4_db_load(Target& i_target, uint32_t i_port_number, uint32_t& io_ccs_inst_cnt)
-{
- ReturnCode rc;
- FAPI_ERR("Invalid exec of lrdimm_ddr4_db_load %s!", i_target.toEcmdString());
- FAPI_SET_HWP_ERROR(rc, RC_MSS_PLACE_HOLDER_ERROR);
- return rc;
-}
-fapi::ReturnCode mss_ddr4_invert_mpr_write(Target& i_target)
-{
- ReturnCode rc;
- FAPI_ERR("Invalid exec of ddr4_invert_mpr_write %s!", i_target.toEcmdString());
- FAPI_SET_HWP_ERROR(rc, RC_MSS_PLACE_HOLDER_ERROR);
- return rc;
-}
-#endif
//----------------------------------------------------------------------
// Constants
@@ -197,7 +212,7 @@ const uint8_t MAX_NUM_RANK_PAIR = 4;
const uint8_t MAX_NUM_LR_RANKS = 8;
const uint8_t MRS0_BA = 0;
const uint8_t MRS1_BA = 1;
-const uint8_t MRS2_BA = 2;
+const uint8_t MRS2_BA = 2;
const uint8_t MRS3_BA = 3;
const uint8_t MRS4_BA = 4;
const uint8_t MRS5_BA = 5;
@@ -233,13 +248,13 @@ ReturnCode mss_draminit(Target& i_target)
rc = mss_draminit_cloned(i_target);
- // If mss_unmask_draminit_errors gets it's own bad rc,
- // it will commit the passed in rc (if non-zero), and return it's own bad rc.
- // Else if mss_unmask_draminit_errors runs clean,
- // it will just return the passed in rc.
- rc = mss_unmask_draminit_errors(i_target, rc);
+ // If mss_unmask_draminit_errors gets it's own bad rc,
+ // it will commit the passed in rc (if non-zero), and return it's own bad rc.
+ // Else if mss_unmask_draminit_errors runs clean,
+ // it will just return the passed in rc.
+ rc = mss_unmask_draminit_errors(i_target, rc);
- return rc;
+ return rc;
}
ReturnCode mss_draminit_cloned(Target& i_target)
@@ -257,7 +272,7 @@ ReturnCode mss_draminit_cloned(Target& i_target)
uint8_t rank_pair_group = 0;
uint8_t bit_position = 0;
ecmdDataBufferBase data_buffer_64(64);
- ecmdDataBufferBase mrs0(16);
+ ecmdDataBufferBase mrs0(16);
ecmdDataBufferBase mrs1(16);
ecmdDataBufferBase mrs2(16);
ecmdDataBufferBase mrs3(16);
@@ -338,172 +353,244 @@ ReturnCode mss_draminit_cloned(Target& i_target)
// Check to see if any dimm needs address mirror mode. Set the approriate flag.
if ( ( address_mirror_map[0][0] ||
- address_mirror_map[0][1] ||
- address_mirror_map[1][0] ||
- address_mirror_map[1][1] )
- && (is_sim == 0) )
+ address_mirror_map[0][1] ||
+ address_mirror_map[1][0] ||
+ address_mirror_map[1][1] )
+ && (is_sim == 0) )
{
- FAPI_INF( "Setting Address Mirroring in the PHY on %s ", i_target.toEcmdString());
-
- //Set the Address and BA bits affected by mirroring
- if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR3)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.setBit(58);
- rc_num = rc_num | data_buffer_64.setBit(59);
- rc_num = rc_num | data_buffer_64.setBit(60);
- rc_num = rc_num | data_buffer_64.setBit(62);
- rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
- if(rc) return rc;
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.setBit(58);
- rc_num = rc_num | data_buffer_64.setBit(59);
- rc_num = rc_num | data_buffer_64.setBit(60);
- rc_num = rc_num | data_buffer_64.setBit(62);
- rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
- if(rc) return rc;
- }
- if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.setBit(58);
- rc_num = rc_num | data_buffer_64.setBit(59);
- rc_num = rc_num | data_buffer_64.setBit(60);
- rc_num = rc_num | data_buffer_64.setBit(61);
- rc_num = rc_num | data_buffer_64.setBit(62);
- rc_num = rc_num | data_buffer_64.setBit(63);
+ FAPI_INF( "Setting Address Mirroring in the PHY on %s ", i_target.toEcmdString());
+
+ //Set the Address and BA bits affected by mirroring
+ if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR3)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.setBit(58);
+ rc_num = rc_num | data_buffer_64.setBit(59);
+ rc_num = rc_num | data_buffer_64.setBit(60);
+ rc_num = rc_num | data_buffer_64.setBit(62);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit_cloned: Error setting up buffers for DPHY01_DDRPHY_PC_RANK_GROUP_P0");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
- if(rc) return rc;
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.setBit(58);
- rc_num = rc_num | data_buffer_64.setBit(59);
- rc_num = rc_num | data_buffer_64.setBit(60);
- rc_num = rc_num | data_buffer_64.setBit(61);
- rc_num = rc_num | data_buffer_64.setBit(62);
- rc_num = rc_num | data_buffer_64.setBit(63);
- rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
- if(rc) return rc;
- }
-
- for ( port_number = 0; port_number < MAX_NUM_PORTS; port_number++)
- {
- for ( rank_pair_group = 0; rank_pair_group < MAX_NUM_RANK_PAIR; rank_pair_group++)
- {
-
- // dimm 0, dimm_rank 0-3 = ranks 0-3; dimm 1, dimm_rank 0-3 = ranks 4-7
- pri_dimm = (primary_ranks_array[rank_pair_group][port_number]) / 4;
- pri_dimm_rank = primary_ranks_array[rank_pair_group][port_number] - 4*pri_dimm;
- sec_dimm = (secondary_ranks_array[rank_pair_group][port_number]) / 4;
- sec_dimm_rank = secondary_ranks_array[rank_pair_group][port_number] - 4*sec_dimm;
- ter_dimm = (tertiary_ranks_array[rank_pair_group][port_number]) / 4;
- ter_dimm_rank = tertiary_ranks_array[rank_pair_group][port_number] - 4*ter_dimm;
- qua_dimm = (quaternary_ranks_array[rank_pair_group][port_number]) / 4;
- qua_dimm_rank = quaternary_ranks_array[rank_pair_group][port_number] - 4*qua_dimm;
- // Set the rank pairs that will be affected.
- if ( port_number == 0 )
- {
+ if(rc) return rc;
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.setBit(58);
+ rc_num = rc_num | data_buffer_64.setBit(59);
+ rc_num = rc_num | data_buffer_64.setBit(60);
+ rc_num = rc_num | data_buffer_64.setBit(62);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit_cloned: Error setting up buffers for DPHY01_DDRPHY_PC_RANK_GROUP_P1");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ }
+ if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.setBit(58);
+ rc_num = rc_num | data_buffer_64.setBit(59);
+ rc_num = rc_num | data_buffer_64.setBit(60);
+ rc_num = rc_num | data_buffer_64.setBit(61);
+ rc_num = rc_num | data_buffer_64.setBit(62);
+ rc_num = rc_num | data_buffer_64.setBit(63);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit_cloned: Error setting up buffers for DPHY01_DDRPHY_PC_RANK_GROUP_P0");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
+ if(rc) return rc;
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.setBit(58);
+ rc_num = rc_num | data_buffer_64.setBit(59);
+ rc_num = rc_num | data_buffer_64.setBit(60);
+ rc_num = rc_num | data_buffer_64.setBit(61);
+ rc_num = rc_num | data_buffer_64.setBit(62);
+ rc_num = rc_num | data_buffer_64.setBit(63);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit_cloned: Error setting up buffers for DPHY01_DDRPHY_PC_RANK_GROUP_P1");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ }
+
+ for ( port_number = 0; port_number < MAX_NUM_PORTS; port_number++)
+ {
+ for ( rank_pair_group = 0; rank_pair_group < MAX_NUM_RANK_PAIR; rank_pair_group++)
+ {
+
+ // dimm 0, dimm_rank 0-3 = ranks 0-3; dimm 1, dimm_rank 0-3 = ranks 4-7
+ pri_dimm = (primary_ranks_array[rank_pair_group][port_number]) / 4;
+ pri_dimm_rank = primary_ranks_array[rank_pair_group][port_number] - 4*pri_dimm;
+ sec_dimm = (secondary_ranks_array[rank_pair_group][port_number]) / 4;
+ sec_dimm_rank = secondary_ranks_array[rank_pair_group][port_number] - 4*sec_dimm;
+ ter_dimm = (tertiary_ranks_array[rank_pair_group][port_number]) / 4;
+ ter_dimm_rank = tertiary_ranks_array[rank_pair_group][port_number] - 4*ter_dimm;
+ qua_dimm = (quaternary_ranks_array[rank_pair_group][port_number]) / 4;
+ qua_dimm_rank = quaternary_ranks_array[rank_pair_group][port_number] - 4*qua_dimm;
+ // Set the rank pairs that will be affected.
+ if ( port_number == 0 )
+ {
if ( ( ( address_mirror_map[port_number][pri_dimm] & (0x08 >> pri_dimm_rank) ) ) && (primary_ranks_array[rank_pair_group][port_number] != 0xff ) )
- {
- FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
- bit_position = 2 * rank_pair_group + 48;
- FAPI_INF( "Setting bit %d", bit_position);
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.setBit(bit_position);
- rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
- if(rc) return rc;
- }
- if ( ( ( address_mirror_map[port_number][sec_dimm] & (0x08 >> sec_dimm_rank) ) ) && (secondary_ranks_array[rank_pair_group][port_number] != 0xff ) )
{
- FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
- bit_position = 2 * rank_pair_group + 49;
- FAPI_INF( "Setting bit %d", bit_position);
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.setBit(bit_position);
- rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
- if(rc) return rc;
- }
- if ( ( ( address_mirror_map[port_number][ter_dimm] & (0x08 >> ter_dimm_rank) ) ) && (tertiary_ranks_array[rank_pair_group][port_number] != 0xff ) )
- {
- FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
- bit_position = 2 * rank_pair_group + 48;
- FAPI_INF( "Setting bit %d", bit_position);
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P0_0x8000C0350301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.setBit(bit_position);
- rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P0_0x8000C0350301143F, data_buffer_64);
- if(rc) return rc;
- }
- if ( ( ( address_mirror_map[port_number][qua_dimm] & (0x08 >> qua_dimm_rank) ) ) && (quaternary_ranks_array[rank_pair_group][port_number] != 0xff ) )
+ FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
+ bit_position = 2 * rank_pair_group + 48;
+ FAPI_INF( "Setting bit %d", bit_position);
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.setBit(bit_position);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit_cloned: Error setting up buffers for DPHY01_DDRPHY_PC_RANK_GROUP_P0");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ }
+ if ( ( ( address_mirror_map[port_number][sec_dimm] & (0x08 >> sec_dimm_rank) ) ) && (secondary_ranks_array[rank_pair_group][port_number] != 0xff ) )
{
- FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
- bit_position = 2 * rank_pair_group + 49;
- FAPI_INF( "Setting bit %d", bit_position);
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P0_0x8000C0350301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.setBit(bit_position);
- rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P0_0x8000C0350301143F, data_buffer_64);
- if(rc) return rc;
- }
- }
- if ( port_number == 1 )
- {
- if ( ( ( address_mirror_map[port_number][pri_dimm] & (0x08 >> pri_dimm_rank) ) ) && (primary_ranks_array[rank_pair_group][port_number] != 0xff ) )
- {
- FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
- bit_position = 2 * rank_pair_group + 48;
- FAPI_INF( "Setting bit %d", bit_position);
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.setBit(bit_position);
- rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
- if(rc) return rc;
- }
- if ( ( ( address_mirror_map[port_number][sec_dimm] & (0x08 >> sec_dimm_rank) ) ) && (secondary_ranks_array[rank_pair_group][port_number] != 0xff ) )
+ FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
+ bit_position = 2 * rank_pair_group + 49;
+ FAPI_INF( "Setting bit %d", bit_position);
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.setBit(bit_position);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit_cloned: Error setting up buffers for DPHY01_DDRPHY_PC_RANK_GROUP_P0");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P0_0x8000C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ }
+ if ( ( ( address_mirror_map[port_number][ter_dimm] & (0x08 >> ter_dimm_rank) ) ) && (tertiary_ranks_array[rank_pair_group][port_number] != 0xff ) )
{
- FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
- bit_position = 2 * rank_pair_group + 49;
- FAPI_INF( "Setting bit %d", bit_position);
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.setBit(bit_position);
- rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
- if(rc) return rc;
- }
- if ( ( ( address_mirror_map[port_number][ter_dimm] & (0x08 >> ter_dimm_rank) ) ) && (tertiary_ranks_array[rank_pair_group][port_number] != 0xff ) )
- {
- FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
- bit_position = 2 * rank_pair_group + 48;
- FAPI_INF( "Setting bit %d", bit_position);
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P1_0x8001C0350301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.setBit(bit_position);
- rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P1_0x8001C0350301143F, data_buffer_64);
- if(rc) return rc;
- }
- if ( ( ( address_mirror_map[port_number][qua_dimm] & (0x08 >> qua_dimm_rank) ) ) && (quaternary_ranks_array[rank_pair_group][port_number] != 0xff ) )
+ FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
+ bit_position = 2 * rank_pair_group + 48;
+ FAPI_INF( "Setting bit %d", bit_position);
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P0_0x8000C0350301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.setBit(bit_position);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit_cloned: Error setting up buffers for DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P0");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P0_0x8000C0350301143F, data_buffer_64);
+ if(rc) return rc;
+ }
+ if ( ( ( address_mirror_map[port_number][qua_dimm] & (0x08 >> qua_dimm_rank) ) ) && (quaternary_ranks_array[rank_pair_group][port_number] != 0xff ) )
{
- FAPI_INF( "Address Mirroring on PORT%d RANKPAIR%d RANK%d", port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
- bit_position = 2 * rank_pair_group + 49;
- FAPI_INF( "Setting bit %d", bit_position);
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P1_0x8001C0350301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.setBit(bit_position);
- rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P1_0x8001C0350301143F, data_buffer_64);
- if(rc) return rc;
- }
- }
-
- }
- }
+ FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
+ bit_position = 2 * rank_pair_group + 49;
+ FAPI_INF( "Setting bit %d", bit_position);
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P0_0x8000C0350301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.setBit(bit_position);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit_cloned: Error setting up buffers for DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P0");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P0_0x8000C0350301143F, data_buffer_64);
+ if(rc) return rc;
+ }
+ }
+ if ( port_number == 1 )
+ {
+ if ( ( ( address_mirror_map[port_number][pri_dimm] & (0x08 >> pri_dimm_rank) ) ) && (primary_ranks_array[rank_pair_group][port_number] != 0xff ) )
+ {
+ FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
+ bit_position = 2 * rank_pair_group + 48;
+ FAPI_INF( "Setting bit %d", bit_position);
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.setBit(bit_position);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit_cloned: Error setting up buffers for DPHY01_DDRPHY_PC_RANK_GROUP_P1");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ }
+ if ( ( ( address_mirror_map[port_number][sec_dimm] & (0x08 >> sec_dimm_rank) ) ) && (secondary_ranks_array[rank_pair_group][port_number] != 0xff ) )
+ {
+ FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
+ bit_position = 2 * rank_pair_group + 49;
+ FAPI_INF( "Setting bit %d", bit_position);
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.setBit(bit_position);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit_cloned: Error setting up buffers for DPHY01_DDRPHY_PC_RANK_GROUP_P1");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_P1_0x8001C0110301143F, data_buffer_64);
+ if(rc) return rc;
+ }
+ if ( ( ( address_mirror_map[port_number][ter_dimm] & (0x08 >> ter_dimm_rank) ) ) && (tertiary_ranks_array[rank_pair_group][port_number] != 0xff ) )
+ {
+ FAPI_INF( "Address Mirroring on %s PORT%d RANKPAIR%d RANK%d", i_target.toEcmdString(), port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
+ bit_position = 2 * rank_pair_group + 48;
+ FAPI_INF( "Setting bit %d", bit_position);
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P1_0x8001C0350301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.setBit(bit_position);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit_cloned: Error setting up buffers for DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P1");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P1_0x8001C0350301143F, data_buffer_64);
+ if(rc) return rc;
+ }
+ if ( ( ( address_mirror_map[port_number][qua_dimm] & (0x08 >> qua_dimm_rank) ) ) && (quaternary_ranks_array[rank_pair_group][port_number] != 0xff ) )
+ {
+ FAPI_INF( "Address Mirroring on PORT%d RANKPAIR%d RANK%d", port_number, rank_pair_group, primary_ranks_array[rank_pair_group][port_number]);
+ bit_position = 2 * rank_pair_group + 49;
+ FAPI_INF( "Setting bit %d", bit_position);
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P1_0x8001C0350301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.setBit(bit_position);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit_cloned: Error setting up buffers for DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P1");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ rc = fapiPutScom(i_target, DPHY01_DDRPHY_PC_RANK_GROUP_EXT_P1_0x8001C0350301143F, data_buffer_64);
+ if(rc) return rc;
+ }
+ }
+
+ }
+ }
}
//Commented because Master Attention Reg Check not written yet.
@@ -529,7 +616,7 @@ ReturnCode mss_draminit_cloned(Target& i_target)
}
rc = fapiDelay(DELAY_100US, DELAY_2000SIMCYCLES); // wait 2000 simcycles (in sim mode) OR 100 uS (in hw mode)
- if(rc) return rc;
+ if(rc) return rc;
rc = mss_assert_resetn(i_target, 1 ); // de-assert a reset
if(rc)
@@ -544,7 +631,7 @@ ReturnCode mss_draminit_cloned(Target& i_target)
if (!((dimm_type == ENUM_ATTR_EFF_DIMM_TYPE_UDIMM)||(dimm_type == ENUM_ATTR_EFF_DIMM_TYPE_CDIMM)))
{
// Step three: Load RCD Control Words
- if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
+ if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
{
rc = mss_rcd_load_ddr4(i_target, port_number, ccs_inst_cnt);
if(rc)
@@ -564,7 +651,7 @@ ReturnCode mss_draminit_cloned(Target& i_target)
}
}
- else
+ else
{
rc = mss_rcd_load(i_target, port_number, ccs_inst_cnt);
if(rc)
@@ -583,11 +670,21 @@ ReturnCode mss_draminit_cloned(Target& i_target)
return rc;
}
}
- }
+ }
}
}
- rc = fapiDelay(DELAY_500US, DELAY_10000000SIMCYCLES); // wait 10000 simcycles (in sim mode) OR 500 uS (in hw mode)
+ rc = fapiDelay(DELAY_500US, DELAY_10000000SIMCYCLES); // wait 10000 simcycles (in sim mode) OR 500 uS (in hw mode)
+
+ if(rc)
+ {
+ FAPI_ERR(" Delay Failed rc = 0x%08X (creator = %d)", uint32_t(rc), rc.getCreator());
+ return rc;
+ }
+
+
+
+
// Cycle through Ports...
// Ports 0-1
@@ -595,31 +692,31 @@ ReturnCode mss_draminit_cloned(Target& i_target)
{
// Step four: Load MRS Setting
- if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR3)
- {
- rc = mss_mrs_load(i_target, port_number, ccs_inst_cnt);
- if(rc)
- {
- FAPI_ERR(" mrs_load Failed rc = 0x%08X (creator = %d)", uint32_t(rc), rc.getCreator());
- return rc;
- }
- }
- else
- {
- rc = mss_mrs_load_ddr4(i_target, port_number, ccs_inst_cnt);
- if(rc)
- {
- FAPI_ERR(" mrs_load_ddr4 Failed rc = 0x%08X (creator = %d)", uint32_t(rc), rc.getCreator());
- return rc;
- }
- }
+ if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR3)
+ {
+ rc = mss_mrs_load(i_target, port_number, ccs_inst_cnt);
+ if(rc)
+ {
+ FAPI_ERR(" mrs_load Failed rc = 0x%08X (creator = %d)", uint32_t(rc), rc.getCreator());
+ return rc;
+ }
+ }
+ else
+ {
+ rc = mss_mrs_load_ddr4(i_target, port_number, ccs_inst_cnt);
+ if(rc)
+ {
+ FAPI_ERR(" mrs_load_ddr4 Failed rc = 0x%08X (creator = %d)", uint32_t(rc), rc.getCreator());
+ return rc;
+ }
+ }
}
// Execute the contents of CCS array
if (ccs_inst_cnt > 0)
{
- // Set the End bit on the last CCS Instruction
+ // Set the End bit on the last CCS Instruction
rc = mss_ccs_set_end_bit( i_target, ccs_inst_cnt-1);
if(rc)
{
@@ -646,466 +743,802 @@ ReturnCode mss_draminit_cloned(Target& i_target)
for ( port_number = 0; port_number < MAX_NUM_PORTS; port_number++)
{
- for ( rank_pair_group = 0; rank_pair_group < MAX_NUM_RANK_PAIR; rank_pair_group++)
- {
- //Check if rank group exists
- if((primary_ranks_array[rank_pair_group][0] != INVALID) || (primary_ranks_array[rank_pair_group][1] != INVALID))
- {
-
- if (port_number == 0)
- {
- // Get contents of MRS Shadow Regs and Print it to output
- if (rank_pair_group == 0)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP0_P0_0x8000C01C0301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0 );
+ for ( rank_pair_group = 0; rank_pair_group < MAX_NUM_RANK_PAIR; rank_pair_group++)
+ {
+ //Check if rank group exists
+ if((primary_ranks_array[rank_pair_group][0] != INVALID) || (primary_ranks_array[rank_pair_group][1] != INVALID))
+ {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP0_P0_0x8000C01D0301143F, data_buffer_64);
+ if (port_number == 0)
+ {
+ // Get contents of MRS Shadow Regs and Print it to output
+ if (rank_pair_group == 0)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP0_P0_0x8000C01C0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP0_P0_0x8000C01E0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0 );
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP0_P0_0x8000C01D0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP0_P0_0x8000C01F0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP0_P0_0x8000C01E0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
-
- if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP0_P0_0x8000C0200301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP0_P0_0x8000C0210301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP0_P0_0x8000C0220301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
- }
-
- }
- else if (rank_pair_group == 1)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP1_P0_0x8000C11C0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP0_P0_0x8000C01F0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
+
+ if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP0_P0_0x8000C0200301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP0_P0_0x8000C0210301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP0_P0_0x8000C0220301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
+ }
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP1_P0_0x8000C11D0301143F, data_buffer_64);
+ }
+ else if (rank_pair_group == 1)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP1_P0_0x8000C11C0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP1_P0_0x8000C11E0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP1_P0_0x8000C11D0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP1_P0_0x8000C11F0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP1_P0_0x8000C11E0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
-
- if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP1_P0_0x8000C1200301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP1_P0_0x8000C1210301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP1_P0_0x8000C1220301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
- }
-
- }
- else if (rank_pair_group == 2)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP2_P0_0x8000C21C0301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP1_P0_0x8000C11F0301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
+
+ if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP1_P0_0x8000C1200301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP1_P0_0x8000C1210301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP1_P0_0x8000C1220301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
+ }
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP2_P0_0x8000C21D0301143F, data_buffer_64);
+ }
+ else if (rank_pair_group == 2)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP2_P0_0x8000C21C0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP2_P0_0x8000C21E0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP2_P0_0x8000C21D0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP2_P0_0x8000C21F0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP2_P0_0x8000C21E0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
-
- if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP2_P0_0x8000C2200301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP2_P0_0x8000C2210301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP2_P0_0x8000C2220301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
- }
-
- }
- else if (rank_pair_group == 3)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP3_P0_0x8000C31C0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP2_P0_0x8000C21F0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
+
+ if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP2_P0_0x8000C2200301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP2_P0_0x8000C2210301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP2_P0_0x8000C2220301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
+ }
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP3_P0_0x8000C31D0301143F, data_buffer_64);
+ }
+ else if (rank_pair_group == 3)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP3_P0_0x8000C31C0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP3_P0_0x8000C31E0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP3_P0_0x8000C31D0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP3_P0_0x8000C31F0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP3_P0_0x8000C31E0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
-
- if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP3_P0_0x8000C3200301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP3_P0_0x8000C3210301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP3_P0_0x8000C3220301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
- }
-
- }
- }
- else if (port_number == 1)
- {
- if (rank_pair_group == 0)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP0_P1_0x8001C01C0301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0 );
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP3_P0_0x8000C31F0301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
+
+ if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP3_P0_0x8000C3200301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP3_P0_0x8000C3210301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP3_P0_0x8000C3220301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
+ }
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP0_P1_0x8001C01D0301143F, data_buffer_64);
+ }
+ }
+ else if (port_number == 1)
+ {
+ if (rank_pair_group == 0)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP0_P1_0x8001C01C0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP0_P1_0x8001C01E0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0 );
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP0_P1_0x8001C01D0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP0_P1_0x8001C01F0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP0_P1_0x8001C01E0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
-
- if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP0_P1_0x8001C0200301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP0_P1_0x8001C0210301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP0_P1_0x8001C0220301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
- }
-
- }
- else if (rank_pair_group == 1)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP1_P1_0x8001C11C0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP0_P1_0x8001C01F0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
+
+ if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP0_P1_0x8001C0200301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP0_P1_0x8001C0210301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP0_P1_0x8001C0220301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
+ }
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP1_P1_0x8001C11D0301143F, data_buffer_64);
+ }
+ else if (rank_pair_group == 1)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP1_P1_0x8001C11C0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP1_P1_0x8001C11E0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP1_P1_0x8001C11D0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP1_P1_0x8001C11F0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP1_P1_0x8001C11E0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
-
- if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP1_P1_0x8001C1200301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP1_P1_0x8001C1210301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP1_P1_0x8001C1220301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
-
- }
-
- }
- else if (rank_pair_group == 2)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP2_P1_0x8001C21C0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP1_P1_0x8001C11F0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
+
+ if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP1_P1_0x8001C1200301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP1_P1_0x8001C1210301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP1_P1_0x8001C1220301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
+
+ }
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP2_P1_0x8001C21D0301143F, data_buffer_64);
+ }
+ else if (rank_pair_group == 2)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP2_P1_0x8001C21C0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP2_P1_0x8001C21E0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP2_P1_0x8001C21D0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP2_P1_0x8001C21F0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP2_P1_0x8001C21E0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
-
- if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP2_P1_0x8001C2200301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP2_P1_0x8001C2210301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP2_P1_0x8001C2220301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
- }
-
- }
- else if (rank_pair_group == 3)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP3_P1_0x8001C31C0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP2_P1_0x8001C21F0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
+
+ if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP2_P1_0x8001C2200301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP2_P1_0x8001C2210301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP2_P1_0x8001C2220301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
+ }
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP3_P1_0x8001C31D0301143F, data_buffer_64);
+ }
+ else if (rank_pair_group == 3)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_PRI_RP3_P1_0x8001C31C0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP3_P1_0x8001C31E0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs0.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 0 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS0);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_PRI_RP3_P1_0x8001C31D0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP3_P1_0x8001C31F0301143F, data_buffer_64);
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs1.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 1 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS1);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_PRI_RP3_P1_0x8001C31E0301143F, data_buffer_64);
if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
-
- if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
- {
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP3_P1_0x8001C3200301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP3_P1_0x8001C3210301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
-
- rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP3_P1_0x8001C3220301143F, data_buffer_64);
- if(rc) return rc;
- rc_num = rc_num | data_buffer_64.reverse();
- rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
- rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
- FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
- }
-
- }
-
- }
- }
- }
- }
-
- if ( (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4) && (dimm_type == fapi::ENUM_ATTR_EFF_DIMM_TYPE_RDIMM || dimm_type == fapi::ENUM_ATTR_EFF_DIMM_TYPE_LRDIMM) )
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs2.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 2 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS2);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR3_PRI_RP3_P1_0x8001C31F0301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs3.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 3 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS3);
+
+ if (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4)
+ {
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR0_SEC_RP3_P1_0x8001C3200301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs4.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs4.extractPreserve(&MRS4, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 4 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS4);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR1_SEC_RP3_P1_0x8001C3210301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs5.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs5.extractPreserve(&MRS5, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 5 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS5);
+
+ rc = fapiGetScom(i_target, DPHY01_DDRPHY_PC_MR2_SEC_RP3_P1_0x8001C3220301143F, data_buffer_64);
+ if(rc) return rc;
+ rc_num = rc_num | data_buffer_64.reverse();
+ rc_num = rc_num | mrs6.insert(data_buffer_64, 0, 16);
+ rc_num = rc_num | mrs6.extractPreserve(&MRS6, 0, 16, 0);
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_draminit: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
+ FAPI_INF( "%s PORT %d SHADOW REGISTER MRS 6 RP %d VALUE: 0x%04X", i_target.toEcmdString(), port_number, rank_pair_group, MRS6);
+ }
+
+ }
+
+ }
+ }
+ }
+ }
+
+ if ( (dram_gen == ENUM_ATTR_EFF_DRAM_GEN_DDR4) && (dimm_type == fapi::ENUM_ATTR_EFF_DIMM_TYPE_RDIMM || dimm_type == fapi::ENUM_ATTR_EFF_DIMM_TYPE_LRDIMM) )
{
FAPI_INF("Performing B-side address inversion MPR write pattern");
@@ -1113,12 +1546,6 @@ ReturnCode mss_draminit_cloned(Target& i_target)
if (rc) return rc;
}
- if (rc_num)
- {
- FAPI_ERR( "mss_draminit: Error setting up buffers");
- rc_buff.setEcmdError(rc_num);
- return rc_buff;
- }
// TODO:
@@ -1230,7 +1657,7 @@ ReturnCode mss_rcd_load(
uint8_t num_ranks_array[2][2]; //[port][dimm]
uint64_t rcd_array[2][2]; //[port][dimm]
uint8_t dimm_type;
-
+
rc = FAPI_ATTR_GET(ATTR_EFF_DIMM_TYPE, &i_target, dimm_type);
if(rc) return rc;
rc = FAPI_ATTR_GET(ATTR_EFF_NUM_RANKS_PER_DIMM, &i_target, num_ranks_array);
@@ -1280,7 +1707,7 @@ ReturnCode mss_rcd_load(
else
{
FAPI_INF( "RCD SETTINGS FOR %s PORT%d DIMM%d ", i_target.toEcmdString(), i_port_number, dimm_number);
- FAPI_INF( "RCD Control Word: 0x%016llX", rcd_array[i_port_number][dimm_number]);
+ FAPI_INF( "RCD Control Word: 0x%016llX", rcd_array[i_port_number][dimm_number]);
if (rc_num)
{
@@ -1312,7 +1739,7 @@ ReturnCode mss_rcd_load(
// Propogate through the 16, 4-bit control words
for ( rcd_number = 0; rcd_number<= 15; rcd_number++)
{
- rc_num = rc_num | bank_3.clearBit(0, 3);
+ rc_num = rc_num | bank_3.clearBit(0, 3);
rc_num = rc_num | address_16.clearBit(0, 16);
rc_num = rc_num | rcd_cntl_wrd_64.setDoubleWord(0, rcd_array[i_port_number][dimm_number]);
@@ -1341,12 +1768,12 @@ ReturnCode mss_rcd_load(
}
- if (rc_num)
- {
- FAPI_ERR( "mss_rcd_load: Error setting up buffers");
- rc_buff.setEcmdError(rc_num);
- return rc_buff;
- }
+ if (rc_num)
+ {
+ FAPI_ERR( "mss_rcd_load: Error setting up buffers");
+ rc_buff.setEcmdError(rc_num);
+ return rc_buff;
+ }
rc = mss_ccs_inst_arry_0( i_target,
io_ccs_inst_cnt,
@@ -1374,12 +1801,6 @@ ReturnCode mss_rcd_load(
if(rc) return rc;
io_ccs_inst_cnt ++;
- if (rc_num)
- {
- FAPI_ERR( "mss_rcd_load: Error setting up buffers");
- rc_buff.setEcmdError(rc_num);
- return rc_buff;
- }
}
}
}
@@ -1507,7 +1928,7 @@ ReturnCode mss_mrs_load(
if (dram_wr == 16)
{
- dram_wr = 0x00;
+ dram_wr = 0x00;
}
else if (dram_wr == 5)
{
@@ -1762,7 +2183,7 @@ ReturnCode mss_mrs_load(
csn_8,
odt_4,
ddr_cal_type_4,
- i_port_number);
+ i_port_number);
if(rc) return rc;
rc = mss_ccs_inst_arry_1( i_target,
io_ccs_inst_cnt,
@@ -1787,13 +2208,13 @@ ReturnCode mss_mrs_load(
}
else
{
-
+
if (dimm_type == ENUM_ATTR_EFF_DIMM_TYPE_LRDIMM)
{
rc = FAPI_ATTR_GET(ATTR_LRDIMM_RANK_MULT_MODE, &i_target, lrdimm_rank_mult_mode);
if(rc) return rc;
- if ( (lrdimm_rank_mult_mode == 4) && (num_ranks == 8) )
+ if ( (lrdimm_rank_mult_mode == 4) && (num_ranks == 8) )
{
num_ranks = 2;
}
@@ -1817,7 +2238,7 @@ ReturnCode mss_mrs_load(
rc_num = rc_num | mrs0.insert((uint8_t) dll_precharge, 12, 1);
rc_num = rc_num | mrs0.insert((uint8_t) 0x00, 13, 3);
- rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
+ rc_num = rc_num | mrs0.extractPreserve(&MRS0, 0, 16, 0);
if ( lrdimm_rank_mult_mode != 0 )
{
@@ -1849,8 +2270,8 @@ ReturnCode mss_mrs_load(
}
else
{
- //DECONFIG and FFDC INFO
- const fapi::Target & TARGET_MBA_ERROR = i_target;
+ //DECONFIG and FFDC INFO
+ const fapi::Target & TARGET_MBA_ERROR = i_target;
const uint8_t & IMP = dram_rtt_nom[i_port_number][dimm_number][rank_number];
const uint32_t & PORT = i_port_number;
const uint32_t & DIMM = dimm_number;
@@ -1884,7 +2305,7 @@ ReturnCode mss_mrs_load(
rc_num = rc_num | mrs1.insert((uint8_t) q_off, 12, 1, 0);
rc_num = rc_num | mrs1.insert((uint8_t) 0x00, 13, 3);
- rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
+ rc_num = rc_num | mrs1.extractPreserve(&MRS1, 0, 16, 0);
if ( (lrdimm_rank_mult_mode != 0) && (rank_number > 1) )
@@ -1903,11 +2324,11 @@ ReturnCode mss_mrs_load(
{
dram_rtt_wr[i_port_number][dimm_number][rank_number] = 0x40;
}
- else
- {
+ else
+ {
- //DECONFIG and FFDC INFO
- const fapi::Target & TARGET_MBA_ERROR = i_target;
+ //DECONFIG and FFDC INFO
+ const fapi::Target & TARGET_MBA_ERROR = i_target;
const uint8_t & IMP = dram_rtt_nom[i_port_number][dimm_number][rank_number];
const uint32_t & PORT = i_port_number;
const uint32_t & DIMM = dimm_number;
@@ -1926,16 +2347,16 @@ ReturnCode mss_mrs_load(
rc_num = rc_num | mrs2.insert((uint8_t) dram_rtt_wr[i_port_number][dimm_number][rank_number], 9, 2);
rc_num = rc_num | mrs2.insert((uint8_t) 0x00, 11, 5);
- rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
+ rc_num = rc_num | mrs2.extractPreserve(&MRS2, 0, 16, 0);
rc_num = rc_num | mrs3.insert((uint8_t) mpr_loc, 0, 2);
rc_num = rc_num | mrs3.insert((uint8_t) mpr_op, 2, 1);
rc_num = rc_num | mrs3.insert((uint16_t) 0x0000, 3, 13);
- rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
- FAPI_INF( "MRS 0: 0x%04X", MRS0);
- FAPI_INF( "MRS 1: 0x%04X", MRS1);
- FAPI_INF( "MRS 2: 0x%04X", MRS2);
+ rc_num = rc_num | mrs3.extractPreserve(&MRS3, 0, 16, 0);
+ FAPI_INF( "MRS 0: 0x%04X", MRS0);
+ FAPI_INF( "MRS 1: 0x%04X", MRS1);
+ FAPI_INF( "MRS 2: 0x%04X", MRS2);
FAPI_INF( "MRS 3: 0x%04X", MRS3);
if (rc_num)
@@ -1958,28 +2379,28 @@ ReturnCode mss_mrs_load(
if (mrs_number == 0)
{
rc_num = rc_num | address_16.insert(mrs2, 0, 16, 0);
- rc_num = rc_num | bank_3.insert((uint8_t) MRS2_BA, 0, 1, 7);
+ rc_num = rc_num | bank_3.insert((uint8_t) MRS2_BA, 0, 1, 7);
rc_num = rc_num | bank_3.insert((uint8_t) MRS2_BA, 1, 1, 6);
rc_num = rc_num | bank_3.insert((uint8_t) MRS2_BA, 2, 1, 5);
}
else if ( mrs_number == 1)
{
rc_num = rc_num | address_16.insert(mrs3, 0, 16, 0);
- rc_num = rc_num | bank_3.insert((uint8_t) MRS3_BA, 0, 1, 7);
+ rc_num = rc_num | bank_3.insert((uint8_t) MRS3_BA, 0, 1, 7);
rc_num = rc_num | bank_3.insert((uint8_t) MRS3_BA, 1, 1, 6);
rc_num = rc_num | bank_3.insert((uint8_t) MRS3_BA, 2, 1, 5);
}
else if ( mrs_number == 2)
{
rc_num = rc_num | address_16.insert(mrs1, 0, 16, 0);
- rc_num = rc_num | bank_3.insert((uint8_t) MRS1_BA, 0, 1, 7);
+ rc_num = rc_num | bank_3.insert((uint8_t) MRS1_BA, 0, 1, 7);
rc_num = rc_num | bank_3.insert((uint8_t) MRS1_BA, 1, 1, 6);
rc_num = rc_num | bank_3.insert((uint8_t) MRS1_BA, 2, 1, 5);
}
else if ( mrs_number == 3)
{
rc_num = rc_num | address_16.insert(mrs0, 0, 16, 0);
- rc_num = rc_num | bank_3.insert((uint8_t) MRS0_BA, 0, 1, 7);
+ rc_num = rc_num | bank_3.insert((uint8_t) MRS0_BA, 0, 1, 7);
rc_num = rc_num | bank_3.insert((uint8_t) MRS0_BA, 1, 1, 6);
rc_num = rc_num | bank_3.insert((uint8_t) MRS0_BA, 2, 1, 5);
}
@@ -1991,15 +2412,15 @@ ReturnCode mss_mrs_load(
return rc_buff;
}
- if (( address_mirror_map[i_port_number][dimm_number] & (0x08 >> rank_number) ) && (is_sim == 0))
- {
- rc = mss_address_mirror_swizzle(i_target, i_port_number, dimm_number, rank_number, address_16, bank_3);
+ if (( address_mirror_map[i_port_number][dimm_number] & (0x08 >> rank_number) ) && (is_sim == 0))
+ {
+ rc = mss_address_mirror_swizzle(i_target, i_port_number, dimm_number, rank_number, address_16, bank_3);
if(rc) return rc;
- }
+ }
- if (dram_2n_mode == ENUM_ATTR_VPD_DRAM_2N_MODE_ENABLED_TRUE)
- {
+ if (dram_2n_mode == ENUM_ATTR_VPD_DRAM_2N_MODE_ENABLED_TRUE)
+ {
// Send out to the CCS array a "setup" cycle
rc = mss_ccs_inst_arry_0( i_target,
@@ -2029,7 +2450,7 @@ ReturnCode mss_mrs_load(
io_ccs_inst_cnt ++;
- }
+ }
// Send out to the CCS array
rc = mss_ccs_inst_arry_0( i_target,
OpenPOWER on IntegriCloud