Hi all, In recent PCs such as Lenovo X1 Carbon 6th generation the Thunderbolt controller is in RTD3 mode (Runtime D3). This is different from the previous modes because now the controller is present most of the time (it still will be hot-removed/hot-added during NVM firmware upgrade). Because of that we need to dynamically power it down whenever possible to save some power.
This patch series adds Linux runtime PM support for the Thunderbolt host controller driver using ICM firmware but it should be generic enough for future additions to allow similar functionality for the older Apple hardware as well (even though those system do not support full RTD3, it still makes it possible for the host controller to go to low power state if cable is not connected). With these patches the driver automatically runtime suspends the host controller after being idle for 15s. The connected Thunderbolt devices (if any) need to support RTD3 mode as well. Typically all 3rd generation devices (Alpine Ridge, Titan Ridge) support this. However, while this provides some power savings, there is more work to do in order to allow powering down the PCIe root port leading to the Thunderbolt PCIe hierarchy. This work is still in progress. Mika Westerberg (5): thunderbolt: Use 64-bit DMA mask if supported by the platform thunderbolt: Do not unnecessarily call ICM get route thunderbolt: No need to take tb->lock in domain suspend/complete thunderbolt: Use correct ICM commands in system suspend thunderbolt: Add support for runtime PM drivers/thunderbolt/domain.c | 55 ++++++++--- drivers/thunderbolt/icm.c | 172 ++++++++++++++++++++++++++++------ drivers/thunderbolt/nhi.c | 46 ++++++++- drivers/thunderbolt/switch.c | 65 ++++++++++++- drivers/thunderbolt/tb.h | 10 ++ drivers/thunderbolt/tb_msgs.h | 4 + drivers/thunderbolt/xdomain.c | 18 ++++ 7 files changed, 323 insertions(+), 47 deletions(-) -- 2.17.1