On 3/13/26 10:09 PM, Dmitry Baryshkov wrote:
Currently, all HPD interrupt handling must go through the HPD state
machine.
This has caused many issues where the DRM framework assumes that DP is
in one state while the state machine is stuck in another state.
As discussed here [1], this series:
- Removes the state machine
- Moves link training to atomic_enable()
- Changes the detect() behavior to return true if a display is physically
plugged in (as opposed to if the DP link is ready).
- Remove event queue and move internal HPD handling to hpd_notify()
To correctly detect the displays which are plugged on boot on the boards
which use dp-connector devices, this series depends on [2]. USB-C and
eDP panels are handled natively.
[1]
https://patchwork.freedesktop.org/patch/656312/?series=142010&rev=2#comment_1201738
[2]
https://lore.kernel.org/all/[email protected]/
Unfortunately this currently seems to mostly break link training with
USB-C, on x1e80100-dell-latitude-7455:
[ 102.190083] [drm:msm_dp_ctrl_link_train_1_2 [msm]] *ERROR* link
training #2 on phy 1 failed. ret=-110
[ 102.192846] [drm:msm_dp_ctrl_setup_main_link [msm]] *ERROR* link
training of LTTPR(s) failed. ret=-110
[ 102.211095] [drm:msm_dp_bridge_atomic_enable [msm]] *ERROR* Failed
link training (rc=-104)
[ 102.211164] [drm:msm_dp_aux_isr [msm]] *ERROR* Unexpected DP AUX IRQ
0x01000000 when not busy
[ 102.247168] [drm:msm_dp_ctrl_link_train_1_2 [msm]] *ERROR* link
training #2 on phy 1 failed. ret=-110
[ 102.252859] [drm:msm_dp_ctrl_setup_main_link [msm]] *ERROR* link
training of LTTPR(s) failed. ret=-110
Once I did get it to connect on one of the ports, but then on unplug it
didn't detect the unplug properly and continued trying to use the link:
[ 1418.418954] disp_cc_mdss_dptx1_link_clk status stuck at 'off'
<trace cut>
[ 1418.420950] Failed to enable clk 'ctrl_link': -16
[ 1418.420959] [drm:msm_dp_ctrl_enable_mainlink_clocks [msm]] *ERROR*
Unable to start link clocks. ret=-16
[ 1418.421058] [drm:msm_dp_bridge_atomic_enable [msm]] *ERROR* Failed
link training (rc=-16)
<trace cut>
[ 1418.423228] Failed to enable clk 'ctrl_link': -16
[ 1418.423234] [drm:msm_dp_ctrl_enable_mainlink_clocks [msm]] *ERROR*
Unable to start link clocks. ret=-16
[ 1418.423325] [drm:msm_dp_ctrl_on_stream [msm]] *ERROR* Failed to start
link clocks. ret=-16
[ 1418.476234] [drm:dpu_encoder_phys_vid_wait_for_commit_done:543] [dpu
error]vblank timeout: 808208c0
[ 1418.476272] [drm:dpu_kms_wait_for_commit_done:527] [dpu error]wait
for commit done returned -110
[ 1418.509204] [drm:dpu_encoder_frame_done_timeout:2731] [dpu
error]enc37 frame done timeout
[ 1419.163337] [drm:dpu_encoder_phys_vid_wait_for_commit_done:543] [dpu
error]vblank timeout: 808208c0
[ 1419.163365] [drm:dpu_kms_wait_for_commit_done:527] [dpu error]wait
for commit done returned -110
But after reboot, link training was failing on both ports..
Thanks,
~val