Sink will interrupt source when it have any problem saving or reading
the remote frame buffer.

Signed-off-by: José Roberto de Souza <jose.so...@intel.com>
---
 drivers/gpu/drm/i915/intel_psr.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_psr.c b/drivers/gpu/drm/i915/intel_psr.c
index ab3713c2582b..4e73edf1ea5b 100644
--- a/drivers/gpu/drm/i915/intel_psr.c
+++ b/drivers/gpu/drm/i915/intel_psr.c
@@ -1010,6 +1010,16 @@ void intel_psr_hpd_short_pulse_handle(struct intel_dp 
*intel_dp)
        if ((val & DP_PSR_SINK_STATE_MASK) == DP_PSR_SINK_INTERNAL_ERROR)
                psr->exit(intel_dp, false);
 
+       if (drm_dp_dpcd_readb(&intel_dp->aux, DP_PSR_ERROR_STATUS, &val) != 1) {
+               DRM_DEBUG_KMS("PSR_ERROR_STATUS read failed\n");
+               goto dpcd_read_error;
+       }
+
+       if (val & DP_PSR_RFB_STORAGE_ERROR)
+               dev_priv->psr.exit(intel_dp, false);
+       /* clear status register */
+       drm_dp_dpcd_writeb(&intel_dp->aux, DP_PSR_ERROR_STATUS, val);
+
        /* TODO: handle other PSR/PSR2 errors */
 dpcd_read_error:
        intel_psr_active_schedule(psr, PSR_ACTIVE_DELAY_MSEC);
-- 
2.16.2

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

Reply via email to