|
@@ -804,8 +804,6 @@ static void drm_dp_destroy_mst_branch_device(struct kref *kref)
|
|
|
struct drm_dp_mst_port *port, *tmp;
|
|
|
bool wake_tx = false;
|
|
|
|
|
|
- cancel_work_sync(&mstb->mgr->work);
|
|
|
-
|
|
|
/*
|
|
|
* destroy all ports - don't need lock
|
|
|
* as there are no more references to the mst branch
|
|
@@ -1993,6 +1991,8 @@ void drm_dp_mst_topology_mgr_suspend(struct drm_dp_mst_topology_mgr *mgr)
|
|
|
drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL,
|
|
|
DP_MST_EN | DP_UPSTREAM_IS_SRC);
|
|
|
mutex_unlock(&mgr->lock);
|
|
|
+ flush_work(&mgr->work);
|
|
|
+ flush_work(&mgr->destroy_connector_work);
|
|
|
}
|
|
|
EXPORT_SYMBOL(drm_dp_mst_topology_mgr_suspend);
|
|
|
|
|
@@ -2765,6 +2765,7 @@ EXPORT_SYMBOL(drm_dp_mst_topology_mgr_init);
|
|
|
*/
|
|
|
void drm_dp_mst_topology_mgr_destroy(struct drm_dp_mst_topology_mgr *mgr)
|
|
|
{
|
|
|
+ flush_work(&mgr->work);
|
|
|
flush_work(&mgr->destroy_connector_work);
|
|
|
mutex_lock(&mgr->payload_lock);
|
|
|
kfree(mgr->payloads);
|