[PATCH 1/2] wip: drm/i915: Skip aux transactions for disconnected ports
José Roberto de Souza
jose.souza at intel.com
Mon Sep 24 17:35:23 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 | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index 6b4c19123f2a..7e1f0f337524 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,19 @@ intel_dp_aux_xfer(struct intel_dp *intel_dp,
int try, clock = 0;
bool vdd;
+ intel_runtime_pm_get(dev_priv);
+
+ // 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))) {
+ intel_runtime_pm_put(dev_priv);
+ return -ENODEV;
+ }
+
+ intel_runtime_pm_put(dev_priv);
+
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