summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c
index b094e368..4e11cd8d 100644
--- a/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c
+++ b/import/chips/p9/procedures/ppe_closed/pgpe/pstate_gpe/p9_pgpe_pstate.c
@@ -75,12 +75,20 @@ void p9_pgpe_pstate_init()
ccsr.value = in32(OCB_CCSR);
G_pgpe_pstate_record.pstatesStatus = PSTATE_INIT;
- G_pgpe_pstate_record.safePstate = (G_gppb->reference_frequency_khz - G_gppb->safe_frequency_khz +
- (G_gppb->frequency_step_khz - 1)) / G_gppb->frequency_step_khz;
-#if OVERRIDE_PSAFE_PSTATE == 1
- G_pgpe_pstate_record.safePstate = G_gppb->operating_points_set[VPD_PT_SET_BIASED_SYSP][POWERSAVE].pstate;
-#endif
+
+ if (G_gppb->safe_frequency_khz)
+ {
+ G_pgpe_pstate_record.safePstate = (G_gppb->reference_frequency_khz - G_gppb->safe_frequency_khz -
+ (G_gppb->frequency_step_khz)) / G_gppb->frequency_step_khz;
+ }
+ else
+ {
+ G_pgpe_pstate_record.safePstate = G_gppb->operating_points_set[VPD_PT_SET_BIASED_SYSP][POWERSAVE].pstate;
+ PK_TRACE_INF("Safe Frequency is NOT set. Using POWERSAVE as Pstate as safe");
+ }
+
PK_TRACE_INF("SafePstate=0x%x", G_pgpe_pstate_record.safePstate);
+ PK_TRACE_INF("SafeFrequency=0x%x,SafeVoltage=0x%x", G_gppb->safe_frequency_khz, G_gppb->safe_voltage_mv);
for (q = 0; q < MAX_QUADS; q++)
{
@@ -246,9 +254,8 @@ void p9_pgpe_pstate_apply_clips()
for (q = 0; q < MAX_QUADS; q++)
{
uint8_t minPS = G_pgpe_pstate_record.psClipMin[q];
- uint8_t maxPS = G_pgpe_pstate_record.psClipMax[q] <
- G_gppb->operating_points_set[VPD_PT_SET_BIASED_SYSP][POWERSAVE].pstate ?
- G_pgpe_pstate_record.psClipMax[q] : G_gppb->operating_points_set[VPD_PT_SET_BIASED_SYSP][POWERSAVE].pstate;
+ uint8_t maxPS = G_pgpe_pstate_record.psClipMax[q] < G_pgpe_pstate_record.safePstate ?
+ G_pgpe_pstate_record.psClipMax[q] : G_pgpe_pstate_record.safePstate;
if (G_pgpe_pstate_record.activeQuads & QUAD_MASK(q))
{
OpenPOWER on IntegriCloud