summaryrefslogtreecommitdiffstats
path: root/src/import
diff options
context:
space:
mode:
Diffstat (limited to 'src/import')
-rw-r--r--src/import/chips/p9/procedures/hwp/cache/p9_hcd_cache_chiplet_reset.C30
1 files changed, 28 insertions, 2 deletions
diff --git a/src/import/chips/p9/procedures/hwp/cache/p9_hcd_cache_chiplet_reset.C b/src/import/chips/p9/procedures/hwp/cache/p9_hcd_cache_chiplet_reset.C
index f5c7d147..a4ad100b 100644
--- a/src/import/chips/p9/procedures/hwp/cache/p9_hcd_cache_chiplet_reset.C
+++ b/src/import/chips/p9/procedures/hwp/cache/p9_hcd_cache_chiplet_reset.C
@@ -104,6 +104,7 @@ p9_hcd_cache_chiplet_reset(
uint64_t l_l2gmux_reset = 0;
uint8_t l_attr_chip_unit_pos = 0;
fapi2::buffer<uint8_t> l_attr_dd1_vcs_workaround;
+
fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> l_chip =
i_target.getParent<fapi2::TARGET_TYPE_PROC_CHIP>();
fapi2::Target<fapi2::TARGET_TYPE_PERV> l_perv =
@@ -296,6 +297,15 @@ p9_hcd_dd1_vcs_workaround(
uint32_t l_timeout;
uint32_t l_loop;
+#ifndef __PPE__
+ //This is to skip flushing the entire eq ring to 1's in simulation
+ //for the HW388878 workaround
+ fapi2::buffer<uint8_t> l_attr_is_simulation;
+
+ FAPI_TRY(FAPI_ATTR_GET(fapi2::ATTR_IS_SIMULATION, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(),
+ l_attr_is_simulation));
+#endif
+
l_regions = p9hcd::CLK_REGION_PERV |
p9hcd::CLK_REGION_EX0_L2 |
p9hcd::CLK_REGION_EX1_L2;
@@ -321,11 +331,27 @@ p9_hcd_dd1_vcs_workaround(
FAPI_DBG("Write scan data register via 0x1003E040");
- for (l_loop = 0; l_loop <= DD1_EQ_FURE_RING_LENGTH / 64; l_loop++)
+#ifndef __PPE__
+
+ if (l_attr_is_simulation)
{
- FAPI_DBG("Loop Count: %d", l_loop);
+ FAPI_DBG("SIMULATION ONLY WRITE ONCE");
FAPI_TRY(putScom(i_target, 0x1003E040, MASK_ALL));
}
+ else
+ {
+#endif
+
+ for (l_loop = 0; l_loop <= DD1_EQ_FURE_RING_LENGTH / 64; l_loop++)
+ {
+ FAPI_DBG("Loop Count: %d", l_loop);
+ FAPI_TRY(putScom(i_target, 0x1003E040, MASK_ALL));
+ }
+
+#ifndef __PPE__
+ }
+
+#endif
// -------------------------------
// Start Perv/L20/L21 clocks
OpenPOWER on IntegriCloud