]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
thunderbolt: Disable CLx on Titan Ridge-based devices with old firmware
authorRene Sapiens <rene.sapiens@linux.intel.com>
Sat, 7 Feb 2026 00:25:57 +0000 (16:25 -0800)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Mon, 2 Mar 2026 06:51:58 +0000 (07:51 +0100)
Thunderbolt 3 devices based on Titan Ridge routers with NVM firmware
version < 0x65 have been observed to become unstable when CL states are
enabled. This can lead to link disconnect events and the device failing
to enumerate.

Enable CLx on Titan Ridge only when the running NVM firmware version
is >= 0x65.

Signed-off-by: Rene Sapiens <rene.sapiens@linux.intel.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/quirks.c

index e81de9c30eac9acc8f9a41941cbeacb82bbebd66..9f7914ac2f48cf2fe1a8044af9a0477707535e24 100644 (file)
@@ -23,6 +23,9 @@ static void quirk_dp_credit_allocation(struct tb_switch *sw)
 
 static void quirk_clx_disable(struct tb_switch *sw)
 {
+       if (tb_switch_is_titan_ridge(sw) && sw->nvm && sw->nvm->major >= 0x65)
+               return;
+
        sw->quirks |= QUIRK_NO_CLX;
        tb_sw_dbg(sw, "disabling CL states\n");
 }
@@ -61,6 +64,10 @@ static const struct tb_quirk tb_quirks[] = {
        /* Dell WD19TB supports self-authentication on unplug */
        { 0x0000, 0x0000, 0x00d4, 0xb070, quirk_force_power_link },
        { 0x0000, 0x0000, 0x00d4, 0xb071, quirk_force_power_link },
+
+       /* Intel Titan Ridge CLx is unstable on early firmware versions */
+       { 0x8086, PCI_DEVICE_ID_INTEL_TITAN_RIDGE_DD_BRIDGE, 0x0000, 0x0000,
+                 quirk_clx_disable },
        /*
         * Intel Goshen Ridge NVM 27 and before report wrong number of
         * DP buffers.