summaryrefslogtreecommitdiffstats
path: root/drivers/thunderbolt/sb_regs.h
diff options
context:
space:
mode:
authorGil Fine <gil.fine@linux.intel.com>2023-03-03 00:17:24 +0200
committerMika Westerberg <mika.westerberg@linux.intel.com>2023-03-13 11:54:20 +0200
commitcd0c1e582b055dea615001b8bd8eccaf6f69f7ce (patch)
treec20328d62dc988a28479aa1abcedee61dd596b83 /drivers/thunderbolt/sb_regs.h
parentacec726473822bc6b585961f4ca2a11fa7f28341 (diff)
downloadlinux-stable-cd0c1e582b055dea615001b8bd8eccaf6f69f7ce.tar.gz
linux-stable-cd0c1e582b055dea615001b8bd8eccaf6f69f7ce.tar.bz2
linux-stable-cd0c1e582b055dea615001b8bd8eccaf6f69f7ce.zip
thunderbolt: Add missing UNSET_INBOUND_SBTX for retimer access
According to USB4 retimer specification, the process of firmware update sequence requires issuing a SET_INBOUND_SBTX port operation that later shall be followed by UNSET_INBOUND_SBTX port operation. This last step is not currently issued by the driver but it is necessary to make sure the retimers are put back to passthrough mode even during enumeration. If this step is missing the link may not come up properly after soft-reboot for example. For this reason issue UNSET_INBOUND_SBTX after SET_INBOUND_SBTX for enumeration and also when the NVM upgrade is run. Reported-by: Christian Schaubschläger <christian.schaubschlaeger@gmx.at> Link: https://lore.kernel.org/linux-usb/b556f5ed-5ee8-9990-9910-afd60db93310@gmx.at/ 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>
Diffstat (limited to 'drivers/thunderbolt/sb_regs.h')
-rw-r--r--drivers/thunderbolt/sb_regs.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/thunderbolt/sb_regs.h b/drivers/thunderbolt/sb_regs.h
index 5185cf3e4d97..f37a4320f10a 100644
--- a/drivers/thunderbolt/sb_regs.h
+++ b/drivers/thunderbolt/sb_regs.h
@@ -20,6 +20,7 @@ enum usb4_sb_opcode {
USB4_SB_OPCODE_ROUTER_OFFLINE = 0x4e45534c, /* "LSEN" */
USB4_SB_OPCODE_ENUMERATE_RETIMERS = 0x4d554e45, /* "ENUM" */
USB4_SB_OPCODE_SET_INBOUND_SBTX = 0x5055534c, /* "LSUP" */
+ USB4_SB_OPCODE_UNSET_INBOUND_SBTX = 0x50555355, /* "USUP" */
USB4_SB_OPCODE_QUERY_LAST_RETIMER = 0x5453414c, /* "LAST" */
USB4_SB_OPCODE_GET_NVM_SECTOR_SIZE = 0x53534e47, /* "GNSS" */
USB4_SB_OPCODE_NVM_SET_OFFSET = 0x53504f42, /* "BOPS" */