]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/vrr: Make helpers for cmrr and vrr timings
authorAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Tue, 11 Mar 2025 09:37:46 +0000 (15:07 +0530)
committerAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Thu, 13 Mar 2025 12:15:26 +0000 (17:45 +0530)
Separate out functions for computing cmrr and vrr timings.

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250311093751.1329043-4-ankit.k.nautiyal@intel.com
drivers/gpu/drm/i915/display/intel_vrr.c

index a88b77114867c1ed0c1c45941297a3f377b3c51c..db0ea206e26ea1b87cd755aa19f3f78f67c8167f 100644 (file)
@@ -222,6 +222,30 @@ cmrr_get_vtotal(struct intel_crtc_state *crtc_state, bool video_mode_required)
        return vtotal;
 }
 
+static
+void intel_vrr_compute_cmrr_timings(struct intel_crtc_state *crtc_state)
+{
+       crtc_state->vrr.enable = true;
+       crtc_state->cmrr.enable = true;
+       /*
+        * TODO: Compute precise target refresh rate to determine
+        * if video_mode_required should be true. Currently set to
+        * false due to uncertainty about the precise target
+        * refresh Rate.
+        */
+       crtc_state->vrr.vmax = cmrr_get_vtotal(crtc_state, false);
+       crtc_state->vrr.vmin = crtc_state->vrr.vmax;
+       crtc_state->vrr.flipline = crtc_state->vrr.vmin;
+       crtc_state->mode_flags |= I915_MODE_FLAG_VRR;
+}
+
+static
+void intel_vrr_compute_vrr_timings(struct intel_crtc_state *crtc_state)
+{
+       crtc_state->vrr.enable = true;
+       crtc_state->mode_flags |= I915_MODE_FLAG_VRR;
+}
+
 static
 int intel_vrr_compute_vmin(struct intel_connector *connector,
                           const struct drm_display_mode *adjusted_mode)
@@ -298,23 +322,10 @@ intel_vrr_compute_config(struct intel_crtc_state *crtc_state,
         */
        crtc_state->vrr.vmin -= intel_vrr_flipline_offset(display);
 
-       if (crtc_state->uapi.vrr_enabled) {
-               crtc_state->vrr.enable = true;
-               crtc_state->mode_flags |= I915_MODE_FLAG_VRR;
-       } else if (is_cmrr_frac_required(crtc_state) && is_edp) {
-               crtc_state->vrr.enable = true;
-               crtc_state->cmrr.enable = true;
-               /*
-                * TODO: Compute precise target refresh rate to determine
-                * if video_mode_required should be true. Currently set to
-                * false due to uncertainty about the precise target
-                * refresh Rate.
-                */
-               crtc_state->vrr.vmax = cmrr_get_vtotal(crtc_state, false);
-               crtc_state->vrr.vmin = crtc_state->vrr.vmax;
-               crtc_state->vrr.flipline = crtc_state->vrr.vmin;
-               crtc_state->mode_flags |= I915_MODE_FLAG_VRR;
-       }
+       if (crtc_state->uapi.vrr_enabled)
+               intel_vrr_compute_vrr_timings(crtc_state);
+       else if (is_cmrr_frac_required(crtc_state) && is_edp)
+               intel_vrr_compute_cmrr_timings(crtc_state);
 
        if (HAS_AS_SDP(display)) {
                crtc_state->vrr.vsync_start =