Signed-off-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> --- drivers/gpu/drm/i915/intel_dp_mst.c | 44 ++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_dp_mst.c b/drivers/gpu/drm/i915/intel_dp_mst.c index edd8fa41e85e..fb4f2715c96f 100644 --- a/drivers/gpu/drm/i915/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/intel_dp_mst.c @@ -449,6 +449,48 @@ static struct drm_connector *intel_dp_add_mst_connector(struct drm_dp_mst_topolo return connector; } +static void intel_dp_unbind_mst_connector(struct drm_device *dev, + struct drm_connector *connector) +{ + struct drm_atomic_state *state; + struct drm_connector_state *conn_state; + struct drm_crtc *crtc = connector->state->crtc; + int ret; + + if (!crtc) + return; + + state = drm_atomic_state_alloc(dev); + if (!state) + return; + + state->acquire_ctx = dev->mode_config.acquire_ctx; + + conn_state = drm_atomic_get_connector_state(state, connector); + ret = PTR_ERR_OR_ZERO(conn_state); + if (!ret) + ret = drm_atomic_set_crtc_for_connector(conn_state, NULL); + + if (!ret) + ret = drm_atomic_add_affected_connectors(state, crtc); + + if (!ret && !drm_atomic_connectors_for_crtc(state, crtc)) { + struct drm_crtc_state *crtc_state = + drm_atomic_get_existing_crtc_state(state, crtc); + + crtc_state->active = false; + ret = drm_atomic_set_mode_for_crtc(crtc_state, NULL); + } + + if (!ret) + ret = drm_atomic_commit(state); + + if (ret) + drm_atomic_state_free(state); + + I915_STATE_WARN_ON(ret); +} + static void intel_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, struct drm_connector *connector) { @@ -456,7 +498,7 @@ static void intel_dp_destroy_mst_connector(struct drm_dp_mst_topology_mgr *mgr, struct drm_device *dev = connector->dev; drm_modeset_lock_all(dev); - drm_atomic_helper_connector_dpms(connector, DRM_MODE_DPMS_OFF); + intel_dp_unbind_mst_connector(dev, connector); drm_modeset_unlock_all(dev); intel_connector->unregister(intel_connector); -- 2.1.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx