[Intel-gfx] [PATCH] drm/i915: Don't try to set the DP sink power state on disconnected monitors
Damien Lespiau
damien.lespiau at intel.com
Thu Dec 12 16:34:24 CET 2013
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 at intel.com>
---
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
More information about the Intel-gfx
mailing list