drm/i915/cdclk: Handle the force_min_cdclk state locking in intel_cdclk_atomic_check()

Clean up the mess inside intel_modeset_calc_cdclk() a bit by
moving the intel_atomic_lock_global_state() for force_min_cdclk
changes into intel_cdclk_atomic_check().

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250923171943.7319-9-ville.syrjala@linux.intel.com
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
This commit is contained in:
Ville Syrjälä 2025-09-23 20:19:30 +03:00
parent bcc492d712
commit f8dfd916fa

View File

@ -3229,7 +3229,7 @@ int intel_cdclk_atomic_check(struct intel_atomic_state *state,
bool *need_cdclk_calc)
{
const struct intel_cdclk_state *old_cdclk_state;
const struct intel_cdclk_state *new_cdclk_state;
struct intel_cdclk_state *new_cdclk_state;
struct intel_plane_state __maybe_unused *plane_state;
struct intel_plane *plane;
int ret;
@ -3258,8 +3258,13 @@ int intel_cdclk_atomic_check(struct intel_atomic_state *state,
new_cdclk_state = intel_atomic_get_new_cdclk_state(state);
if (new_cdclk_state &&
old_cdclk_state->force_min_cdclk != new_cdclk_state->force_min_cdclk)
old_cdclk_state->force_min_cdclk != new_cdclk_state->force_min_cdclk) {
ret = intel_atomic_lock_global_state(&new_cdclk_state->base);
if (ret)
return ret;
*need_cdclk_calc = true;
}
return 0;
}
@ -3332,8 +3337,7 @@ int intel_modeset_calc_cdclk(struct intel_atomic_state *state)
ret = intel_atomic_serialize_global_state(&new_cdclk_state->base);
if (ret)
return ret;
} else if (old_cdclk_state->force_min_cdclk != new_cdclk_state->force_min_cdclk ||
intel_cdclk_changed(&old_cdclk_state->logical,
} else if (intel_cdclk_changed(&old_cdclk_state->logical,
&new_cdclk_state->logical)) {
ret = intel_atomic_lock_global_state(&new_cdclk_state->base);
if (ret)