summaryrefslogtreecommitdiffstats
path: root/src/import/chips/p9/procedures
diff options
context:
space:
mode:
Diffstat (limited to 'src/import/chips/p9/procedures')
-rw-r--r--src/import/chips/p9/procedures/hwp/nest/p9_sbe_scominit.C30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/import/chips/p9/procedures/hwp/nest/p9_sbe_scominit.C b/src/import/chips/p9/procedures/hwp/nest/p9_sbe_scominit.C
index 0e2a0854..0664c7f9 100644
--- a/src/import/chips/p9/procedures/hwp/nest/p9_sbe_scominit.C
+++ b/src/import/chips/p9/procedures/hwp/nest/p9_sbe_scominit.C
@@ -99,6 +99,13 @@ const uint64_t OB_PPE_FIR_ACTION0 = 0x0000000000000000ULL;
const uint64_t OB_PPE_FIR_ACTION1 = 0xF1C0000000000000ULL;
const uint64_t OB_PPE_FIR_MASK = 0x0E38000000000000ULL;
+// FBC XBUS PPE psave constants
+const uint8_t PB_PSAVE_CFG_HUT = 0x3;
+const uint8_t PB_PSAVE_CFG_LUT = 0x1;
+const uint8_t PB_PSAVE_CFG_HUC = 0x1;
+const uint8_t PB_PSAVE_CFG_LUC = 0xff;
+const uint8_t PB_PSAVE_CFG_WSIZE = 0x1;
+
// nest trace setup constants
const uint8_t N1_PROBE1_SEL = 0x11;
@@ -612,9 +619,10 @@ p9_sbe_scominit(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
FAPI_TRY(putScom(i_target, PERV_N3_THERM_MODE_REG, l_data));
}
- // configure XBUS FIRs
+ // configure XBUS FIRs & PPE
{
bool l_xbus_chiplet_good = false;
+ fapi2::buffer<uint64_t> l_psave_cfg;
fapi2::buffer<uint64_t> l_zero = 0;
fapi2::buffer<uint64_t> l_ones;
l_ones.flush<1>();
@@ -713,6 +721,26 @@ p9_sbe_scominit(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP>& i_target)
FAPI_TRY(putScom(i_target, PU_PB_IOE_FIR_MASK_REG,
(l_xbus_chiplet_good) ? (FBC_IOE_TL_FIR_MASK) : (l_ones())),
"Error from putScom (PU_PB_IOE_FIR_MASK_REG)");
+
+ // PPE psave config
+ FAPI_TRY(fapi2::getScom(i_target,
+ PU_PB_PSAVE_CFG,
+ l_psave_cfg),
+ "Error from getScom (PU_PB_PSAVE_CFG)");
+
+ l_psave_cfg.setBit<PU_PB_PSAVE_CFG_X0_ACT>()
+ .setBit<PU_PB_PSAVE_CFG_X1_ACT>()
+ .setBit<PU_PB_PSAVE_CFG_X2_ACT>();
+ l_psave_cfg.insertFromRight<PU_PB_PSAVE_CFG_HUT, PU_PB_PSAVE_CFG_HUT_LEN>(0x3);
+ l_psave_cfg.insertFromRight<PU_PB_PSAVE_CFG_LUT, PU_PB_PSAVE_CFG_LUT_LEN>(0x1);
+ l_psave_cfg.insertFromRight<PU_PB_PSAVE_CFG_HUC, PU_PB_PSAVE_CFG_HUC_LEN>(0x1);
+ l_psave_cfg.insertFromRight<PU_PB_PSAVE_CFG_LUC, PU_PB_PSAVE_CFG_LUC_LEN>(0xff);
+ l_psave_cfg.insertFromRight<PU_PB_PSAVE_CFG_WSIZE, PU_PB_PSAVE_CFG_WSIZE_LEN>(0x1);
+
+ FAPI_TRY(fapi2::putScom(i_target,
+ PU_PB_PSAVE_CFG,
+ l_psave_cfg),
+ "Error from putScom (PU_PB_PSAVE_CFG)");
}
fapi_try_exit:
OpenPOWER on IntegriCloud