diff options
Diffstat (limited to 'src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit')
-rw-r--r-- | src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C | 74 | ||||
-rw-r--r-- | src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.H | 4 |
2 files changed, 53 insertions, 25 deletions
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 |