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

José Roberto de Souza jose.souza at intel.com
Sat Sep 22 00:23:37 UTC 2018


When registering DP ports into KMS we are doing aux transactions,
causing a lot of aux transactions timeout warnings, so lets
check if port is connected to avoid waste CPU time in module
load.

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

diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 6b4c19123f2a..5eb812f7c221 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,13 @@ intel_dp_aux_xfer(struct intel_dp *intel_dp,
 	int try, clock = 0;
 	bool vdd;
 
+	// TODO: check lspcon, if it can fail in this case
+	if (connector->status != connector_status_connected &&
+	    !intel_dig_port->lspcon.active &&
+	    (!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