> -----Original Message----- > From: Intel-gfx <intel-gfx-boun...@lists.freedesktop.org> On Behalf Of Jouni > Högander > Sent: Wednesday, August 13, 2025 12:36 PM > To: intel-gfx@lists.freedesktop.org; intel...@lists.freedesktop.org > Cc: Hogander, Jouni <jouni.hogan...@intel.com> > Subject: [PATCH 1/4] drm/i915/alpm: Calculate silence period > > Calculate silence period instead of hardcoding it in switch case. > > Signed-off-by: Jouni Högander <jouni.hogan...@intel.com>
LGTM. Reviewed-by: Animesh Manna <animesh.ma...@intel.com> > --- > drivers/gpu/drm/i915/display/intel_alpm.c | 37 +++++++++++------------ > 1 file changed, 17 insertions(+), 20 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c > b/drivers/gpu/drm/i915/display/intel_alpm.c > index dfdde8e4eabe..e48a4218c163 100644 > --- a/drivers/gpu/drm/i915/display/intel_alpm.c > +++ b/drivers/gpu/drm/i915/display/intel_alpm.c > @@ -16,6 +16,12 @@ > #include "intel_psr.h" > #include "intel_psr_regs.h" > > +#define SILENCE_PERIOD_MIN_TIME 80 > +#define SILENCE_PERIOD_MAX_TIME 180 > +#define SILENCE_PERIOD_TIME (SILENCE_PERIOD_MIN_TIME + \ > + (SILENCE_PERIOD_MAX_TIME - \ > + SILENCE_PERIOD_MIN_TIME) / 2) > + > bool intel_alpm_aux_wake_supported(struct intel_dp *intel_dp) { > return intel_dp->alpm_dpcd & DP_ALPM_CAP; @@ -44,11 +50,15 > @@ void intel_alpm_init(struct intel_dp *intel_dp) > mutex_init(&intel_dp->alpm_parameters.lock); > } > > +static int get_silence_period_symbols(const struct intel_crtc_state > +*crtc_state) { > + return SILENCE_PERIOD_TIME * > intel_dp_link_symbol_clock(crtc_state->port_clock) / > + 1000 / 1000; > +} > + > /* > * See Bspec: 71632 for the table > * > - * Silence_period = tSilence,Min + ((tSilence,Max - tSilence,Min) / 2) > - * > * Half cycle duration: > * > * Link rates 1.62 - 4.32 and tLFPS_Cycle = 70 ns @@ -60,53 +70,41 @@ void > intel_alpm_init(struct intel_dp *intel_dp) > * FLOOR( LFPS Period in Symbol clocks / > * (2 * PORT_ALPM_LFPS_CTL[ LFPS Cycle Count ]) ) > */ > -static bool _lnl_get_silence_period_and_lfps_half_cycle(int link_rate, > - int *silence_period, > - int *lfps_half_cycle) > +static bool _lnl_get_lfps_half_cycle(int link_rate, int > +*lfps_half_cycle) > { > switch (link_rate) { > case 162000: > - *silence_period = 20; > *lfps_half_cycle = 5; > break; > case 216000: > - *silence_period = 27; > *lfps_half_cycle = 7; > break; > case 243000: > - *silence_period = 31; > *lfps_half_cycle = 8; > break; > case 270000: > - *silence_period = 34; > *lfps_half_cycle = 9; > break; > case 324000: > - *silence_period = 41; > *lfps_half_cycle = 11; > break; > case 432000: > - *silence_period = 56; > *lfps_half_cycle = 15; > break; > case 540000: > - *silence_period = 69; > *lfps_half_cycle = 12; > break; > case 648000: > - *silence_period = 84; > *lfps_half_cycle = 15; > break; > case 675000: > - *silence_period = 87; > *lfps_half_cycle = 15; > break; > case 810000: > - *silence_period = 104; > *lfps_half_cycle = 19; > break; > default: > - *silence_period = *lfps_half_cycle = -1; > + *lfps_half_cycle = -1; > return false; > } > return true; > @@ -160,10 +158,9 @@ _lnl_compute_aux_less_alpm_params(struct > intel_dp *intel_dp, > _lnl_compute_aux_less_wake_time(crtc_state->port_clock); > aux_less_wake_lines = intel_usecs_to_scanlines(&crtc_state- > >hw.adjusted_mode, > aux_less_wake_time); > - > - if (!_lnl_get_silence_period_and_lfps_half_cycle(crtc_state- > >port_clock, > - &silence_period, > - &lfps_half_cycle)) > + silence_period = get_silence_period_symbols(crtc_state); > + if (!_lnl_get_lfps_half_cycle(crtc_state->port_clock, > + &lfps_half_cycle)) > return false; > > if (aux_less_wake_lines > ALPM_CTL_AUX_LESS_WAKE_TIME_MASK > || > -- > 2.43.0