All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915: Fix PSR2 selective update corruption after PSR1 setup
@ 2019-03-12 20:42 José Roberto de Souza
  2019-03-12 20:53 ` Rodrigo Vivi
                   ` (5 more replies)
  0 siblings, 6 replies; 15+ messages in thread
From: José Roberto de Souza @ 2019-03-12 20:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: Dhinakaran Pandiyan

For some reason if the PSR1 EDP_PSR_TP1_TP3_SEL register is kept set
while PSR2 is enabled, it causes some selective updates to fail after
got back from DC6 for the first time.
So lets clear this register before enabled PSR2, as it could be set
by a previous i915 module, firmware/BIOS or by a previous mode that
is not compatible with PSR2.

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, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
index 7bab6a009e0d..ae62f8124558 100644
--- a/drivers/gpu/drm/i915/intel_psr.c
+++ b/drivers/gpu/drm/i915/intel_psr.c
@@ -494,12 +494,20 @@ static void hsw_activate_psr2(struct intel_dp *intel_dp)
 {
 	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
 	u32 val;
+	int idle_frames;
+
+	/*
+	 * Keeping this PSR1 register set while PSR2 is enabled causes some
+	 * PSR2 selective updates to fail, corrupting screen.
+	 */
+	val = I915_READ(EDP_PSR_CTL);
+	if (val & EDP_PSR_TP1_TP3_SEL)
+		I915_WRITE(EDP_PSR_CTL, val & ~EDP_PSR_TP1_TP3_SEL);
 
 	/* Let's use 6 as the minimum to cover all known cases including the
 	 * off-by-one issue that HW has in some cases.
 	 */
-	int idle_frames = max(6, dev_priv->vbt.psr.idle_frames);
-
+	idle_frames = max(6, dev_priv->vbt.psr.idle_frames);
 	idle_frames = max(idle_frames, dev_priv->psr.sink_sync_latency + 1);
 	val = idle_frames << EDP_PSR2_IDLE_FRAME_SHIFT;
 
-- 
2.21.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2019-03-20 19:02 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-12 20:42 [PATCH] drm/i915: Fix PSR2 selective update corruption after PSR1 setup José Roberto de Souza
2019-03-12 20:53 ` Rodrigo Vivi
2019-03-12 21:14   ` Dhinakaran Pandiyan
2019-03-12 21:28     ` Souza, Jose
2019-03-12 21:46       ` Pandiyan, Dhinakaran
2019-03-12 22:07         ` Souza, Jose
2019-03-12 23:42       ` Runyan, Arthur J
2019-03-20 18:57         ` Runyan, Arthur J
2019-03-20 19:02           ` Pandiyan, Dhinakaran
2019-03-12 21:22   ` Souza, Jose
2019-03-13 15:01 ` ✗ Fi.CI.SPARSE: warning for " Patchwork
2019-03-13 16:06 ` ✗ Fi.CI.BAT: failure " Patchwork
2019-03-14  3:18 ` ✗ Fi.CI.SPARSE: warning for drm/i915: Fix PSR2 selective update corruption after PSR1 setup (rev2) Patchwork
2019-03-14  3:47 ` ✓ Fi.CI.BAT: success " Patchwork
2019-03-14 13:03 ` ✗ Fi.CI.IGT: failure " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.