[PATCH v5 00/10] drm/msm/dp: Drop the HPD state machine

Dmitry Baryshkov posted 10 patches 3 weeks, 3 days ago
drivers/gpu/drm/msm/dp/dp_ctrl.c    |  22 --
drivers/gpu/drm/msm/dp/dp_ctrl.h    |   1 -
drivers/gpu/drm/msm/dp/dp_display.c | 714 ++++++++++++------------------------
drivers/gpu/drm/msm/dp/dp_display.h |   3 +-
drivers/gpu/drm/msm/dp/dp_drm.c     |  63 +---
drivers/gpu/drm/msm/dp/dp_drm.h     |   2 +
drivers/gpu/drm/msm/dp/dp_panel.c   |   8 +
drivers/gpu/drm/msm/dp/dp_panel.h   |   2 +
drivers/gpu/drm/msm/dp/dp_reg.h     |   4 +-
9 files changed, 249 insertions(+), 570 deletions(-)
[PATCH v5 00/10] drm/msm/dp: Drop the HPD state machine
Posted by Dmitry Baryshkov 3 weeks, 3 days ago
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/20260314-dp-connector-hpd-v1-0-786044cedc17@oss.qualcomm.com/

---
Changes in v5:
- Fixed the EDID clearing on display unplug
- Fixed the initial HPD issue via the external series
- Tested on eDP devices
- Link to v4: https://lore.kernel.org/r/20260305-hpd-refactor-v4-0-39c9d1fef321@oss.qualcomm.com

Changes in v4:
- Fixed PM runtime handling
- Fixed several cases where the HPD machine would loose its state
- Fixed the case where detection was ignoring the plugging in display.
- Link to v3: https://lore.kernel.org/r/20260115-hpd-refactor-v3-0-08e2f3bcd2e0@oss.qualcomm.com

Changes in v3:
- Take over the series (thanks, Jessica, for the previous work!)
- Major rework of the series, squashed the set of patches touching the
  HPD states and handling, it is easier to do it this way rather than
  pulling the strings one by one.
- Link to v2: https://lore.kernel.org/r/20250808-hpd-refactor-v2-0-7f4e1e741aa3@oss.qualcomm.com

Changes in v2:
- Dropped event queue (Dmitry)
- Moved internal HPD handling to use hpd_notify() (Dmitry)
- Reworked bridge detect() to read DPCP and sink count (Dmitry)
- Moved setting of link_trained to plug/unplugged handling
- Dropped msm_dp::connected (Dmitry)
- Squashed all hpd state related patches (Dmitry)
- Link to v1: https://lore.kernel.org/r/20250711-hpd-refactor-v1-0-33cbac823f34@oss.qualcomm.com

---
Dmitry Baryshkov (3):
      drm/msm/dp: drop event data
      drm/msm/dp: turn link_ready into plugged
      drm/msm/dp: clear EDID on display unplug

Jessica Zhang (7):
      drm/msm/dp: fix HPD state status bit shift value
      drm/msm/dp: Fix the ISR_* enum values
      drm/msm/dp: Read DPCD and sink count in bridge detect()
      drm/msm/dp: Move link training to atomic_enable()
      drm/msm/dp: Drop EV_USER_NOTIFICATION
      drm/msm/dp: rework HPD handling
      drm/msm/dp: Add sink_count to debug logs

 drivers/gpu/drm/msm/dp/dp_ctrl.c    |  22 --
 drivers/gpu/drm/msm/dp/dp_ctrl.h    |   1 -
 drivers/gpu/drm/msm/dp/dp_display.c | 714 ++++++++++++------------------------
 drivers/gpu/drm/msm/dp/dp_display.h |   3 +-
 drivers/gpu/drm/msm/dp/dp_drm.c     |  63 +---
 drivers/gpu/drm/msm/dp/dp_drm.h     |   2 +
 drivers/gpu/drm/msm/dp/dp_panel.c   |   8 +
 drivers/gpu/drm/msm/dp/dp_panel.h   |   2 +
 drivers/gpu/drm/msm/dp/dp_reg.h     |   4 +-
 9 files changed, 249 insertions(+), 570 deletions(-)
---
base-commit: 5c9e55fecf9365890c64f14761a80f9413a3b1d1
change-id: 20250523-hpd-refactor-74e25b55620a
prerequisite-change-id: 20260314-dp-connector-hpd-f069e66bc6af:v1
prerequisite-patch-id: 90db75e3fb8bc9c81c67547db7bbd4eefd5d6c40
prerequisite-patch-id: 1c4d030b93a8cc6c98b3447a8685da24eb1f24d5

Best regards,
-- 
With best wishes
Dmitry
Re: [PATCH v5 00/10] drm/msm/dp: Drop the HPD state machine
Posted by Val Packett 3 weeks, 2 days ago
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/20260314-dp-connector-hpd-v1-0-786044cedc17@oss.qualcomm.com/

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

Re: [PATCH v5 00/10] drm/msm/dp: Drop the HPD state machine
Posted by Val Packett 3 weeks, 2 days ago
On 3/14/26 9:51 PM, Val Packett wrote:
>
> 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/20260314-dp-connector-hpd-v1-0-786044cedc17@oss.qualcomm.com/
>
> 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
>
> [..]

Actually looks like that might've been due to having applied the [2] 
dp-connector series from above.

Removed it and rebooted, now plugging and unplugging multiple times 
between the 2 ports works fine.

Except unplug is still not reliable, the "ghost" monitor often remains 
after unplugging.

Almost nothing is logged to dmesg, literally I've only seen this line once:
[drm:msm_dp_panel_read_sink_caps [msm]] *ERROR* panel edid read failed

But I have unplugged the monitor now and I still see:

crtc[108]: crtc-1
         enable=1
         active=1
         self_refresh_active=0
         planes_changed=1
         mode_changed=0
         active_changed=0
         connectors_changed=0
         color_mgmt_changed=0
         plane_mask=2
         connector_mask=2
         encoder_mask=2
         mode: "3840x2560": 60 631750 3840 3888 3920 4000 2560 2563 2573 
2633 0x48 0x9
         lm[0]=2
         ctl[0]=1
         lm[1]=3
         ctl[1]=1
connector[38]: DP-2
         crtc=crtc-1
         [..]

and the compositor thinks it's still present, I can move the mouse to 
where the screen was etc.


~val

Re: [PATCH v5 00/10] drm/msm/dp: Drop the HPD state machine
Posted by Dmitry Baryshkov 3 weeks, 1 day ago
On Sat, Mar 14, 2026 at 10:10:26PM -0300, Val Packett wrote:
> 
> On 3/14/26 9:51 PM, Val Packett wrote:
> > 
> > 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/20260314-dp-connector-hpd-v1-0-786044cedc17@oss.qualcomm.com/
> > 
> > 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
> > 
> > [..]
> 
> Actually looks like that might've been due to having applied the [2]
> dp-connector series from above.

Interesting. The series only affects dp-connector. It can't affect
pmic-glink usecase.

> 
> Removed it and rebooted, now plugging and unplugging multiple times between
> the 2 ports works fine.
> 
> Except unplug is still not reliable, the "ghost" monitor often remains after
> unplugging.

Does the patch at [3] fix the issue?

[3] https://lore.kernel.org/linux-arm-msm/177362655076.7429.3868048981197120360.b4-ty@kernel.org/

> 
> Almost nothing is logged to dmesg, literally I've only seen this line once:
> [drm:msm_dp_panel_read_sink_caps [msm]] *ERROR* panel edid read failed

You might want to use drm.debug=0x100 to get DP-related messages.

> 
> But I have unplugged the monitor now and I still see:
> 
> crtc[108]: crtc-1
>         enable=1
>         active=1
>         self_refresh_active=0
>         planes_changed=1
>         mode_changed=0
>         active_changed=0
>         connectors_changed=0
>         color_mgmt_changed=0
>         plane_mask=2
>         connector_mask=2
>         encoder_mask=2
>         mode: "3840x2560": 60 631750 3840 3888 3920 4000 2560 2563 2573 2633
> 0x48 0x9
>         lm[0]=2
>         ctl[0]=1
>         lm[1]=3
>         ctl[1]=1
> connector[38]: DP-2
>         crtc=crtc-1
>         [..]
> 
> and the compositor thinks it's still present, I can move the mouse to where
> the screen was etc.

-- 
With best wishes
Dmitry
Re: [PATCH v5 00/10] drm/msm/dp: Drop the HPD state machine
Posted by Val Packett 2 weeks, 6 days ago
On 3/16/26 12:23 AM, Dmitry Baryshkov wrote:
> On Sat, Mar 14, 2026 at 10:10:26PM -0300, Val Packett wrote:
>> On 3/14/26 9:51 PM, Val Packett wrote:
>>> 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/20260314-dp-connector-hpd-v1-0-786044cedc17@oss.qualcomm.com/
>>> 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
>>>
>>> [..]
>> Actually looks like that might've been due to having applied the [2]
>> dp-connector series from above.
> Interesting. The series only affects dp-connector. It can't affect
> pmic-glink usecase.
>
>> Removed it and rebooted, now plugging and unplugging multiple times between
>> the 2 ports works fine.
>>
>> Except unplug is still not reliable, the "ghost" monitor often remains after
>> unplugging.
> Does the patch at [3] fix the issue?
>
> [3] https://lore.kernel.org/linux-arm-msm/177362655076.7429.3868048981197120360.b4-ty@kernel.org/

Yes!

Overall works better than ever now, looks like I can unplug the cable 
with the laptop closed and then open it and it's all fine, and even play 
with dual-role / gadget mode USB and plug the alt-mode/dock cable back 
in and it doesn't crash.

Still, rare link training failures can happen, e.g.:

>> Almost nothing is logged to dmesg, literally I've only seen this line once:
>> [drm:msm_dp_panel_read_sink_caps [msm]] *ERROR* panel edid read failed
> You might want to use drm.debug=0x100 to get DP-related messages.


[ 3357.388123] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3357.388259] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3357.388383] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] After, type=10, sink_count=1
[ 3357.413042] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=1
[ 3357.413115] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3357.413147] [drm:msm_dp_bridge_detect [msm]] aux not connected
[ 3357.413179] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3357.413208] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3357.413251] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=1
[ 3357.413282] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3357.413309] [drm:msm_dp_bridge_detect [msm]] aux not connected
[ 3357.413340] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3357.413367] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3357.413400] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=0
[ 3357.414554] [drm:msm_dp_ctrl_phy_init [msm]] phy=00000000fe5b208d 
init=1 power_on=0
[ 3357.414587] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3357.414614] [drm:msm_dp_bridge_detect [msm]] aux not connected
[ 3357.414641] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_exit [msm]] type=10 core_init=1 phy_init=1
[ 3357.415781] [drm:msm_dp_ctrl_phy_exit [msm]] phy=00000000fe5b208d 
init=0 power_on=0
[ 3357.415812] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3357.415840] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3357.415871] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=0
[ 3357.417034] [drm:msm_dp_ctrl_phy_init [msm]] phy=00000000fe5b208d 
init=1 power_on=0
[ 3357.417065] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3357.417091] [drm:msm_dp_bridge_detect [msm]] aux not connected
[ 3357.417118] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_exit [msm]] type=10 core_init=1 phy_init=1
[ 3357.418258] [drm:msm_dp_ctrl_phy_exit [msm]] phy=00000000fe5b208d 
init=0 power_on=0
[ 3357.418290] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3357.418318] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3357.434909] [drm:msm_dp_ctrl_isr [msm]] idle_patterns_sent
[ 3357.435218] [drm:msm_dp_ctrl_push_idle [msm]] mainlink off
[ 3357.450864] [drm:msm_dp_panel_disable_vsc_sdp [msm]] vsc sdp enable=0
[ 3357.450971] [drm:msm_dp_ctrl_off [msm]] disable
[ 3357.452190] [drm:msm_dp_ctrl_link_clk_disable [msm]] disabled link clocks
[ 3357.452241] [drm:msm_dp_ctrl_link_clk_disable [msm]] stream_clks:off 
link_clks:off core_clks:on
[ 3357.452300] [drm:msm_dp_ctrl_off [msm]] phy=00000000646c90e2 init=1 
power_on=0
[ 3357.452354] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_exit [msm]] type=10 core_init=1 phy_init=1
[ 3357.453601] [drm:msm_dp_ctrl_phy_exit [msm]] phy=00000000646c90e2 
init=0 power_on=0
[ 3357.453657] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_atomic_post_disable [msm]] sink count: 1
[ 3357.453689] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_atomic_post_disable [msm]] type=10 Done
[ 3361.476013] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3361.476159] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3361.486575] [drm:msm_dp_ctrl_phy_init [msm]] phy=00000000646c90e2 
init=1 power_on=0
[ 3361.486649] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3361.486710] [drm:msm_dp_bridge_detect [msm]] aux not connected
[ 3361.486770] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_exit [msm]] type=10 core_init=1 phy_init=1
[ 3361.487945] [drm:msm_dp_ctrl_phy_exit [msm]] phy=00000000646c90e2 
init=0 power_on=0
[ 3361.488008] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3361.488069] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3361.488139] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=0
[ 3361.489325] [drm:msm_dp_ctrl_phy_init [msm]] phy=00000000646c90e2 
init=1 power_on=0
[ 3361.489387] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3361.489445] [drm:msm_dp_bridge_detect [msm]] aux not connected
[ 3361.489504] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_exit [msm]] type=10 core_init=1 phy_init=1
[ 3361.490791] [drm:msm_dp_ctrl_phy_exit [msm]] phy=00000000646c90e2 
init=0 power_on=0
[ 3361.490917] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3361.490987] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3361.491062] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=0
[ 3361.492249] [drm:msm_dp_ctrl_phy_init [msm]] phy=00000000fe5b208d 
init=1 power_on=0
[ 3361.492311] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3361.492369] [drm:msm_dp_bridge_detect [msm]] aux not connected
[ 3361.492428] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_exit [msm]] type=10 core_init=1 phy_init=1
[ 3361.493560] [drm:msm_dp_ctrl_phy_exit [msm]] phy=00000000fe5b208d 
init=0 power_on=0
[ 3361.493621] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3361.493681] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3361.493747] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=0
[ 3361.494934] [drm:msm_dp_ctrl_phy_init [msm]] phy=00000000fe5b208d 
init=1 power_on=0
[ 3361.494995] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3361.495053] [drm:msm_dp_bridge_detect [msm]] aux not connected
[ 3361.495111] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_exit [msm]] type=10 core_init=1 phy_init=1
[ 3361.496282] [drm:msm_dp_ctrl_phy_exit [msm]] phy=00000000fe5b208d 
init=0 power_on=0
[ 3361.496343] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3361.496403] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3361.992555] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3361.992598] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3361.992803] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=1
[ 3361.992823] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_plug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3361.992841] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=0
[ 3361.994079] [drm:msm_dp_ctrl_phy_init [msm]] phy=00000000fe5b208d 
init=1 power_on=0
[ 3361.994688] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3361.995528] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00000 AUX -> (ret= 15) 12 14 c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3361.996132] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3361.996955] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02200 AUX -> (ret= 15) 14 1e c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3361.997548] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.000160] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=0
[ 3362.001067] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0000 AUX -> (ret=  8) 20 1e 80 55 
04 00 01 07
[ 3362.001388] [drm:msm_dp_ctrl_phy_init [msm]] phy=00000000646c90e2 
init=1 power_on=0
[ 3362.001491] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3362.001595] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0003 AUX <- 
(ret=  1) 55
[ 3362.001710] [drm:msm_dp_bridge_detect [msm]] aux not connected
[ 3362.001780] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_exit [msm]] type=10 core_init=1 phy_init=1
[ 3362.002103] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0003 AUX <- 
(ret=  1) aa
[ 3362.002609] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.002963] [drm:msm_dp_ctrl_phy_exit [msm]] phy=00000000646c90e2 
init=0 power_on=0
[ 3362.003029] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3362.003089] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3362.003161] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=0
[ 3362.003357] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00000 AUX -> (ret= 15) 12 14 c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.003860] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.004344] [drm:msm_dp_ctrl_phy_init [msm]] phy=00000000646c90e2 
init=1 power_on=0
[ 3362.004405] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3362.004463] [drm:msm_dp_bridge_detect [msm]] aux not connected
[ 3362.004521] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_exit [msm]] type=10 core_init=1 phy_init=1
[ 3362.004646] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02200 AUX -> (ret= 15) 14 1e c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.005149] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.005656] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02210 AUX -> (ret=  1) 0a
[ 3362.005674] [drm:msm_dp_panel_read_sink_caps [msm]] max_lanes=4 
max_link_rate=810000
[ 3362.005929] [drm:msm_dp_panel_read_sink_caps [msm]] version: 1.4
[ 3362.005915] [drm:msm_dp_ctrl_phy_exit [msm]] phy=00000000646c90e2 
init=0 power_on=0
[ 3362.005982] [drm:msm_dp_panel_read_sink_caps [msm]] link_rate=810000
[ 3362.006035] [drm:msm_dp_panel_read_sink_caps [msm]] link_rate_set=0
[ 3362.006033] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3362.006094] [drm:msm_dp_panel_read_sink_caps [msm]] use_rate_set=0
[ 3362.006105] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3362.006290] [drm:msm_dp_panel_read_sink_caps [msm]] lane_count=4
[ 3362.184415] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.187917] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00200 AUX -> (ret=  1) 41
[ 3362.188478] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.191955] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00202 AUX -> (ret=  6) 00 00 80 00 00 00
[ 3362.192515] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.195938] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00201 AUX -> (ret=  1) 00
[ 3362.195989] [drm:msm_dp_link_process_request [msm]] device service 
irq vector = 0x0
[ 3362.196104] [drm:msm_dp_link_process_request [msm]] no test requested
[ 3362.196167] [drm:msm_dp_link_process_request [msm]] no phy test
[ 3362.196792] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.197346] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02006 AUX -> (ret=  1) 00
[ 3362.198130] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.198764] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02007 AUX -> (ret=  1) 00
[ 3362.198786] [drm:msm_dp_link_process_request [msm]] channel_eq_done = 
0, clock_recovery_done = 0
[ 3362.198900] [drm:msm_dp_link_process_request [msm]] sink request=0x80
[ 3362.199479] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.202837] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00600 AUX -> (ret=  1) 01
[ 3362.203442] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0x00600 AUX <- 
(ret=  1) 01
[ 3362.205529] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_plug_handle.isra.0 [msm]] After, type=10 sink_count=1
[ 3362.205773] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=1
[ 3362.205899] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3362.206484] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.207282] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00000 AUX -> (ret= 15) 12 14 c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.207879] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.208760] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02200 AUX -> (ret= 15) 14 1e c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.209308] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.213021] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00400 AUX -> (ret= 12) 00 e0 4c 44 
70 31 2e 34 00 20 03 00
[ 3362.213084] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=1
[ 3362.213202] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_plug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3362.213270] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=1
[ 3362.214083] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.214987] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00000 AUX -> (ret= 15) 12 14 c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.215598] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.216480] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02200 AUX -> (ret= 15) 14 1e c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.217346] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.218261] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0000 AUX -> (ret=  8) 20 1e 80 aa 
04 00 01 07
[ 3362.219080] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0003 AUX <- 
(ret=  1) 55
[ 3362.219802] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0003 AUX <- 
(ret=  1) aa
[ 3362.220413] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.221259] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00000 AUX -> (ret= 15) 12 14 c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.221959] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.222911] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02200 AUX -> (ret= 15) 14 1e c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.223519] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.226930] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02210 AUX -> (ret=  1) 0a
[ 3362.226982] [drm:msm_dp_panel_read_sink_caps [msm]] max_lanes=4 
max_link_rate=810000
[ 3362.227098] [drm:msm_dp_panel_read_sink_caps [msm]] version: 1.4
[ 3362.227161] [drm:msm_dp_panel_read_sink_caps [msm]] link_rate=810000
[ 3362.227220] [drm:msm_dp_panel_read_sink_caps [msm]] link_rate_set=0
[ 3362.227278] [drm:msm_dp_panel_read_sink_caps [msm]] use_rate_set=0
[ 3362.227335] [drm:msm_dp_panel_read_sink_caps [msm]] lane_count=4
[ 3362.364434] sysfs: cannot create duplicate filename 
'/devices/platform/pmic-glink/pmic_glink.ucsi.0/typec/port1/port1.0/partner'
[ 3362.364458] CPU: 7 UID: 0 PID: 8343 Comm: kworker/u48:1 Tainted: G    
     W  7.0.0-rc4-next-20260316-00127-g71918c60b326-dirty #66 PREEMPT(full)
[ 3362.364470] Tainted: [W]=WARN
[ 3362.364472] Hardware name: Dell Inc. Latitude 7455/0FK7MX, BIOS 
2.13.0 09/19/2025
[ 3362.364477] Workqueue: pmic_glink.ucsi.0-con2 ucsi_poll_worker 
[typec_ucsi]
[ 3362.364505] Call trace:
[ 3362.364509]  show_stack+0x20/0x38 (C)
[ 3362.364524]  dump_stack_lvl+0x60/0x80
[ 3362.364534]  dump_stack+0x18/0x28
[ 3362.364542]  sysfs_warn_dup+0x6c/0x90
[ 3362.364550]  sysfs_do_create_link_sd+0xf8/0x108
[ 3362.364556]  sysfs_create_link+0x28/0x50
[ 3362.364561]  typec_probe+0x98/0x120 [typec]
[ 3362.364587]  really_probe+0xc8/0x3f0
[ 3362.364598]  __driver_probe_device+0x88/0x170
[ 3362.364607]  driver_probe_device+0x48/0x130
[ 3362.364615]  __device_attach_driver+0xc4/0x190
[ 3362.364624]  bus_for_each_drv+0x90/0x100
[ 3362.364632]  __device_attach+0xa4/0x1e0
[ 3362.364640]  device_initial_probe+0x5c/0x78
[ 3362.364649]  bus_probe_device+0x3c/0xa8
[ 3362.364656]  device_add+0x61c/0x880
[ 3362.364665]  device_register+0x24/0x40
[ 3362.364671]  typec_register_altmode+0x1fc/0x300 [typec]
[ 3362.364687]  typec_partner_register_altmode+0x24/0x40 [typec]
[ 3362.364702]  ucsi_register_altmode.constprop.0+0x234/0x420 [typec_ucsi]
[ 3362.364713]  ucsi_register_altmodes+0x13c/0x200 [typec_ucsi]
[ 3362.364721]  ucsi_check_altmodes+0x24/0x100 [typec_ucsi]
[ 3362.364730]  ucsi_poll_worker+0x3c/0x100 [typec_ucsi]
[ 3362.364738]  process_one_work+0x174/0x540
[ 3362.364750]  worker_thread+0x1a8/0x320
[ 3362.364760]  kthread+0x140/0x158
[ 3362.364768]  ret_from_fork+0x10/0x20
[ 3362.364893] typec_displayport port1-partner.1: failed to create symlinks
[ 3362.364902] typec_displayport port1-partner.1: probe with driver 
typec_displayport failed with error -17
[ 3362.375605] sysfs: cannot create duplicate filename 
'/devices/platform/pmic-glink/pmic_glink.ucsi.0/typec/port1/port1.0/partner'
[ 3362.375630] CPU: 7 UID: 0 PID: 8343 Comm: kworker/u48:1 Tainted: G    
     W  7.0.0-rc4-next-20260316-00127-g71918c60b326-dirty #66 PREEMPT(full)
[ 3362.375641] Tainted: [W]=WARN
[ 3362.375644] Hardware name: Dell Inc. Latitude 7455/0FK7MX, BIOS 
2.13.0 09/19/2025
[ 3362.375649] Workqueue: pmic_glink.ucsi.0-con2 ucsi_poll_worker 
[typec_ucsi]
[ 3362.375676] Call trace: <cut, same as before>
[ 3362.375971] typec_displayport port1-partner.2: failed to create symlinks
[ 3362.376030] typec_displayport port1-partner.2: probe with driver 
typec_displayport failed with error -17
[ 3362.376669] sysfs: cannot create duplicate filename 
'/devices/platform/pmic-glink/pmic_glink.ucsi.0/typec/port1/port1.0/partner'
[ 3362.376678] CPU: 7 UID: 0 PID: 8343 Comm: kworker/u48:1 Tainted: G    
     W  7.0.0-rc4-next-20260316-00127-g71918c60b326-dirty #66 PREEMPT(full)
[ 3362.376685] Tainted: [W]=WARN
[ 3362.376688] Hardware name: Dell Inc. Latitude 7455/0FK7MX, BIOS 
2.13.0 09/19/2025
[ 3362.376691] Workqueue: pmic_glink.ucsi.0-con2 ucsi_poll_worker 
[typec_ucsi]
[ 3362.375676] Call trace: <cut, same as before>
[ 3362.377006] typec_displayport port1-partner.3: failed to create symlinks
[ 3362.377063] typec_displayport port1-partner.3: probe with driver 
typec_displayport failed with error -17
[ 3362.378069] sysfs: cannot create duplicate filename 
'/devices/platform/pmic-glink/pmic_glink.ucsi.0/typec/port1/port1.0/partner'
[ 3362.378077] CPU: 7 UID: 0 PID: 8343 Comm: kworker/u48:1 Tainted: G    
     W  7.0.0-rc4-next-20260316-00127-g71918c60b326-dirty #66 PREEMPT(full)
[ 3362.378083] Tainted: [W]=WARN
[ 3362.378085] Hardware name: Dell Inc. Latitude 7455/0FK7MX, BIOS 
2.13.0 09/19/2025
[ 3362.378089] Workqueue: pmic_glink.ucsi.0-con2 ucsi_poll_worker 
[typec_ucsi]
[ 3362.375676] Call trace: <cut, same as before>
[ 3362.378341] typec_displayport port1-partner.4: failed to create symlinks
[ 3362.378398] typec_displayport port1-partner.4: probe with driver 
typec_displayport failed with error -17
[ 3362.379173] sysfs: cannot create duplicate filename 
'/devices/platform/pmic-glink/pmic_glink.ucsi.0/typec/port1/port1.0/partner'
[ 3362.379187] CPU: 5 UID: 0 PID: 8343 Comm: kworker/u48:1 Tainted: G    
     W  7.0.0-rc4-next-20260316-00127-g71918c60b326-dirty #66 PREEMPT(full)
[ 3362.379197] Tainted: [W]=WARN
[ 3362.379200] Hardware name: Dell Inc. Latitude 7455/0FK7MX, BIOS 
2.13.0 09/19/2025
[ 3362.379204] Workqueue: pmic_glink.ucsi.0-con2 ucsi_poll_worker 
[typec_ucsi]
[ 3362.375676] Call trace: <cut, same as before>
[ 3362.379507] typec_displayport port1-partner.5: failed to create symlinks
[ 3362.379589] typec_displayport port1-partner.5: probe with driver 
typec_displayport failed with error -17
[ 3362.381535] sysfs: cannot create duplicate filename 
'/devices/platform/pmic-glink/pmic_glink.ucsi.0/typec/port1/port1.0/partner'
[ 3362.381548] CPU: 4 UID: 0 PID: 8343 Comm: kworker/u48:1 Tainted: G    
     W  7.0.0-rc4-next-20260316-00127-g71918c60b326-dirty #66 PREEMPT(full)
[ 3362.381559] Tainted: [W]=WARN
[ 3362.381561] Hardware name: Dell Inc. Latitude 7455/0FK7MX, BIOS 
2.13.0 09/19/2025
[ 3362.381565] Workqueue: pmic_glink.ucsi.0-con2 ucsi_poll_worker 
[typec_ucsi]
[ 3362.375676] Call trace: <cut, same as before>
[ 3362.381920] typec_displayport port1-partner.6: failed to create symlinks
[ 3362.381927] typec_displayport port1-partner.6: probe with driver 
typec_displayport failed with error -17
[ 3362.383333] sysfs: cannot create duplicate filename 
'/devices/platform/pmic-glink/pmic_glink.ucsi.0/typec/port1/port1.0/partner'
[ 3362.383348] CPU: 5 UID: 0 PID: 8343 Comm: kworker/u48:1 Tainted: G    
     W  7.0.0-rc4-next-20260316-00127-g71918c60b326-dirty #66 PREEMPT(full)
[ 3362.383358] Tainted: [W]=WARN
[ 3362.383361] Hardware name: Dell Inc. Latitude 7455/0FK7MX, BIOS 
2.13.0 09/19/2025
[ 3362.383365] Workqueue: pmic_glink.ucsi.0-con2 ucsi_poll_worker 
[typec_ucsi]
[ 3362.375676] Call trace: <cut, same as before>
[ 3362.383722] typec_displayport port1-partner.7: failed to create symlinks
[ 3362.383730] typec_displayport port1-partner.7: probe with driver 
typec_displayport failed with error -17
[ 3362.384590] ucsi_glink.pmic_glink_ucsi pmic_glink.ucsi.0: con2: 
failed to register partner alt modes (-34)
[ 3362.516835] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.517434] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00200 AUX -> (ret=  1) 41
[ 3362.520983] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.521724] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00202 AUX -> (ret=  6) 00 00 00 00 00 00
[ 3362.522372] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.525930] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00201 AUX -> (ret=  1) 00
[ 3362.525982] [drm:msm_dp_link_process_request [msm]] device service 
irq vector = 0x0
[ 3362.526097] [drm:msm_dp_link_process_request [msm]] no test requested
[ 3362.526162] [drm:msm_dp_link_process_request [msm]] no phy test
[ 3362.527011] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.527666] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02006 AUX -> (ret=  1) 00
[ 3362.528307] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.529169] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02007 AUX -> (ret=  1) 00
[ 3362.529221] [drm:msm_dp_link_process_request [msm]] channel_eq_done = 
0, clock_recovery_done = 0
[ 3362.529336] [drm:msm_dp_link_process_request [msm]] sink request=0x80
[ 3362.530205] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.531083] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00600 AUX -> (ret=  1) 01
[ 3362.531727] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0x00600 AUX <- 
(ret=  1) 01
[ 3362.533630] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_plug_handle.isra.0 [msm]] After, type=10 sink_count=1
[ 3362.534076] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_get_modes [msm]] No sink connected
[ 3362.538898] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=0
[ 3362.540170] [drm:msm_dp_ctrl_phy_init [msm]] phy=00000000646c90e2 
init=1 power_on=0
[ 3362.540253] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3362.540321] [drm:msm_dp_bridge_detect [msm]] aux not connected
[ 3362.540388] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_exit [msm]] type=10 core_init=1 phy_init=1
[ 3362.541639] [drm:msm_dp_ctrl_phy_exit [msm]] phy=00000000646c90e2 
init=0 power_on=0
[ 3362.541767] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3362.541837] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3362.541912] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=0
[ 3362.543117] [drm:msm_dp_ctrl_phy_init [msm]] phy=00000000646c90e2 
init=1 power_on=0
[ 3362.543180] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3362.543239] [drm:msm_dp_bridge_detect [msm]] aux not connected
[ 3362.543298] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_exit [msm]] type=10 core_init=1 phy_init=1
[ 3362.544959] [drm:msm_dp_ctrl_phy_exit [msm]] phy=00000000646c90e2 
init=0 power_on=0
[ 3362.545086] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=2
[ 3362.545155] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_unplug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3362.545233] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=1
[ 3362.545296] [drm:msm_dp_bridge_detect [msm]] aux link status: 0
[ 3362.545889] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.546706] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00000 AUX -> (ret= 15) 12 14 c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.547212] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.547974] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02200 AUX -> (ret= 15) 14 1e c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.548485] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.549187] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00400 AUX -> (ret= 12) 00 e0 4c 44 
70 31 2e 34 00 20 03 00
[ 3362.549196] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_hpd_notify [msm]] type=10 link hpd_link_status=0x0, 
status=1
[ 3362.549229] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_plug_handle.isra.0 [msm]] Before, type=10 sink_count=1
[ 3362.549248] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=1
[ 3362.549767] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.550522] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00000 AUX -> (ret= 15) 12 14 c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.551028] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.551783] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02200 AUX -> (ret= 15) 14 1e c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.552289] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.552929] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0000 AUX -> (ret=  8) 20 1e 80 aa 
04 00 01 07
[ 3362.553432] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0003 AUX <- 
(ret=  1) 55
[ 3362.553936] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0003 AUX <- 
(ret=  1) aa
[ 3362.554440] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.555211] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00000 AUX -> (ret= 15) 12 14 c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.555719] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.556475] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02200 AUX -> (ret= 15) 14 1e c4 81 
01 00 01 80 02 00 06 00 00 00 84
[ 3362.556982] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.557489] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02210 AUX -> (ret=  1) 0a
[ 3362.557496] [drm:msm_dp_panel_read_sink_caps [msm]] max_lanes=4 
max_link_rate=810000
[ 3362.557516] [drm:msm_dp_panel_read_sink_caps [msm]] version: 1.4
[ 3362.557533] [drm:msm_dp_panel_read_sink_caps [msm]] link_rate=810000
[ 3362.557550] [drm:msm_dp_panel_read_sink_caps [msm]] link_rate_set=0
[ 3362.557572] [drm:msm_dp_panel_read_sink_caps [msm]] use_rate_set=0
[ 3362.557589] [drm:msm_dp_panel_read_sink_caps [msm]] lane_count=4
[ 3362.735545] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.736142] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00200 AUX -> (ret=  1) 41
[ 3362.736705] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.737305] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00202 AUX -> (ret=  6) 00 00 00 00 00 00
[ 3362.737847] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.738357] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00201 AUX -> (ret=  1) 00
[ 3362.738364] [drm:msm_dp_link_process_request [msm]] device service 
irq vector = 0x0
[ 3362.738401] [drm:msm_dp_link_process_request [msm]] no test requested
[ 3362.738420] [drm:msm_dp_link_process_request [msm]] no phy test
[ 3362.739147] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.739710] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02006 AUX -> (ret=  1) 00
[ 3362.740220] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.740926] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x02007 AUX -> (ret=  1) 00
[ 3362.740955] [drm:msm_dp_link_process_request [msm]] channel_eq_done = 
0, clock_recovery_done = 0
[ 3362.740993] [drm:msm_dp_link_process_request [msm]] sink request=0x80
[ 3362.741526] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.742240] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0x00600 AUX -> (ret=  1) 01
[ 3362.742802] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0x00600 AUX <- 
(ret=  1) 01
[ 3362.744562] msm_dpu ae01000.display-controller: 
[drm:msm_dp_hpd_plug_handle.isra.0 [msm]] After, type=10 sink_count=1
[ 3362.744737] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_get_modes [msm]] No sink connected
[ 3362.793900] [drm:msm_dp_panel_init_panel_info [msm]] SET NEW RESOLUTION:
[ 3362.794035] [drm:msm_dp_panel_init_panel_info [msm]] 3840x2560@60fps
[ 3362.794103] [drm:msm_dp_panel_init_panel_info [msm]] 
h_porches(back|front|width) = (80|48|32)
[ 3362.794163] [drm:msm_dp_panel_init_panel_info [msm]] 
v_porches(back|front|width) = (60|3|10)
[ 3362.794223] [drm:msm_dp_panel_init_panel_info [msm]] pixel clock 
(KHz)=(631750)
[ 3362.794281] [drm:msm_dp_panel_init_panel_info [msm]] bpp = 30
[ 3362.794339] [drm:msm_dp_panel_init_panel_info [msm]] updated bpp = 30
[ 3362.794401] msm_dpu ae01000.display-controller: 
[drm:msm_dp_display_host_phy_init [msm]] type=10 core_init=1 phy_init=1
[ 3362.794464] [drm:msm_dp_ctrl_core_clk_enable [msm]] core clks already 
enabled
[ 3362.794523] [drm:msm_dp_ctrl_on_link [msm]] rate=810000, num_lanes=4, 
pixel_rate=631750
[ 3362.798148] [drm:msm_dp_ctrl_enable_mainlink_clocks [msm]] enable 
link clocks
[ 3362.798207] [drm:msm_dp_ctrl_enable_mainlink_clocks [msm]] 
stream_clks:off link_clks:on core_clks:on
[ 3362.798266] [drm:msm_dp_ctrl_enable_mainlink_clocks [msm]] link 
rate=810000
[ 3362.798326] [drm:msm_dp_ctrl_setup_main_link [msm]] enable
[ 3362.798396] [drm:msm_dp_ctrl_config_ctrl [msm]] 
DP_CONFIGURATION_CTRL=0x4277
[ 3362.801890] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0x00101 AUX <- 
(ret=  1) 84
[ 3362.801943] [drm:msm_dp_ctrl_setup_main_link [msm]] using 
LINK_BW_SET: 0x1e
[ 3362.802738] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0x00100 AUX <- 
(ret=  1) 1e
[ 3362.803338] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0x00107 AUX <- 
(ret=  2) 10 01
[ 3362.803374] [drm:msm_dp_ctrl_set_pattern_state_bit [msm]] hw: bit=1 
train=1
[ 3362.803495] [drm:msm_dp_ctrl_train_pattern_set.isra.0 [msm]] sink: 
pattern=21
[ 3362.804149] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0010 AUX <- 
(ret=  1) 21
[ 3362.804185] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 0
[ 3362.804316] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x0
[ 3362.808024] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 00 00 00 00
[ 3362.808948] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.814044] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 51 51 80 cc cc
[ 3362.814111] [drm:msm_dp_ctrl_link_train_1_2 [msm]] link training #1 
on phy 1 successful
[ 3362.818952] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.819651] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0020 AUX -> (ret=  1) 00
[ 3362.819681] [drm:msm_dp_ctrl_set_pattern_state_bit [msm]] hw: bit=8 
train=4
[ 3362.819852] [drm:msm_dp_ctrl_train_pattern_set.isra.0 [msm]] sink: 
pattern=7
[ 3362.820550] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0010 AUX <- 
(ret=  1) 07
[ 3362.825989] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.826718] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 44 00 80 88 88
[ 3362.826749] [drm:msm_dp_link_adjust_levels [msm]] lane=0 
req_vol_swing=0 req_pre_emphasis=16
[ 3362.826910] [drm:msm_dp_link_adjust_levels [msm]] lane=1 
req_vol_swing=0 req_pre_emphasis=16
[ 3362.827003] [drm:msm_dp_link_adjust_levels [msm]] lane=2 
req_vol_swing=0 req_pre_emphasis=16
[ 3362.827087] [drm:msm_dp_link_adjust_levels [msm]] lane=3 
req_vol_swing=0 req_pre_emphasis=16
[ 3362.827170] [drm:msm_dp_link_adjust_levels [msm]] adjusted: 
v_level=0, p_level=2
[ 3362.827253] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 2
[ 3362.827357] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x10
[ 3362.828263] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 10 10 10 10
[ 3362.829446] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.830219] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 44 00 00 cc cc
[ 3362.830269] [drm:msm_dp_link_adjust_levels [msm]] lane=0 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.830428] [drm:msm_dp_link_adjust_levels [msm]] lane=1 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.830519] [drm:msm_dp_link_adjust_levels [msm]] lane=2 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.830627] [drm:msm_dp_link_adjust_levels [msm]] lane=3 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.830709] [drm:msm_dp_link_adjust_levels [msm]] adjusted: 
v_level=0, p_level=3
[ 3362.830791] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 3
[ 3362.830893] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] max. 
pre-emphasis level reached 3
[ 3362.830975] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x18
[ 3362.831727] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 38 38 38 38
[ 3362.835630] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.840955] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 44 00 00 cc cc
[ 3362.841024] [drm:msm_dp_link_adjust_levels [msm]] lane=0 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.841187] [drm:msm_dp_link_adjust_levels [msm]] lane=1 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.841279] [drm:msm_dp_link_adjust_levels [msm]] lane=2 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.841363] [drm:msm_dp_link_adjust_levels [msm]] lane=3 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.841445] [drm:msm_dp_link_adjust_levels [msm]] adjusted: 
v_level=0, p_level=3
[ 3362.841528] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 3
[ 3362.841686] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] max. 
pre-emphasis level reached 3
[ 3362.841769] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x18
[ 3362.842745] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 38 38 38 38
[ 3362.844085] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.844983] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 44 00 00 cc cc
[ 3362.845034] [drm:msm_dp_link_adjust_levels [msm]] lane=0 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.845193] [drm:msm_dp_link_adjust_levels [msm]] lane=1 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.845283] [drm:msm_dp_link_adjust_levels [msm]] lane=2 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.845366] [drm:msm_dp_link_adjust_levels [msm]] lane=3 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.845448] [drm:msm_dp_link_adjust_levels [msm]] adjusted: 
v_level=0, p_level=3
[ 3362.845530] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 3
[ 3362.845650] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] max. 
pre-emphasis level reached 3
[ 3362.845731] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x18
[ 3362.846654] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 38 38 38 38
[ 3362.848029] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.848710] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 44 00 00 cc cc
[ 3362.848742] [drm:msm_dp_link_adjust_levels [msm]] lane=0 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.848901] [drm:msm_dp_link_adjust_levels [msm]] lane=1 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.848992] [drm:msm_dp_link_adjust_levels [msm]] lane=2 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.849075] [drm:msm_dp_link_adjust_levels [msm]] lane=3 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.849157] [drm:msm_dp_link_adjust_levels [msm]] adjusted: 
v_level=0, p_level=3
[ 3362.849239] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 3
[ 3362.849340] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] max. 
pre-emphasis level reached 3
[ 3362.849422] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x18
[ 3362.854846] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 38 38 38 38
[ 3362.856226] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.861388] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 44 00 00 cc cc
[ 3362.861456] [drm:msm_dp_link_adjust_levels [msm]] lane=0 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.861677] [drm:msm_dp_link_adjust_levels [msm]] lane=1 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.861769] [drm:msm_dp_link_adjust_levels [msm]] lane=2 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.861854] [drm:msm_dp_link_adjust_levels [msm]] lane=3 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.861937] [drm:msm_dp_link_adjust_levels [msm]] adjusted: 
v_level=0, p_level=3
[ 3362.862020] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 3
[ 3362.862123] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] max. 
pre-emphasis level reached 3
[ 3362.862205] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x18
[ 3362.866462] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 38 38 38 38
[ 3362.866528] [drm:msm_dp_ctrl_link_train_1_2 [msm]] *ERROR* link 
training #2 on phy 1 failed. ret=-110
[ 3362.866760] [drm:msm_dp_ctrl_train_pattern_set.isra.0 [msm]] sink: 
pattern=0
[ 3362.871130] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0010 AUX <- 
(ret=  1) 00
[ 3362.871970] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.872606] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0020 AUX -> (ret=  1) 00
[ 3362.873148] [drm:msm_dp_ctrl_setup_main_link [msm]] *ERROR* link 
training of LTTPR(s) failed. ret=-110
[ 3362.873322] [drm:msm_dp_ctrl_train_pattern_set.isra.0 [msm]] sink: 
pattern=0
[ 3362.874047] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0x00102 AUX <- 
(ret=  1) 00
[ 3362.892535] [drm:msm_dp_ctrl_on_link [msm]] disable
[ 3362.893940] [drm:msm_dp_ctrl_link_clk_disable [msm]] disabled link clocks
[ 3362.894108] [drm:msm_dp_ctrl_link_clk_disable [msm]] stream_clks:off 
link_clks:off core_clks:on
[ 3362.894236] [drm:msm_dp_ctrl_on_link [msm]] phy=00000000fe5b208d 
init=1 power_on=0
[ 3362.894325] [drm:msm_dp_bridge_atomic_enable [msm]] *ERROR* Failed 
link training (rc=-104)
[ 3362.894423] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_atomic_enable [msm]] sink_count=1
[ 3362.894509] [drm:msm_dp_ctrl_on_stream [msm]] rate=810000, 
num_lanes=4, pixel_rate=315875
[ 3362.894614] [drm:msm_dp_ctrl_on_stream [msm]] core_clk_on=1 
link_clk_on=0 stream_clk_on=0
[ 3362.894660] [drm:msm_dp_aux_isr [msm]] *ERROR* Unexpected DP AUX IRQ 
0x01000000 when not busy
[ 3362.898143] [drm:msm_dp_ctrl_enable_mainlink_clocks [msm]] enable 
link clocks
[ 3362.898226] [drm:msm_dp_ctrl_enable_mainlink_clocks [msm]] 
stream_clks:off link_clks:on core_clks:on
[ 3362.898308] [drm:msm_dp_ctrl_enable_mainlink_clocks [msm]] link 
rate=810000
[ 3362.898404] [drm:msm_dp_ctrl_setup_main_link [msm]] enable
[ 3362.898496] [drm:msm_dp_ctrl_config_ctrl [msm]] 
DP_CONFIGURATION_CTRL=0x4277
[ 3362.903345] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0x00101 AUX <- 
(ret=  1) 84
[ 3362.903410] [drm:msm_dp_ctrl_setup_main_link [msm]] using 
LINK_BW_SET: 0x1e
[ 3362.907853] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0x00100 AUX <- 
(ret=  1) 1e
[ 3362.908716] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0x00107 AUX <- 
(ret=  2) 10 01
[ 3362.908746] [drm:msm_dp_ctrl_set_pattern_state_bit [msm]] hw: bit=1 
train=1
[ 3362.908915] [drm:msm_dp_ctrl_train_pattern_set.isra.0 [msm]] sink: 
pattern=21
[ 3362.909789] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0010 AUX <- 
(ret=  1) 21
[ 3362.909839] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 0
[ 3362.910017] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x0
[ 3362.910931] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 00 00 00 00
[ 3362.911852] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.912490] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 55 11 80 00 00
[ 3362.912520] [drm:msm_dp_ctrl_link_train_1_2 [msm]] link training #1 
on phy 1 successful
[ 3362.913296] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.913935] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0020 AUX -> (ret=  1) 00
[ 3362.913986] [drm:msm_dp_ctrl_set_pattern_state_bit [msm]] hw: bit=8 
train=4
[ 3362.914153] [drm:msm_dp_ctrl_train_pattern_set.isra.0 [msm]] sink: 
pattern=7
[ 3362.919517] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0010 AUX <- 
(ret=  1) 07
[ 3362.922815] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.923667] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 44 00 80 88 88
[ 3362.923698] [drm:msm_dp_link_adjust_levels [msm]] lane=0 
req_vol_swing=0 req_pre_emphasis=16
[ 3362.923859] [drm:msm_dp_link_adjust_levels [msm]] lane=1 
req_vol_swing=0 req_pre_emphasis=16
[ 3362.923951] [drm:msm_dp_link_adjust_levels [msm]] lane=2 
req_vol_swing=0 req_pre_emphasis=16
[ 3362.924036] [drm:msm_dp_link_adjust_levels [msm]] lane=3 
req_vol_swing=0 req_pre_emphasis=16
[ 3362.924120] [drm:msm_dp_link_adjust_levels [msm]] adjusted: 
v_level=0, p_level=2
[ 3362.924202] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 2
[ 3362.924306] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x10
[ 3362.925224] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 10 10 10 10
[ 3362.926580] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.927474] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 44 00 00 cc cc
[ 3362.927524] [drm:msm_dp_link_adjust_levels [msm]] lane=0 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.927709] [drm:msm_dp_link_adjust_levels [msm]] lane=1 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.927801] [drm:msm_dp_link_adjust_levels [msm]] lane=2 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.927884] [drm:msm_dp_link_adjust_levels [msm]] lane=3 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.927967] [drm:msm_dp_link_adjust_levels [msm]] adjusted: 
v_level=0, p_level=3
[ 3362.928049] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 3
[ 3362.928150] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] max. 
pre-emphasis level reached 3
[ 3362.928233] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x18
[ 3362.929028] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 38 38 38 38
[ 3362.930175] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.930889] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 44 00 00 cc cc
[ 3362.930940] [drm:msm_dp_link_adjust_levels [msm]] lane=0 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.931099] [drm:msm_dp_link_adjust_levels [msm]] lane=1 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.931189] [drm:msm_dp_link_adjust_levels [msm]] lane=2 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.931272] [drm:msm_dp_link_adjust_levels [msm]] lane=3 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.931354] [drm:msm_dp_link_adjust_levels [msm]] adjusted: 
v_level=0, p_level=3
[ 3362.931436] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 3
[ 3362.931536] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] max. 
pre-emphasis level reached 3
[ 3362.931646] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x18
[ 3362.932371] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 38 38 38 38
[ 3362.936053] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.936963] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 44 00 00 cc cc
[ 3362.937016] [drm:msm_dp_link_adjust_levels [msm]] lane=0 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.937177] [drm:msm_dp_link_adjust_levels [msm]] lane=1 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.937268] [drm:msm_dp_link_adjust_levels [msm]] lane=2 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.937351] [drm:msm_dp_link_adjust_levels [msm]] lane=3 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.937433] [drm:msm_dp_link_adjust_levels [msm]] adjusted: 
v_level=0, p_level=3
[ 3362.937514] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 3
[ 3362.937641] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] max. 
pre-emphasis level reached 3
[ 3362.937723] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x18
[ 3362.938501] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 38 38 38 38
[ 3362.943935] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.945316] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 44 40 00 cc cc
[ 3362.945367] [drm:msm_dp_link_adjust_levels [msm]] lane=0 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.945529] [drm:msm_dp_link_adjust_levels [msm]] lane=1 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.945635] [drm:msm_dp_link_adjust_levels [msm]] lane=2 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.945718] [drm:msm_dp_link_adjust_levels [msm]] lane=3 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.945800] [drm:msm_dp_link_adjust_levels [msm]] adjusted: 
v_level=0, p_level=3
[ 3362.945882] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 3
[ 3362.945986] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] max. 
pre-emphasis level reached 3
[ 3362.946067] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x18
[ 3362.950952] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 38 38 38 38
[ 3362.952314] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.953207] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0030 AUX -> (ret=  5) 44 40 00 cc cc
[ 3362.953258] [drm:msm_dp_link_adjust_levels [msm]] lane=0 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.953419] [drm:msm_dp_link_adjust_levels [msm]] lane=1 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.953510] [drm:msm_dp_link_adjust_levels [msm]] lane=2 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.953609] [drm:msm_dp_link_adjust_levels [msm]] lane=3 
req_vol_swing=0 req_pre_emphasis=24
[ 3362.953691] [drm:msm_dp_link_adjust_levels [msm]] adjusted: 
v_level=0, p_level=3
[ 3362.953774] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] voltage level: 0 
emphasis level: 3
[ 3362.953877] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] max. 
pre-emphasis level reached 3
[ 3362.953960] [drm:msm_dp_ctrl_update_phy_vx_px [msm]] sink: p|v=0x18
[ 3362.954679] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0011 AUX <- 
(ret=  4) 38 38 38 38
[ 3362.954711] [drm:msm_dp_ctrl_link_train_1_2 [msm]] *ERROR* link 
training #2 on phy 1 failed. ret=-110
[ 3362.954801] [drm:msm_dp_ctrl_train_pattern_set.isra.0 [msm]] sink: 
pattern=0
[ 3362.955398] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0xf0010 AUX <- 
(ret=  1) 00
[ 3362.956028] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_probe [drm_display_helper]] dpu_dp_aux: 0x00102 AUX -> 
(ret=  1) 00
[ 3362.956599] msm_dpu ae01000.display-controller: [drm:drm_dp_dpcd_read 
[drm_display_helper]] dpu_dp_aux: 0xf0020 AUX -> (ret=  1) 00
[ 3362.957142] [drm:msm_dp_ctrl_setup_main_link [msm]] *ERROR* link 
training of LTTPR(s) failed. ret=-110
[ 3362.957304] [drm:msm_dp_ctrl_train_pattern_set.isra.0 [msm]] sink: 
pattern=0
[ 3362.958191] msm_dpu ae01000.display-controller: 
[drm:drm_dp_dpcd_write [drm_display_helper]] dpu_dp_aux: 0x00102 AUX <- 
(ret=  1) 00
[ 3362.976554] [drm:msm_dp_ctrl_config_ctrl [msm]] 
DP_CONFIGURATION_CTRL=0x4277
[ 3362.976783] [drm:msm_dp_ctrl_on_stream [msm]] misc settings = 0x41
[ 3362.976877] [drm:msm_dp_panel_timing_cfg [msm]] width=3840 hporch= 80 
48 32
[ 3362.976969] [drm:msm_dp_panel_timing_cfg [msm]] height=2560 vporch= 
60 3 10
[ 3362.977067] [drm:msm_dp_panel_timing_cfg [msm]] wide_bus_en=1 reg=0x10
[ 3362.977152] [drm:msm_dp_ctrl_on_stream [msm]] mvid=0x12822, nvid=0x17bb0
[ 3362.977264] [drm:msm_dp_ctrl_on_stream [msm]] n_sym = 30, num_of_tus 
= 480
[ 3362.994315] [drm:msm_dp_ctrl_on_stream [msm]] TU: valid_boundary_link: 30
[ 3362.994401] [drm:msm_dp_ctrl_on_stream [msm]] TU: delay_start_link: 20
[ 3362.994483] [drm:msm_dp_ctrl_on_stream [msm]] TU: 
boundary_moderation_en: 1
[ 3362.994680] [drm:msm_dp_ctrl_on_stream [msm]] TU: 
valid_lower_boundary_link: 29
[ 3362.994763] [drm:msm_dp_ctrl_on_stream [msm]] TU: upper_boundary_count: 1
[ 3362.994845] [drm:msm_dp_ctrl_on_stream [msm]] TU: lower_boundary_count: 3
[ 3362.994927] [drm:msm_dp_ctrl_on_stream [msm]] TU: tu_size_minus1: 39
[ 3362.995259] [drm:msm_dp_ctrl_isr [msm]] dp_video_ready
[ 3362.995423] [drm:msm_dp_ctrl_on_stream [msm]] mainlink READY
[ 3362.995579] msm_dpu ae01000.display-controller: 
[drm:msm_dp_bridge_atomic_enable [msm]] type=10 Done


~val

Re: [PATCH v5 00/10] drm/msm/dp: Drop the HPD state machine
Posted by Dmitry Baryshkov 2 weeks, 6 days ago
On Tue, Mar 17, 2026 at 08:15:54PM -0300, Val Packett wrote:
> 
> On 3/16/26 12:23 AM, Dmitry Baryshkov wrote:
> > On Sat, Mar 14, 2026 at 10:10:26PM -0300, Val Packett wrote:
> > > On 3/14/26 9:51 PM, Val Packett wrote:
> > > > 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/20260314-dp-connector-hpd-v1-0-786044cedc17@oss.qualcomm.com/
> > > > 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
> > > > 
> > > > [..]
> > > Actually looks like that might've been due to having applied the [2]
> > > dp-connector series from above.
> > Interesting. The series only affects dp-connector. It can't affect
> > pmic-glink usecase.
> > 
> > > Removed it and rebooted, now plugging and unplugging multiple times between
> > > the 2 ports works fine.
> > > 
> > > Except unplug is still not reliable, the "ghost" monitor often remains after
> > > unplugging.
> > Does the patch at [3] fix the issue?
> > 
> > [3] https://lore.kernel.org/linux-arm-msm/177362655076.7429.3868048981197120360.b4-ty@kernel.org/
> 
> Yes!
> 
> Overall works better than ever now, looks like I can unplug the cable with
> the laptop closed and then open it and it's all fine, and even play with
> dual-role / gadget mode USB and plug the alt-mode/dock cable back in and it
> doesn't crash.

Tested-by?

> 
> Still, rare link training failures can happen, e.g.:

Thanks!

The link training is one of the items that I want to check next.

> > > Almost nothing is logged to dmesg, literally I've only seen this line once:
> > > [drm:msm_dp_panel_read_sink_caps [msm]] *ERROR* panel edid read failed
> > You might want to use drm.debug=0x100 to get DP-related messages.

-- 
With best wishes
Dmitry
Re: [PATCH v5 00/10] drm/msm/dp: Drop the HPD state machine
Posted by Val Packett 2 weeks, 6 days ago
On 3/17/26 10:03 PM, Dmitry Baryshkov wrote:
> On Tue, Mar 17, 2026 at 08:15:54PM -0300, Val Packett wrote:
>> On 3/16/26 12:23 AM, Dmitry Baryshkov wrote:
>>> On Sat, Mar 14, 2026 at 10:10:26PM -0300, Val Packett wrote:
>>>> On 3/14/26 9:51 PM, Val Packett wrote:
>>>>> 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/20260314-dp-connector-hpd-v1-0-786044cedc17@oss.qualcomm.com/
>>>>> 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
>>>>>
>>>>> [..]
>>>> Actually looks like that might've been due to having applied the [2]
>>>> dp-connector series from above.
>>> Interesting. The series only affects dp-connector. It can't affect
>>> pmic-glink usecase.
>>>
>>>> Removed it and rebooted, now plugging and unplugging multiple times between
>>>> the 2 ports works fine.
>>>>
>>>> Except unplug is still not reliable, the "ghost" monitor often remains after
>>>> unplugging.
>>> Does the patch at [3] fix the issue?
>>>
>>> [3] https://lore.kernel.org/linux-arm-msm/177362655076.7429.3868048981197120360.b4-ty@kernel.org/
>> Yes!
>>
>> Overall works better than ever now, looks like I can unplug the cable with
>> the laptop closed and then open it and it's all fine, and even play with
>> dual-role / gadget mode USB and plug the alt-mode/dock cable back in and it
>> doesn't crash.
> Tested-by?

Yeah, since I guess the link training is kinda orthogonal to this, sure!

Tested-by: Val Packett <val@packett.cool> # x1e80100-dell-latitude-7455

>> Still, rare link training failures can happen, e.g.:
> Thanks!
>
> The link training is one of the items that I want to check next.
>