summaryrefslogtreecommitdiffstats
path: root/import/chips/p9/procedures/hwp/perv/p9_sbe_gptr_time_initf.C
diff options
context:
space:
mode:
Diffstat (limited to 'import/chips/p9/procedures/hwp/perv/p9_sbe_gptr_time_initf.C')
-rw-r--r--import/chips/p9/procedures/hwp/perv/p9_sbe_gptr_time_initf.C128
1 files changed, 126 insertions, 2 deletions
diff --git a/import/chips/p9/procedures/hwp/perv/p9_sbe_gptr_time_initf.C b/import/chips/p9/procedures/hwp/perv/p9_sbe_gptr_time_initf.C
index 474c68a8..9ab853a2 100644
--- a/import/chips/p9/procedures/hwp/perv/p9_sbe_gptr_time_initf.C
+++ b/import/chips/p9/procedures/hwp/perv/p9_sbe_gptr_time_initf.C
@@ -25,19 +25,143 @@
// *HWP HW Backup Owner : Srinivas V Naga <srinivan@in.ibm.com>
// *HWP FW Owner : Sunil Kumar <skumar8j@in.ibm.com>
// *HWP Team : Perv
-// *HWP Level : 1
+// *HWP Level : 2
// *HWP Consumed by : SBE
//------------------------------------------------------------------------------
#include "p9_sbe_gptr_time_initf.H"
+#include "p9_perv_scom_addresses.H"
+
fapi2::ReturnCode p9_sbe_gptr_time_initf(const
fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target_chip)
{
+ uint8_t l_attr_chip_unit_pos = 0; //actual value is read in FAPI_ATTR_GET below
FAPI_INF("Entering ...");
+ for (auto l_chplt_trgt : i_target_chip.getChildren<fapi2::TARGET_TYPE_MCBIST>
+ (fapi2::TARGET_STATE_FUNCTIONAL))
+ {
+
+ FAPI_DBG("Scan gptr rings for MC chiplets ");
+ FAPI_TRY(fapi2::putRing(l_chplt_trgt, mc_gptr));
+ FAPI_TRY(fapi2::putRing(l_chplt_trgt, mc_iom01_gptr));
+ FAPI_TRY(fapi2::putRing(l_chplt_trgt, mc_iom23_gptr));
+ FAPI_TRY(fapi2::putRing(l_chplt_trgt, mc_pll_gptr));
+ FAPI_TRY(fapi2::putRing(l_chplt_trgt, mc_time));
+ FAPI_TRY(fapi2::putRing(l_chplt_trgt, mc_iom01_time));
+ FAPI_TRY(fapi2::putRing(l_chplt_trgt, mc_iom23_time));
+ }
+
+ for( auto l_chplt_trgt : i_target_chip.getChildren<fapi2::TARGET_TYPE_PERV>
+ ( fapi2::TARGET_STATE_FUNCTIONAL))
+ {
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_CHIP_UNIT_POS, l_chplt_trgt, l_attr_chip_unit_pos));
+
+ if ((l_attr_chip_unit_pos == 0x09))/* OBUS0 Chiplet */
+ {
+ FAPI_DBG("Scan gptr rings for obus0 chiplets ");
+ FAPI_TRY(fapi2::putRing(i_target_chip, ob0_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, ob0_pll_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, ob0_time));
+
+ }
+
+ //Rings need to be scanned for OBUS 2 and 3 incase of Cumulus
+ if ((l_attr_chip_unit_pos == 0xC))/* OBUS3 Chiplet */
+ {
+ FAPI_DBG("Scan gptr rings for obus3 chiplets ");
+ FAPI_TRY(fapi2::putRing(i_target_chip, ob3_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, ob3_pll_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, ob3_time));
+ }
+
+ if ((l_attr_chip_unit_pos == 0x06))/* XBUS Chiplet */
+ {
+ FAPI_DBG("Scan gptr rings for xbus chiplets ");
+ FAPI_TRY(fapi2::putRing(i_target_chip, xb_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, xb_io0_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, xb_io1_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, xb_io2_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, xb_pll_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, xb_time));
+ FAPI_TRY(fapi2::putRing(i_target_chip, xb_io0_time));
+ FAPI_TRY(fapi2::putRing(i_target_chip, xb_io1_time));
+ FAPI_TRY(fapi2::putRing(i_target_chip, xb_io2_time));
+ }
+
+ if ((l_attr_chip_unit_pos == 0xD))/* PCI0 Chiplet */
+ {
+ FAPI_DBG("Scan gptr rings for pci0 chiplets ");
+ FAPI_TRY(fapi2::putRing(i_target_chip, pci0_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, pci0_time));
+ }
+
+ if ((l_attr_chip_unit_pos == 0xE))/* PCI1 Chiplet */
+ {
+ FAPI_DBG("Scan gptr rings for pci1 chiplets ");
+ FAPI_TRY(fapi2::putRing(i_target_chip, pci1_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, pci1_time));
+ }
+
+ if ((l_attr_chip_unit_pos == 0xF))/* PCI2 Chiplet */
+ {
+ FAPI_DBG("Scan gptr rings for pci2 chiplets ");
+ FAPI_TRY(fapi2::putRing(i_target_chip, pci2_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, pci2_time));
+ }
+
+ if ((l_attr_chip_unit_pos == 0x02))/* N0 Chiplet */
+ {
+ FAPI_DBG("Scan gptr rings for n0 chiplets ");
+ FAPI_TRY(fapi2::putRing(i_target_chip, n0_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n0_nx_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n0_cxa0_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n0_time));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n0_nx_time));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n0_cxa0_time));
+ }
+
+ if ((l_attr_chip_unit_pos == 0x03))/* N1 Chiplet */
+ {
+ FAPI_DBG("Scan gptr rings for n1 chiplets ");
+ FAPI_TRY(fapi2::putRing(i_target_chip, n1_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n1_ioo0_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n1_ioo1_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n1_mcs23_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n1_time));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n1_ioo0_time));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n1_ioo1_time));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n1_mcs23_time));
+ }
+
+ if ((l_attr_chip_unit_pos == 0x04))/* N2 Chiplet */
+ {
+ FAPI_DBG("Scan gptr rings for n2 chiplets ");
+ FAPI_TRY(fapi2::putRing(i_target_chip, n2_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n2_cxa1_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n2_time));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n2_cxa1_time));
+ }
+
+ if ((l_attr_chip_unit_pos == 0x05))/* N3 Chiplet */
+ {
+ FAPI_DBG("Scan gptr rings for n3 chiplets ");
+ FAPI_TRY(fapi2::putRing(i_target_chip, n3_gptr ));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n3_time));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n3_np_gptr ));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n3_mcs01_gptr));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n3_mcs01_time));
+ FAPI_TRY(fapi2::putRing(i_target_chip, n3_np_time));
+ }
+
+ }
+
FAPI_INF("Exiting ...");
- return fapi2::FAPI2_RC_SUCCESS;
+fapi_try_exit:
+ return fapi2::current_err;
+
}
+
OpenPOWER on IntegriCloud