Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

thunderbolt: Add support for Intel Tiger Lake

Tiger Lake integrated Thunderbolt/USB4 controller is quite close to
Intel Ice Lake. By default it is still using firmware based connection
manager so we can use most of the Ice Lake flows in Tiger Lake as well.
We check if the firmware connection manager is running and in that case
use it, otherwise use the software based connection manager.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Acked-by: Yehezkel Bernat <yehezkelshb@gmail.com>

+28
+22
drivers/thunderbolt/icm.c
··· 1633 1633 icm_veto_end(tb); 1634 1634 } 1635 1635 1636 + static bool icm_tgl_is_supported(struct tb *tb) 1637 + { 1638 + /* 1639 + * If the firmware is not running use software CM. This platform 1640 + * should fully support both. 1641 + */ 1642 + return icm_firmware_running(tb->nhi); 1643 + } 1644 + 1636 1645 static void icm_handle_notification(struct work_struct *work) 1637 1646 { 1638 1647 struct icm_notification *n = container_of(work, typeof(*n), work); ··· 2269 2260 case PCI_DEVICE_ID_INTEL_ICL_NHI0: 2270 2261 case PCI_DEVICE_ID_INTEL_ICL_NHI1: 2271 2262 icm->is_supported = icm_fr_is_supported; 2263 + icm->driver_ready = icm_icl_driver_ready; 2264 + icm->set_uuid = icm_icl_set_uuid; 2265 + icm->device_connected = icm_icl_device_connected; 2266 + icm->device_disconnected = icm_tr_device_disconnected; 2267 + icm->xdomain_connected = icm_tr_xdomain_connected; 2268 + icm->xdomain_disconnected = icm_tr_xdomain_disconnected; 2269 + icm->rtd3_veto = icm_icl_rtd3_veto; 2270 + tb->cm_ops = &icm_icl_ops; 2271 + break; 2272 + 2273 + case PCI_DEVICE_ID_INTEL_TGL_NHI0: 2274 + case PCI_DEVICE_ID_INTEL_TGL_NHI1: 2275 + icm->is_supported = icm_tgl_is_supported; 2272 2276 icm->driver_ready = icm_icl_driver_ready; 2273 2277 icm->set_uuid = icm_icl_set_uuid; 2274 2278 icm->device_connected = icm_icl_device_connected;
+4
drivers/thunderbolt/nhi.c
··· 1270 1270 .driver_data = (kernel_ulong_t)&icl_nhi_ops }, 1271 1271 { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_ICL_NHI1), 1272 1272 .driver_data = (kernel_ulong_t)&icl_nhi_ops }, 1273 + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGL_NHI0), 1274 + .driver_data = (kernel_ulong_t)&icl_nhi_ops }, 1275 + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGL_NHI1), 1276 + .driver_data = (kernel_ulong_t)&icl_nhi_ops }, 1273 1277 1274 1278 /* Any USB4 compliant host */ 1275 1279 { PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_USB4, ~0) },
+2
drivers/thunderbolt/nhi.h
··· 73 73 #define PCI_DEVICE_ID_INTEL_TITAN_RIDGE_DD_BRIDGE 0x15ef 74 74 #define PCI_DEVICE_ID_INTEL_ICL_NHI1 0x8a0d 75 75 #define PCI_DEVICE_ID_INTEL_ICL_NHI0 0x8a17 76 + #define PCI_DEVICE_ID_INTEL_TGL_NHI0 0x9a1b 77 + #define PCI_DEVICE_ID_INTEL_TGL_NHI1 0x9a1d 76 78 77 79 #define PCI_CLASS_SERIAL_USB_USB4 0x0c0340 78 80