linux/drivers/thunderbolt
Mika Westerberg d1ff70241a thunderbolt: Add support for XDomain discovery protocol
When two hosts are connected over a Thunderbolt cable, there is a
protocol they can use to communicate capabilities supported by the host.
The discovery protocol uses automatically configured control channel
(ring 0) and is build on top of request/response transactions using
special XDomain primitives provided by the Thunderbolt base protocol.

The capabilities consists of a root directory block of basic properties
used for identification of the host, and then there can be zero or more
directories each describing a Thunderbolt service and its capabilities.

Once both sides have discovered what is supported the two hosts can
setup high-speed DMA paths and transfer data to the other side using
whatever protocol was agreed based on the properties. The software
protocol used to communicate which DMA paths to enable is service
specific.

This patch adds support for the XDomain discovery protocol to the
Thunderbolt bus. We model each remote host connection as a Linux XDomain
device. For each Thunderbolt service found supported on the XDomain
device, we create Linux Thunderbolt service device which Thunderbolt
service drivers can then bind to based on the protocol identification
information retrieved from the property directory describing the
service.

This code is based on the work done by Amir Levy and Michael Jamet.

Signed-off-by: Michael Jamet <michael.jamet@intel.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Yehezkel Bernat <yehezkel.bernat@intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-10-02 11:24:41 -07:00
..
cap.c thunderbolt: Rework capability handling 2017-06-09 11:42:41 +02:00
ctl.c thunderbolt: Add support for XDomain discovery protocol 2017-10-02 11:24:41 -07:00
ctl.h thunderbolt: Add support for XDomain discovery protocol 2017-10-02 11:24:41 -07:00
dma_port.c thunderbolt: Add support for DMA configuration based mailbox 2017-06-09 11:42:43 +02:00
dma_port.h thunderbolt: Add support for DMA configuration based mailbox 2017-06-09 11:42:43 +02:00
domain.c thunderbolt: Add support for XDomain discovery protocol 2017-10-02 11:24:41 -07:00
eeprom.c thunderbolt: Do not enumerate more ports from DROM than the controller has 2017-08-10 14:25:35 -07:00
icm.c thunderbolt: Add support for XDomain discovery protocol 2017-10-02 11:24:41 -07:00
Kconfig thunderbolt: Add support for host and device NVM firmware upgrade 2017-06-09 11:42:43 +02:00
Makefile thunderbolt: Add support for XDomain discovery protocol 2017-10-02 11:24:41 -07:00
nhi_regs.h thunderbolt: Add support for Internal Connection Manager (ICM) 2017-06-09 11:42:43 +02:00
nhi.c thunderbolt: Add support for Internal Connection Manager (ICM) 2017-06-09 11:42:43 +02:00
nhi.h thunderbolt: Add support for XDomain discovery protocol 2017-10-02 11:24:41 -07:00
path.c thunderbolt: Clear hops before overwriting 2014-08-26 14:54:48 -07:00
property.c thunderbolt: Add support for XDomain properties 2017-10-02 11:24:40 -07:00
switch.c thunderbolt: Add support for XDomain discovery protocol 2017-10-02 11:24:41 -07:00
tb_msgs.h thunderbolt: Add support for XDomain discovery protocol 2017-10-02 11:24:41 -07:00
tb_regs.h thunderbolt: Rework capability handling 2017-06-09 11:42:41 +02:00
tb.c treewide: Consolidate Apple DMI checks 2017-08-03 23:26:22 +02:00
tb.h thunderbolt: Add support for XDomain discovery protocol 2017-10-02 11:24:41 -07:00
tunnel_pci.c thunderbolt: Introduce thunderbolt bus and connection manager 2017-06-09 11:42:41 +02:00
tunnel_pci.h thunderbolt: Add support for simple pci tunnels 2014-06-19 14:07:47 -07:00
xdomain.c thunderbolt: Add support for XDomain discovery protocol 2017-10-02 11:24:41 -07:00