[PATCH 13/14] drm/i915: Disable PSR when a PSR aux error happen

José Roberto de Souza jose.souza at intel.com
Tue Sep 18 01:09:26 UTC 2018


While PSR is active hardware will do aux transactions to wakeup sink
to receive a new frame when necessary, if that transaction is not
acked by sink this error will happen.
So disable PSR as it is a hint that there is a problem with the panel
or with the cable to avoid futher glitches.
The comment remove was requiring to manually retrain, that is not
necessary as when exiting PSR the link will be retrain if that
still fails sink will do a long pulse causing the link retrain.

Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan at intel.com>
Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
---
 drivers/gpu/drm/i915/intel_psr.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
index 3f4be156cede..b35bc976d957 100644
--- a/drivers/gpu/drm/i915/intel_psr.c
+++ b/drivers/gpu/drm/i915/intel_psr.c
@@ -155,10 +155,11 @@ void intel_psr_irq_handler(struct drm_i915_private *dev_priv, u32 psr_iir)
 			       BIT(TRANSCODER_C);
 
 	for_each_cpu_transcoder_masked(dev_priv, cpu_transcoder, transcoders) {
-		/* FIXME: Exit PSR and link train manually when this happens. */
-		if (psr_iir & EDP_PSR_ERROR(cpu_transcoder))
-			DRM_DEBUG_KMS("[transcoder %s] PSR aux error\n",
-				      transcoder_name(cpu_transcoder));
+		if (psr_iir & EDP_PSR_ERROR(cpu_transcoder)) {
+			DRM_WARN("[transcoder %s] PSR aux error\n",
+				 transcoder_name(cpu_transcoder));
+			intel_psr_disable(dev_priv->psr.dp);
+		}
 
 		if (psr_iir & EDP_PSR_PRE_ENTRY(cpu_transcoder)) {
 			dev_priv->psr.last_entry_attempt = time_ns;
-- 
2.19.0



More information about the Intel-gfx-trybot mailing list