linux/drivers/thunderbolt
Gil Fine 8cd25f1fce thunderbolt: Honor TMU requirements in the domain when setting TMU mode
commit 3cea8af2d1 upstream.

Currently, when configuring TMU (Time Management Unit) mode of a given
router, we take into account only its own TMU requirements ignoring
other routers in the domain. This is problematic if the router we are
configuring has lower TMU requirements than what is already configured
in the domain.

In the scenario below, we have a host router with two USB4 ports: A and
B. Port A connected to device router #1 (which supports CL states) and
existing DisplayPort tunnel, thus, the TMU mode is HiFi uni-directional.

1. Initial topology

          [Host]
         A/
         /
 [Device #1]
   /
Monitor

2. Plug in device #2 (that supports CL states) to downstream port B of
   the host router

         [Host]
        A/    B\
        /       \
 [Device #1]    [Device #2]
   /
Monitor

The TMU mode on port B and port A will be configured to LowRes which is
not what we want and will cause monitor to start flickering.

To address this we first scan the domain and search for any router
configured to HiFi uni-directional mode, and if found, configure TMU
mode of the given router to HiFi uni-directional as well.

Cc: stable@vger.kernel.org
Signed-off-by: Gil Fine <gil.fine@linux.intel.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2024-11-08 16:28:24 +01:00
..
acpi.c thunderbolt: Log a warning if device links are not found 2023-08-08 08:13:11 +03:00
cap.c thunderbolt: cap: Fix kernel-doc formatting issue 2021-01-28 12:33:18 +03:00
clx.c thunderbolt: Enable CL2 low power state 2023-06-16 09:53:28 +03:00
ctl.c thunderbolt: Add the new USB4 v2 notification types 2023-06-16 09:53:28 +03:00
ctl.h thunderbolt: Add support for DisplayPort bandwidth allocation mode 2023-01-17 11:37:16 +02:00
debugfs.c thunderbolt: debugfs: Fix margin debugfs node creation condition 2024-06-21 14:38:25 +02:00
dma_port.c thunderbolt: Use generic tb_nvm_[read|write]_data() for Thunderbolt 2/3 devices 2021-05-31 14:37:54 +03:00
dma_port.h thunderbolt: Convert rest of the driver files to use SPDX identifier 2018-10-02 15:52:08 -07:00
dma_test.c thunderbolt: Add support for USB4 v2 80 Gb/s link 2023-06-16 09:53:27 +03:00
domain.c thunderbolt: Reset topology created by the boot firmware 2024-04-27 17:11:35 +02:00
eeprom.c thunderbolt: Ignore data CRC mismatch for USB4 routers 2023-06-16 09:53:27 +03:00
icm.c thunderbolt: Reset topology created by the boot firmware 2024-04-27 17:11:35 +02:00
Kconfig thunderbolt: Changes for v6.1 merge window 2022-09-30 13:44:59 +02:00
lc.c thunderbolt: Introduce tb_port_reset() 2024-04-27 17:11:35 +02:00
Makefile thunderbolt: Move CLx support functions into clx.c 2023-06-09 12:07:23 +03:00
nhi.c thunderbolt: Reset topology created by the boot firmware 2024-04-27 17:11:35 +02:00
nhi.h thunderbolt: Limit Intel Barlow Ridge USB3 bandwidth 2023-06-16 09:53:28 +03:00
nhi_ops.c thunderbolt: Software CM only should set force power in Tiger Lake 2020-09-03 12:06:40 +03:00
nhi_regs.h thunderbolt: Reset USB4 v2 host router 2023-06-16 09:53:28 +03:00
nvm.c thunderbolt: Increase NVM_MAX_SIZE to support Intel Barlow Ridge controller 2023-06-16 09:53:28 +03:00
path.c thunderbolt: Introduce tb_path_deactivate_hop() 2024-04-27 17:11:35 +02:00
property.c thunderbolt: Add tb_property_copy_dir() 2021-03-18 18:25:31 +03:00
quirks.c thunderbolt: Keep the domain powered when USB4 port is in redrive mode 2024-04-13 13:07:38 +02:00
retimer.c thunderbolt: Enable/disable sideband depending on USB4 port offline mode 2023-06-12 08:38:01 +03:00
sb_regs.h thunderbolt: Add missing UNSET_INBOUND_SBTX for retimer access 2023-03-13 11:54:20 +02:00
switch.c thunderbolt: Fix NULL pointer dereference in tb_port_update_credits() 2024-10-04 16:30:04 +02:00
tb.c thunderbolt: Honor TMU requirements in the domain when setting TMU mode 2024-11-08 16:28:24 +01:00
tb.h thunderbolt: Add support for asymmetric link 2024-10-04 16:30:01 +02:00
tb_msgs.h thunderbolt: Add the new USB4 v2 notification types 2023-06-16 09:53:28 +03:00
tb_regs.h thunderbolt: Add support for asymmetric link 2024-10-04 16:30:01 +02:00
test.c thunderbolt: Add test case for 3 DisplayPort tunnels 2023-06-16 09:53:29 +03:00
tmu.c thunderbolt: Correct TMU mode initialization from hardware 2023-09-15 12:59:02 +03:00
tunnel.c thunderbolt: Introduce tb_port_path_direction_downstream() 2024-10-04 16:30:01 +02:00
tunnel.h thunderbolt: Change bandwidth reservations to comply USB4 v2 2024-10-04 16:30:01 +02:00
usb4.c thunderbolt: Fix minimum allocated USB 3.x and PCIe bandwidth 2024-10-04 16:30:04 +02:00
usb4_port.c thunderbolt: Add wake on connect/disconnect on USB4 ports 2022-11-07 14:36:47 +02:00
xdomain.c thunderbolt: Restart XDomain discovery handshake after failure 2023-09-15 13:01:18 +03:00