thunderbolt: Announce USB4 v2 connection manager support
authorGil Fine <gil.fine@intel.com>
Thu, 29 Sep 2022 10:17:24 +0000 (13:17 +0300)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Fri, 16 Jun 2023 06:53:28 +0000 (09:53 +0300)
Program the CMUV (Connection Manager USB4 Version) field for USB4 v2 and
v1 routers according to the spec.

Signed-off-by: Gil Fine <gil.fine@intel.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/switch.c
drivers/thunderbolt/tb_regs.h

index a0451218af2a11870c7ecf8fa4f7c405b994b158..ebe9559c8c79825a76def29aab536806fe685d9c 100644 (file)
@@ -2430,9 +2430,13 @@ int tb_switch_configure(struct tb_switch *sw)
                /*
                 * For USB4 devices, we need to program the CM version
                 * accordingly so that it knows to expose all the
-                * additional capabilities.
+                * additional capabilities. Program it according to USB4
+                * version to avoid changing existing (v1) routers behaviour.
                 */
-               sw->config.cmuv = USB4_VERSION_1_0;
+               if (usb4_switch_version(sw) < 2)
+                       sw->config.cmuv = ROUTER_CS_4_CMUV_V1;
+               else
+                       sw->config.cmuv = ROUTER_CS_4_CMUV_V2;
                sw->config.plug_events_delay = 0xa;
 
                /* Enumerate the switch */
index 69455eaf63512d56800baf3c32894322cfa9f314..c8e40ef09903edbda82b93f9214c2ad6d7c4acec 100644 (file)
@@ -195,6 +195,9 @@ struct tb_regs_switch_header {
 
 #define ROUTER_CS_1                            0x01
 #define ROUTER_CS_4                            0x04
+/* Used with the router cmuv field */
+#define ROUTER_CS_4_CMUV_V1                    0x10
+#define ROUTER_CS_4_CMUV_V2                    0x20
 #define ROUTER_CS_5                            0x05
 #define ROUTER_CS_5_SLP                                BIT(0)
 #define ROUTER_CS_5_WOP                                BIT(1)