|
@@ -69,25 +69,18 @@ void amdgpu_connector_hotplug(struct drm_connector *connector)
|
|
|
/* don't do anything if sink is not display port, i.e.,
|
|
|
* passive dp->(dvi|hdmi) adaptor
|
|
|
*/
|
|
|
- if (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) {
|
|
|
- int saved_dpms = connector->dpms;
|
|
|
- /* Only turn off the display if it's physically disconnected */
|
|
|
- if (!amdgpu_display_hpd_sense(adev, amdgpu_connector->hpd.hpd)) {
|
|
|
- drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
|
|
|
- } else if (amdgpu_atombios_dp_needs_link_train(amdgpu_connector)) {
|
|
|
- /* Don't try to start link training before we
|
|
|
- * have the dpcd */
|
|
|
- if (amdgpu_atombios_dp_get_dpcd(amdgpu_connector))
|
|
|
- return;
|
|
|
-
|
|
|
- /* set it to OFF so that drm_helper_connector_dpms()
|
|
|
- * won't return immediately since the current state
|
|
|
- * is ON at this point.
|
|
|
- */
|
|
|
- connector->dpms = DRM_MODE_DPMS_OFF;
|
|
|
- drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
|
|
|
- }
|
|
|
- connector->dpms = saved_dpms;
|
|
|
+ if (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT &&
|
|
|
+ amdgpu_display_hpd_sense(adev, amdgpu_connector->hpd.hpd) &&
|
|
|
+ amdgpu_atombios_dp_needs_link_train(amdgpu_connector)) {
|
|
|
+ /* Don't start link training before we have the DPCD */
|
|
|
+ if (amdgpu_atombios_dp_get_dpcd(amdgpu_connector))
|
|
|
+ return;
|
|
|
+
|
|
|
+ /* Turn the connector off and back on immediately, which
|
|
|
+ * will trigger link training
|
|
|
+ */
|
|
|
+ drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
|
|
|
+ drm_helper_connector_dpms(connector, DRM_MODE_DPMS_ON);
|
|
|
}
|
|
|
}
|
|
|
}
|