On Wed, 2022-06-08 at 13:33 -0700, José Roberto de Souza wrote: > Commit 3cf050762534 ("drm/i915/bios: Split VBT data into per-panel > vs. > global parts") cause PSR to be disabled when enable_psr has the > default value and there is at least one DP port that do not supports > PSR. > > That was happening because intel_psr_init() is called for every DP > port and then enable_psr is globaly set to 0 based on the PSR support > of the DP port. > > Here dropping the enable_psr overwritten and using the VBT PSR value > when enable_psr is set as default. Reviewed-by: Jouni Högander <jouni.hogander@xxxxxxxxx> > > Fixes: 3cf050762534 ("drm/i915/bios: Split VBT data into per-panel > vs. global parts") > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Cc: Jani Nikula <jani.nikula@xxxxxxxxx> > Cc: Jouni Högander <jouni.hogander@xxxxxxxxx> > Cc: Mika Kahola <mika.kahola@xxxxxxxxx> > Signed-off-by: José Roberto de Souza <jose.souza@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_psr.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c > b/drivers/gpu/drm/i915/display/intel_psr.c > index aedb3e0e69ecd..7d61c55184e51 100644 > --- a/drivers/gpu/drm/i915/display/intel_psr.c > +++ b/drivers/gpu/drm/i915/display/intel_psr.c > @@ -86,10 +86,13 @@ > > static bool psr_global_enabled(struct intel_dp *intel_dp) > { > + struct intel_connector *connector = intel_dp- > >attached_connector; > struct drm_i915_private *i915 = dp_to_i915(intel_dp); > > switch (intel_dp->psr.debug & I915_PSR_DEBUG_MODE_MASK) { > case I915_PSR_DEBUG_DEFAULT: > + if (i915->params.enable_psr == -1) > + return connector->panel.vbt.psr.enable; > return i915->params.enable_psr; > case I915_PSR_DEBUG_DISABLE: > return false; > @@ -2394,10 +2397,6 @@ void intel_psr_init(struct intel_dp *intel_dp) > > intel_dp->psr.source_support = true; > > - if (dev_priv->params.enable_psr == -1) > - if (!connector->panel.vbt.psr.enable) > - dev_priv->params.enable_psr = 0; > - > /* Set link_standby x link_off defaults */ > if (DISPLAY_VER(dev_priv) < 12) > /* For new platforms up to TGL let's respect VBT back > again */