drm/i915/psr: Check that vblank is long enough for psr2
authorJouni Högander <jouni.hogander@intel.com>
Wed, 29 Mar 2023 15:07:02 +0000 (18:07 +0300)
committerJouni Högander <jouni.hogander@intel.com>
Fri, 31 Mar 2023 05:43:22 +0000 (08:43 +0300)
Ensure vblank >= psr2 vblank
where
Psr2 vblank = PSR2_CTL Block Count Number maximum line count.

Bspec: 71580, 49274

v2: Use calculated block count number maximum line count

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230329150703.432072-6-jouni.hogander@intel.com
drivers/gpu/drm/i915/display/intel_psr.c

index 07b0c01..446c8ac 100644 (file)
@@ -968,6 +968,15 @@ static bool intel_psr2_config_valid(struct intel_dp *intel_dp,
                return false;
        }
 
+       /* Vblank >= PSR2_CTL Block Count Number maximum line count */
+       if (crtc_state->hw.adjusted_mode.crtc_vblank_end -
+           crtc_state->hw.adjusted_mode.crtc_vblank_start <
+           psr2_block_count_lines(intel_dp)) {
+               drm_dbg_kms(&dev_priv->drm,
+                           "PSR2 not enabled, too short vblank time\n");
+               return false;
+       }
+
        if (HAS_PSR2_SEL_FETCH(dev_priv)) {
                if (!intel_psr2_sel_fetch_config_valid(intel_dp, crtc_state) &&
                    !HAS_PSR_HW_TRACKING(dev_priv)) {