]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/cdclk: Relocate intel_plane_calc_min_cdclk() calls
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 23 Sep 2025 17:19:35 +0000 (20:19 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 10 Oct 2025 23:51:34 +0000 (02:51 +0300)
There's no reason to defer intel_plane_calc_min_cdclk() until
intel_cdclk_atomic_check(). Just do this as part of
intel_atomic_check_planes() (after we've added all the planes to
the state that affect the per-plane min_cdclk calculation).

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250923171943.7319-14-ville.syrjala@linux.intel.com
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
drivers/gpu/drm/i915/display/intel_cdclk.c
drivers/gpu/drm/i915/display/intel_plane.c
drivers/gpu/drm/i915/display/intel_plane.h

index 7017429506ee14ceab491aa8d6abee9a25d6fd60..7f62fa25ce0ce1d4704d751b91ddd06092645387 100644 (file)
@@ -3307,23 +3307,12 @@ int intel_cdclk_atomic_check(struct intel_atomic_state *state,
 {
        const struct intel_cdclk_state *old_cdclk_state;
        struct intel_cdclk_state *new_cdclk_state;
-       struct intel_plane_state __maybe_unused *plane_state;
-       struct intel_plane *plane;
        int ret;
-       int i;
 
        ret = intel_cdclk_modeset_checks(state, need_cdclk_calc);
        if (ret)
                return ret;
 
-       /*
-        * active_planes bitmask has been updated, and potentially affected
-        * planes are part of the state. We can now compute the minimum cdclk
-        * for each plane.
-        */
-       for_each_new_intel_plane_in_state(state, plane, plane_state, i)
-               intel_plane_calc_min_cdclk(state, plane);
-
        ret = intel_crtcs_calc_min_cdclk(state, need_cdclk_calc);
        if (ret)
                return ret;
index a1ca8547a3daf1a91a0f4cd164c6be911e1f3d9c..074de9275951fdfb29dbb991dad910f925b0ac3d 100644 (file)
@@ -291,8 +291,8 @@ intel_plane_relative_data_rate(const struct intel_crtc_state *crtc_state,
                                   rel_data_rate);
 }
 
-void intel_plane_calc_min_cdclk(struct intel_atomic_state *state,
-                               struct intel_plane *plane)
+static void intel_plane_calc_min_cdclk(struct intel_atomic_state *state,
+                                      struct intel_plane *plane)
 {
        const struct intel_plane_state *plane_state =
                intel_atomic_get_new_plane_state(state, plane);
@@ -1700,5 +1700,8 @@ int intel_plane_atomic_check(struct intel_atomic_state *state)
                        return ret;
        }
 
+       for_each_new_intel_plane_in_state(state, plane, plane_state, i)
+               intel_plane_calc_min_cdclk(state, plane);
+
        return 0;
 }
index c6bef1b3471d31421a631ef2823fcb576025dec3..4e99df9de3e897689f5e5348bdb63881e3860be9 100644 (file)
@@ -69,8 +69,6 @@ int intel_plane_atomic_check_with_state(const struct intel_crtc_state *old_crtc_
                                        struct intel_crtc_state *crtc_state,
                                        const struct intel_plane_state *old_plane_state,
                                        struct intel_plane_state *intel_state);
-void intel_plane_calc_min_cdclk(struct intel_atomic_state *state,
-                               struct intel_plane *plane);
 int intel_plane_check_clipping(struct intel_plane_state *plane_state,
                               struct intel_crtc_state *crtc_state,
                               int min_scale, int max_scale,