From 22d30ffec5275e35a029956780084a63422377a0 Mon Sep 17 00:00:00 2001 From: Rodrigo Vivi Date: Thu, 25 Aug 2016 11:15:07 -0700 Subject: [PATCH] Revert "drm/i915: Check PSR setup time vs. vblank length" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is something really strange with this patch. This is blocking PSR in all panels and platforms we have. Also it is really odd a vblank < 330us. Are we really that fast? But most than that it is blocking other internal teams that needs PSR. So on our internal branches we will revert this patch while we don't fully understand and provide the propper fix. This reverts commit dfd2e9ab6a7db56a5f5bb55f71485a92613c8e11. Cc: Nivedita Swaminathan Cc: Vathsala Nagaraju Cc: Ville Syrjälä Signed-off-by: Rodrigo Vivi --- drivers/gpu/drm/i915/intel_drv.h | 2 -- drivers/gpu/drm/i915/intel_psr.c | 19 +------------------ drivers/gpu/drm/i915/intel_sprite.c | 6 +++--- 3 files changed, 4 insertions(+), 23 deletions(-) Index: drm-intel-internal/drivers/gpu/drm/i915/intel_drv.h =================================================================== --- drm-intel-internal.orig/drivers/gpu/drm/i915/intel_drv.h +++ drm-intel-internal/drivers/gpu/drm/i915/intel_drv.h @@ -1777,8 +1777,6 @@ bool intel_sdvo_init(struct drm_device * /* intel_sprite.c */ -int intel_usecs_to_scanlines(const struct drm_display_mode *adjusted_mode, - int usecs); int intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane); int intel_sprite_set_colorkey(struct drm_device *dev, void *data, struct drm_file *file_priv); Index: drm-intel-internal/drivers/gpu/drm/i915/intel_psr.c =================================================================== --- drm-intel-internal.orig/drivers/gpu/drm/i915/intel_psr.c +++ drm-intel-internal/drivers/gpu/drm/i915/intel_psr.c @@ -327,9 +327,6 @@ static bool intel_psr_match_conditions(s struct drm_i915_private *dev_priv = to_i915(dev); struct drm_crtc *crtc = dig_port->base.base.crtc; struct intel_crtc *intel_crtc = to_intel_crtc(crtc); - const struct drm_display_mode *adjusted_mode = - &intel_crtc->config->base.adjusted_mode; - int psr_setup_time; lockdep_assert_held(&dev_priv->psr.lock); WARN_ON(!drm_modeset_is_locked(&dev->mode_config.connection_mutex)); @@ -368,25 +365,11 @@ static bool intel_psr_match_conditions(s } if (IS_HASWELL(dev) && - adjusted_mode->flags & DRM_MODE_FLAG_INTERLACE) { + intel_crtc->config->base.adjusted_mode.flags & DRM_MODE_FLAG_INTERLACE) { DRM_DEBUG_KMS("PSR condition failed: Interlaced is Enabled\n"); return false; } - psr_setup_time = drm_dp_psr_setup_time(intel_dp->psr_dpcd); - if (psr_setup_time < 0) { - DRM_DEBUG_KMS("PSR condition failed: Invalid PSR setup time (0x%02x)\n", - intel_dp->psr_dpcd[1]); - return false; - } - - if (intel_usecs_to_scanlines(adjusted_mode, psr_setup_time) > - adjusted_mode->crtc_vtotal - adjusted_mode->crtc_vdisplay - 1) { - DRM_DEBUG_KMS("PSR condition failed: PSR setup time (%d us) too long\n", - psr_setup_time); - return false; - } - dev_priv->psr.source_ok = true; return true; } Index: drm-intel-internal/drivers/gpu/drm/i915/intel_sprite.c =================================================================== --- drm-intel-internal.orig/drivers/gpu/drm/i915/intel_sprite.c +++ drm-intel-internal/drivers/gpu/drm/i915/intel_sprite.c @@ -54,8 +54,8 @@ format_is_yuv(uint32_t format) } } -int intel_usecs_to_scanlines(const struct drm_display_mode *adjusted_mode, - int usecs) +static int usecs_to_scanlines(const struct drm_display_mode *adjusted_mode, + int usecs) { /* paranoia */ if (!adjusted_mode->crtc_htotal) @@ -92,7 +92,7 @@ void intel_pipe_update_start(struct inte vblank_start = DIV_ROUND_UP(vblank_start, 2); /* FIXME needs to be calibrated sensibly */ - min = vblank_start - intel_usecs_to_scanlines(adjusted_mode, 100); + min = vblank_start - usecs_to_scanlines(adjusted_mode, 100); max = vblank_start - 1; local_irq_disable();