While looking at some debug traces, I noticed that we were always trying to set the sink power, even when we previously identified that the connector was in the disconnected state. In that case, we don't a big chance for the write to succeed, so don't try. [drm:drm_helper_probe_single_connector_modes], [CONNECTOR:30:DP-3] [drm:intel_dp_detect], [CONNECTOR:30:DP-3] [drm:drm_helper_probe_single_connector_modes], [CONNECTOR:30:DP-3] disconnected [drm:intel_dp_aux_ch], dp_aux_ch timeout status 0x7015003f [drm:intel_dp_sink_dpms], failed to write sink power state Signed-off-by: Damien Lespiau <damien.lespiau@xxxxxxxxx> --- drivers/gpu/drm/i915/intel_dp.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 9b40113..006bca5 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -1361,18 +1361,21 @@ static void ironlake_edp_pll_off(struct intel_dp *intel_dp) /* If the sink supports it, try to set the power state appropriately */ void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode) { + struct intel_connector *intel_connector = intel_dp->attached_connector; + struct drm_connector *connector = &intel_connector->base; int ret, i; /* Should have a valid DPCD by this point */ if (intel_dp->dpcd[DP_DPCD_REV] < 0x11) return; - if (mode != DRM_MODE_DPMS_ON) { + if (mode != DRM_MODE_DPMS_ON && + connector->status != connector_status_disconnected) { ret = intel_dp_aux_native_write_1(intel_dp, DP_SET_POWER, DP_SET_POWER_D3); if (ret != 1) DRM_DEBUG_DRIVER("failed to write sink power state\n"); - } else { + } else if (mode == DRM_MODE_DPMS_ON) { /* * When turning on, we need to retry for 1ms to give the sink * time to wake up. -- 1.8.3.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx