]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915/psr: Set plane id bit in crtc_state->async_flip_planes for PSR
authorJouni Högander <jouni.hogander@intel.com>
Thu, 4 Dec 2025 07:07:16 +0000 (09:07 +0200)
committerJouni Högander <jouni.hogander@intel.com>
Wed, 10 Dec 2025 13:04:15 +0000 (15:04 +0200)
Currently plane id bit is set in crtc_state->async_flip_planes only when
async flip toggle workaround is needed. We want to utilize
crtc_state->async_flip_planes further in Selective Fetch calculation.

v2:
  - rework if-else if to if-if
  - added comment updated

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20251204070718.1090778-2-jouni.hogander@intel.com
drivers/gpu/drm/i915/display/intel_plane.c

index 36849cd56c02171fdeed313a8560e0dd101cff26..ca9449589161eeaeb3158fb7a41363b302f78455 100644 (file)
@@ -655,11 +655,10 @@ static int intel_plane_atomic_calc_changes(const struct intel_crtc_state *old_cr
            ilk_must_disable_cxsr(new_crtc_state, old_plane_state, new_plane_state))
                new_crtc_state->disable_cxsr = true;
 
-       if (intel_plane_do_async_flip(plane, old_crtc_state, new_crtc_state)) {
+       if (intel_plane_do_async_flip(plane, old_crtc_state, new_crtc_state))
                new_crtc_state->do_async_flip = true;
-               new_crtc_state->async_flip_planes |= BIT(plane->id);
-       } else if (plane->need_async_flip_toggle_wa &&
-                  new_crtc_state->uapi.async_flip) {
+
+       if (new_crtc_state->uapi.async_flip) {
                /*
                 * On platforms with double buffered async flip bit we
                 * set the bit already one frame early during the sync
@@ -667,6 +666,9 @@ static int intel_plane_atomic_calc_changes(const struct intel_crtc_state *old_cr
                 * hardware will therefore be ready to perform a real
                 * async flip during the next commit, without having
                 * to wait yet another frame for the bit to latch.
+                *
+                * async_flip_planes bitmask is also used by selective
+                * fetch calculation to choose full frame update.
                 */
                new_crtc_state->async_flip_planes |= BIT(plane->id);
        }