diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 8a1a4fbc06ac..8bbc9f31116a 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -3476,6 +3476,8 @@ static struct edid * intel_dp_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter) { struct intel_connector *intel_connector = to_intel_connector(connector); + struct intel_dp *intel_dp = intel_attached_dp(connector); + struct edid *edid; /* use cached edid if we have one */ if (intel_connector->edid) { @@ -3486,13 +3488,19 @@ intel_dp_get_edid(struct drm_connector *connector, struct i2c_adapter *adapter) return drm_edid_duplicate(intel_connector->edid); } - return drm_get_edid(connector, adapter); + intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); + edid = drm_get_edid(connector, adapter); + intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); + + return edid; } static int intel_dp_get_edid_modes(struct drm_connector *connector, struct i2c_adapter *adapter) { struct intel_connector *intel_connector = to_intel_connector(connector); + struct intel_dp *intel_dp = intel_attached_dp(connector); + int ret; /* use cached edid if we have one */ if (intel_connector->edid) { @@ -3504,7 +3512,11 @@ intel_dp_get_edid_modes(struct drm_connector *connector, struct i2c_adapter *ada intel_connector->edid); } - return intel_ddc_get_modes(connector, adapter); + intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); + ret = intel_ddc_get_modes(connector, adapter); + intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF); + + return ret; } static enum drm_connector_status