mbox series

[00/19] thunderbolt: Power Management improvements

Message ID 20200819115905.59834-1-mika.westerberg@linux.intel.com
Headers show
Series thunderbolt: Power Management improvements | expand

Message

Mika Westerberg Aug. 19, 2020, 11:58 a.m. UTC
Hi all,

This series improves power management in the Thunderbolt driver. We already
have a quite complete power management on systems where Firmware based
Connection Manager is used (this is pretty much all non-Apple systems out
there) so this series adds a couple of optimizations to make certain power
transitions slightly faster, hopefully improving user experience.

Rest of the patches improve power management in the Software Connection
manager side of the driver. USB4 spec covers power management for USB4
hosts and devices, and also TBT3 compatible devices so these patches
implement that. We also switch to use device links instead of PCI quirk to
make sure the Thunderbolt/USB4 host controller is resumed before tunneled
PCIe and USB 3.x ports (so that it gets the chance to restore the tunnels
properly before). Tiger Lake systems with Software Connection Manager
enabled describe these relationships using a new ACPI _DSD property that we
parse in the driver and populate device links accordingly.

Mika Westerberg (17):
  thunderbolt: Software CM only should set force power in Tiger Lake
  thunderbolt: Use bit 31 to check if Firmware CM is running in Tiger Lake
  thunderbolt: Do not program NFC buffers for USB4 router protocol adapters
  thunderbolt: No need to log an error if tb_switch_lane_bonding_enable() fails
  thunderbolt: Send reset only to first generation routers
  thunderbolt: Tear down DP tunnels when suspending
  thunderbolt: Initialize TMU again on resume
  thunderbolt: Do not change default USB4 router notification timeout
  thunderbolt: Configure link after lane bonding is enabled
  thunderbolt: Set port configured for both ends of the link
  thunderbolt: Configure port for XDomain
  thunderbolt: Disable lane 1 for XDomain connection
  thunderbolt: Enable wakes from system suspend
  PCI / thunderbolt: Switch to use device links instead of PCI quirk
  ACPI: Export acpi_get_first_physical_node() to modules
  thunderbolt: Create device links from ACPI description
  thunderbolt: Add runtime PM for Software CM

Rajmohan Mani (2):
  thunderbolt: Optimize Force Power logic
  thunderbolt: Optimize NHI LC mailbox command processing

 drivers/acpi/bus.c            |   1 +
 drivers/pci/quirks.c          |  57 --------
 drivers/thunderbolt/Makefile  |   2 +
 drivers/thunderbolt/acpi.c    | 117 ++++++++++++++++
 drivers/thunderbolt/domain.c  |   2 +
 drivers/thunderbolt/icm.c     |   5 +-
 drivers/thunderbolt/lc.c      | 151 ++++++++++++++++----
 drivers/thunderbolt/nhi.c     |  69 ++++++++++
 drivers/thunderbolt/nhi_ops.c |  31 +++--
 drivers/thunderbolt/switch.c  | 209 +++++++++++++++++++++++-----
 drivers/thunderbolt/tb.c      | 189 +++++++++++++++++++++++--
 drivers/thunderbolt/tb.h      |  35 ++++-
 drivers/thunderbolt/tb_regs.h |  16 +++
 drivers/thunderbolt/usb4.c    | 251 ++++++++++++++++++++++++++--------
 14 files changed, 935 insertions(+), 200 deletions(-)
 create mode 100644 drivers/thunderbolt/acpi.c

Comments

Mika Westerberg Sept. 3, 2020, 9:15 a.m. UTC | #1
On Wed, Aug 19, 2020 at 02:58:46PM +0300, Mika Westerberg wrote:
> Hi all,
> 
> This series improves power management in the Thunderbolt driver. We already
> have a quite complete power management on systems where Firmware based
> Connection Manager is used (this is pretty much all non-Apple systems out
> there) so this series adds a couple of optimizations to make certain power
> transitions slightly faster, hopefully improving user experience.
> 
> Rest of the patches improve power management in the Software Connection
> manager side of the driver. USB4 spec covers power management for USB4
> hosts and devices, and also TBT3 compatible devices so these patches
> implement that. We also switch to use device links instead of PCI quirk to
> make sure the Thunderbolt/USB4 host controller is resumed before tunneled
> PCIe and USB 3.x ports (so that it gets the chance to restore the tunnels
> properly before). Tiger Lake systems with Software Connection Manager
> enabled describe these relationships using a new ACPI _DSD property that we
> parse in the driver and populate device links accordingly.
> 
> Mika Westerberg (17):
>   thunderbolt: Software CM only should set force power in Tiger Lake
>   thunderbolt: Use bit 31 to check if Firmware CM is running in Tiger Lake
>   thunderbolt: Do not program NFC buffers for USB4 router protocol adapters
>   thunderbolt: No need to log an error if tb_switch_lane_bonding_enable() fails
>   thunderbolt: Send reset only to first generation routers
>   thunderbolt: Tear down DP tunnels when suspending
>   thunderbolt: Initialize TMU again on resume
>   thunderbolt: Do not change default USB4 router notification timeout
>   thunderbolt: Configure link after lane bonding is enabled
>   thunderbolt: Set port configured for both ends of the link
>   thunderbolt: Configure port for XDomain
>   thunderbolt: Disable lane 1 for XDomain connection
>   thunderbolt: Enable wakes from system suspend
>   PCI / thunderbolt: Switch to use device links instead of PCI quirk
>   ACPI: Export acpi_get_first_physical_node() to modules
>   thunderbolt: Create device links from ACPI description
>   thunderbolt: Add runtime PM for Software CM
> 
> Rajmohan Mani (2):
>   thunderbolt: Optimize Force Power logic
>   thunderbolt: Optimize NHI LC mailbox command processing

All applied to thunderbolt.git/next.

@Rafael, I added your Acked-by to patches 17 and 18 as we discussed
offline.