[PATCH v2 4/4] drm/i915/psr: Do not wait for PSR being idle on on Panel Replay
Hogander, Jouni
jouni.hogander at intel.com
Wed Sep 11 10:04:07 UTC 2024
Hello,
These are now pushed to drm-intel-next. Thank you Imre and Animesh for
your reviews.
BR,
Jouni Högander
On Tue, 2024-09-10 at 07:24 +0000, Manna, Animesh wrote:
>
>
> > -----Original Message-----
> > From: Hogander, Jouni <jouni.hogander at intel.com>
> > Sent: Friday, September 6, 2024 12:31 PM
> > To: intel-gfx at lists.freedesktop.org
> > Cc: Deak, Imre <imre.deak at intel.com>; Manna, Animesh
> > <animesh.manna at intel.com>; Hogander, Jouni
> > <jouni.hogander at intel.com>
> > Subject: [PATCH v2 4/4] drm/i915/psr: Do not wait for PSR being
> > idle on on
> > Panel Replay
> >
> > We do not have ALPM on DP Panel Replay. Due to this SRD_STATUS[SRD
> > State] doesn't change from SRDENT_ON after Panel Replay is enabled
> > until it
> > gets disabled.
> >
> > On eDP Panel Replay DEEP_SLEEP is not reached.
> > _psr2_ready_for_pipe_update_locked is waiting DEEP_SLEEP bit
> > getting
> > reset.
> >
> > Take these into account in Panel Replay code by not waiting PSR
> > getting idle
> > after enabling VBI.
> >
> > Fixes: 29fb595d4875 ("drm/i915/psr: Panel replay uses SRD_STATUS to
> > track
> > it's status")
> > Cc: Animesh Manna <animesh.manna at intel.com>
> > Signed-off-by: Jouni Högander <jouni.hogander at intel.com>
>
> LGTM.
> Reviewed-by: Animesh Manna <animesh.manna at intel.com>
>
> > ---
> > drivers/gpu/drm/i915/display/intel_psr.c | 13 ++-----------
> > 1 file changed, 2 insertions(+), 11 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> > b/drivers/gpu/drm/i915/display/intel_psr.c
> > index 581c409ce7309..1a4ef231a53ca 100644
> > --- a/drivers/gpu/drm/i915/display/intel_psr.c
> > +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> > @@ -2786,13 +2786,6 @@ static int
> > _psr1_ready_for_pipe_update_locked(struct intel_dp *intel_dp)
> > EDP_PSR_STATUS_STATE_MASK,
> > 50); }
> >
> > -static int _panel_replay_ready_for_pipe_update_locked(struct
> > intel_dp
> > *intel_dp) -{
> > - return intel_dp_is_edp(intel_dp) ?
> > - _psr2_ready_for_pipe_update_locked(intel_dp) :
> > - _psr1_ready_for_pipe_update_locked(intel_dp);
> > -}
> > -
> > /**
> > * intel_psr_wait_for_idle_locked - wait for PSR be ready for a
> > pipe update
> > * @new_crtc_state: new CRTC state
> > @@ -2815,12 +2808,10 @@ void intel_psr_wait_for_idle_locked(const
> > struct
> > intel_crtc_state *new_crtc_stat
> >
> > lockdep_assert_held(&intel_dp->psr.lock);
> >
> > - if (!intel_dp->psr.enabled)
> > + if (!intel_dp->psr.enabled || intel_dp-
> > > psr.panel_replay_enabled)
> > continue;
> >
> > - if (intel_dp->psr.panel_replay_enabled)
> > - ret =
> > _panel_replay_ready_for_pipe_update_locked(intel_dp);
> > - else if (intel_dp->psr.sel_update_enabled)
> > + if (intel_dp->psr.sel_update_enabled)
> > ret =
> > _psr2_ready_for_pipe_update_locked(intel_dp);
> > else
> > ret =
> > _psr1_ready_for_pipe_update_locked(intel_dp);
> > --
> > 2.34.1
>
More information about the Intel-gfx
mailing list