[PATCH 00/38][SRU][G/H] Add DRM support for LTTPR non-transparent link training mode

You-Sheng Yang vicamo.yang at canonical.com
Tue Nov 24 10:42:35 UTC 2020


BugLink: https://bugs.launchpad.net/bugs/1903969

[Impact]

On platforms supported DP tunneling over USB 3.2 or so, a Retimer is
required on the host side to cover insertion loss. On such platforms the
rtimer firmware maybe configured to use LTTPR (Link Training Tunable PHY
Repeater) non-transparent mode only, which is only supported in drm-tip
currently. Without LTTPR support, link training may fail with following
error messages depending on the data path configuration:

  i915 0000:00:02.0: [drm] *ERROR* Link Training Unsuccessful
  i915 0000:00:02.0: [drm] *ERROR* CPU pipe A FIFO underrun

[Fix]

Patchset https://www.spinics.net/lists/intel-gfx/msg248700.html
("drm/i915: Add support for LTTPR non-transparent link training mode")
is required to fix this issue. It has been landed to drm-tip and will
only included to mainline in v5.11.

Following patchsets were pulled to satisfy conflicts/link training basis:
* Patchset https://patchwork.freedesktop.org/series/76993/ ("Plumb crtc
  state to link training code")
* Patch https://patchwork.freedesktop.org/series/82277/ ("drm/i915: Fix
  TGL DKL PHY DP vswing handling")
* Patchset https://patchwork.freedesktop.org/series/81083/ ("tgl/ehl:
  Update voltage swing table")
* Patchset https://patchwork.freedesktop.org/series/80404/
  ("drm/i915/tgl: Add new voltage swing table")
* Patchset https://patchwork.freedesktop.org/series/79265/
  ("drm/i915/display: Implement HOBL")
* Patchset https://patchwork.freedesktop.org/series/79481/
  ("drm/i915/ddi: Don't rewrite DDI_BUF_CTL reg during DP link
  training")
* Patchset https://patchwork.freedesktop.org/series/77198/ ("drm/i915:
  DP vswing/preemph fixes")
* Patch https://patchwork.freedesktop.org/patch/373469/
  ("drm/i915/display: prefer dig_port to reference intel_digital_port")
* Patch https://patchwork.freedesktop.org/series/76917/
  ("drm/i915: HDCP: retry link integrity check on failure")
* Patch https://patchwork.freedesktop.org/series/77934/ ("drm/i915/tgl:
  Add HBR and HBR2+ voltage swing table")
* Patch https://patchwork.freedesktop.org/series/77806/ ("drm/i915/tgl:
  Update TC DP vswing table")

[Test Case]

On Dell OptiPlex and WD19 docking station, use following steps to verify:
1. disconnect WD19 from OptiPlex, disconnect OptiPlex's power
2. attach OptiPlex's power cord
3. attach WD19's power cord
4. attach DP to WD19
5. attach WD19 to OptiPlex
6. boot up and check if boot to GUI directly
7. `dmesg` and check if aforementioned DRM link training error appears

[Regression Potential]

The patchsets pulled for dependency are mostly about updating voltage
swing tables, refactoring some translation functions, along with a few
function fixes. Aside from those, HOBL (Hours of Battery Life) is also
pulled.

For the major part, LTTPR support, when LTTPR is either not detected or
not supported, it will fall back to use transparent mode as it was.
Otherwise, DP Standard recommends to use LTTPR non-transparent mode for
link training, so this should be the right way to have best hardware
support.

Imre Deak (8):
  drm/i915/ddi: Don't frob the DP link scramble disabling flag
  drm/i915/ddi: Don't rewrite DDI_BUF_CTL reg during DP link training
  drm/i915: Fix DP link training pattern mask
  drm/i915: Simplify the link training functions
  drm/i915: Factor out a helper to disable the DPCD training pattern
  drm/dp: Add LTTPR helpers
  drm/i915: Switch to LTTPR transparent mode link training
  drm/i915: Switch to LTTPR non-transparent mode link training

José Roberto de Souza (11):
  drm/i915/tgl: Update TC DP vswing table
  drm/i915/tgl: Add HBR and HBR2+ voltage swing table
  drm/i915/display: Replace drm_i915_private in voltage swing functions
    by intel_encoder
  drm/i915/display: Remove port and phy from voltage swing functions
  drm/i915/bios: Parse HOBL parameter
  drm/i915/display: Implement HOBL
  drm/i915/tgl: Set subplatforms
  drm/i915/tgl: Add new voltage swing table
  drm/i915/display/tgl: Use TGL DP tables for eDP ports without low
    power support
  drm/i915/display/ehl: Use EHL DP tables for eDP ports without low
    power support
  drm/i915/ehl: Update voltage swing table

Lucas De Marchi (1):
  drm/i915/display: prefer dig_port to reference intel_digital_port

Oliver Barta (1):
  drm/i915: HDCP: retry link integrity check on failure

Ville Syrjälä (17):
  drm/i915: Fix cpt/ppt max pre-emphasis
  drm/i915: Fix ibx max vswing/preemph
  drm/i915: Fix ivb cpu edp vswing
  drm/i915: Add {preemph,voltage}_max() vfuncs
  drm/i915: Reverse preemph vs. voltage swing preference
  drm/i915: Replace some hand rolled max()s
  drm/i915: Fix DP_TRAIN_MAX_{PRE_EMPHASIS,SWING}_REACHED handling
  drm/i915: Fix TGL DKL PHY DP vswing handling
  drm/i915: s/old_crtc_state/crtc_state/
  drm/i915: Make intel_dp_process_phy_request() static
  drm/i915: Shove the PHY test into the hotplug work
  drm/i915: Split ICL combo PHY buf trans per output type
  drm/i915: Split ICL MG PHY buf trans per output type
  drm/i915: Split EHL combo PHY buf trans per output type
  drm/i915: Split TGL combo PHY buf trans per output type
  drm/i915: Split TGL DKL PHY buf trans per output type
  drm/i915: Plumb crtc_state to link training

 drivers/gpu/drm/drm_dp_helper.c               | 232 ++++-
 drivers/gpu/drm/i915/display/intel_bios.c     |   3 +
 drivers/gpu/drm/i915/display/intel_ddi.c      | 891 +++++++++++-------
 drivers/gpu/drm/i915/display/intel_ddi.h      |   9 +-
 drivers/gpu/drm/i915/display/intel_display.c  |   6 +-
 drivers/gpu/drm/i915/display/intel_display.h  |   2 +-
 .../drm/i915/display/intel_display_debugfs.c  |  12 +-
 .../drm/i915/display/intel_display_power.c    |   4 +-
 .../drm/i915/display/intel_display_types.h    |  63 +-
 drivers/gpu/drm/i915/display/intel_dp.c       | 716 ++++++++------
 drivers/gpu/drm/i915/display/intel_dp.h       |  19 +-
 .../drm/i915/display/intel_dp_link_training.c | 594 ++++++++++--
 .../drm/i915/display/intel_dp_link_training.h |  17 +-
 drivers/gpu/drm/i915/display/intel_dp_mst.c   |  74 +-
 drivers/gpu/drm/i915/display/intel_dp_mst.h   |   6 +-
 drivers/gpu/drm/i915/display/intel_dpio_phy.c |  61 +-
 drivers/gpu/drm/i915/display/intel_dpio_phy.h |   2 +
 drivers/gpu/drm/i915/display/intel_hdcp.c     | 118 +--
 drivers/gpu/drm/i915/display/intel_hdmi.c     | 276 +++---
 drivers/gpu/drm/i915/display/intel_hdmi.h     |   4 +-
 drivers/gpu/drm/i915/display/intel_lspcon.c   |   8 +-
 drivers/gpu/drm/i915/display/intel_lspcon.h   |   2 +-
 drivers/gpu/drm/i915/display/intel_psr.c      |   4 +-
 drivers/gpu/drm/i915/display/intel_vbt_defs.h |   1 +
 drivers/gpu/drm/i915/display/intel_vdsc.c     |   8 +-
 drivers/gpu/drm/i915/i915_drv.h               |   7 +
 drivers/gpu/drm/i915/i915_reg.h               |   8 +
 drivers/gpu/drm/i915/intel_device_info.c      |  19 +
 include/drm/drm_dp_helper.h                   |  62 ++
 29 files changed, 2148 insertions(+), 1080 deletions(-)

-- 
2.29.2




More information about the kernel-team mailing list