drm/i915/dp_mst: Make sure pbn_div is up-to-date after sink reconnect
authorImre Deak <imre.deak@intel.com>
Fri, 29 Sep 2023 15:49:29 +0000 (18:49 +0300)
committerImre Deak <imre.deak@intel.com>
Wed, 4 Oct 2023 15:48:31 +0000 (18:48 +0300)
commit07f9cfe2ef6c086a3760430d7c0a224584d495a4
tree2bf9e73cdc5feb91008ccb6233055c8144239a33
parentcf37c0979e558213e2a2f87c2c3dfe644a66b210
drm/i915/dp_mst: Make sure pbn_div is up-to-date after sink reconnect

Atm the MST encoder config computation may use an out-of-date pbn_div
value, if the sink is unplugged and a sink is replugged with different
link rate/lane count capabilities. The current way of reinitializing
pbn_div depends on pbn_div getting cleared via intel_atomic_check() ->
drm_dp_mst_atomic_check() ->
drm_dp_mst_atomic_check_payload_alloc_limits(), however the clearing
won't happen if the sink got unplugged (and hence
drm_dp_mst_topology_mgr::mst_state being false).

To fix the above, simply update pbn_div unconditionally during config
computation, making pbn_div always match the link rate and lane count.

Cc: Lyude Paul <lyude@redhat.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230929154929.343947-1-imre.deak@intel.com
drivers/gpu/drm/i915/display/intel_dp_mst.c