> -----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

Reply via email to