]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/cdclk: abstract intel_cdclk_pmdemand_needs_update()
authorJani Nikula <jani.nikula@intel.com>
Wed, 25 Jun 2025 10:32:30 +0000 (13:32 +0300)
committerJani Nikula <jani.nikula@intel.com>
Thu, 26 Jun 2025 08:55:54 +0000 (11:55 +0300)
Add intel_cdclk_pmdemand_needs_update() helper to avoid looking at
struct intel_cdclk_state internals outside of intel_cdclk.c.

Reviewed-by: Imre Deak <imre.deak@intel.com>
Link: https://lore.kernel.org/r/d0d4f073707a2badb432187f6e02d6d7f9fe431b.1750847509.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_cdclk.c
drivers/gpu/drm/i915/display/intel_cdclk.h
drivers/gpu/drm/i915/display/intel_pmdemand.c

index baec4042e4b6687b7b1bc84440b687df82ac39c1..a0c254f942fddbc2cdd2556880b58a60aaa86869 100644 (file)
@@ -3849,3 +3849,18 @@ int intel_cdclk_bw_min_cdclk(const struct intel_cdclk_state *cdclk_state)
 {
        return cdclk_state->bw_min_cdclk;
 }
+
+bool intel_cdclk_pmdemand_needs_update(struct intel_atomic_state *state)
+{
+       const struct intel_cdclk_state *new_cdclk_state, *old_cdclk_state;
+
+       new_cdclk_state = intel_atomic_get_new_cdclk_state(state);
+       old_cdclk_state = intel_atomic_get_old_cdclk_state(state);
+
+       if (new_cdclk_state &&
+           (new_cdclk_state->actual.cdclk != old_cdclk_state->actual.cdclk ||
+            new_cdclk_state->actual.voltage_level != old_cdclk_state->actual.voltage_level))
+               return true;
+
+       return false;
+}
index fe1a1f1c19002acb895cccfe4d0c05afb2f8c5fd..8527a6e44ee59a362da17966b12dc06192589dd5 100644 (file)
@@ -100,5 +100,6 @@ void intel_cdclk_debugfs_register(struct intel_display *display);
 int intel_cdclk_logical(const struct intel_cdclk_state *cdclk_state);
 int intel_cdclk_min_cdclk(const struct intel_cdclk_state *cdclk_state, enum pipe pipe);
 int intel_cdclk_bw_min_cdclk(const struct intel_cdclk_state *cdclk_state);
+bool intel_cdclk_pmdemand_needs_update(struct intel_atomic_state *state);
 
 #endif /* __INTEL_CDCLK_H__ */
index a4d53fd944898ae82d067787b32aa08593276477..16ef68ef4041c6371c3be7553b13464ccfe3d835 100644 (file)
@@ -294,7 +294,6 @@ intel_pmdemand_connector_needs_update(struct intel_atomic_state *state)
 
 static bool intel_pmdemand_needs_update(struct intel_atomic_state *state)
 {
-       const struct intel_cdclk_state *new_cdclk_state, *old_cdclk_state;
        const struct intel_crtc_state *new_crtc_state, *old_crtc_state;
        struct intel_crtc *crtc;
        int i;
@@ -305,13 +304,7 @@ static bool intel_pmdemand_needs_update(struct intel_atomic_state *state)
        if (intel_dbuf_pmdemand_needs_update(state))
                return true;
 
-       new_cdclk_state = intel_atomic_get_new_cdclk_state(state);
-       old_cdclk_state = intel_atomic_get_old_cdclk_state(state);
-       if (new_cdclk_state &&
-           (new_cdclk_state->actual.cdclk !=
-            old_cdclk_state->actual.cdclk ||
-            new_cdclk_state->actual.voltage_level !=
-            old_cdclk_state->actual.voltage_level))
+       if (intel_cdclk_pmdemand_needs_update(state))
                return true;
 
        for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,