SU SDP scanline indication should be taken into account when checking
vblank length. In Bspec we have:

PSR2_CTL[ SU SDP scanline indication ] = 0: (TRANS_VBLANK Vertical Blank End- 
TRANS_VBLANK Vertical Blank Start) > PSR2_CTL Block Count Number value in lines
PSR2_CTL[ SU SDP scanline indication ] = 1: (TRANS_VBLANK Vertical Blank End- 
TRANS_VBLANK Vertical Blank Start- 1) > PSR2_CTL Block Count Number value in 
lines

Bspec: 49274

Signed-off-by: Jouni Högander <[email protected]>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index 23c3fed1f983..471b60032304 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -1250,6 +1250,9 @@ static bool vblank_length_valid(struct intel_dp *intel_dp,
                crtc_state->hw.adjusted_mode.crtc_vblank_start;
        int wake_lines = psr2_block_count_lines(intel_dp);
 
+       if (crtc_state->req_psr2_sdp_prior_scanline)
+               vblank -= 1;
+
        /* Vblank >= PSR2_CTL Block Count Number maximum line count */
        if (vblank < wake_lines)
                return false;
-- 
2.34.1

Reply via email to