diff mbox series

[1/3] thunderbolt: Set lane bonding bit only for downstream port

Message ID 20231114121203.203762-1-mika.westerberg@linux.intel.com (mailing list archive)
State Accepted
Commit 24d85bb3be373b5831699bddf698b392bd2b904d
Headers show
Series [1/3] thunderbolt: Set lane bonding bit only for downstream port | expand

Commit Message

Mika Westerberg Nov. 14, 2023, 12:12 p.m. UTC
From: Gil Fine <gil.fine@linux.intel.com>

Fix the lane bonding procedure to follow the steps described in USB4
Connection Manager guide. Hence, set the lane bonding bit only for
downstream port. This is needed for certain ASMedia device, otherwise
lane bonding fails and the device disconnects.

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>
---
 drivers/thunderbolt/switch.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Mika Westerberg Nov. 17, 2023, 11:09 a.m. UTC | #1
On Tue, Nov 14, 2023 at 02:12:01PM +0200, Mika Westerberg wrote:
> From: Gil Fine <gil.fine@linux.intel.com>
> 
> Fix the lane bonding procedure to follow the steps described in USB4
> Connection Manager guide. Hence, set the lane bonding bit only for
> downstream port. This is needed for certain ASMedia device, otherwise
> lane bonding fails and the device disconnects.
> 
> 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>

All 3 patches applied to thunderbolt.git/fixes.
diff mbox series

Patch

diff --git a/drivers/thunderbolt/switch.c b/drivers/thunderbolt/switch.c
index 1e15ffa79295..9e5cc285cc8d 100644
--- a/drivers/thunderbolt/switch.c
+++ b/drivers/thunderbolt/switch.c
@@ -1143,7 +1143,7 @@  int tb_port_lane_bonding_enable(struct tb_port *port)
 	 * Only set bonding if the link was not already bonded. This
 	 * avoids the lane adapter to re-enter bonding state.
 	 */
-	if (width == TB_LINK_WIDTH_SINGLE) {
+	if (width == TB_LINK_WIDTH_SINGLE && !tb_is_upstream_port(port)) {
 		ret = tb_port_set_lane_bonding(port, true);
 		if (ret)
 			goto err_lane1;