drm/i915/pps: Reinit PPS delays after VBT has been fully parsed
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 10 May 2022 10:42:35 +0000 (13:42 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 27 May 2022 17:28:30 +0000 (20:28 +0300)
During the eDP probe we may not yet know the panel_type used
to index the VBT panel tables. So the initial eDP probe will have
to be done without that, and thus we won't yet have the PPS delays
from the VBT. Once the VBT has been fully parse we should reinit
the PPS delays to make sure it's fully accounted for.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220510104242.6099-9-ville.syrjala@linux.intel.com
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_pps.c

index b8053897dc68e4fc2b2954dbc75272cffec6b3e0..bcc70a329ecf9000ba031d0bbe0dd7a767d8d8c6 100644 (file)
@@ -1438,6 +1438,11 @@ void intel_pps_init_late(struct intel_dp *intel_dp)
        intel_wakeref_t wakeref;
 
        with_intel_pps_lock(intel_dp, wakeref) {
+               /* Reinit delays after per-panel info has been parsed from VBT */
+               memset(&intel_dp->pps.pps_delays, 0, sizeof(intel_dp->pps.pps_delays));
+               pps_init_delays(intel_dp);
+               pps_init_registers(intel_dp, false);
+
                if (edp_have_panel_vdd(intel_dp))
                        edp_panel_vdd_schedule_off(intel_dp);
        }