drm/radeon: on hotplug force link training to happen (v2)
[platform/adaptation/renesas_rcar/renesas_kernel.git] / drivers / gpu / drm / radeon / radeon_connectors.c
index 3524f17..895e628 100644 (file)
@@ -79,10 +79,16 @@ void radeon_connector_hotplug(struct drm_connector *connector)
                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 (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd))
+                       if (!radeon_hpd_sense(rdev, radeon_connector->hpd.hpd)) {
                                drm_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF);
-                       else if (radeon_dp_needs_link_train(radeon_connector))
+                       } else if (radeon_dp_needs_link_train(radeon_connector)) {
+                               /* 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;
                }
        }