]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/i915/alpm: Use actual lfps cycle and silence periods in wake time
authorJouni Högander <jouni.hogander@intel.com>
Fri, 29 Aug 2025 05:39:28 +0000 (08:39 +0300)
committerJouni Högander <jouni.hogander@intel.com>
Fri, 5 Sep 2025 05:35:47 +0000 (08:35 +0300)
Currently we are using maximum lfps cycle and silence period times when
calculating AUXLess wake time. Use actual values instead.

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Animesh Manna <animesh.manna@intel.com>
Link: https://lore.kernel.org/r/20250829053929.3585636-5-jouni.hogander@intel.com
drivers/gpu/drm/i915/display/intel_alpm.c

index b061f7165bbaadf671f324b48f5a7ad6c0450d8a..ed7a7ed486b55b6ca97af3c25cb2118b9af42923 100644 (file)
@@ -116,21 +116,19 @@ static int get_lfps_half_cycle_clocks(const struct intel_crtc_state *crtc_state)
  * tML_PHY_LOCK = TPS4 Length * ( 10 / (Link Rate in MHz) )
  * TPS4 Length = 252 Symbols
  */
-static int _lnl_compute_aux_less_wake_time(int port_clock)
+static int _lnl_compute_aux_less_wake_time(const struct intel_crtc_state *crtc_state)
 {
        int tphy2_p2_to_p0 = 12 * 1000;
-       int tlfps_period_max = 800;
-       int tsilence_max = 180;
        int t1 = 50 * 1000;
        int tps4 = 252;
        /* port_clock is link rate in 10kbit/s units */
-       int tml_phy_lock = 1000 * 1000 * tps4 / port_clock;
+       int tml_phy_lock = 1000 * 1000 * tps4 / crtc_state->port_clock;
        int num_ml_phy_lock = 7 + DIV_ROUND_UP(6500, tml_phy_lock) + 1;
        int t2 = num_ml_phy_lock * tml_phy_lock;
        int tcds = 1 * t2;
 
-       return DIV_ROUND_UP(tphy2_p2_to_p0 + tlfps_period_max + tsilence_max +
-                           t1 + tcds, 1000);
+       return DIV_ROUND_UP(tphy2_p2_to_p0 + get_lfps_cycle_time(crtc_state) +
+                           SILENCE_PERIOD_TIME + t1 + tcds, 1000);
 }
 
 static int
@@ -142,7 +140,7 @@ _lnl_compute_aux_less_alpm_params(struct intel_dp *intel_dp,
                lfps_half_cycle;
 
        aux_less_wake_time =
-               _lnl_compute_aux_less_wake_time(crtc_state->port_clock);
+               _lnl_compute_aux_less_wake_time(crtc_state);
        aux_less_wake_lines = intel_usecs_to_scanlines(&crtc_state->hw.adjusted_mode,
                                                       aux_less_wake_time);
        silence_period = get_silence_period_symbols(crtc_state);