[Intel-gfx] [PATCH 00/23] drm/i915: Fix TypeC port mode switching

Imre Deak imre.deak at intel.com
Tue Jun 4 14:58:03 UTC 2019


Atm we switch the TypeC port mode upon receiving an HPD interrupt.
That's unsafe since the port could be active (after a modeset) or there
could be other users that depend on the port mode to stay fixed. To make
the mode switching robust add a TypeC port mode refcounting reflecting
the active state of the port and locking for any other users of it
(connector detection/AUX transfers).

The port mode will be reset if needed, whenever the TypeC lock is taken
and the port is inactive. During a modeset resetting the port and
selecting the proper PLL for the new mode must happen during the atomic
commit phase, after the port and its PLL got disabled. For that we need
to reserve both the TBT and MG PHY PLLs for the port and select the
correct one after the port mode got reset/locked down for the duration
of the port's active state.

The patchset has a few refactorings getting to the state described above
gradually, so that reviewing the actual changes is somewhat easier. I
also pushed the whole lot to [1].

The patchset also has a few fixes mostly related to the TBT-alt mode.

[1] https://github.com/ideak/linux/commits/typec-mode-switch

Cc: Manasi Navare <manasi.d.navare at intel.com>
Cc: José Roberto de Souza <jose.souza at intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi at intel.com>
Cc: Animesh Manna <animesh.manna at intel.com>
Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
Cc: Lucas De Marchi <lucas.demarchi at intel.com>
Cc: Anusha Srivatsa <anusha.srivatsa at intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>

Imre Deak (23):
  drm/i915/icl: Add support to read out the TBT PLL HW state
  drm/i915: Tune down WARNs about TBT AUX power well enabling
  drm/i915: Move the TypeC port handling code to a separate file
  drm/i915: Sanitize the terminology used for TypeC port modes
  drm/i915: Don't enable the DDI-IO power in the TypeC TBT-alt mode
  drm/i915: Fix the TBT AUX power well enabling
  drm/i915: Use the correct AUX power domain in TypeC TBT-alt mode
  drm/i915: Unify the TypeC port notation in debug/error messages
  drm/i915: Factor out common parts from TypeC port handling functions
  drm/i915: Wait for TypeC PHY complete flag to clear in safe mode
  drm/i915: Handle the TCCOLD power-down event
  drm/i915: Sanitize the TypeC connect/detect sequences
  drm/i915: Fix the TypeC port mode sanitization during loading/resume
  drm/i915: Keep the TypeC port mode fixed for detect/AUX transfers
  drm/i915: Sanitize the TypeC FIA lane configuration decoding
  drm/i915: Sanitize the shared DPLL reserve/release interface
  drm/i915: Sanitize the shared DPLL find/reference interface
  drm/i915/icl: Split getting the DPLLs to port type specific functions
  drm/i915/icl: Reserve all required PLLs for TypeC ports
  drm/i915: Keep the TypeC port mode fixed when the port is active
  drm/i915: Add state verification for the TypeC port mode
  drm/i915: Remove unneeded disconnect in TypeC legacy port mode
  drm/i915: WARN about invalid lane reversal in TBT-alt/DP-alt modes

 drivers/gpu/drm/i915/Makefile              |   3 +-
 drivers/gpu/drm/i915/Makefile.header-test  |   1 +
 drivers/gpu/drm/i915/intel_ddi.c           | 123 ++---
 drivers/gpu/drm/i915/intel_ddi.h           |   7 +
 drivers/gpu/drm/i915/intel_display.c       | 160 ++++++-
 drivers/gpu/drm/i915/intel_display.h       |   7 +-
 drivers/gpu/drm/i915/intel_display_power.c | 111 ++++-
 drivers/gpu/drm/i915/intel_dp.c            | 243 +---------
 drivers/gpu/drm/i915/intel_dp.h            |   2 -
 drivers/gpu/drm/i915/intel_dp_mst.c        |   6 +
 drivers/gpu/drm/i915/intel_dp_mst.h        |   8 +-
 drivers/gpu/drm/i915/intel_dpll_mgr.c      | 524 +++++++++++++++------
 drivers/gpu/drm/i915/intel_dpll_mgr.h      |  25 +-
 drivers/gpu/drm/i915/intel_drv.h           |  21 +-
 drivers/gpu/drm/i915/intel_hdmi.c          |   7 +
 drivers/gpu/drm/i915/intel_tc.c            | 469 ++++++++++++++++++
 drivers/gpu/drm/i915/intel_tc.h            |  27 ++
 17 files changed, 1272 insertions(+), 472 deletions(-)
 create mode 100644 drivers/gpu/drm/i915/intel_tc.c
 create mode 100644 drivers/gpu/drm/i915/intel_tc.h

-- 
2.17.1



More information about the Intel-gfx mailing list