mbox series

[v3,0/6] thunderbolt: CL1 support for USB4 and Titan Ridge

Message ID 20220511140549.10571-1-gil.fine@intel.com
Headers show
Series thunderbolt: CL1 support for USB4 and Titan Ridge | expand

Message

Gil Fine May 11, 2022, 2:05 p.m. UTC
v1 can be found here:
  https://lore.kernel.org/linux-usb/20220501203321.19021-1-gil.fine@intel.com/
v2 can be found here:
  https://lore.kernel.org/linux-usb/20220509201656.502-1-gil.fine@intel.com/

Changes in v3:
* Fix to support the case of enabling CL1 entry after resume
  from runtime PM (if CL1 suppported in the connected device)

Changes in v2:
* Handle CL1 and CL0s together since on the hardware level they are
  supported and enabled together
* Use device_for_each_child() to set TMU mode of host router's 1st
  children
* Use FIELD_x macros from include/linux/bitfield.h
* Split single patch into two for clarity
* Fix commit message

In this series of patches, first, we address several issues in the CL0s
implementation.
Then, we add support for a second low power state of the
link: CL1. Low power states (called collectively CLx) are used to reduce
transmitter and receiver power when a high-speed lane is idle.
We enable it, if both sides of the link support it, and only for the
first hop router (i.e. the first device that connected to the
host router). This is needed for better thermal management.
CL1 improves power management that was intoduced by CL0s.
Also, we add support of dynamic change of TMU mode to HiFi uni-directional
once DisplayPort tunnel is created.
This enables CL0s while DP tunnel exists.
Due to Intel hardware limitation, once we changed the TMU mode to HiFi
uni-directional (when DP tunnel exists), we don't change TMU mode back
to normal uni-directional, even if DP tunnel is torn down later.
Though, after sleep or runtime PM resume, the TMU is changed to normal
uni-directional (if CLx suppported in the connected device) to enable
CL1 entry.

Gil Fine (6):
  thunderbolt: Silently ignore CLx enabling in case CLx is not supported
  thunderbolt: CLx disable before system suspend only if previously
    enabled
  thunderbolt: Fix typos in CLx enabling
  thunderbolt: Change downstream router's TMU rate in both TMU uni/bidir
    mode
  thunderbolt: Add CL1 support for USB4 and Titan Ridge routers
  thunderbolt: Change TMU mode to HiFi uni-directional once DisplayPort
    tunneled

 drivers/thunderbolt/switch.c  |  91 ++++++++--------
 drivers/thunderbolt/tb.c      |  83 +++++++++++---
 drivers/thunderbolt/tb.h      |  51 +++++----
 drivers/thunderbolt/tb_regs.h |   6 ++
 drivers/thunderbolt/tmu.c     | 198 ++++++++++++++++++++++++++++------
 5 files changed, 322 insertions(+), 107 deletions(-)