]> www.infradead.org Git - users/jedix/linux-maple.git/commit
drm/i915/dp: Fix link training interrupted by a short HPD pulse
authorImre Deak <imre.deak@intel.com>
Tue, 4 Mar 2025 15:29:15 +0000 (17:29 +0200)
committerImre Deak <imre.deak@intel.com>
Tue, 11 Mar 2025 09:15:27 +0000 (11:15 +0200)
commit35021b5b15de0c4eceecda9e2dadab2e5e56b7e2
tree9df4b3b3a0c9079bf4ee5acd526ed111bc60efa3
parent0d77a3e0ea90a7ee25755a94694cdfd822c9db6b
drm/i915/dp: Fix link training interrupted by a short HPD pulse

During Display Port link training the handling of HPD pulses should be
prevented, as that handling can interfere with the link training:

- Accessing DPCD registers outside the range of link training registers
  are not allowed by the Standard (see DP Standard v2.1, 3.5.2.16.1,
  3.6.6.1). The pulse handler reads the DPRX capability registers, which
  are outside of the allowed range.
- Switching of the LTTPR transparent/non-transparent mode may reset the
  LTTPRs on the link, thus aborting any ongoing link training. The pulse
  handler does set the LTTPR mode, thus it could unexpectedly abort the
  ongoing link training.

Block/unblock the HPD pulse handling for the duration of the link
training to prevent the above DPCD register accesses / LTTPR mode
change.

Apart from the above scenarios, there are other ways a non-link training
DPCD register could be accessed during link training: via the DRM AUX
device node, or via DPCD register probing (as performed by
drm_dp_dpcd_probe()). These will be addressed by a follow-up change.

v2: Rebase on the intel_hpd_suspend/resume -> intel_hpd_block/unblock()
    rename change.

Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20250304152917.3407080-5-imre.deak@intel.com
drivers/gpu/drm/i915/display/intel_dp_link_training.c