summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/nest_chiplets
diff options
context:
space:
mode:
authorThi Tran <thi@us.ibm.com>2013-11-19 07:21:49 -0600
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-12-04 16:20:32 -0600
commit957f80f13030fb90f6c9f31777d5daf1fed5f050 (patch)
tree12e4db0ddad209930073a057f08451c49db0cf3c /src/usr/hwpf/hwp/nest_chiplets
parent6e21d4f093771dece176d73612ada3769d59f1b3 (diff)
downloadtalos-hostboot-957f80f13030fb90f6c9f31777d5daf1fed5f050.tar.gz
talos-hostboot-957f80f13030fb90f6c9f31777d5daf1fed5f050.zip
INITPROC: Hostboot - SW234244 CAPP init update
Change-Id: Icacbf99e52df962d5b287e85af32fb9bb7f3024c CMVC-Coreq:907021 CQ:SW234244 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7325 Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com> Tested-by: Jenkins Server
Diffstat (limited to 'src/usr/hwpf/hwp/nest_chiplets')
-rw-r--r--src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.C85
-rw-r--r--src/usr/hwpf/hwp/nest_chiplets/proc_chiplet_scominit/proc_chiplet_scominit.H11
2 files changed, 85 insertions, 11 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 ca6859415..13515c50f 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
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: proc_chiplet_scominit.C,v 1.18 2013/10/28 19:10:50 jmcgill Exp $
+// $Id: proc_chiplet_scominit.C,v 1.22 2013/11/18 14:43:14 thi 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
@@ -58,8 +58,12 @@ fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target)
fapi::TargetType target_type;
std::vector<fapi::Target> initfile_targets;
+ std::vector<fapi::Target> ex_targets;
+ std::vector<fapi::Target> mcs_targets;
uint8_t nx_enabled;
uint8_t mcs_pos;
+ uint8_t ex_pos;
+ uint8_t num_ex_targets;
uint8_t master_mcs_pos = 0xFF;
fapi::Target master_mcs;
uint8_t enable_xbus_resonant_clocking = 0x0;
@@ -172,6 +176,65 @@ fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target)
break;
}
+ // configure CXA APC master LCO settings
+ rc = fapiGetChildChiplets(i_target,
+ fapi::TARGET_TYPE_EX_CHIPLET,
+ ex_targets,
+ fapi::TARGET_STATE_FUNCTIONAL);
+ if (!rc.ok())
+ {
+ FAPI_ERR("proc_chiplet_scominit: Error from fapiGetChildChiplets (EX) on %s",
+ i_target.toEcmdString());
+ break;
+ }
+
+ // form valid LCO target list
+ for (std::vector<fapi::Target>::iterator i = ex_targets.begin();
+ i != ex_targets.end();
+ i++)
+ {
+ // determine EX chiplet number
+ rc = FAPI_ATTR_GET(ATTR_CHIP_UNIT_POS, &(*i), ex_pos);
+
+ if (!rc.ok())
+ {
+ FAPI_ERR("proc_chiplet_scominit: Error from FAPI_ATTR_GET (ATTR_CHIP_UNIT_POS) on %s",
+ i->toEcmdString());
+ break;
+ }
+
+ rc_ecmd |= data.setBit(ex_pos-((ex_pos < 8)?(1):(3)));
+ }
+ if (!rc.ok())
+ {
+ break;
+ }
+
+ num_ex_targets = ex_targets.size();
+ rc_ecmd |= data.insertFromRight(
+ num_ex_targets,
+ CAPP_APC_MASTER_LCO_TARGET_MIN_START_BIT,
+ (CAPP_APC_MASTER_LCO_TARGET_MIN_END_BIT-
+ CAPP_APC_MASTER_LCO_TARGET_MIN_START_BIT+1));
+
+ if (rc_ecmd)
+ {
+ FAPI_ERR("proc_chiplet_scominit: Error 0x%x setting APC Master LCO Target register data buffer",
+ rc_ecmd);
+ rc.setEcmdError(rc_ecmd);
+ break;
+ }
+
+ rc = fapiPutScom(i_target,
+ CAPP_APC_MASTER_LCO_TARGET_0x02013021,
+ data);
+ if (!rc.ok())
+ {
+ FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (CAPP_APC_MASTER_LCO_TARGET_0x02013021) on %s",
+ i_target.toEcmdString());
+ break;
+ }
+
// execute AS SCOM initfile
FAPI_INF("proc_chiplet_scominit: Executing %s on %s",
PROC_CHIPLET_SCOMINIT_AS_IF, i_target.toEcmdString());
@@ -200,7 +263,8 @@ fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target)
enable_xbus_resonant_clocking);
if (!rc.ok())
{
- FAPI_ERR("proc_chiplet_scominit: Error querying ATTR_CHIP_EC_FEATURE_VENICE_SPECIFIC");
+ FAPI_ERR("proc_chiplet_scominit: Error querying ATTR_CHIP_EC_FEATURE_VENICE_SPECIFIC on %s",
+ i_target.toEcmdString());
break;
}
@@ -212,7 +276,8 @@ fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target)
data);
if (!rc.ok())
{
- FAPI_ERR("proc_chiplet_scominit: fapiGetScom error (MBOX_FSIGP6_0x00050015)");
+ FAPI_ERR("proc_chiplet_scominit: fapiGetScom error (MBOX_FSIGP6_0x00050015) on %s",
+ i_target.toEcmdString());
break;
}
@@ -235,7 +300,8 @@ fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target)
data);
if (!rc.ok())
{
- FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (MBOX_FSIGP6_0x00050015)");
+ FAPI_ERR("proc_chiplet_scominit: fapiPutScom error (MBOX_FSIGP6_0x00050015) on %s",
+ i_target.toEcmdString());
break;
}
}
@@ -257,14 +323,14 @@ fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target)
}
// determine set of functional MCS chiplets
- std::vector<fapi::Target> mcs_targets;
rc = fapiGetChildChiplets(i_target,
fapi::TARGET_TYPE_MCS_CHIPLET,
mcs_targets,
fapi::TARGET_STATE_FUNCTIONAL);
if (!rc.ok())
{
- FAPI_ERR("proc_chiplet_scominit: Error from fapiGetChildChiplets");
+ FAPI_ERR("proc_chiplet_scominit: Error from fapiGetChildChiplets (MCS) on %s",
+ i_target.toEcmdString());
break;
}
@@ -297,7 +363,8 @@ fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target)
if (!rc.ok())
{
- FAPI_ERR("proc_chiplet_scominit: Error from FAPI_ATTR_GET (ATTR_CHIP_UNIT_POS)");
+ FAPI_ERR("proc_chiplet_scominit: Error from FAPI_ATTR_GET (ATTR_CHIP_UNIT_POS) on %s",
+ i->toEcmdString());
break;
}
@@ -332,6 +399,7 @@ fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target)
{
// set MCMODE0Q_ENABLE_CENTAUR_SYNC on first target only
// (this bit is required to be set on at most one MCS/chip)
+ rc_ecmd |= data.flushTo0();
rc_ecmd |= data.setBit(MCSMODE0_EN_CENTAUR_SYNC_BIT);
rc_ecmd |= mask.setBit(MCSMODE0_EN_CENTAUR_SYNC_BIT);
@@ -351,7 +419,8 @@ fapi::ReturnCode proc_chiplet_scominit(const fapi::Target & i_target)
mask);
if (!rc.ok())
{
- FAPI_ERR("proc_chiplet_scominit: fapiPutScomUnderMask error (MCS_MCSMODE0_0x02011807)");
+ FAPI_ERR("proc_chiplet_scominit: fapiPutScomUnderMask error (MCS_MCSMODE0_0x02011807) on %s",
+ master_mcs.toEcmdString());
break;
}
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 7990f2cd4..3341563c3 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
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: proc_chiplet_scominit.H,v 1.14 2013/10/28 02:09:55 jmcgill Exp $
+// $Id: proc_chiplet_scominit.H,v 1.15 2013/11/09 21:06:39 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
@@ -60,14 +60,19 @@ const char * const PROC_CHIPLET_SCOMINIT_MCS_IF = "p8.mcs.scom.if";
// FSI GP6 Register field/bit definitions
-const uint16_t XBUS_RESONANT_CLOCK_CONFIG = 0xF180;
-
const uint32_t MBOX_FSIGP6_XBUS_RESONANT_CLOCK_CONFIG_START_BIT = 0;
const uint32_t MBOX_FSIGP6_XBUS_RESONANT_CLOCK_CONFIG_END_BIT = 15;
+const uint16_t XBUS_RESONANT_CLOCK_CONFIG = 0xF180;
+
// MCS Mode0 Register field/bit definitions
const uint32_t MCSMODE0_EN_CENTAUR_SYNC_BIT = 61;
+// CAPP APC Master LCO Target Register field/bit definitions
+const uint32_t CAPP_APC_MASTER_LCO_TARGET_MIN_START_BIT = 13;
+const uint32_t CAPP_APC_MASTER_LCO_TARGET_MIN_END_BIT = 15;
+
+
//------------------------------------------------------------------------------
// Structure definitions
//------------------------------------------------------------------------------
OpenPOWER on IntegriCloud