diff options
| author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2025-09-23 20:19:30 +0300 |
|---|---|---|
| committer | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2025-10-11 02:50:15 +0300 |
| commit | f8dfd916fa9f192aaa4a24b6b5e9c0ac4888bfa9 (patch) | |
| tree | ee8040caa2687829c75bd38d264119f9520e8a55 /drivers/gpu | |
| parent | bcc492d712f53946c4b434e2fad5650637af0c68 (diff) | |
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>
Diffstat (limited to 'drivers/gpu')
| -rw-r--r-- | drivers/gpu/drm/i915/display/intel_cdclk.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c index ce3d47b6b7aa..0ef87e0aaeb1 100644 --- a/drivers/gpu/drm/i915/display/intel_cdclk.c +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c @@ -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) |
