RE: [PATCH 2/2] drm/i915/display: Keep AS SDP flowing when skip frames is enabled
"Shankar, Uma" <[email protected]> Tue, 4 Aug 2026 07:50:21 +0000
| Newsgroups | org.freedesktop.lists.intel-xe,org.freedesktop.lists.intel-gfx |
|---|---|
| Message-ID | <DM4PR11MB6360D72489B3C836FFE68E68F4D42@DM4PR11MB6360.namprd11.prod.outlook.com> |
> -----Original Message----- > From: Dibin Moolakadan Subrahmanian > <[email protected]> > Sent: Tuesday, August 4, 2026 12:52 PM > To: Shankar, Uma <[email protected]>; [email protected]= ; > [email protected] > Cc: Manna, Animesh <[email protected]> > Subject: Re: [PATCH 2/2] drm/i915/display: Keep AS SDP flowing when skip > frames is enabled >=20 > On 8/4/2026 12:23 AM, Uma Shankar wrote: > > The AS SDP skip-frame mechanism relies on the AS SDP still being > > transmitted (just less often) while Panel Replay is active, so the > > source must not stop sending it in the PR active state, nor enter the > > DC3CO idle protocol which would suppress it entirely. > > > > When a non-zero skip-frame count is programmed, leave both > > PR_ALPM_CTL_AS_SDP_TRANSMISSION_IN_ACTIVE_DISABLE and > > PR_ALPM_CTL_USE_DC3CO_IDLE_PROTOCOL cleared. The previous > behaviour > > (honouring disable_as_sdp_when_pr_active and the DC3CO idle protocol) > > is retained for the non skip-frame case. > > > > Assisted-by: Claude:claude-opus-4-8 > > Signed-off-by: Naladala Ramanaidu <[email protected]> > > Signed-off-by: Uma Shankar <[email protected]> > > --- > > drivers/gpu/drm/i915/display/intel_alpm.c | 28 +++++++++++++++-------= - > > 1 file changed, 19 insertions(+), 9 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c > > b/drivers/gpu/drm/i915/display/intel_alpm.c > > index 0f98f02a1848..7e2292f93e1e 100644 > > --- a/drivers/gpu/drm/i915/display/intel_alpm.c > > +++ b/drivers/gpu/drm/i915/display/intel_alpm.c > > @@ -439,21 +439,31 @@ static void lnl_alpm_configure(struct intel_dp > > *intel_dp, > > > > if (intel_dp->as_sdp_supported) { > > u32 pr_alpm_ctl =3D > > get_pr_alpm_as_sdp_transmission_time(crtc_state); > > + u32 skip_frames =3D 0; > > + > > + /* AS SDP skip frames field only exists on Xe3LPD+ */ > > + if (DISPLAY_VER(display) >=3D 35) > > + skip_frames =3D > intel_pr_as_sdp_skip_frames(crtc_state); > > > > if (crtc_state->link_off_after_as_sdp_when_pr_active) > > pr_alpm_ctl |=3D > PR_ALPM_CTL_ALLOW_LINK_OFF_BETWEEN_AS_SDP_AND_SU; > > - if (crtc_state->disable_as_sdp_when_pr_active) > > - pr_alpm_ctl |=3D > PR_ALPM_CTL_AS_SDP_TRANSMISSION_IN_ACTIVE_DISABLE; > > > > - if (intel_display_power_dc3co_allowed(display)) > > - pr_alpm_ctl |=3D > PR_ALPM_CTL_USE_DC3CO_IDLE_PROTOCOL; > > - else > > + /* > > + * Skip frames needs the AS SDP to keep flowing during > PR > > + * active, so it is mutually exclusive with disabling AS > SDP > > + * transmission in active and with the DC3CO idle > protocol. > > + */ > > + if (skip_frames) { > > + pr_alpm_ctl |=3D > PR_ALPM_CTL_AS_SDP_SKIP_FRAMES(skip_frames); > > + pr_alpm_ctl &=3D > > +~PR_ALPM_CTL_AS_SDP_TRANSMISSION_IN_ACTIVE_DISABLE; > > pr_alpm_ctl &=3D > ~PR_ALPM_CTL_USE_DC3CO_IDLE_PROTOCOL; > > + } else { > > + if (crtc_state->disable_as_sdp_when_pr_active) > > + pr_alpm_ctl |=3D > > +PR_ALPM_CTL_AS_SDP_TRANSMISSION_IN_ACTIVE_DISABLE; > > > > - /* AS SDP skip frames field only exists on Xe3LPD+ */ > > - if (DISPLAY_VER(display) >=3D 35) > > - pr_alpm_ctl |=3D > PR_ALPM_CTL_AS_SDP_SKIP_FRAMES( > > - intel_pr_as_sdp_skip_frames(crtc_state)); > > + if (intel_display_power_dc3co_allowed(display)) > > + pr_alpm_ctl |=3D > PR_ALPM_CTL_USE_DC3CO_IDLE_PROTOCOL; > Do we also need to clear the AS SDP skip frame bits here? Yeah we should explicitly clear it to 0 here. Will update the same. Thanks Dibin for the review. Regards, Uma Shankar > Otherwise, LGTM. >=20 > Regards, > Dibin >=20 > > + } > > > > intel_de_write(display, PR_ALPM_CTL(display, > cpu_transcoder), > > pr_alpm_ctl);