From 2ff0e43920b59391945a4fc18824aba82d404167 Mon Sep 17 00:00:00 2001 From: Stephen Glancy Date: Fri, 28 Feb 2020 10:15:14 -0500 Subject: [PATCH] Adds 16Gb support to centaur maintenance engine Change-Id: Iec3055ecd0293a7ffa6ad280fb982bf7d9cce17b CQ:SW486593 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/92516 Tested-by: FSP CI Jenkins Tested-by: Jenkins Server Dev-Ready: STEPHEN GLANCY Reviewed-by: Mark Pizzutillo Reviewed-by: ANDRE A MARIN Tested-by: Hostboot CI Reviewed-by: Louis Stermole Reviewed-by: Jennifer A Stofer Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/92537 Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: Christian R Geddes --- .../hwp/memory/p9c_mss_maint_cmds.C | 61 ++++++++++++++++--- 1 file changed, 53 insertions(+), 8 deletions(-) diff --git a/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_maint_cmds.C b/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_maint_cmds.C index 2291bdc798d..28646fed157 100644 --- a/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_maint_cmds.C +++ b/src/import/chips/centaur/procedures/hwp/memory/p9c_mss_maint_cmds.C @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2017 */ +/* Contributors Listed Below - COPYRIGHT 2017,2020 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -40,6 +40,7 @@ #include #include +#include #include #include @@ -93,9 +94,10 @@ namespace mss_memconfig /// @brief DRAM size in gigabits, used to determine address range for maint cmds enum DramSize { - GBIT_2 = 0, - GBIT_4 = 1, - GBIT_8 = 2, + GBIT_2 = 0, + GBIT_4 = 1, + GBIT_8 = 2, + GBIT_16 = 3, }; /// @brief DRAM width, used to determine address range for maint cmds @@ -1570,6 +1572,7 @@ fapi2::ReturnCode mss_MaintCmd::loadStartAddress() // Load address bits 0:39 l_data.insert<0, 40, 0>(iv_start_addr); + l_data.writeBit(iv_start_addr.getBit()); // Clear error status bits 40:46 l_data.clearBit<40, 7>(); FAPI_TRY(fapi2::putScom(iv_target, CEN_MBA_MBMACAQ, l_data)); @@ -1588,7 +1591,7 @@ fapi2::ReturnCode mss_MaintCmd::loadEndAddress() fapi2::buffer l_data; FAPI_INF("ENTER mss_MaintCmd::loadEndAddress()"); FAPI_TRY(fapi2::getScom(iv_target, CEN_MBA_MBMEAQ, l_data)); - l_data.insert<0, 40, 0>(iv_end_addr); + l_data.insert<0, 41, 0>(iv_end_addr); FAPI_TRY(fapi2::putScom(iv_target, CEN_MBA_MBMEAQ, l_data)); FAPI_INF("EXIT mss_MaintCmd::loadEndAddress()"); @@ -3268,6 +3271,7 @@ fapi2::ReturnCode mss_get_address_range( const fapi2::Target(); @@ -3311,6 +3315,7 @@ fapi2::ReturnCode mss_get_address_range( const fapi2::Target ((uint32_t)l_col); + + // Updates Row address 17 (bit 40) if we have 18 rows for this configuration + o_end_addr.writeBit(l_row18); } } //******************************************************************** @@ -3594,13 +3639,13 @@ fapi2::ReturnCode mss_get_address_range( const fapi2::Target ((uint32_t)l_row); // COL = 28:36 o_end_addr.insert < 28, 12, 32 - 12 > ((uint32_t)l_col); + + // Updates Row address 17 (bit 40) if we have 18 rows for this configuration + o_end_addr.writeBit(l_row18); } } - - - FAPI_INF("EXIT mss_get_address_range()"); fapi_try_exit: return fapi2::current_err;