As per the spec DP2.1 section 3.6.8.6.1, section 2.12.1, section 2.12.3 (Link Policy) the LTTPR caps is to be read first followed by the DPRX capability.
Git log shows that initially drm dp helper exposed function to read lttpr caps. Driver reads the lttpr caps and then the dprx caps. For a particular issue https://gitlab.freedesktop.org/drm/intel/-/issues/3415 as a workaround reading dprx caps was done first to know if the panel is < DP1.4 and then read 1 block at a time for lttpr caps. This can be handled in a better way and two such ways is what I see. 1. Read LTTPR caps followed by DPRX caps as per the spec. Then on reading dprx caps if revision < 1.4 then re-read the lttpr caps one block at a time. 2. Read LTTPR caps and if 8b/10b check for correctness of the link rate supported(lttpr caps 0xf0001), if some corrupted value is read then read one block at a time. I am open for either of the two or you have any other options as well I am open. Signed-off-by: Arun R Murthy <[email protected]> --- Arun R Murthy (4): drm/display/dp: Read LTTPR caps without DPRX caps drm/i915/dp: Read LTTPR caps followed by DPRX caps drm/i915/dp: On HPD read LTTPR caps followed by DPRX caps drm/i915/dp: DPRX/LTTPR caps for DP should be read once drivers/gpu/drm/display/drm_dp_helper.c | 63 ++++++++++++++++++++++ drivers/gpu/drm/i915/display/intel_dp.c | 3 +- .../gpu/drm/i915/display/intel_dp_link_training.c | 40 +++++++------- .../gpu/drm/i915/display/intel_dp_link_training.h | 1 - drivers/gpu/drm/i915/display/intel_dp_tunnel.c | 3 +- include/drm/display/drm_dp_helper.h | 2 + 6 files changed, 86 insertions(+), 26 deletions(-) --- base-commit: cfc20c776480fda8c1b0517b187bb71ec0781cd4 change-id: 20260305-dp_aux-1e27599e06c8 Best regards, -- Arun R Murthy <[email protected]>
