summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures/hwp/pm
diff options
context:
space:
mode:
authorPrem Shanker Jha <premjha2@in.ibm.com>2016-12-06 07:18:59 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2017-01-04 20:54:56 -0500
commitabfecf4479365df85cf72476a52f071bc942838e (patch)
tree1cbeae0136e2ebcee22cadc3ebe6b8df90e8936d /src/import/chips/p9/procedures/hwp/pm
parent5de1f565ce65936a05b816dc67d903cf22097e53 (diff)
downloadtalos-hostboot-abfecf4479365df85cf72476a52f071bc942838e.tar.gz
talos-hostboot-abfecf4479365df85cf72476a52f071bc942838e.zip
PM: Updates restore value of NCU RNG BAR SCOM register.
Commit calculates the SCOM restore value of NCU RNG BAR register and using STOP APIs updates it to EQ SCOM area of Self Restore Image. Change-Id: Id128e2cf331d098ffc15a9e20308be9ce9216a4b Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/33459 Dev-Ready: ADAM S. HALE <ashale@us.ibm.com> Reviewed-by: ADAM S. HALE <ashale@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: Hostboot CI <hostboot-ci+hostboot@us.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-by: Jennifer A. Stofer <stofer@us.ibm.com> Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/33462 Reviewed-by: Hostboot Team <hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Tested-by: Jenkins OP Build CI <op-jenkins+hostboot@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/pm')
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C82
-rw-r--r--src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.mk6
2 files changed, 85 insertions, 3 deletions
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C b/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C
index f3b4d9587..104018c6b 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.C
@@ -43,11 +43,13 @@
#include "p9_stop_util.H"
#include "p9_scan_ring_util.H"
#include "p9_tor.H"
-#include "p9_misc_scom_addresses.H"
+#include "p9_quad_scom_addresses.H"
+#include "p9_stop_api.H"
#include <p9_infrastruct_help.H>
#include <p9_xip_customize.H>
#include <p9_ringId.H>
#include <p9_quad_scom_addresses.H>
+#include <p9_fbc_utils.H>
#ifdef __CRONUS_VER
#include <string>
@@ -2226,7 +2228,80 @@ extern "C"
return fapi2::current_err;
}
- //---------------------------------------------------------------------------
+//---------------------------------------------------------------------------------------------------
+
+ /**
+ * @brief populates EQ SCOM restore region of HOMER with SCOM restore value for NCU RNG BAR ENABLE.
+ * @param i_pChipHomer points to start of P9 HOMER
+ * @param i_procTgt fapi2 target for p9 chip.
+ * @return faip2 return code.
+ */
+ fapi2::ReturnCode populateNcuRingBarScomReg( void* i_pChipHomer, CONST_FAPI2_PROC& i_procTgt )
+ {
+ FAPI_DBG("> populateNcuRingBarScomReg");
+
+ do
+ {
+ uint8_t attrVal = 0;
+ uint64_t nxRangeBarAddrOffset = 0;
+ uint64_t regNcuRngBarData = 0;
+ uint64_t baseAddressNm0 = 0;
+ uint64_t baseAddressNm1 = 0;
+ uint64_t baseAddressMirror = 0;
+ const fapi2::Target<fapi2::TARGET_TYPE_SYSTEM> FAPI_SYSTEM;
+
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_NX_RNG_BAR_ENABLE,
+ i_procTgt,
+ attrVal ),
+ "Error from FAPI_ATTR_GET for attribute ATTR_PROC_NX_RNG_BAR_ENABLE");
+
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_PROC_NX_RNG_BAR_BASE_ADDR_OFFSET,
+ FAPI_SYSTEM,
+ nxRangeBarAddrOffset ),
+ "Error from FAPI_ATTR_GET for attribute ATTR_PROC_NX_RNG_BAR_BASE_ADDR_OFFSET");
+
+ FAPI_TRY(p9_fbc_utils_get_chip_base_address(i_procTgt,
+ baseAddressNm0,
+ baseAddressNm1,
+ baseAddressMirror,
+ regNcuRngBarData),
+ "Failed in p9_fbc_utils_get_chip_base_address" );
+
+
+ if( fapi2::ENUM_ATTR_PROC_NX_RNG_BAR_ENABLE_ENABLE == attrVal )
+ {
+ //Set bit0 which corresponds to bit DARN_BAR_EN of reg NCU_DAR_BAR
+ regNcuRngBarData |= DARN_BAR_EN_POS ;
+ }
+
+ regNcuRngBarData += nxRangeBarAddrOffset;
+
+ FAPI_DBG("Restore value for EQ_NCU_DARN_BAR_REG 0x%016lx",
+ regNcuRngBarData );
+
+ StopReturnCode_t stopRc =
+ stopImageSection::p9_stop_save_scom( i_pChipHomer,
+ EQ_NCU_DARN_BAR_REG,
+ regNcuRngBarData ,
+ stopImageSection::P9_STOP_SCOM_REPLACE,
+ stopImageSection::P9_STOP_SECTION_EQ_SCOM );
+
+ if( stopRc )
+ {
+ FAPI_ERR("Failed to update EQ_NCU_DARN_BAR_REG in Self Restore Image 0x%08x",
+ stopRc );
+ break;
+ }
+
+ }
+ while(0);
+
+ FAPI_DBG("< populateNcuRingBarScomReg");
+ fapi_try_exit:
+ return fapi2::current_err;
+ }
+
+ //--------------------------------------------------------------------------------------------
/**
* @brief populate L2 Epsilon SCOM register.
@@ -2833,6 +2908,9 @@ extern "C"
break;
}
+ //populate HOMER with SCOM restore value of NCU RNG BAR SCOM Register
+ populateNcuRingBarScomReg( pChipHomer, i_procTgt );
+
//validate SRAM Image Sizes of PPE's
uint32_t sramImgSize = 0;
ppeImgRc = validateSramImageSize( pChipHomer, sramImgSize );
diff --git a/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.mk b/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.mk
index 1f2ec77f2..0c20ee602 100644
--- a/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.mk
+++ b/src/import/chips/p9/procedures/hwp/pm/p9_hcode_image_build.mk
@@ -5,7 +5,7 @@
#
# OpenPOWER HostBoot Project
#
-# Contributors Listed Below - COPYRIGHT 2015,2016
+# Contributors Listed Below - COPYRIGHT 2015,2017
# [+] International Business Machines Corp.
#
#
@@ -31,11 +31,15 @@ HCODE_UTIL+=$(ROOTPATH)/tools/imageProcs/
HCODE_UTIL+=$(ROOTPATH)/chips/p9/procedures/hwp/customize/
HCODE_UTIL+=$(ROOTPATH)/chips/p9/common/include/
HCODE_UTIL+=$(ROOTPATH)/chips/p9/procedures/utils/stopreg/
+HCODE_UTIL+=$(ROOTPATH)/chips/p9/procedures/hwp/nest
+
lib$(PROCEDURE)_DEPLIBS += p9_scan_ring_util
lib$(PROCEDURE)_DEPLIBS += p9_xip_image
lib$(PROCEDURE)_DEPLIBS += p9_tor
lib$(PROCEDURE)_DEPLIBS += p9_ringId
lib$(PROCEDURE)_DEPLIBS += p9_stop_util
lib$(PROCEDURE)_DEPLIBS += p9_stop_api
+lib$(PROCEDURE)_DEPLIBS += p9_fbc_utils
+
$(call ADD_MODULE_INCDIR,$(PROCEDURE),$(HCODE_UTIL))
$(call BUILD_PROCEDURE)
OpenPOWER on IntegriCloud