summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPrachi Gupta <pragupta@us.ibm.com>2015-07-23 10:39:22 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2015-07-27 22:44:43 -0500
commit18ffa035e9552c1a044baebef653be71d4b17ceb (patch)
tree01b17649427d76093d48d4535d18fc187199b7ea
parent67848491b85c93592d60935e6201b27f14eac3b0 (diff)
downloadtalos-hostboot-18ffa035e9552c1a044baebef653be71d4b17ceb.tar.gz
talos-hostboot-18ffa035e9552c1a044baebef653be71d4b17ceb.zip
SW314773: INITPROC: FSP&Hostboot - HWP updates for Naples that got missed
Change-Id: I46a0067d53efce644b0432433d8f1771d5ee213a CQ:SW314773 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/19206 Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: PRACHI GUPTA <pragupta@us.ibm.com> Tested-by: PRACHI GUPTA <pragupta@us.ibm.com> Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/19286 Tested-by: Jenkins Server Tested-by: Jenkins OP Build CI Tested-by: Jenkins OP HW Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
-rw-r--r--src/usr/hwpf/hwp/initfiles/p8.npu.scom.initfile290
-rw-r--r--src/usr/hwpf/hwp/initfiles/p8.nx.scom.initfile107
-rw-r--r--src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C74
-rw-r--r--src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.H4
4 files changed, 377 insertions, 98 deletions
diff --git a/src/usr/hwpf/hwp/initfiles/p8.npu.scom.initfile b/src/usr/hwpf/hwp/initfiles/p8.npu.scom.initfile
index 7371070c4..c297e16c3 100644
--- a/src/usr/hwpf/hwp/initfiles/p8.npu.scom.initfile
+++ b/src/usr/hwpf/hwp/initfiles/p8.npu.scom.initfile
@@ -1,4 +1,4 @@
-#-- $Id: p8.npu.scom.initfile,v 1.2 2014/12/11 00:24:12 camille Exp $
+#-- $Id: p8.npu.scom.initfile,v 1.6 2015/03/16 14:33:36 lonny Exp $
#-------------------------------------------------------------------------------
#--
#-- (C) Copyright International Business Machines Corp. 2011
@@ -17,12 +17,110 @@ SyntaxVersion = 1
#--******************************************************************************
# -- ESNPUFIR
#--******************************************************************************
-# spy name ES.NPU.NP_AT.REG.FIR_MASK_REG
+# spy name ES.NPU.NP_AT.REG.NPU_AT_ERR_HOLD
+# scom 0x0000000008013DA8 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000001 ;
+# }
+#
+# # spy name ES.NPU.NP_AT.REG.FIR_REG
+# scom 0x0000000008013D81 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+
+# start up procedure for the dl2tl parity error
+#mask error bit 27
+# spy name ES.NPU.NP_AT.REG.FIR_MASK_REG
scom 0x0000000008013D83 {
bits, scom_data ;
- 0:63, 0xE0002C02000F5F3F ;
+ 0:63, 0xE0002C12000F5F3F ;
+ }
+
+# set the clock speed in the gp0 registers
+# spy name Perf register to set IOValids for nvlink (bits 54:57) and nvlink ref clock (52) 2:1 nvlink speed (18:19) = 0b01.
+scom 0x0000000008000004 {
+ bits, scom_data ;
+ 0:63, 0xFFFFDFFFFFFFFFFF ;
+ }
+
+# # spy name Perf register to set IOValids for nvlink (bits 54:57) and nvlink ref clock (52) 2:1 nvlink speed (18:19) = 0b01.
+# scom 0x0000000008000005 {
+# bits, scom_data ;
+# 0:63, 0x0000100000000000 ;
+# }
+#
+# # turn on the nvlink refclocks
+# # spy name Perf register to set IOValids for nvlink (bits 54:57) and nvlink ref clock (52) 2:1 nvlink speed (18:19) = 0b01.
+# scom 0x0000000008000005 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000800 ;
+# }
+
+# turn on the iovalids
+# spy name Perf register to set IOValids for nvlink (bits 54:57) and nvlink ref clock (52) 2:1 nvlink speed (18:19) = 0b01.
+scom 0x0000000008000005 {
+ bits, scom_data ;
+ 0:63, 0x0000100000000BC0 ;
+ }
+
+# clear the first error and c_err_rpt hold registers
+# # spy name ES.NPU.SL_WRAP0.NTL_WRAP0.NTL_ER_HOLD
+scom 0x0000000008013C29 {
+ bits, scom_data ;
+ 0:63, 0x0000000000000000 ;
+ }
+
+# spy name ES.NPU.SL_WRAP0.NTL_WRAP0.NTL_FST_ERR_REG
+scom 0x0000000008013C2A {
+ bits, scom_data ;
+ 0:63, 0x0000000000000000 ;
+ }
+
+# spy name ES.NPU.SL_WRAP0.NTL_WRAP1.NTL_ER_HOLD
+scom 0x0000000008013C69 {
+ bits, scom_data ;
+ 0:63, 0x0000000000000000 ;
+ }
+
+# spy name ES.NPU.SL_WRAP0.NTL_WRAP1.NTL_FST_ERR_REG
+scom 0x0000000008013C6A {
+ bits, scom_data ;
+ 0:63, 0x0000000000000000 ;
}
+# spy name ES.NPU.SL_WRAP2.NTL_WRAP0.NTL_ER_HOLD
+scom 0x0000000008013D29 {
+ bits, scom_data ;
+ 0:63, 0x0000000000000000 ;
+ }
+
+# spy name ES.NPU.SL_WRAP2.NTL_WRAP0.NTL_FST_ERR_REG
+scom 0x0000000008013D2A {
+ bits, scom_data ;
+ 0:63, 0x0000000000000000 ;
+ }
+
+# spy name ES.NPU.SL_WRAP2.NTL_WRAP1.NTL_ER_HOLD
+scom 0x0000000008013D69 {
+ bits, scom_data ;
+ 0:63, 0x0000000000000000 ;
+ }
+
+# spy name ES.NPU.SL_WRAP2.NTL_WRAP1.NTL_FST_ERR_REG
+scom 0x0000000008013D6A {
+ bits, scom_data ;
+ 0:63, 0x0000000000000000 ;
+ }
+
+
+# unmask error bit 27
+# # spy name ES.NPU.NP_AT.REG.FIR_MASK_REG
+# scom 0x0000000008013D83 {
+# bits, scom_data ;
+# 0:63, 0xE0002C02000F5F3F ;
+# }
+
# spy name ES.NPU.NP_AT.REG.FIR_ACTION0_REG
scom 0x0000000008013D86 {
bits, scom_data ;
@@ -35,6 +133,26 @@ scom 0x0000000008013D87 {
0:63, 0xFFFFFFFFFFFFFFFF ;
}
+# # spy name ES.NPU.NP_AT.REG.FIR_WOF_REG
+# scom 0x0000000008013D88 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+
+
+# spy name ES.NPU.NP_AT.REG.NPU_AT_CNFG0
+scom 0x0000000008013DAB {
+ bits, scom_data ;
+ 0:63, 0x0211000043500000 ;
+ }
+
+# If only 1 GPU will need to configure as below.
+# scom 0x0000000008013DAB {
+# bits, scom_data ;
+# 0:63, 0x0210000043510000 ;
+# }
+
+
# spy name ES.NPU.NP_AT.REG.NPU_AT_LR_ER (Lem enable)
scom 0x0000000008013D9C {
bits, scom_data ;
@@ -59,13 +177,105 @@ scom 0x0000000008013D9F {
0:63, 0x1CBFC1FCB7F0A000 ;
}
+# spy name ES.NPU.SL_WRAP0.NP_CQ.NP_CQ_LNK0.NXCQ_SCOM.NX_MISC_CONTROL_REG (hang pulses)
+scom 0x0000000008013C09 {
+ bits , scom_data;
+ 4:7 , 0b0000; #-- HANG_POLL_SCALE
+ 8:11 , 0b0011; #-- HANG_DATA_SCALE
+ 12:15 , 0b1011; #-- HANG_SHM_SCALE
+}
+
+# spy name ES.NPU.SL_WRAP0.NP_CQ.NP_CQ_LNK1.NXCQ_SCOM.NX_MISC_CONTROL_REG (hang pulses)
+scom 0x0000000008013C49 {
+ bits , scom_data;
+ 4:7 , 0b0000; #-- HANG_POLL_SCALE
+ 8:11 , 0b0011; #-- HANG_DATA_SCALE
+ 12:15 , 0b1011; #-- HANG_SHM_SCALE
+}
+
+# spy name ES.NPU.SL_WRAP2.NP_CQ.NP_CQ_LNK0.NXCQ_SCOM.NX_MISC_CONTROL_REG (hang pulses)
+scom 0x0000000008013D09 {
+ bits , scom_data;
+ 4:7 , 0b0000; #-- HANG_POLL_SCALE
+ 8:11 , 0b0011; #-- HANG_DATA_SCALE
+ 12:15 , 0b1011; #-- HANG_SHM_SCALE
+}
+
+# spy name ES.NPU.SL_WRAP2.NP_CQ.NP_CQ_LNK1.NXCQ_SCOM.NX_MISC_CONTROL_REG (hang pulses)
+scom 0x0000000008013D49 {
+ bits , scom_data;
+ 4:7 , 0b0000; #-- HANG_POLL_SCALE
+ 8:11 , 0b0011; #-- HANG_DATA_SCALE
+ 12:15 , 0b1011; #-- HANG_SHM_SCALE
+}
+
+# spy name ES.NPU.NP_AT.REG.NPU_AT_DEBUG (Debug/trace control)
+scom 0x0000000008013DA9 {
+ bits, scom_data ;
+ 0:63, 0x7000000000000000 ;
+ }
+
+# spy name ES.NPU.NP_AT.REG.NPU_AT_PMU_CTRL (at pmu counter)
+scom 0x0000000008013DA6 {
+ bits, scom_data ;
+ 0:63, 0xF210145000000000 ;
+ }
+
+# spy name ES.NPU.SL_WRAP0.NP_CQ.NP_CQ_LNK0.NXCQ_SCOM.NX_PB_ERR_RPT_0
+# scom 0x0000000008013C00 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# # spy name ES.NPU.SL_WRAP0.NP_CQ.NP_CQ_LNK0.NXCQ_SCOM.NX_PB_ERR_RPT_1
+# scom 0x0000000008013C01 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# # spy name ES.NPU.SL_WRAP0.NP_CQ.NP_CQ_LNK1.NXCQ_SCOM.NX_PB_ERR_RPT_0
+# scom 0x0000000008013C40 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# # spy name ES.NPU.SL_WRAP0.NP_CQ.NP_CQ_LNK1.NXCQ_SCOM.NX_PB_ERR_RPT_1
+# scom 0x0000000008013C41 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# spy name ES.NPU.SL_WRAP2.NP_CQ.NP_CQ_LNK0.NXCQ_SCOM.NX_PB_ERR_RPT_0
+# scom 0x0000000008013D00 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# # spy name ES.NPU.SL_WRAP2.NP_CQ.NP_CQ_LNK0.NXCQ_SCOM.NX_PB_ERR_RPT_1
+# scom 0x0000000008013D01 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# # spy name ES.NPU.SL_WRAP2.NP_CQ.NP_CQ_LNK1.NXCQ_SCOM.NX_PB_ERR_RPT_0
+# scom 0x0000000008013D40 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# # spy name ES.NPU.SL_WRAP2.NP_CQ.NP_CQ_LNK1.NXCQ_SCOM.NX_PB_ERR_RPT_1
+# scom 0x0000000008013D41 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
# spy name ES.NPU.SL_WRAP0.NTL_WRAP0.NTL_PMU_CONTROL (ntl00 pmu counter)
scom 0x0000000008013C27 {
bits, scom_data ;
0:63, 0xF21045C200000000 ;
}
-# spy name ES.NPU.SL_WRAP0.NTL_WRAP1.NTL_PMU_CONTROL (ntl00 pmu counter)
+# spy name ES.NPU.SL_WRAP0.NTL_WRAP1.NTL_PMU_CONTROL (ntl01 pmu counter)
scom 0x0000000008013C67 {
bits, scom_data ;
0:63, 0xF21045C200000000 ;
@@ -77,37 +287,63 @@ scom 0x0000000008013D27 {
0:63, 0xF21045C200000000 ;
}
-# spy name ES.NPU.SL_WRAP2.NTL_WRAP1.NTL_PMU_CONTROL (ntl20 pmu counter)
+# spy name ES.NPU.SL_WRAP2.NTL_WRAP1.NTL_PMU_CONTROL (ntl21 pmu counter)
scom 0x0000000008013D67 {
bits, scom_data ;
0:63, 0xF21045C200000000 ;
}
-# spy name ES.NPU.NP_AT.REG.NPU_AT_PMU_CTRL (at pmu counter)
-scom 0x0000000008013DA6 {
- bits, scom_data ;
- 0:63, 0xF210145000000000 ;
- }
+# # spy name ES.NPU.SL_WRAP0.NTL_WRAP0.NTL_ER_HOLD
+# scom 0x0000000008013C29 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# # spy name ES.NPU.SL_WRAP0.NTL_WRAP0.NTL_FST_ERR_REG
+# scom 0x0000000008013C2A {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# # spy name ES.NPU.SL_WRAP0.NTL_WRAP1.NTL_ER_HOLD
+# scom 0x0000000008013C69 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# spy name ES.NPU.SL_WRAP0.NTL_WRAP1.NTL_FST_ERR_REG
+# scom 0x0000000008013C6A {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# # spy name ES.NPU.SL_WRAP2.NTL_WRAP0.NTL_ER_HOLD
+# scom 0x0000000008013D29 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# # spy name ES.NPU.SL_WRAP2.NTL_WRAP0.NTL_FST_ERR_REG
+# scom 0x0000000008013D2A {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# # spy name ES.NPU.SL_WRAP2.NTL_WRAP1.NTL_ER_HOLD
+# scom 0x0000000008013D69 {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
+#
+# # spy name ES.NPU.SL_WRAP2.NTL_WRAP1.NTL_FST_ERR_REG
+# scom 0x0000000008013D6A {
+# bits, scom_data ;
+# 0:63, 0x0000000000000000 ;
+# }
-# spy name ES.NPU.NP_AT.REG.NPU_AT_DEBUG (Debug/trace control)
-scom 0x0000000008013DAB {
- bits, scom_data ;
- 0:63, 0x7000000000000000 ;
- }
-
-# spy name ES.NPU.NP_AT.REG.NPU_AT_CNFG0 (npu bar select)
-scom 0x0000000008013DA9 {
- bits, scom_data ;
- 0:63, 0x0211000043500000 ;
- }
-
-# spy name ES.NPU.SL_WRAP0.NP_CQ.NP_CQ_LNK0.NXCQ_SCOM.NP_BUID_REG (npu bar select)
+# spy name ES.NPU.SL_WRAP0.NP_CQ.NP_CQ_LNK0.NXCQ_SCOM.NP_BUID_REG (Interrupt control)
scom 0x0000000008013C13 {
bits, scom_data ;
0:63, 0x0800000043500000 ;
}
-
-# NPCQ control register? scom-only ??
-# NPCQ Int_lvl_REG register? scom-only ??
-
diff --git a/src/usr/hwpf/hwp/initfiles/p8.nx.scom.initfile b/src/usr/hwpf/hwp/initfiles/p8.nx.scom.initfile
index f69b6313c..a475183d6 100644
--- a/src/usr/hwpf/hwp/initfiles/p8.nx.scom.initfile
+++ b/src/usr/hwpf/hwp/initfiles/p8.nx.scom.initfile
@@ -1,4 +1,4 @@
-#-- $Id: p8.nx.scom.initfile,v 1.14 2014/06/26 21:00:42 johnre Exp $
+#-- $Id: p8.nx.scom.initfile,v 1.15 2015/03/19 20:45:09 johnre Exp $
#-------------------------------------------------------------------------------
#--
#-- (C) Copyright International Business Machines Corp. 2011
@@ -26,21 +26,29 @@ define sym_ci = ( ((8*ATTR_FABRIC_NODE_ID) + (ATTR_FABRIC_CHIP_ID) + 1) * 4) ;
define asym_ci = ( ((8*ATTR_FABRIC_NODE_ID) + (ATTR_FABRIC_CHIP_ID) + 1) * 16);
+#-- Naples does not have AMF engines. Using chip attribute to identify Naples
+define def_amf_available = (ATTR_CHIP_EC_FEATURE_NV_PRESENT == 0) ;
+
+
#--------------------------------------------------------------------------------
#-- SCOM initializations
#--------------------------------------------------------------------------------
#-- Engine Enable Register (0x02013041)
scom 0x02013041 {
- bits , scom_data ;
- 53 , 0b1 ; #-- ch7 ASYM enable
- 54 , 0b1 ; #-- ch6 ASYM enable
- 55 , 0b1 ; #-- ch5 ASYM enable
- 56 , 0b1 ; #-- ch4 ASYM enable
- 57 , 0b1 ; #-- ch3 SYM enable
- 58 , 0b1 ; #-- ch2 SYM enable
- 62 , 0b1 ; #-- ch1 842 enable
- 63 , 0b1 ; #-- ch0 842 enable
+ bits , scom_data , expr ;
+ 53 , 0b0 , (!def_amf_available) ; #-- ch7 ASYM enable
+ 53 , 0b1 , ( def_amf_available) ;
+ 54 , 0b0 , (!def_amf_available) ; #-- ch6 ASYM enable
+ 54 , 0b1 , ( def_amf_available) ;
+ 55 , 0b0 , (!def_amf_available) ; #-- ch5 ASYM enable
+ 55 , 0b1 , ( def_amf_available) ;
+ 56 , 0b0 , (!def_amf_available) ; #-- ch4 ASYM enable
+ 56 , 0b1 , ( def_amf_available) ;
+ 57 , 0b1 , any ; #-- ch3 SYM enable
+ 58 , 0b1 , any ; #-- ch2 SYM enable
+ 62 , 0b1 , any ; #-- ch1 842 enable
+ 63 , 0b1 , any ; #-- ch0 842 enable
}
@@ -80,11 +88,12 @@ scom 0x0201308A {
#-- Asymmetric Coprocessor Config Register (0x0201308B)
scom 0x0201308B {
- bits , scom_data ;
- 2:14 , asym_ci ; #-- asym CI. function of node, chip id
- 18:23 , 0b000010 ; #-- asym CT
- 32:55 , 0xfffff8 ; #-- asym FC mask. enable 0-20
- 63 , 0b1 ; #-- asym enable
+ bits , scom_data , expr ;
+ 2:14 , asym_ci , any ; #-- asym CI. function of node, chip id
+ 18:23 , 0b000010 , any ; #-- asym CT
+ 32:55 , 0xfffff8 , any ; #-- asym FC mask. enable 0-20
+ 63 , 0b0 , (!def_amf_available) ; #-- asym enable
+ 63 , 0b1 , ( def_amf_available) ;
}
@@ -305,35 +314,41 @@ scom 0x02013107 {
#-- DMA/Engine FIR Mask Register (0x02013103)
scom 0x02013103 {
- bits , scom_data ;
- 0 , 0b1 ; #-- mask Reserved
- 1 , 0b0 ; #-- ICS invalid state error FIR bit
- 2:3 , 0b11 ; #-- mask Reserved
- 4 , 0b0 ; #-- Channel 0 842 array corrected ECC error FIR bit" ;
- 5 , 0b0 ; #-- Channel 0 842 array uncorrectable ECC error FIR bit" ;
- 6 , 0b0 ; #-- Channel 1 842 array corrected ECC error FIR bit" ;
- 7 , 0b0 ; #-- Channel 1 842 array uncorrectable ECC error FIR bit" ;
- 8 , 0b1 ; #-- mask DMA non-zero CSB CC detected FIR bit. Programming error." ;
- 9 , 0b0 ; #-- DMA array correctable ECC error FIR bit" ;
- 10 , 0b0 ; #-- DMA outbound write/inbound read correctable ECC error FIR bit" ;
- 11:13 , 0b000 ; #-- Channel 5,6,7 AMF array corrected ECC error FIR bit" ;
- 14 , 0b1 ; #-- mask Error from other SCOM satellites FIR bit" ;
- 15 , 0b0 ; #-- DMA invalid state error FIR bit. Unrecoverable despite name" ;
- 16 , 0b0 ; #-- DMA invalid state error FIR bit" ;
- 17 , 0b0 ; #-- DMA array uncorrectable ECC error FIR bit" ;
- 18 , 0b0 ; #-- DMA outbound write/inbound read uncorrectable ECC error FIR bit" ;
- 19 , 0b0 ; #-- DMA inbound read error FIR bit" ;
- 20:27 , 0b00000000 ; #-- Channel 0-7 invalid state error FIR bit" ;
- 28:30 , 0b000 ; #-- Channel 5,6,7 AMF array uncorrectable ECC error FIR bit" ;
- 31 , 0b0 ; #-- UE error on CRB(CSB address, CCB) FIR bit" ;
- 32 , 0b0 ; #-- SUE error on CRB(CSB address, CCB) FIR bit" ;
- 33 , 0b1 ; #-- mask SUE error on something other than CRB(CSB address, CCB) FIR bit" ;
- 34 , 0b1 ; #-- mask Reserved
- 35 , 0b1 ; #-- mask Reserved
- 36 , 0b0 ; #-- Channel 4 AMF array corrected ECC error FIR bit" ;
- 37 , 0b0 ; #-- Channel 4 AMF array uncorrectable ECC error FIR bit" ;
- 38 , 0b0 ; #-- PHYP uses to signal PRD during NX freeze
- 39:47 , 0b111111111 ; #-- mask Reserved
- 48 , 0b1 ; #-- mask FIR/SCOM satellite parity error FIR bit" ;
- 49 , 0b1 ; #-- mask FIR/SCOM satellite parity error FIR bit duplicate"
+ bits , scom_data , expr ;
+ 0 , 0b1 , any ; #-- mask Reserved
+ 1 , 0b0 , any ; #-- ICS invalid state error FIR bit
+ 2:3 , 0b11 , any ; #-- mask Reserved
+ 4 , 0b0 , any ; #-- Channel 0 842 array corrected ECC error FIR bit" ;
+ 5 , 0b0 , any ; #-- Channel 0 842 array uncorrectable ECC error FIR bit" ;
+ 6 , 0b0 , any ; #-- Channel 1 842 array corrected ECC error FIR bit" ;
+ 7 , 0b0 , any ; #-- Channel 1 842 array uncorrectable ECC error FIR bit" ;
+ 8 , 0b1 , any ; #-- mask DMA non-zero CSB CC detected FIR bit. Programming error." ;
+ 9 , 0b0 , any ; #-- DMA array correctable ECC error FIR bit" ;
+ 10 , 0b0 , any ; #-- DMA outbound write/inbound read correctable ECC error FIR bit" ;
+ 11:13 , 0b111 , (!def_amf_available) ; #-- Channel 5,6,7 AMF array corrected ECC error FIR bit" ;
+ 11:13 , 0b000 , ( def_amf_available) ;
+ 14 , 0b1 , any ; #-- mask Error from other SCOM satellites FIR bit" ;
+ 15 , 0b0 , any ; #-- DMA invalid state error FIR bit. Unrecoverable despite name" ;
+ 16 , 0b0 , any ; #-- DMA invalid state error FIR bit" ;
+ 17 , 0b0 , any ; #-- DMA array uncorrectable ECC error FIR bit" ;
+ 18 , 0b0 , any ; #-- DMA outbound write/inbound read uncorrectable ECC error FIR bit" ;
+ 19 , 0b0 , any ; #-- DMA inbound read error FIR bit" ;
+ 20:23 , 0b0000 , any ; #-- Channel 0-3 invalid state error FIR bit" ;
+ 24:27 , 0b1111 , (!def_amf_available) ; #-- Channel 4-7 invalid state error FIR bit" ;
+ 24:27 , 0b0000 , ( def_amf_available) ;
+ 28:30 , 0b111 , (!def_amf_available) ; #-- Channel 5,6,7 AMF array uncorrectable ECC error FIR bit" ;
+ 28:30 , 0b000 , ( def_amf_available) ;
+ 31 , 0b0 , any ; #-- UE error on CRB(CSB address, CCB) FIR bit" ;
+ 32 , 0b0 , any ; #-- SUE error on CRB(CSB address, CCB) FIR bit" ;
+ 33 , 0b1 , any ; #-- mask SUE error on something other than CRB(CSB address, CCB) FIR bit" ;
+ 34 , 0b1 , any ; #-- mask Reserved
+ 35 , 0b1 , any ; #-- mask Reserved
+ 36 , 0b1 , (!def_amf_available) ; #-- Channel 4 AMF array corrected ECC error FIR bit" ;
+ 36 , 0b0 , ( def_amf_available) ;
+ 37 , 0b1 , (!def_amf_available) ; #-- Channel 4 AMF array uncorrectable ECC error FIR bit" ;
+ 37 , 0b0 , ( def_amf_available) ;
+ 38 , 0b0 , any ; #-- PHYP uses to signal PRD during NX freeze
+ 39:47 , 0b111111111 , any ; #-- mask Reserved
+ 48 , 0b1 , any ; #-- mask FIR/SCOM satellite parity error FIR bit" ;
+ 49 , 0b1 , any ; #-- mask FIR/SCOM satellite parity error FIR bit duplicate"
}
diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C
index f9682e848..bb307582e 100644
--- a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C
+++ b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C
@@ -22,7 +22,7 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: proc_chiplet_scominit.C,v 1.27 2014/12/11 21:11:43 szhong Exp $
+// $Id: proc_chiplet_scominit.C,v 1.28 2015/03/17 18:54:28 jmcgill Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_chiplet_scominit.C,v $
//------------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2012
@@ -437,36 +437,62 @@ fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target)
i_target.toEcmdString());
break;
}
- //execute NV scominit file
- FAPI_INF("proc_chiplet_scominit: Executing %s on %s",
- PROC_CHIPLET_SCOMINIT_NPU_IF, i_target.toEcmdString());
- uint8_t exist_NV=0x00;
- rc=FAPI_ATTR_GET(ATTR_CHIP_EC_FEATURE_NV_PRESENT, &i_target, exist_NV);
- if(!rc.ok())
+
+ // execute NV scominit file
+ uint8_t exist_NV = 0x00;
+ rc = FAPI_ATTR_GET(ATTR_CHIP_EC_FEATURE_NV_PRESENT, &i_target, exist_NV);
+ if (!rc.ok())
{
- FAPI_ERR("proc_chiplet_scominit: error getting attribute value ATTR_CHIP_EC_FEATURE_NV_PRESENT");
- break;
+ FAPI_ERR("proc_chiplet_scominit: Error getting attribute value ATTR_CHIP_EC_FEATURE_NV_PRESENT");
+ break;
}
- if(exist_NV)
+ if (exist_NV)
{
- FAPI_INF("NV link exist, run npu scominit");
- FAPI_EXEC_HWP(
- rc,
- fapiHwpExecInitFile,
- initfile_targets,
- PROC_CHIPLET_SCOMINIT_NPU_IF);
- if (!rc.ok())
- {
- FAPI_ERR("proc_chiplet_scominit: Error from fapiHwpExecInitfile executing %s on %s",
- PROC_CHIPLET_SCOMINIT_NPU_IF,
- i_target.toEcmdString());
- break;
- }
+ FAPI_INF("proc_chiplet_scominit: Executing %s on %s",
+ PROC_CHIPLET_SCOMINIT_NPU_IF, i_target.toEcmdString());
+ FAPI_EXEC_HWP(
+ rc,
+ fapiHwpExecInitFile,
+ initfile_targets,
+ PROC_CHIPLET_SCOMINIT_NPU_IF);
+ if (!rc.ok())
+ {
+ FAPI_ERR("proc_chiplet_scominit: Error from fapiHwpExecInitfile executing %s on %s",
+ PROC_CHIPLET_SCOMINIT_NPU_IF,
+ i_target.toEcmdString());
+ break;
+ }
+
+ // cleanup FIR bit (NPU FIR bit 27) caused by NDL/NTL parity error
+ rc_ecmd = data.flushTo1();
+ rc_ecmd = data.clearBit(NPU_FIR_NTL_DL2TL_PARITY_ERR_BIT);
+ if (rc_ecmd)
+ {
+ FAPI_ERR("proc_chiplet_scominit: Error 0x%Xforming NPU FIR cleanup data buffer",
+ rc_ecmd);
+ rc.setEcmdError(rc_ecmd);
+ break;
+ }
+ rc = fapiPutScom(i_target, NPU_FIR_AND_0x08013D81, data);
+ if (!rc.ok())
+ {
+ FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (NPU_FIR_AND_0x08013D81) on %s",
+ i_target.toEcmdString());
+ break;
+ }
+ rc = fapiPutScom(i_target, NPU_FIR_MASK_AND_0x08013D84, data);
+ if (!rc.ok())
+ {
+ FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (NPU_FIR_MASK_AND_0x08013D84) on %s",
+ i_target.toEcmdString());
+ break;
+ }
}
else
{
- FAPI_INF("NV link does not exist, skip npu scominit");
+ FAPI_INF("proc_chiplet_scominit: NV link logic not present, scom initfile processing skipped");
}
+
// determine set of functional MCS chiplets
rc = fapiGetChildChiplets(i_target,
fapi::TARGET_TYPE_MCS_CHIPLET,
diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.H b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.H
index e1330aca6..8548fb7c2 100644
--- a/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.H
+++ b/src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.H
@@ -22,7 +22,7 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: proc_chiplet_scominit.H,v 1.16 2014/12/11 21:11:59 szhong Exp $
+// $Id: proc_chiplet_scominit.H,v 1.17 2015/03/17 18:54:30 jmcgill Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_chiplet_scominit.H,v $
//------------------------------------------------------------------------------
// *! (C) Copyright International Business Machines Corp. 2012
@@ -75,6 +75,8 @@ const uint32_t MCSMODE0_EN_CENTAUR_SYNC_BIT = 61;
const uint32_t CAPP_APC_MASTER_LCO_TARGET_MIN_START_BIT = 13;
const uint32_t CAPP_APC_MASTER_LCO_TARGET_MIN_END_BIT = 15;
+// NPU FIR Register field/bit definitions
+const uint32_t NPU_FIR_NTL_DL2TL_PARITY_ERR_BIT = 27;
//------------------------------------------------------------------------------
// Structure definitions
OpenPOWER on IntegriCloud