linux/drivers/thunderbolt
Mika Westerberg d1b96495fa thunderbolt: Improve redrive mode handling
commit 24740385cb upstream.

When USB-C monitor is connected directly to Intel Barlow Ridge host, it
goes into "redrive" mode that basically routes the DisplayPort signals
directly from the GPU to the USB-C monitor without any tunneling needed.
However, the host router must be powered on for this to work. Aaron
reported that there are a couple of cases where this will not work with
the current code:

  - Booting with USB-C monitor plugged in.
  - Plugging in USB-C monitor when the host router is in sleep state
    (runtime suspended).
  - Plugging in USB-C device while the system is in system sleep state.

In all these cases once the host router is runtime suspended the picture
on the connected USB-C display disappears too. This is certainly not
what the user expected.

For this reason improve the redrive mode handling to keep the host
router from runtime suspending when detect that any of the above cases
is happening.

Fixes: a75e0684ef ("thunderbolt: Keep the domain powered when USB4 port is in redrive mode")
Reported-by: Aaron Rainbolt <arainbolt@kfocus.org>
Closes: https://lore.kernel.org/linux-usb/20241009220118.70bfedd0@kf-ir16/
Cc: stable@vger.kernel.org
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2024-12-27 13:58:51 +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: Improve redrive mode handling 2024-12-27 13:58:51 +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