mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 06:01:57 +00:00
drm/dp_mst: Add a helper to queue a topology probe
A follow up i915 patch will need to reprobe the MST topology after the initial probing, add a helper for this. Cc: Lyude Paul <lyude@redhat.com> Cc: dri-devel@lists.freedesktop.org Reviewed-by: Lyude Paul <lyude@redhat.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240722165503.2084999-3-imre.deak@intel.com
This commit is contained in:
parent
e9b36c5be2
commit
dbaeef363e
@ -3728,6 +3728,33 @@ drm_dp_mst_topology_mgr_invalidate_mstb(struct drm_dp_mst_branch *mstb)
|
||||
drm_dp_mst_topology_mgr_invalidate_mstb(port->mstb);
|
||||
}
|
||||
|
||||
/**
|
||||
* drm_dp_mst_topology_queue_probe - Queue a topology probe
|
||||
* @mgr: manager to probe
|
||||
*
|
||||
* Queue a work to probe the MST topology. Driver's should call this only to
|
||||
* sync the topology's HW->SW state after the MST link's parameters have
|
||||
* changed in a way the state could've become out-of-sync. This is the case
|
||||
* for instance when the link rate between the source and first downstream
|
||||
* branch device has switched between UHBR and non-UHBR rates. Except of those
|
||||
* cases - for instance when a sink gets plugged/unplugged to a port - the SW
|
||||
* state will get updated automatically via MST UP message notifications.
|
||||
*/
|
||||
void drm_dp_mst_topology_queue_probe(struct drm_dp_mst_topology_mgr *mgr)
|
||||
{
|
||||
mutex_lock(&mgr->lock);
|
||||
|
||||
if (drm_WARN_ON(mgr->dev, !mgr->mst_state || !mgr->mst_primary))
|
||||
goto out_unlock;
|
||||
|
||||
drm_dp_mst_topology_mgr_invalidate_mstb(mgr->mst_primary);
|
||||
drm_dp_mst_queue_probe_work(mgr);
|
||||
|
||||
out_unlock:
|
||||
mutex_unlock(&mgr->lock);
|
||||
}
|
||||
EXPORT_SYMBOL(drm_dp_mst_topology_queue_probe);
|
||||
|
||||
/**
|
||||
* drm_dp_mst_topology_mgr_suspend() - suspend the MST manager
|
||||
* @mgr: manager to suspend
|
||||
|
@ -885,6 +885,8 @@ int drm_dp_check_act_status(struct drm_dp_mst_topology_mgr *mgr);
|
||||
void drm_dp_mst_dump_topology(struct seq_file *m,
|
||||
struct drm_dp_mst_topology_mgr *mgr);
|
||||
|
||||
void drm_dp_mst_topology_queue_probe(struct drm_dp_mst_topology_mgr *mgr);
|
||||
|
||||
void drm_dp_mst_topology_mgr_suspend(struct drm_dp_mst_topology_mgr *mgr);
|
||||
int __must_check
|
||||
drm_dp_mst_topology_mgr_resume(struct drm_dp_mst_topology_mgr *mgr,
|
||||
|
Loading…
Reference in New Issue
Block a user