]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/alpm: Disable LOBF around transitioning for LRR/seamless MN
authorAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Wed, 4 Feb 2026 05:02:50 +0000 (10:32 +0530)
committerAnkit Nautiyal <ankit.k.nautiyal@intel.com>
Thu, 5 Feb 2026 08:50:30 +0000 (14:20 +0530)
When enabling LRR/seamless MN disable LOBF first and re-enable
afterwards.
- pre_plane_update: if LOBF was enabled, disable LOBF before the
  update_lrr/update_m_n transition.
- post_plane_update: Re-enable LOBF after the transition.

Signed-off-by: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
Reviewed-by: MichaƂ Grzelak <michal.grzelak@intel.com>
Link: https://patch.msgid.link/20260204050250.762718-6-ankit.k.nautiyal@intel.com
drivers/gpu/drm/i915/display/intel_display.c

index 739a0a74e008dbf7acb87ae7ac1ac5833276c8e3..295f14416be708c5be925d9244f7c7aaa21da32d 100644 (file)
@@ -1014,7 +1014,9 @@ static bool intel_crtc_lobf_enabling(const struct intel_crtc_state *old_crtc_sta
        if (!new_crtc_state->hw.active)
                return false;
 
-       return is_enabling(has_lobf, old_crtc_state, new_crtc_state);
+       return is_enabling(has_lobf, old_crtc_state, new_crtc_state) ||
+              (new_crtc_state->has_lobf &&
+               (new_crtc_state->update_lrr || new_crtc_state->update_m_n));
 }
 
 static bool intel_crtc_lobf_disabling(const struct intel_crtc_state *old_crtc_state,
@@ -1023,7 +1025,9 @@ static bool intel_crtc_lobf_disabling(const struct intel_crtc_state *old_crtc_st
        if (!old_crtc_state->hw.active)
                return false;
 
-       return is_disabling(has_lobf, old_crtc_state, new_crtc_state);
+       return is_disabling(has_lobf, old_crtc_state, new_crtc_state) ||
+               (old_crtc_state->has_lobf &&
+                (new_crtc_state->update_lrr || new_crtc_state->update_m_n));
 }
 
 #undef is_disabling