summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/nest_chiplets/proc_start_clocks_chiplets/proc_start_clocks_chiplets.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr/hwpf/hwp/nest_chiplets/proc_start_clocks_chiplets/proc_start_clocks_chiplets.C')
-rw-r--r--src/usr/hwpf/hwp/nest_chiplets/proc_start_clocks_chiplets/proc_start_clocks_chiplets.C95
1 files changed, 74 insertions, 21 deletions
diff --git a/src/usr/hwpf/hwp/nest_chiplets/proc_start_clocks_chiplets/proc_start_clocks_chiplets.C b/src/usr/hwpf/hwp/nest_chiplets/proc_start_clocks_chiplets/proc_start_clocks_chiplets.C
index c173a7bf8..d31a0d68f 100644
--- a/src/usr/hwpf/hwp/nest_chiplets/proc_start_clocks_chiplets/proc_start_clocks_chiplets.C
+++ b/src/usr/hwpf/hwp/nest_chiplets/proc_start_clocks_chiplets/proc_start_clocks_chiplets.C
@@ -20,7 +20,7 @@
/* Origin: 30 */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: proc_start_clocks_chiplets.C,v 1.10 2012/12/12 10:43:10 rkoester Exp $
+// $Id: proc_start_clocks_chiplets.C,v 1.13 2013/01/20 19:26:07 jmcgill Exp $
// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/ipl/fapi/proc_start_clocks_chiplets.C,v $
//------------------------------------------------------------------------------
// *|
@@ -298,8 +298,6 @@ fapi::ReturnCode proc_start_clocks_get_partial_good_vector(
}
- FAPI_DBG("proc_start_clocks_get_partial_good_vector: picked partial good regions vector is (%016llX)", *o_chiplet_reg_vec);
-
} while(0);
@@ -438,8 +436,6 @@ fapi::ReturnCode proc_start_clocks_chiplet_check_clk_status_reg(
break;
}
- // intialize reference databuffer
- rc_ecmd |= vec_data.flushTo0();
// load it with reference data
rc_ecmd |= vec_data.setDoubleWord(0, i_chiplet_clkreg_vec);
// generate expected value databuffer
@@ -717,7 +713,7 @@ fapi::ReturnCode proc_start_clocks_generic_chiplet(
);
if (rc)
{
- FAPI_ERR("proc_start_clocks_partial_good_vector: Error getting partial good region vector");
+ FAPI_ERR("proc_start_clocks_generic_chiplet: Error getting partial good region vector");
break;
}
@@ -793,6 +789,9 @@ fapi::ReturnCode proc_start_clocks_chiplets(const fapi::Target& i_target,
bool xbus, bool abus, bool pcie)
{
fapi::ReturnCode rc;
+ uint8_t xbus_enable_attr;
+ uint8_t abus_enable_attr;
+ uint8_t pcie_enable_attr;
// mark HWP entry
FAPI_IMP("proc_start_clocks_chiplets: Entering ...");
@@ -801,38 +800,92 @@ fapi::ReturnCode proc_start_clocks_chiplets(const fapi::Target& i_target,
{
if (xbus)
{
- FAPI_DBG("Starting X bus chiplet clocks ...");
- rc = proc_start_clocks_generic_chiplet(
- i_target,
- X_BUS_CHIPLET_0x04000000);
- if (rc)
+ // query XBUS partial good attribute
+ rc = FAPI_ATTR_GET(ATTR_PROC_X_ENABLE,
+ &i_target,
+ xbus_enable_attr);
+ if (!rc.ok())
{
+ FAPI_ERR("proc_start_clocks_chiplets: Error querying ATTR_PROC_X_ENABLE");
break;
}
+
+ if (xbus_enable_attr == fapi::ENUM_ATTR_PROC_X_ENABLE_ENABLE)
+ {
+ FAPI_DBG("Starting X bus chiplet clocks ...");
+ rc = proc_start_clocks_generic_chiplet(
+ i_target,
+ X_BUS_CHIPLET_0x04000000);
+ if (rc)
+ {
+ FAPI_ERR("proc_start_clocks_chiplets: Error from proc_start_clocks_generic_chiplet (X)");
+ break;
+ }
+ }
+ else
+ {
+ FAPI_DBG("Skipping XBUS chiplet clock start (partial good).");
+ }
}
if (abus)
{
- FAPI_DBG("Starting A bus chiplet clocks ...");
- rc = proc_start_clocks_generic_chiplet(
- i_target,
- A_BUS_CHIPLET_0x08000000);
- if (rc)
+ // query ABUS partial good attribute
+ rc = FAPI_ATTR_GET(ATTR_PROC_A_ENABLE,
+ &i_target,
+ abus_enable_attr);
+ if (!rc.ok())
{
+ FAPI_ERR("proc_start_clocks_chiplets: Error querying ATTR_PROC_A_ENABLE");
break;
}
+
+ if (abus_enable_attr == fapi::ENUM_ATTR_PROC_A_ENABLE_ENABLE)
+ {
+ FAPI_DBG("Starting A bus chiplet clocks ...");
+ rc = proc_start_clocks_generic_chiplet(
+ i_target,
+ A_BUS_CHIPLET_0x08000000);
+ if (rc)
+ {
+ FAPI_ERR("proc_start_clocks_chiplets: Error from proc_start_clocks_generic_chiplet (A)");
+ break;
+ }
+ }
+ else
+ {
+ FAPI_DBG("Skipping ABUS chiplet clock start (partial good).");
+ }
}
if (pcie)
{
- FAPI_DBG("Starting PCIE chiplet clocks ...");
- rc = proc_start_clocks_generic_chiplet(
- i_target,
- PCIE_CHIPLET_0x09000000);
- if (rc)
+ // query PCIE partial good attribute
+ rc = FAPI_ATTR_GET(ATTR_PROC_PCIE_ENABLE,
+ &i_target,
+ pcie_enable_attr);
+ if (!rc.ok())
{
+ FAPI_ERR("proc_start_clocks_chiplets: Error querying ATTR_PROC_PCIE_ENABLE");
break;
}
+
+ if (pcie_enable_attr == fapi::ENUM_ATTR_PROC_PCIE_ENABLE_ENABLE)
+ {
+ FAPI_DBG("Starting PCIE chiplet clocks ...");
+ rc = proc_start_clocks_generic_chiplet(
+ i_target,
+ PCIE_CHIPLET_0x09000000);
+ if (rc)
+ {
+ FAPI_ERR("proc_start_clocks_chiplets: Error from proc_start_clocks_generic_chiplet (PCIE)");
+ break;
+ }
+ }
+ else
+ {
+ FAPI_DBG("Skipping PCIE chiplet clock start (partial good).");
+ }
}
} while (0);
OpenPOWER on IntegriCloud