summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSudheendra K Srivathsa <sudheendraks@in.ibm.com>2017-01-31 18:24:49 -0500
committerJoshua Hunsberger <jahunsbe@us.ibm.com>2017-10-23 17:28:47 -0500
commit5c2a5facbe7d2649333a2255eac80fc549ce4bfc (patch)
tree8b17893fca76d3d83332649f0119c77e803055b0
parent47a91e1bb2425b14f9d7738f578c8bcd977579b4 (diff)
downloadtalos-hcode-5c2a5facbe7d2649333a2255eac80fc549ce4bfc.tar.gz
talos-hcode-5c2a5facbe7d2649333a2255eac80fc549ce4bfc.zip
Core Chiplet Scan0 Mode changes
Change-Id: I8eee413034e3d030e7ab9d5d43c090d7a8714ef7 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/35735 Reviewed-by: Brian T. Vanderpool <vanderp@us.ibm.com> Reviewed-by: AMIT KUMAR <akumar3@us.ibm.com> Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Reviewed-by: Gregory S. Still <stillgs@us.ibm.com>
-rw-r--r--import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_hcd_core_scan0.c33
1 files changed, 31 insertions, 2 deletions
diff --git a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_hcd_core_scan0.c b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_hcd_core_scan0.c
index 9ee7436f..62ad66df 100644
--- a/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_hcd_core_scan0.c
+++ b/import/chips/p9/procedures/ppe_closed/cme/stop_cme/p9_hcd_core_scan0.c
@@ -68,9 +68,28 @@ p9_hcd_core_scan0(uint32_t core, uint64_t regions, uint64_t scan_type)
scom_data &= ~BIT64(0);
CME_PUTSCOM(PERV_OPCG_REG0, core, scom_data);
- PK_TRACE("trigger Scan0");
+ PK_TRACE("Setting SCAN0 Mode");
CME_GETSCOM(PERV_OPCG_REG0, core, CME_SCOM_AND, scom_data);
- scom_data |= BIT64(2);
+ scom_data |= BIT64(3);
+ CME_PUTSCOM(PERV_OPCG_REG0, core, scom_data);
+
+ // Setting Scan length count
+ // Longest (lbisted) stump in the core for DD1: 2410 latches
+ // Longest (lbisted) stump in the core for DD2: 1020 latches
+
+ PK_TRACE("Setting scan length count");
+
+ // Set bits 59:63 to 24 for the NSL_FILL_COUNT
+#if NIMBUS_DD_LEVEL == 1
+ scom_data = ((uint64_t)2410 << SHIFT64(11)) | 24;
+#else
+ scom_data = ((uint64_t)1024 << SHIFT64(11)) | 24;
+#endif
+ CME_PUTSCOM(PERV_OPCG_REG1, core, scom_data);
+
+ PK_TRACE("Trigger OPCG GO");
+ CME_GETSCOM(PERV_OPCG_REG0, core, CME_SCOM_AND, scom_data);
+ scom_data |= BIT64(1);
CME_PUTSCOM(PERV_OPCG_REG0, core, scom_data);
PK_TRACE("Poll OPCG done bit to check for run-N completeness");
@@ -81,6 +100,16 @@ p9_hcd_core_scan0(uint32_t core, uint64_t regions, uint64_t scan_type)
}
while(!(scom_data & BIT64(8)));
+ PK_TRACE("Clearing SCAN0 Mode");
+ CME_GETSCOM(PERV_OPCG_REG0, core, CME_SCOM_AND, scom_data);
+ scom_data &= ~BIT64(3);
+ CME_PUTSCOM(PERV_OPCG_REG0, core, scom_data);
+
+ PK_TRACE("Clearing scan length count");
+ CME_GETSCOM(PERV_OPCG_REG1, core, CME_SCOM_AND, scom_data);
+ scom_data &= ~BITS64(0, 12);
+ CME_PUTSCOM(PERV_OPCG_REG1, core, scom_data);
+
PK_TRACE("clear all clock REGIONS and type");
CME_PUTSCOM(PERV_CLK_REGION, core, 0);
OpenPOWER on IntegriCloud