diff mbox

[v3,7/7] drm/i915/psr: Avoid PSR exit max time timeout

Message ID 20180517222118.14246-7-jose.souza@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Souza, Jose May 17, 2018, 10:21 p.m. UTC
Also masking max time as a trigger to exit PSR for the remaning
platforms that do not support sink CRC check(gen <= 8).
This will make PSR exits more deterministic and only when really
needed. If this was used to fix a issue in some pannel than can
only self-refresh for a few seconds, that panel will interrupt
and assert one of the PSR errors handled in:
'drm/i915/psr: Handle PSR RFB storage error' and
'drm/i915/psr: Begin to handle PSR/PSR2 errors set by sink'

Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 drivers/gpu/drm/i915/intel_psr.c | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
index 2f29dcd6f69e..8e2e90d139b5 100644
--- a/drivers/gpu/drm/i915/intel_psr.c
+++ b/drivers/gpu/drm/i915/intel_psr.c
@@ -376,7 +376,6 @@  static void hsw_activate_psr1(struct intel_dp *intel_dp)
 	struct drm_device *dev = dig_port->base.base.dev;
 	struct drm_i915_private *dev_priv = to_i915(dev);
 
-	uint32_t max_sleep_time = 0x1f;
 	/*
 	 * Let's respect VBT in case VBT asks a higher idle_frame value.
 	 * Let's use 6 as the minimum to cover all known cases including
@@ -387,7 +386,6 @@  static void hsw_activate_psr1(struct intel_dp *intel_dp)
 	uint32_t idle_frames = max(6, dev_priv->vbt.psr.idle_frames);
 	uint32_t val = EDP_PSR_ENABLE;
 
-	val |= max_sleep_time << EDP_PSR_MAX_SLEEP_TIME_SHIFT;
 	val |= idle_frames << EDP_PSR_IDLE_FRAME_SHIFT;
 
 	if (IS_HASWELL(dev_priv))
@@ -640,14 +638,12 @@  static void hsw_psr_enable_source(struct intel_dp *intel_dp,
 		 * preventing  other hw tracking issues now we can rely
 		 * on frontbuffer tracking.
 		 */
-		u32 val = EDP_PSR_DEBUG_MASK_MEMUP |
+		I915_WRITE(EDP_PSR_DEBUG,
+			  EDP_PSR_DEBUG_MASK_MEMUP |
 			  EDP_PSR_DEBUG_MASK_HPD |
 			  EDP_PSR_DEBUG_MASK_LPSP |
-			  EDP_PSR_DEBUG_MASK_DISP_REG_WRITE;
-
-		if (INTEL_GEN(dev_priv) >= 8)
-			val |= EDP_PSR_DEBUG_MASK_MAX_SLEEP;
-		I915_WRITE(EDP_PSR_DEBUG, val);
+			  EDP_PSR_DEBUG_MASK_DISP_REG_WRITE |
+			  EDP_PSR_DEBUG_MASK_MAX_SLEEP);
 	}
 }