drm/i915/alpm: Disable LOBF around transitioning for LRR/seamless MN

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
This commit is contained in:
Ankit Nautiyal 2026-02-04 10:32:50 +05:30
parent 31106c684d
commit fcb7a01546

View 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