thunderbolt: Fix Thunderbolt 3 display flickering issue on 2nd hot plug onwards
authorSanjay R Mehta <sanju.mehta@amd.com>
Wed, 2 Aug 2023 11:11:49 +0000 (06:11 -0500)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Thu, 3 Aug 2023 09:57:55 +0000 (12:57 +0300)
commit583893a66d731f5da010a3fa38a0460e05f0149b
treec462987bb00be2b20fa13a8f3b7934bc41110b55
parent5d0c230f1de8c7515b6567d9afba1f196fb4e2f4
thunderbolt: Fix Thunderbolt 3 display flickering issue on 2nd hot plug onwards

Previously, on unplug events, the TMU mode was disabled first
followed by the Time Synchronization Handshake, irrespective of
whether the tb_switch_tmu_rate_write() API was successful or not.

However, this caused a problem with Thunderbolt 3 (TBT3)
devices, as the TSPacketInterval bits were always enabled by default,
leading the host router to assume that the device router's TMU was
already enabled and preventing it from initiating the Time
Synchronization Handshake. As a result, TBT3 monitors experienced
display flickering from the second hot plug onwards.

To address this issue, we have modified the code to only disable the
Time Synchronization Handshake during TMU disable if the
tb_switch_tmu_rate_write() function is successful. This ensures that
the TBT3 devices function correctly and eliminates the display
flickering issue.

Co-developed-by: Sanath S <Sanath.S@amd.com>
Signed-off-by: Sanath S <Sanath.S@amd.com>
Signed-off-by: Sanjay R Mehta <sanju.mehta@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/tmu.c