]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/dp_mst: Use VRR Timing generator for DP MST for fixed_rr
authorAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Mon, 24 Mar 2025 13:32:34 +0000 (19:02 +0530)
committerAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Tue, 25 Mar 2025 15:45:55 +0000 (21:15 +0530)
Currently the variable timings are supported only for DP and eDP and not
for DP MST. Call intel_vrr_compute_config() for MST which will configure
fixed refresh rate timings irrespective of whether VRR is supported or
not. Since vrr_capable still doesn't have support for DP MST this will be
just treated as non VRR case and vrr.vmin/vmax/flipline will be all set
to adjusted_mode->crtc_vtotal.

This will help to move away from the legacy timing generator and
always use VRR timing generator by default.

With this change, we need to exclude MST in intel_vrr_is_capable for
now, to avoid having LRR with MST.

v2: Exclude MST in intel_vrr_is_capable() for now. (Ville)

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://lore.kernel.org/r/20250324133248.4071909-3-ankit.k.nautiyal@intel.com
drivers/gpu/drm/i915/display/intel_dp_mst.c
drivers/gpu/drm/i915/display/intel_vrr.c

index 02f95108c63799b123fcee4f387a16aab9ad6d27..bd47cf127b4c0b9fc7d0240fbbb19253ea70ab7d 100644 (file)
@@ -52,6 +52,7 @@
 #include "intel_pfit.h"
 #include "intel_psr.h"
 #include "intel_vdsc.h"
+#include "intel_vrr.h"
 #include "skl_scaler.h"
 
 /*
@@ -710,6 +711,8 @@ static int mst_stream_compute_config(struct intel_encoder *encoder,
                pipe_config->lane_lat_optim_mask =
                        bxt_dpio_phy_calc_lane_lat_optim_mask(pipe_config->lane_count);
 
+       intel_vrr_compute_config(pipe_config, conn_state);
+
        intel_dp_audio_compute_config(encoder, pipe_config, conn_state);
 
        intel_ddi_compute_min_voltage_level(pipe_config);
index 6bdcdfed4b9b2dc4bad65e6b2b51c465d7832efd..c682c487eb255ff462fdf6012ac2981a198d1cc4 100644 (file)
@@ -32,6 +32,8 @@ bool intel_vrr_is_capable(struct intel_connector *connector)
                        return false;
                fallthrough;
        case DRM_MODE_CONNECTOR_DisplayPort:
+               if (connector->mst.dp)
+                       return false;
                intel_dp = intel_attached_dp(connector);
 
                if (!drm_dp_sink_can_do_video_without_timing_msa(intel_dp->dpcd))