On Thu, Dec 12, 2013 at 03:34:24PM +0000, Damien Lespiau wrote: > 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> How wide-spread is this issue? Is this the only place where we routinely do this (e.g. after the user yanked the connector and we switch things off) or are there other place? Link training comes to mind, but doing the right thing (i.e. just switching to normal mode so that the pipe runs) is a bit more involved. So that one's out of scope for this patch. But I wonder what other places there are ... -Daniel > --- > 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 -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx