summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/hwp/bus_training/io_dccal.C
diff options
context:
space:
mode:
authorRichard J. Knight <rjknight@us.ibm.com>2014-10-01 11:46:56 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2014-11-12 13:39:46 -0600
commit6313118b632d0f985d9595dfad54e942a6ed02cf (patch)
tree93a3ed691347cd40cdf05b253734ecec9e03cee0 /src/usr/hwpf/hwp/bus_training/io_dccal.C
parent133ff602765190b62c16680e15f4d93d803597b6 (diff)
downloadblackbird-hostboot-6313118b632d0f985d9595dfad54e942a6ed02cf.tar.gz
blackbird-hostboot-6313118b632d0f985d9595dfad54e942a6ed02cf.zip
SW279708: INITPROC: adjust DMI/ABUS CU PLL refclock switching for DCCAL operatio
Change-Id: If34822b3ac36579f110528682cf6c67eac9e8e6e CQ:SW279708 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/13594 Reviewed-by: Thi N. Tran <thi@us.ibm.com> Tested-by: Thi N. Tran <thi@us.ibm.com> Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/13709 Reviewed-by: Richard J. Knight <rjknight@us.ibm.com> Tested-by: Jenkins Server Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/hwp/bus_training/io_dccal.C')
-rw-r--r--src/usr/hwpf/hwp/bus_training/io_dccal.C82
1 files changed, 75 insertions, 7 deletions
diff --git a/src/usr/hwpf/hwp/bus_training/io_dccal.C b/src/usr/hwpf/hwp/bus_training/io_dccal.C
index 94e122234..4aa476931 100644
--- a/src/usr/hwpf/hwp/bus_training/io_dccal.C
+++ b/src/usr/hwpf/hwp/bus_training/io_dccal.C
@@ -22,7 +22,7 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */
-// $Id: io_dccal.C,v 1.35 2014/03/20 08:37:35 varkeykv Exp $
+// $Id: io_dccal.C,v 1.36 2014/09/23 20:43:46 jmcgill Exp $
// *!***************************************************************************
// *! (C) Copyright International Business Machines Corp. 1997, 1998
// *! All Rights Reserved -- Property of IBM
@@ -795,12 +795,13 @@ const fapi::Target& TARGET = target;
FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_PROC_PB_BNDY_DMIPLL_LENGTH)");
return(rc);
}
- rc = FAPI_ATTR_GET(ATTR_PROC_PB_BNDY_DMIPLL_FOR_DCCAL_DATA, &parent_target, pb_bndy_dmipll_data); // -- get scan ring data
+ rc = FAPI_ATTR_GET(ATTR_PROC_PB_BNDY_DMIPLL_DATA, &parent_target, pb_bndy_dmipll_data); // -- get scan ring data
if (rc)
{
- FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_PROC_PB_BNDY_DMIPLL_FOR_DCCAL_DATA)");
+ FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_PROC_PB_BNDY_DMIPLL_DATA)");
return(rc);
}
+
rc_ecmd |= ring_data.setBitLength(ring_length);
rc_ecmd |= ring_data.insert(pb_bndy_dmipll_data, 0, ring_length, 0); // -- put data into ecmd buffer
if (rc_ecmd)
@@ -808,6 +809,31 @@ const fapi::Target& TARGET = target;
rc.setEcmdError(rc_ecmd);
return(rc);
}
+
+ uint8_t mcs_pos;
+ rc = FAPI_ATTR_GET(ATTR_CHIP_UNIT_POS, &target, mcs_pos);
+ if (rc)
+ {
+ FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_CHIP_UNIT_POS)");
+ return(rc);
+ }
+
+ uint32_t refclksel_offsets[8];
+ rc = FAPI_ATTR_GET(ATTR_PROC_DMI_CUPLL_REFCLKSEL_OFFSET, &parent_target, refclksel_offsets);
+ if (rc)
+ {
+ FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_PROC_DMI_CUPLL_REFCLKSEL_OFFSET)");
+ return(rc);
+ }
+
+ rc_ecmd |= ring_data.setBit(refclksel_offsets[mcs_pos]);
+ if (rc_ecmd)
+ {
+ rc.setEcmdError(rc_ecmd);
+ return(rc);
+ }
+
+ // update PLL
rc = proc_a_x_pci_dmi_pll_scan_bndy(parent_target,
NEST_CHIPLET_0x02000000,
PB_BNDY_DMIPLL_RING_ADDR,
@@ -872,10 +898,10 @@ const fapi::Target& TARGET = target;
FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_MEMB_TP_BNDY_PLL_LENGTH)");
return(rc);
}
- rc = FAPI_ATTR_GET(ATTR_MEMB_TP_BNDY_PLL_FOR_DCCAL_DATA, &target, tp_bndy_pll_data); // -- get scan ring data
+ rc = FAPI_ATTR_GET(ATTR_MEMB_TP_BNDY_PLL_DATA, &target, tp_bndy_pll_data); // -- get scan ring data
if (rc)
{
- FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_MEMB_TP_BNDY_PLL_FOR_DCCAL_DATA)");
+ FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_MEMB_TP_BNDY_PLL_DATA)");
return(rc);
}
rc_ecmd |= ring_data.setBitLength(ring_length);
@@ -885,6 +911,23 @@ const fapi::Target& TARGET = target;
rc.setEcmdError(rc_ecmd);
return(rc);
}
+
+ uint32_t refclksel_offset;
+ rc = FAPI_ATTR_GET(ATTR_MEMB_DMI_CUPLL_REFCLKSEL_OFFSET, &target, refclksel_offset);
+ if (rc)
+ {
+ FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_MEMB_DMI_CUPLL_REFCLKSEL_OFFSET)");
+ return(rc);
+ }
+
+ rc_ecmd |= ring_data.setBit(refclksel_offset);
+ if (rc_ecmd)
+ {
+ rc.setEcmdError(rc_ecmd);
+ return(rc);
+ }
+
+ // update PLL
rc = proc_a_x_pci_dmi_pll_scan_bndy(target,
TP_CHIPLET_0x01000000,
MEMB_TP_BNDY_PLL_RING_ADDR,
@@ -964,10 +1007,10 @@ const fapi::Target& TARGET = target;
FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_PROC_AB_BNDY_PLL_LENGTH)");
return(rc);
}
- rc = FAPI_ATTR_GET(ATTR_PROC_AB_BNDY_PLL_FOR_DCCAL_DATA, &parent_target, ab_bndy_pll_data); // -- get scan ring data
+ rc = FAPI_ATTR_GET(ATTR_PROC_AB_BNDY_PLL_DATA, &parent_target, ab_bndy_pll_data); // -- get scan ring data
if (rc)
{
- FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_PROC_AB_BNDY_PLL_FOR_DCCAL_DATA)");
+ FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_PROC_AB_BNDY_PLL_DATA)");
return(rc);
}
rc_ecmd |= ring_data.setBitLength(ring_length);
@@ -977,6 +1020,31 @@ const fapi::Target& TARGET = target;
rc.setEcmdError(rc_ecmd);
return(rc);
}
+
+ uint8_t abus;
+ rc = FAPI_ATTR_GET(ATTR_CHIP_UNIT_POS, &target, abus);
+ if (rc)
+ {
+ FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_CHIP_UNIT_POS)");
+ return(rc);
+ }
+
+ uint32_t refclksel_offsets[3];
+ rc = FAPI_ATTR_GET(ATTR_PROC_ABUS_CUPLL_REFCLKSEL_OFFSET, &parent_target, refclksel_offsets);
+ if (rc)
+ {
+ FAPI_ERR("Error from FAPI_ATTR_GET (ATTR_PROC_ABUS_CUPLL_REFCLKSEL_OFFSET)");
+ return(rc);
+ }
+
+ rc_ecmd |= ring_data.setBit(refclksel_offsets[abus]);
+ if (rc_ecmd)
+ {
+ rc.setEcmdError(rc_ecmd);
+ return(rc);
+ }
+
+ // update PLL
rc = proc_a_x_pci_dmi_pll_scan_bndy(parent_target,
A_BUS_CHIPLET_0x08000000,
AB_BNDY_PLL_RING_ADDR,
OpenPOWER on IntegriCloud