thunderbolt: Make PCIe tunnel setup and teardown follow CM guide

The USB4 Connection Manager guide suggests that the PCIe paths are
enabled from the upstream adapter to the downstream adapter and vice
versa on disable so make the driver follows this sequence.

Signed-off-by: Gil Fine <gil.fine@linux.intel.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
This commit is contained in:
Gil Fine 2023-11-15 12:09:56 +02:00 committed by Mika Westerberg
parent 0b663ec9fe
commit 54967f4177

View file

@ -199,14 +199,21 @@ static int tb_pci_activate(struct tb_tunnel *tunnel, bool activate)
return res;
}
res = tb_pci_port_enable(tunnel->src_port, activate);
if (activate)
res = tb_pci_port_enable(tunnel->dst_port, activate);
else
res = tb_pci_port_enable(tunnel->src_port, activate);
if (res)
return res;
if (tb_port_is_pcie_up(tunnel->dst_port)) {
res = tb_pci_port_enable(tunnel->dst_port, activate);
if (activate) {
res = tb_pci_port_enable(tunnel->src_port, activate);
if (res)
return res;
} else {
/* Downstream router could be unplugged */
tb_pci_port_enable(tunnel->dst_port, activate);
}
return activate ? 0 : tb_pci_set_ext_encapsulation(tunnel, activate);