|
@@ -162,14 +162,19 @@ static void intel_mst_post_disable_dp(struct intel_encoder *encoder,
|
|
|
|
|
|
drm_dp_mst_deallocate_vcpi(&intel_dp->mst_mgr, connector->port);
|
|
drm_dp_mst_deallocate_vcpi(&intel_dp->mst_mgr, connector->port);
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Power down mst path before disabling the port, otherwise we end
|
|
|
|
+ * up getting interrupts from the sink upon detecting link loss.
|
|
|
|
+ */
|
|
|
|
+ drm_dp_send_power_updown_phy(&intel_dp->mst_mgr, connector->port,
|
|
|
|
+ false);
|
|
|
|
+
|
|
intel_dp->active_mst_links--;
|
|
intel_dp->active_mst_links--;
|
|
|
|
|
|
intel_mst->connector = NULL;
|
|
intel_mst->connector = NULL;
|
|
if (intel_dp->active_mst_links == 0) {
|
|
if (intel_dp->active_mst_links == 0) {
|
|
intel_dig_port->base.post_disable(&intel_dig_port->base,
|
|
intel_dig_port->base.post_disable(&intel_dig_port->base,
|
|
NULL, NULL);
|
|
NULL, NULL);
|
|
-
|
|
|
|
- intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_OFF);
|
|
|
|
}
|
|
}
|
|
DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links);
|
|
DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links);
|
|
}
|
|
}
|
|
@@ -196,6 +201,7 @@ static void intel_mst_pre_enable_dp(struct intel_encoder *encoder,
|
|
|
|
|
|
DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links);
|
|
DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links);
|
|
|
|
|
|
|
|
+ drm_dp_send_power_updown_phy(&intel_dp->mst_mgr, connector->port, true);
|
|
if (intel_dp->active_mst_links == 0)
|
|
if (intel_dp->active_mst_links == 0)
|
|
intel_dig_port->base.pre_enable(&intel_dig_port->base,
|
|
intel_dig_port->base.pre_enable(&intel_dig_port->base,
|
|
pipe_config, NULL);
|
|
pipe_config, NULL);
|