linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: linux-usb@vger.kernel.org
Cc: Andreas Noever <andreas.noever@gmail.com>,
	Michael Jamet <michael.jamet@intel.com>,
	Mika Westerberg <mika.westerberg@linux.intel.com>,
	Yehezkel Bernat <YehezkelShB@gmail.com>,
	Rajmohan Mani <rajmohan.mani@intel.com>,
	Nicholas Johnson <nicholas.johnson-opensource@outlook.com.au>,
	Lukas Wunner <lukas@wunner.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Alan Stern <stern@rowland.harvard.edu>,
	Mario.Limonciello@dell.com,
	Anthony Wong <anthony.wong@canonical.com>,
	Oliver Neukum <oneukum@suse.com>,
	Christian Kellner <ckellner@redhat.com>,
	"David S . Miller" <davem@davemloft.net>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH v2 0/9] thunderbolt: Add support for USB4
Date: Tue, 17 Dec 2019 15:33:36 +0300	[thread overview]
Message-ID: <20191217123345.31850-1-mika.westerberg@linux.intel.com> (raw)

Hi all,

USB4 is the public specification of Thunderbolt 3 protocol and can be
downloaded here:

  https://www.usb.org/sites/default/files/USB4%20Specification_1.zip

USB4 is about tunneling different protocols over a single cable (in the
same way as Thunderbolt). The current USB4 spec supports PCIe, Display Port
and USB 3.x, and also software based protocols such as networking between
domains (hosts).

So far PCs have been using firmware based Connection Manager (FW CM, ICM)
and Apple systems have been using software based one (SW CM, ECM). A
Connection Manager is the entity that handles creation of different tunnel
types through the USB4 (and Thunderbolt) fabric. With USB4 the plan is to
have software based Connection Manager everywhere but some early systems
will come with firmware based connection manager.

Current Linux Thunderbolt driver supports both "modes" and can detect which
one to use dynamically.

This series extends the Linux Thunderbolt driver to support USB4 compliant
hosts and devices (this applies to both firmware and software based
connection managers). USB4 Features enabled by this series include:

  - PCIe tunneling
  - Display Port tunneling
  - USB 3.x tunneling
  - P2P networking (implemented in drivers/net/thunderbolt.c)
  - Host and device NVM firmware upgrade

Power management support is still work in progress. It will be submitted
later on once properly tested.

The previous versions of the series can be seen here:

  v1: https://lore.kernel.org/linux-usb/20191023112154.64235-1-mika.westerberg@linux.intel.com/
  RFC: https://lore.kernel.org/lkml/20191001113830.13028-1-mika.westerberg@linux.intel.com/

Changes from v1:

  * Rebased on top of v5.5-rc2.
  * Add a new patch to populate PG field in hotplug ack packet.
  * Rename the networking driver Kconfig symbol to CONFIG_USB4_NET to
    follow the driver itself (CONFIG_USB4).

Changes from the RFC version:

  * Spelled out what are ICM, and SW CM (and ECM)
  * Log warning in tb_switch_add() instead of the caller
  * Use Lukas' suggestion in port walk helper macro and also drop
    tb_switch_for_each_remote_port() and tb_switch_for_each_connected_port()
  * Rework icm.c::add_switch() so that we don't need to pass huge amount of
    parameters to it
  * Add rx/tx versions of link width/speed attributes following convention
    used in USB bus (with the exception that we provide rx_speed and
    tx_speed as well).
  * Spell out DROM and try to clarify what linking in patch [11/25] means.
  * Add a new patch that expands controller name in existing tb_switch_is_xy()
    functions and do the same for tb_switch_is_ar()/tr().
  * Move register name conversion pathes up in the series so that we can
    apply them for v5.5 already.
  * Update changelog of patch [14/25] so that it only mentions Titan Ridge.
  * Rename CONFIG_THUNDERBOLT to CONFIG_USB4, this should be more future
    proof.
  * Check if TMU is enabled in tb_switch_tmu_enable().
  * Use "usb3" and "USB3" in USB 3.x tunneling functionality instead of
    plain "usb".
  * Reword documentation patch [25/25] according to received comments.
  * Introduce icm_firmware_running().

Mika Westerberg (6):
  thunderbolt: Make tb_find_port() available to other files
  thunderbolt: Call tb_eeprom_get_drom_offset() from tb_eeprom_read_n()
  thunderbolt: Populate PG field in hot plug acknowledgment packet
  thunderbolt: Add initial support for USB4
  thunderbolt: Update Kconfig entries to USB4
  thunderbolt: Update documentation with the USB4 information

Rajmohan Mani (3):
  thunderbolt: Make tb_switch_find_cap() available to other files
  thunderbolt: Add support for Time Management Unit
  thunderbolt: Add support for USB 3.x tunnels

 Documentation/admin-guide/thunderbolt.rst |  30 +-
 drivers/Makefile                          |   2 +-
 drivers/net/Kconfig                       |  10 +-
 drivers/net/Makefile                      |   2 +-
 drivers/thunderbolt/Kconfig               |  11 +-
 drivers/thunderbolt/Makefile              |   4 +-
 drivers/thunderbolt/cap.c                 |  11 +-
 drivers/thunderbolt/ctl.c                 |  19 +-
 drivers/thunderbolt/ctl.h                 |   3 +-
 drivers/thunderbolt/eeprom.c              | 137 ++--
 drivers/thunderbolt/nhi.c                 |   3 +
 drivers/thunderbolt/nhi.h                 |   2 +
 drivers/thunderbolt/switch.c              | 439 ++++++++++---
 drivers/thunderbolt/tb.c                  | 227 +++++--
 drivers/thunderbolt/tb.h                  | 101 +++
 drivers/thunderbolt/tb_msgs.h             |   6 +-
 drivers/thunderbolt/tb_regs.h             |  65 +-
 drivers/thunderbolt/tmu.c                 | 383 +++++++++++
 drivers/thunderbolt/tunnel.c              | 169 ++++-
 drivers/thunderbolt/tunnel.h              |   9 +
 drivers/thunderbolt/usb4.c                | 764 ++++++++++++++++++++++
 drivers/thunderbolt/xdomain.c             |   6 +
 22 files changed, 2167 insertions(+), 236 deletions(-)
 create mode 100644 drivers/thunderbolt/tmu.c
 create mode 100644 drivers/thunderbolt/usb4.c

-- 
2.24.0


             reply	other threads:[~2019-12-17 12:34 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-17 12:33 Mika Westerberg [this message]
2019-12-17 12:33 ` [PATCH v2 1/9] thunderbolt: Make tb_find_port() available to other files Mika Westerberg
2019-12-17 12:33 ` [PATCH v2 2/9] thunderbolt: Call tb_eeprom_get_drom_offset() from tb_eeprom_read_n() Mika Westerberg
2019-12-17 12:33 ` [PATCH v2 3/9] thunderbolt: Populate PG field in hot plug acknowledgment packet Mika Westerberg
2019-12-17 12:46   ` Greg Kroah-Hartman
2019-12-17 14:55     ` Mika Westerberg
2019-12-17 12:47   ` Greg Kroah-Hartman
2019-12-17 14:56     ` Mika Westerberg
2019-12-18 14:35       ` Greg Kroah-Hartman
2019-12-17 12:33 ` [PATCH v2 4/9] thunderbolt: Add initial support for USB4 Mika Westerberg
2019-12-18  9:34   ` Nicholas Johnson
2019-12-18 14:36     ` Greg Kroah-Hartman
2019-12-17 12:33 ` [PATCH v2 5/9] thunderbolt: Update Kconfig entries to USB4 Mika Westerberg
2019-12-18  9:36   ` Nicholas Johnson
2019-12-17 12:33 ` [PATCH v2 6/9] thunderbolt: Make tb_switch_find_cap() available to other files Mika Westerberg
2019-12-17 12:33 ` [PATCH v2 7/9] thunderbolt: Add support for Time Management Unit Mika Westerberg
2019-12-18  9:38   ` Nicholas Johnson
2019-12-17 12:33 ` [PATCH v2 8/9] thunderbolt: Add support for USB 3.x tunnels Mika Westerberg
2019-12-17 12:33 ` [PATCH v2 9/9] thunderbolt: Update documentation with the USB4 information Mika Westerberg
2019-12-18 14:43 ` [PATCH v2 0/9] thunderbolt: Add support for USB4 Greg Kroah-Hartman
2019-12-18 15:30   ` Mika Westerberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191217123345.31850-1-mika.westerberg@linux.intel.com \
    --to=mika.westerberg@linux.intel.com \
    --cc=Mario.Limonciello@dell.com \
    --cc=YehezkelShB@gmail.com \
    --cc=andreas.noever@gmail.com \
    --cc=anthony.wong@canonical.com \
    --cc=ckellner@redhat.com \
    --cc=davem@davemloft.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=michael.jamet@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=nicholas.johnson-opensource@outlook.com.au \
    --cc=oneukum@suse.com \
    --cc=rajmohan.mani@intel.com \
    --cc=stern@rowland.harvard.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).