ACK: [PATCH 1/1][SRU][OEM-5.6/U] thunderbolt: Add support for Intel Tiger Lake
Kleber Souza
kleber.souza at canonical.com
Wed Jun 24 08:41:17 UTC 2020
On 2020-06-19 13:13, You-Sheng Yang wrote:
> From: Mika Westerberg <mika.westerberg at linux.intel.com>
>
> BugLink: https://bugs.launchpad.net/bugs/1844410
>
> 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 at linux.intel.com>
> Acked-by: Yehezkel Bernat <yehezkelshb at gmail.com>
> (cherry picked from commit 57d8df68eb53cc15e5bdfc14bfb28a18543109eb)
> Signed-off-by: You-Sheng Yang <vicamo.yang at canonical.com>
Acked-by: Kleber Sacilotto de Souza <kleber.souza at canonical.com>
> ---
> drivers/thunderbolt/icm.c | 22 ++++++++++++++++++++++
> drivers/thunderbolt/nhi.c | 4 ++++
> drivers/thunderbolt/nhi.h | 2 ++
> 3 files changed, 28 insertions(+)
>
> diff --git a/drivers/thunderbolt/icm.c b/drivers/thunderbolt/icm.c
> index fbbe32ca1e69..ffcc8c3459e5 100644
> --- a/drivers/thunderbolt/icm.c
> +++ b/drivers/thunderbolt/icm.c
> @@ -1633,6 +1633,15 @@ static void icm_icl_rtd3_veto(struct tb *tb, const struct icm_pkg_header *hdr)
> icm_veto_end(tb);
> }
>
> +static bool icm_tgl_is_supported(struct tb *tb)
> +{
> + /*
> + * If the firmware is not running use software CM. This platform
> + * should fully support both.
> + */
> + return icm_firmware_running(tb->nhi);
> +}
> +
> static void icm_handle_notification(struct work_struct *work)
> {
> struct icm_notification *n = container_of(work, typeof(*n), work);
> @@ -2269,6 +2278,19 @@ struct tb *icm_probe(struct tb_nhi *nhi)
> icm->rtd3_veto = icm_icl_rtd3_veto;
> tb->cm_ops = &icm_icl_ops;
> break;
> +
> + case PCI_DEVICE_ID_INTEL_TGL_NHI0:
> + case PCI_DEVICE_ID_INTEL_TGL_NHI1:
> + icm->is_supported = icm_tgl_is_supported;
> + icm->driver_ready = icm_icl_driver_ready;
> + icm->set_uuid = icm_icl_set_uuid;
> + icm->device_connected = icm_icl_device_connected;
> + icm->device_disconnected = icm_tr_device_disconnected;
> + icm->xdomain_connected = icm_tr_xdomain_connected;
> + icm->xdomain_disconnected = icm_tr_xdomain_disconnected;
> + icm->rtd3_veto = icm_icl_rtd3_veto;
> + tb->cm_ops = &icm_icl_ops;
> + break;
> }
>
> if (!icm->is_supported || !icm->is_supported(tb)) {
> diff --git a/drivers/thunderbolt/nhi.c b/drivers/thunderbolt/nhi.c
> index 1be491ecbb45..2e51d06e8e8d 100644
> --- a/drivers/thunderbolt/nhi.c
> +++ b/drivers/thunderbolt/nhi.c
> @@ -1270,6 +1270,10 @@ static struct pci_device_id nhi_ids[] = {
> .driver_data = (kernel_ulong_t)&icl_nhi_ops },
> { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_ICL_NHI1),
> .driver_data = (kernel_ulong_t)&icl_nhi_ops },
> + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGL_NHI0),
> + .driver_data = (kernel_ulong_t)&icl_nhi_ops },
> + { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_TGL_NHI1),
> + .driver_data = (kernel_ulong_t)&icl_nhi_ops },
>
> /* Any USB4 compliant host */
> { PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_USB4, ~0) },
> diff --git a/drivers/thunderbolt/nhi.h b/drivers/thunderbolt/nhi.h
> index 5d276ee9b38e..80162e4b013f 100644
> --- a/drivers/thunderbolt/nhi.h
> +++ b/drivers/thunderbolt/nhi.h
> @@ -73,6 +73,8 @@ extern const struct tb_nhi_ops icl_nhi_ops;
> #define PCI_DEVICE_ID_INTEL_TITAN_RIDGE_DD_BRIDGE 0x15ef
> #define PCI_DEVICE_ID_INTEL_ICL_NHI1 0x8a0d
> #define PCI_DEVICE_ID_INTEL_ICL_NHI0 0x8a17
> +#define PCI_DEVICE_ID_INTEL_TGL_NHI0 0x9a1b
> +#define PCI_DEVICE_ID_INTEL_TGL_NHI1 0x9a1d
>
> #define PCI_CLASS_SERIAL_USB_USB4 0x0c0340
>
>
More information about the kernel-team
mailing list