On Mon, 2024-01-29 at 02:08 +0000, Murthy, Arun R wrote: > > > > -----Original Message----- > > From: Intel-gfx <intel-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf > > Of Jouni > > Högander > > Sent: Friday, January 5, 2024 7:45 PM > > To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx > > Subject: [PATCH v2 3/4] drm/i915/alpm: Calculate ALPM Entry check > > > > ALPM Entry Check represents the number of lines needed to put the > > main link > > to sleep and keep it in the sleep state before it can be taken out > > of the SLEEP > > state (eDP requires the main link to be in the SLEEP state for a > > minimum of > > 5us). > > > > Bspec: 71477 > > > > Signed-off-by: Jouni Högander <jouni.hogander@xxxxxxxxx> > > --- > > .../drm/i915/display/intel_display_types.h | 3 ++ > > drivers/gpu/drm/i915/display/intel_psr.c | 28 > > +++++++++++++++++++ > > 2 files changed, 31 insertions(+) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h > > b/drivers/gpu/drm/i915/display/intel_display_types.h > > index 889a8b34b7ac..7eddef859ff4 100644 > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h > > @@ -1680,6 +1680,9 @@ struct intel_pps { struct alpm_parameters { > > u8 io_wake_lines; > > u8 fast_wake_lines; > > + > > + /* LNL and beyond */ > > + u8 check_entry_lines; > > }; > > > > struct intel_psr { > > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c > > b/drivers/gpu/drm/i915/display/intel_psr.c > > index 1709ebb31215..7fbd18f21c3b 100644 > > --- a/drivers/gpu/drm/i915/display/intel_psr.c > > +++ b/drivers/gpu/drm/i915/display/intel_psr.c > > @@ -1099,6 +1099,28 @@ static bool > > _compute_psr2_sdp_prior_scanline_indication(struct intel_dp > > *intel_d > > return true; > > } > > > > +static bool _lnl_compute_alpm_params(struct intel_dp *intel_dp, > > + struct intel_crtc_state > > *crtc_state) { > > + struct drm_i915_private *i915 = dp_to_i915(intel_dp); > > + struct alpm_parameters *alpm_params = &intel_dp- > > >psr.alpm_params; > > + int check_entry_lines; > > + > > + /* ALPM Entry Check = 2 + CEILING( 5us /tline ) */ > > + check_entry_lines = 2 + > > + intel_usecs_to_scanlines(&crtc_state- > > >hw.adjusted_mode, 5); > > + > > + if (check_entry_lines > 15) > > + return false; > > + > > + if (i915->display.params.psr_safest_params) > > + check_entry_lines = 15; > > + > > + alpm_params->check_entry_lines = check_entry_lines; > > + > > + return true; > > +} > > + > > static bool _compute_alpm_params(struct intel_dp *intel_dp, > > struct intel_crtc_state > > *crtc_state) { @@ - > > 1114,6 +1136,8 @@ static bool _compute_alpm_params(struct intel_dp > > *intel_dp, > > * it is not enough -> use 45 us. > > */ > > fast_wake_time = 45; > > + > > + /* TODO: Check how we can use ALPM_CTL fast wake > > extended > > field */ > > max_wake_lines = 12; > > } else { > > io_wake_time = 50; > > @@ -1130,6 +1154,10 @@ static bool _compute_alpm_params(struct > > intel_dp > > *intel_dp, > > fast_wake_lines > max_wake_lines) > > return false; > > > > + if (DISPLAY_VER(i915) >= 20 && > > !_lnl_compute_alpm_params(intel_dp, > > + > > crtc_state)) > The function name _lnl_*** indicates it should be display ver 20. So > can this display ver check be moved to _lnl_*** ? Yes, I can do that. BR, Jouni Högander > > Thanks and Regards, > Arun R Murthy > ------------------- > > + return false; > > + > > if (i915->display.params.psr_safest_params) > > io_wake_lines = fast_wake_lines = max_wake_lines; > > > > -- > > 2.34.1 >