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