[PATCH] wip: drm/i915: Skip aux transactions for disconnected ports

José Roberto de Souza jose.souza at intel.com
Thu Sep 20 19:59:51 UTC 2018


Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
---
 drivers/gpu/drm/i915/intel_dp.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 6b4c19123f2a..fc3a01a81d2f 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1229,6 +1229,8 @@ intel_dp_aux_xfer(struct intel_dp *intel_dp,
 	struct intel_digital_port *intel_dig_port = dp_to_dig_port(intel_dp);
 	struct drm_i915_private *dev_priv =
 			to_i915(intel_dig_port->base.base.dev);
+	struct intel_connector *intel_connector = intel_dp->attached_connector;
+	struct drm_connector *connector = &intel_connector->base;
 	i915_reg_t ch_ctl, ch_data[5];
 	uint32_t aux_clock_divider;
 	int i, ret, recv_bytes;
@@ -1236,6 +1238,11 @@ intel_dp_aux_xfer(struct intel_dp *intel_dp,
 	int try, clock = 0;
 	bool vdd;
 
+	if (connector->status != connector_status_connected &&
+	    (!intel_dp_is_edp(intel_dp) &&
+	     !intel_digital_port_connected(&intel_dig_port->base)))
+		return -ENODEV;
+
 	ch_ctl = intel_dp->aux_ch_ctl_reg(intel_dp);
 	for (i = 0; i < ARRAY_SIZE(ch_data); i++)
 		ch_data[i] = intel_dp->aux_ch_data_reg(intel_dp, i);
-- 
2.19.0



More information about the Intel-gfx-trybot mailing list