The pre_plane_update and post_plane_update hooks used slightly different
conditions for LOBF state changes. Rewrite them to be minimal and
complementary:

  - pre runs only when LOBF is being disabled (old=1 -> new=0)
  - post runs only when LOBF is being enabled (old=0 -> new=1),
    with an early return if PSR is active.

This will help for subsequent changes to handle LOBF during LRR and
seamless MN transitions.

Signed-off-by: Ankit Nautiyal <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_alpm.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c 
b/drivers/gpu/drm/i915/display/intel_alpm.c
index 5cfb9345776a..db2b9608f7f8 100644
--- a/drivers/gpu/drm/i915/display/intel_alpm.c
+++ b/drivers/gpu/drm/i915/display/intel_alpm.c
@@ -461,7 +461,8 @@ void intel_alpm_pre_plane_update(struct intel_atomic_state 
*state,
        if (DISPLAY_VER(display) < 20)
                return;
 
-       if (crtc_state->has_lobf || crtc_state->has_lobf == 
old_crtc_state->has_lobf)
+       if (!old_crtc_state->has_lobf ||
+           crtc_state->has_lobf == old_crtc_state->has_lobf)
                return;
 
        for_each_intel_encoder_mask(display->drm, encoder,
@@ -512,7 +513,10 @@ void intel_alpm_post_plane_update(struct 
intel_atomic_state *state,
                intel_atomic_get_old_crtc_state(state, crtc);
        struct intel_encoder *encoder;
 
-       if (crtc_state->has_psr || !crtc_state->has_lobf ||
+       if (crtc_state->has_psr)
+               return;
+
+       if (!crtc_state->has_lobf ||
            crtc_state->has_lobf == old_crtc_state->has_lobf)
                return;
 
-- 
2.45.2

Reply via email to