On Thu, Aug 15, 2013 at 05:30:32PM -0700, james.ausmus@xxxxxxxxx wrote: > static bool intel_dp_get_hw_state(struct intel_encoder *encoder, > enum pipe *pipe) > { > @@ -2330,6 +2336,12 @@ intel_dp_detect(struct drm_connector *connector, bool force) > > intel_dp->has_audio = false; > > + /* Ensure the sink is awake for DPCD/EDID reads. */ I would try using the force parameter to return the last known status to avoid the extra busy work. > + if (connector->dpms != DRM_MODE_DPMS_ON) { > + /* Bypass DPCD check, since we obtain it during detection. */ > + intel_dp_do_sink_dpms(intel_dp, DRM_MODE_DPMS_ON); > + } > + > if (HAS_PCH_SPLIT(dev)) > status = ironlake_dp_detect(intel_dp); > else > @@ -2339,8 +2351,11 @@ intel_dp_detect(struct drm_connector *connector, bool force) > 32, 1, dpcd_hex_dump, sizeof(dpcd_hex_dump), false); > DRM_DEBUG_KMS("DPCD: %s\n", dpcd_hex_dump); > > - if (status != connector_status_connected) > + if (status != connector_status_connected) { > + if (connector->dpms != DRM_MODE_DPMS_ON) > + intel_dp_do_sink_dpms(intel_dp, connector->dpms); > return status; > + } > > intel_dp_probe_oui(intel_dp); > > @@ -2356,6 +2371,11 @@ intel_dp_detect(struct drm_connector *connector, bool force) > > if (intel_encoder->type != INTEL_OUTPUT_EDP) > intel_encoder->type = INTEL_OUTPUT_DISPLAYPORT; > + > + /* Restore the sink state */ > + if (connector->dpms != DRM_MODE_DPMS_ON) > + intel_dp_do_sink_dpms(intel_dp, connector->dpms); > + > return connector_status_connected; > } -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx