Skip to content

drm/rockchip: retrigger RK3588 DP hotplug after connector settle#1

Open
weicheng04 wants to merge 1 commit into
Seeed-Studio:rk-6.1-rkr5.1from
weicheng04:fix/rk3588-dp-hotplug-retrigger
Open

drm/rockchip: retrigger RK3588 DP hotplug after connector settle#1
weicheng04 wants to merge 1 commit into
Seeed-Studio:rk-6.1-rkr5.1from
weicheng04:fix/rk3588-dp-hotplug-retrigger

Conversation

@weicheng04

Copy link
Copy Markdown

Summary

This PR fixes RK3588 DisplayPort hotplug handling in dw-dp.c.

Changes:

  • Add an RK3588-only delayed hotplug retrigger for long HPD plug events.
  • Re-check DP connector presence after a short settle delay.
  • Emit a connector hotplug event after the DP/Type-C path has settled so userspace can retry modeset.
  • Cancel the delayed retrigger work when an unplug event is received.
  • Clean up the delayed work during driver remove.

Why

On RK3588, a late DP hotplug can happen while the Type-C/DP path is still settling. In that case the connector may become connected and EDID can be readable, but userspace may not complete a
successful modeset, leaving the DP output disabled.

Observed failure state:

  • card0-DP-1 reports connected
  • EDID is readable
  • DRM summary still shows all video ports disabled
  • No active CRTC/output until another hotplug/modeset is triggered

This patch avoids resetting or reinitializing the DP controller in the HPD path, because controller reset was observed to cause AUX/DPCD timeouts on RK3588. Instead, it schedules a delayed
connector hotplug event after the link has had time to settle.

The change is limited to RK3588_DP, so other DW-DP users are not affected.

Testing

Tested on reComputer RK3588 devkit with DP hotplug after boot.

Verified:

  • DP connector changes to connected
  • EDID is readable
  • DP output becomes enabled
  • DRM summary shows the DP video port active
  • Link training succeeds after the delayed hotplug retrigger
  • Display output works after hotplug

Expected kernel log includes:

dw-dp fde50000.dp: forcing DP connector hotplug after settle

Late DP hotplug on RK3588 can leave userspace with a connected connector and readable EDID, but without an enabled CRTC if the first modeset happens before the DP/Type-C path has fully settled.

Add a RK3588-only delayed hotplug retrigger for long HPD plug events. The delayed work rechecks connector presence and then emits a connector hotplug event so userspace gets a clean modeset retry after the link has settled.

Do not reset or reinitialize the DP controller in this path, since that was observed to make subsequent AUX/DPCD transfers time out on RK3588.

Signed-off-by: weicheng04 <weicheng.xiao@outlook.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant