diff options
-rw-r--r-- | drivers/gpu/drm/i915/display/intel_display_types.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/display/intel_pps.c | 13 |
2 files changed, 9 insertions, 5 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h index cfd042117b10..2e9fe2b93d18 100644 --- a/drivers/gpu/drm/i915/display/intel_display_types.h +++ b/drivers/gpu/drm/i915/display/intel_display_types.h @@ -1496,6 +1496,7 @@ struct intel_pps { */ bool pps_reset; struct edp_power_seq pps_delays; + struct edp_power_seq bios_pps_delays; }; struct intel_psr { diff --git a/drivers/gpu/drm/i915/display/intel_pps.c b/drivers/gpu/drm/i915/display/intel_pps.c index 80f8edb0d36d..f85dbd47eb60 100644 --- a/drivers/gpu/drm/i915/display/intel_pps.c +++ b/drivers/gpu/drm/i915/display/intel_pps.c @@ -1165,16 +1165,19 @@ static bool pps_delays_valid(struct edp_power_seq *delays) delays->t10 || delays->t11_t12; } -static void pps_init_delays_cur(struct intel_dp *intel_dp, - struct edp_power_seq *cur) +static void pps_init_delays_bios(struct intel_dp *intel_dp, + struct edp_power_seq *bios) { struct drm_i915_private *dev_priv = dp_to_i915(intel_dp); lockdep_assert_held(&dev_priv->pps_mutex); - intel_pps_readout_hw_state(intel_dp, cur); + if (!pps_delays_valid(&intel_dp->pps.bios_pps_delays)) + intel_pps_readout_hw_state(intel_dp, &intel_dp->pps.bios_pps_delays); - intel_pps_dump_state(intel_dp, "cur", cur); + *bios = intel_dp->pps.bios_pps_delays; + + intel_pps_dump_state(intel_dp, "bios", bios); } static void pps_init_delays_vbt(struct intel_dp *intel_dp, @@ -1242,7 +1245,7 @@ static void pps_init_delays(struct intel_dp *intel_dp) if (pps_delays_valid(final)) return; - pps_init_delays_cur(intel_dp, &cur); + pps_init_delays_bios(intel_dp, &cur); pps_init_delays_vbt(intel_dp, &vbt); pps_init_delays_spec(intel_dp, &spec); |