On Thu, 2026-02-26 at 11:12 +0200, Ville Syrjälä wrote:
> On Thu, Feb 12, 2026 at 08:27:31AM +0200, Jouni Högander wrote:
> > PORT_ALPM_CTL is supposed to be written only before link training.
> > Remove
> > writing it from ALPM disable.
> > 
> > Also clearing ALPM_CTL_ALPM_AUX_LESS_ENABLE and is not about
> > disabling ALPM
> > but switching to AUX-Wake ALPM. Stop touching this bit on ALPM
> > disable.
> 
> There's another open coded variant of this in
> intel_alpm_lobf_disable(),
> and that thing also gets passed the wrong crtc_state (new instead of
> old).

Ok, I missed that part. I think we could clear only LOBF bit in
intel_alpm_lobf_disable and then share intel_alpm_disable.

> 
> Also LOBF enable is now being done from two places
> (intel_alpm_lobf_enable()
> and intel_psr_enable_source()). How those two interact is anyone's
> guess.

LOBF wont be enabled via intel_psr_enable_source. PSR and LOBF are
mutually exclusive. Maybe it would more clear if LOBF enable bit is
written separately and only other configuration is shared between PSR
and LOBF. Any other suggestions?
> 
> > 
> > Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/7153
> > Fixes: 1ccbf135862b ("drm/i915/psr: Enable ALPM on source side for
> > eDP Panel replay")
> > Cc: Animesh Manna <[email protected]>
> > Cc: Jani Nikula <[email protected]>
> > Cc: <[email protected]> # v6.10+
> > Signed-off-by: Jouni Högander <[email protected]>
> > ---
> >  drivers/gpu/drm/i915/display/intel_alpm.c | 7 +------
> >  1 file changed, 1 insertion(+), 6 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c
> > b/drivers/gpu/drm/i915/display/intel_alpm.c
> > index e0a4a59dc025..b3334bc4d0f9 100644
> > --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> > +++ b/drivers/gpu/drm/i915/display/intel_alpm.c
> > @@ -604,12 +604,7 @@ void intel_alpm_disable(struct intel_dp
> > *intel_dp)
> >     mutex_lock(&intel_dp->alpm.lock);
> >  
> >     intel_de_rmw(display, ALPM_CTL(display, cpu_transcoder),
> > -                ALPM_CTL_ALPM_ENABLE | ALPM_CTL_LOBF_ENABLE |
> > -                ALPM_CTL_ALPM_AUX_LESS_ENABLE, 0);
> > -
> > -   intel_de_rmw(display,
> > -                PORT_ALPM_CTL(cpu_transcoder),
> > -                PORT_ALPM_CTL_ALPM_AUX_LESS_ENABLE, 0);
> > +                ALPM_CTL_ALPM_ENABLE | ALPM_CTL_LOBF_ENABLE,
> > 0);
> >  
> >     drm_dbg_kms(display->drm, "Disabling ALPM\n");
> >     mutex_unlock(&intel_dp->alpm.lock);
> > -- 
> > 2.43.0
> 

Reply via email to