drivers/gpu/drm/bridge/Kconfig | 10 + drivers/gpu/drm/bridge/Makefile | 1 + drivers/gpu/drm/bridge/analogix/Kconfig | 1 + .../drm/bridge/analogix/analogix_dp_core.c | 395 +++++++++--------- .../drm/bridge/analogix/analogix_dp_core.h | 5 +- drivers/gpu/drm/bridge/imx/Kconfig | 10 - drivers/gpu/drm/bridge/imx/Makefile | 1 - .../gpu/drm/bridge/imx/imx-legacy-bridge.c | 91 ---- .../gpu/drm/bridge/of-display-mode-bridge.c | 93 +++++ .../gpu/drm/display/drm_bridge_connector.c | 18 +- drivers/gpu/drm/exynos/Kconfig | 2 + drivers/gpu/drm/exynos/exynos_dp.c | 110 ++--- drivers/gpu/drm/imx/ipuv3/Kconfig | 4 +- drivers/gpu/drm/imx/ipuv3/imx-ldb.c | 6 +- drivers/gpu/drm/imx/ipuv3/parallel-display.c | 5 +- drivers/gpu/drm/rockchip/Kconfig | 1 + .../gpu/drm/rockchip/analogix_dp-rockchip.c | 67 +-- include/drm/bridge/analogix_dp.h | 8 +- include/drm/bridge/imx.h | 17 - include/drm/bridge/of-display-mode-bridge.h | 17 + 20 files changed, 391 insertions(+), 471 deletions(-) delete mode 100644 drivers/gpu/drm/bridge/imx/imx-legacy-bridge.c create mode 100644 drivers/gpu/drm/bridge/of-display-mode-bridge.c delete mode 100644 include/drm/bridge/imx.h create mode 100644 include/drm/bridge/of-display-mode-bridge.h
PATCH 1 is to ensure the last bridge declares OP_EDID or OP_MODES or both.
PATCH 2 is a small format optimization for struct analogid_dp_device.
PATCH 3 is to perform mode setting in &drm_bridge_funcs.atomic_enable.
PATCH 4 is to add a new parameter to store the point of next bridge.
PATCH 5 is to make legacy bridge driver more universal.
PATCH 6-11 are preparations for apply drm_bridge_connector helper.
PATCH 12 is to apply the drm_bridge_connector helper.
PATCH 13-15 are to move the panel/bridge parsing to the Analogix side.
PATCH 16 is to attach the next bridge on Analogix side uniformly.
PATCH 17-18 are to apply the panel_bridge helper.
The following reviewed commits, which to make codes more concise, are
rebased to the front of this patch series:
https://lore.kernel.org/all/20251110085823.1197472-1-damon.ding@rock-chips.com/
https://lore.kernel.org/all/20251111022103.1350183-1-damon.ding@rock-chips.com/
Damon Ding (18):
drm/display: bridge_connector: Ensure last bridge determines
EDID/modes detection capabilities
drm/bridge: analogix_dp: Formalize the struct analogix_dp_device
drm/bridge: analogix_dp: Move &drm_bridge_funcs.mode_set to
&drm_bridge_funcs.atomic_enable
drm/bridge: analogix_dp: Add &analogix_dp_plat_data.next_bridge
drm/bridge: Move legacy bridge driver out of imx directory for
multi-platform use
drm/exynos: exynos_dp: Remove &exynos_dp_device.ptn_bridge
drm/exynos: exynos_dp: Remove unused &exynos_dp_device.connector
drm/exynos: exynos_dp: Apply of-display-mode-bridge to parse the
display-timings node
drm/bridge: analogix_dp: Remove redundant
&analogix_dp_plat_data.skip_connector
drm/bridge: analogix_dp: Move the color format check to
.atomic_check() for Rockchip platforms
drm/bridge: analogix_dp: Remove unused
&analogix_dp_plat_data.get_modes()
drm/bridge: analogix_dp: Apply drm_bridge_connector helper
drm/bridge: analogix_dp: Add new API analogix_dp_finish_probe()
drm/rockchip: analogix_dp: Apply analogix_dp_finish_probe()
drm/exynos: exynos_dp: Apply analogix_dp_finish_probe()
drm/bridge: analogix_dp: Attach the next bridge in
analogix_dp_bridge_attach()
drm/bridge: analogix_dp: Remove bridge disabing and panel unpreparing
in analogix_dp_unbind()
drm/bridge: analogix_dp: Apply panel_bridge helper
drivers/gpu/drm/bridge/Kconfig | 10 +
drivers/gpu/drm/bridge/Makefile | 1 +
drivers/gpu/drm/bridge/analogix/Kconfig | 1 +
.../drm/bridge/analogix/analogix_dp_core.c | 395 +++++++++---------
.../drm/bridge/analogix/analogix_dp_core.h | 5 +-
drivers/gpu/drm/bridge/imx/Kconfig | 10 -
drivers/gpu/drm/bridge/imx/Makefile | 1 -
.../gpu/drm/bridge/imx/imx-legacy-bridge.c | 91 ----
.../gpu/drm/bridge/of-display-mode-bridge.c | 93 +++++
.../gpu/drm/display/drm_bridge_connector.c | 18 +-
drivers/gpu/drm/exynos/Kconfig | 2 +
drivers/gpu/drm/exynos/exynos_dp.c | 110 ++---
drivers/gpu/drm/imx/ipuv3/Kconfig | 4 +-
drivers/gpu/drm/imx/ipuv3/imx-ldb.c | 6 +-
drivers/gpu/drm/imx/ipuv3/parallel-display.c | 5 +-
drivers/gpu/drm/rockchip/Kconfig | 1 +
.../gpu/drm/rockchip/analogix_dp-rockchip.c | 67 +--
include/drm/bridge/analogix_dp.h | 8 +-
include/drm/bridge/imx.h | 17 -
include/drm/bridge/of-display-mode-bridge.h | 17 +
20 files changed, 391 insertions(+), 471 deletions(-)
delete mode 100644 drivers/gpu/drm/bridge/imx/imx-legacy-bridge.c
create mode 100644 drivers/gpu/drm/bridge/of-display-mode-bridge.c
delete mode 100644 include/drm/bridge/imx.h
create mode 100644 include/drm/bridge/of-display-mode-bridge.h
---
Changes in v2:
- Update Exynos DP driver synchronously.
- Move the panel/bridge parsing to the Analogix side.
Changes in v3:
- Rebase for the existing devm_drm_bridge_alloc() applying commit.
- Fix the typographical error of panel/bridge check in exynos_dp_bind().
- Squash all commits related to skip_connector deletion in both Exynos and
Analogix code into one.
- Apply panel_bridge helper to make the codes more concise.
- Fix the handing of bridge in analogix_dp_bridge_get_modes().
- Remove unnecessary parameter struct drm_connector* for callback
&analogix_dp_plat_data.attach().
- In order to decouple the connector driver and the bridge driver, move
the bridge connector initilization to the Rockchip and Exynos sides.
Changes in v4:
- Rebase for the applied &drm_bridge_funcs.detect() modification commit.
- Rename analogix_dp_find_panel_or_bridge() to analogix_dp_finish_probe().
- Drop the drmm_encoder_init() modification commit.
- Rename the &analogix_dp_plat_data.bridge to
&analogix_dp_plat_data.next_bridge.
Changes in v5:
- Add legacy bridge to parse the display-timings node under the dp node
for Exynos side.
- Move color format check to &drm_connector_helper_funcs.atomic_check()
in order to get rid of &analogix_dp_plat_data.get_modes().
- Remove unused callback &analogix_dp_plat_data.get_modes().
- Distinguish the &drm_bridge->ops of Analogix bridge based on whether
the downstream device is a panel, a bridge or neither.
- Select DRM_DISPLAY_DP_AUX_BUS for DRM_ANALOGIX_DP, and remove it for
ROCKCHIP_ANALOGIX_DP.
- Apply rockchip_dp_attach() to support the next bridge attachment for
the Rockchip side.
- Move next_bridge attachment from Analogix side to Rockchip/Exynos sides.
Changes in v6:
- Move legacy bridge driver out of imx directory for multi-platform use.
- Apply DRM legacy bridge to parse display timings intead of implementing
the same codes only for Exynos DP.
- Ensure last bridge determines EDID/modes detection capabilities in DRM
bridge_connector driver.
- Remove unnecessary drm_bridge_get_modes() in
analogix_dp_bridge_get_modes().
- Simplify analogix_dp_bridge_edid_read().
- If the next is a bridge, set DRM_BRIDGE_OP_DETECT and return
connector_status_connected in analogix_dp_bridge_detect().
- Set flag DRM_BRIDGE_ATTACH_NO_CONNECTOR for bridge attachment while
binding. Meanwhile, make DRM_BRIDGE_ATTACH_NO_CONNECTOR unsuppported
in analogix_dp_bridge_attach().
- Move the next bridge attachment to the Analogix side rather than
scattered on Rockchip and Exynos sides.
- Remove the unnecessary analogix_dp_bridge_get_modes().
- Squash [PATCH v5 15/17] into [PATCH v5 17/17].
- Fix the &drm_bridge->ops to DRM_BRIDGE_OP_EDID | DRM_BRIDGE_OP_DETECT.
Changes in v7:
- As Luca suggested, simplify the code and related comment for bridge_connector
modifications. Additionally, move the commit related to bridge_connector to
the top of this patch series.
- Rename legacy-bridge driver to of-display-mode-bridge driver.
- Remove unnecessary API drm_bridge_is_legacy() and apply a temporary flag
&exynos_dp_device.has_of_bridge instead, which will be removed finally.
- Remove exynos_dp_legacy_bridge_init() and inline API
devm_drm_of_display_mode_bridge().
Changes in v8:
- Adapt the related modifications to the newest bridge_connector driver.
--
2.34.1
Ping...... On 12/17/2025 5:33 PM, Damon Ding wrote: > PATCH 1 is to ensure the last bridge declares OP_EDID or OP_MODES or both. > PATCH 2 is a small format optimization for struct analogid_dp_device. > PATCH 3 is to perform mode setting in &drm_bridge_funcs.atomic_enable. > PATCH 4 is to add a new parameter to store the point of next bridge. > PATCH 5 is to make legacy bridge driver more universal. > PATCH 6-11 are preparations for apply drm_bridge_connector helper. > PATCH 12 is to apply the drm_bridge_connector helper. > PATCH 13-15 are to move the panel/bridge parsing to the Analogix side. > PATCH 16 is to attach the next bridge on Analogix side uniformly. > PATCH 17-18 are to apply the panel_bridge helper. > > The following reviewed commits, which to make codes more concise, are > rebased to the front of this patch series: > > https://lore.kernel.org/all/20251110085823.1197472-1-damon.ding@rock-chips.com/ > https://lore.kernel.org/all/20251111022103.1350183-1-damon.ding@rock-chips.com/ > > Damon Ding (18): > drm/display: bridge_connector: Ensure last bridge determines > EDID/modes detection capabilities > drm/bridge: analogix_dp: Formalize the struct analogix_dp_device > drm/bridge: analogix_dp: Move &drm_bridge_funcs.mode_set to > &drm_bridge_funcs.atomic_enable > drm/bridge: analogix_dp: Add &analogix_dp_plat_data.next_bridge > drm/bridge: Move legacy bridge driver out of imx directory for > multi-platform use > drm/exynos: exynos_dp: Remove &exynos_dp_device.ptn_bridge > drm/exynos: exynos_dp: Remove unused &exynos_dp_device.connector > drm/exynos: exynos_dp: Apply of-display-mode-bridge to parse the > display-timings node > drm/bridge: analogix_dp: Remove redundant > &analogix_dp_plat_data.skip_connector > drm/bridge: analogix_dp: Move the color format check to > .atomic_check() for Rockchip platforms > drm/bridge: analogix_dp: Remove unused > &analogix_dp_plat_data.get_modes() > drm/bridge: analogix_dp: Apply drm_bridge_connector helper > drm/bridge: analogix_dp: Add new API analogix_dp_finish_probe() > drm/rockchip: analogix_dp: Apply analogix_dp_finish_probe() > drm/exynos: exynos_dp: Apply analogix_dp_finish_probe() > drm/bridge: analogix_dp: Attach the next bridge in > analogix_dp_bridge_attach() > drm/bridge: analogix_dp: Remove bridge disabing and panel unpreparing > in analogix_dp_unbind() > drm/bridge: analogix_dp: Apply panel_bridge helper > > drivers/gpu/drm/bridge/Kconfig | 10 + > drivers/gpu/drm/bridge/Makefile | 1 + > drivers/gpu/drm/bridge/analogix/Kconfig | 1 + > .../drm/bridge/analogix/analogix_dp_core.c | 395 +++++++++--------- > .../drm/bridge/analogix/analogix_dp_core.h | 5 +- > drivers/gpu/drm/bridge/imx/Kconfig | 10 - > drivers/gpu/drm/bridge/imx/Makefile | 1 - > .../gpu/drm/bridge/imx/imx-legacy-bridge.c | 91 ---- > .../gpu/drm/bridge/of-display-mode-bridge.c | 93 +++++ > .../gpu/drm/display/drm_bridge_connector.c | 18 +- > drivers/gpu/drm/exynos/Kconfig | 2 + > drivers/gpu/drm/exynos/exynos_dp.c | 110 ++--- > drivers/gpu/drm/imx/ipuv3/Kconfig | 4 +- > drivers/gpu/drm/imx/ipuv3/imx-ldb.c | 6 +- > drivers/gpu/drm/imx/ipuv3/parallel-display.c | 5 +- > drivers/gpu/drm/rockchip/Kconfig | 1 + > .../gpu/drm/rockchip/analogix_dp-rockchip.c | 67 +-- > include/drm/bridge/analogix_dp.h | 8 +- > include/drm/bridge/imx.h | 17 - > include/drm/bridge/of-display-mode-bridge.h | 17 + > 20 files changed, 391 insertions(+), 471 deletions(-) > delete mode 100644 drivers/gpu/drm/bridge/imx/imx-legacy-bridge.c > create mode 100644 drivers/gpu/drm/bridge/of-display-mode-bridge.c > delete mode 100644 include/drm/bridge/imx.h > create mode 100644 include/drm/bridge/of-display-mode-bridge.h > > --- > > Changes in v2: > - Update Exynos DP driver synchronously. > - Move the panel/bridge parsing to the Analogix side. > > Changes in v3: > - Rebase for the existing devm_drm_bridge_alloc() applying commit. > - Fix the typographical error of panel/bridge check in exynos_dp_bind(). > - Squash all commits related to skip_connector deletion in both Exynos and > Analogix code into one. > - Apply panel_bridge helper to make the codes more concise. > - Fix the handing of bridge in analogix_dp_bridge_get_modes(). > - Remove unnecessary parameter struct drm_connector* for callback > &analogix_dp_plat_data.attach(). > - In order to decouple the connector driver and the bridge driver, move > the bridge connector initilization to the Rockchip and Exynos sides. > > Changes in v4: > - Rebase for the applied &drm_bridge_funcs.detect() modification commit. > - Rename analogix_dp_find_panel_or_bridge() to analogix_dp_finish_probe(). > - Drop the drmm_encoder_init() modification commit. > - Rename the &analogix_dp_plat_data.bridge to > &analogix_dp_plat_data.next_bridge. > > Changes in v5: > - Add legacy bridge to parse the display-timings node under the dp node > for Exynos side. > - Move color format check to &drm_connector_helper_funcs.atomic_check() > in order to get rid of &analogix_dp_plat_data.get_modes(). > - Remove unused callback &analogix_dp_plat_data.get_modes(). > - Distinguish the &drm_bridge->ops of Analogix bridge based on whether > the downstream device is a panel, a bridge or neither. > - Select DRM_DISPLAY_DP_AUX_BUS for DRM_ANALOGIX_DP, and remove it for > ROCKCHIP_ANALOGIX_DP. > - Apply rockchip_dp_attach() to support the next bridge attachment for > the Rockchip side. > - Move next_bridge attachment from Analogix side to Rockchip/Exynos sides. > > Changes in v6: > - Move legacy bridge driver out of imx directory for multi-platform use. > - Apply DRM legacy bridge to parse display timings intead of implementing > the same codes only for Exynos DP. > - Ensure last bridge determines EDID/modes detection capabilities in DRM > bridge_connector driver. > - Remove unnecessary drm_bridge_get_modes() in > analogix_dp_bridge_get_modes(). > - Simplify analogix_dp_bridge_edid_read(). > - If the next is a bridge, set DRM_BRIDGE_OP_DETECT and return > connector_status_connected in analogix_dp_bridge_detect(). > - Set flag DRM_BRIDGE_ATTACH_NO_CONNECTOR for bridge attachment while > binding. Meanwhile, make DRM_BRIDGE_ATTACH_NO_CONNECTOR unsuppported > in analogix_dp_bridge_attach(). > - Move the next bridge attachment to the Analogix side rather than > scattered on Rockchip and Exynos sides. > - Remove the unnecessary analogix_dp_bridge_get_modes(). > - Squash [PATCH v5 15/17] into [PATCH v5 17/17]. > - Fix the &drm_bridge->ops to DRM_BRIDGE_OP_EDID | DRM_BRIDGE_OP_DETECT. > > Changes in v7: > - As Luca suggested, simplify the code and related comment for bridge_connector > modifications. Additionally, move the commit related to bridge_connector to > the top of this patch series. > - Rename legacy-bridge driver to of-display-mode-bridge driver. > - Remove unnecessary API drm_bridge_is_legacy() and apply a temporary flag > &exynos_dp_device.has_of_bridge instead, which will be removed finally. > - Remove exynos_dp_legacy_bridge_init() and inline API > devm_drm_of_display_mode_bridge(). > > Changes in v8: > - Adapt the related modifications to the newest bridge_connector driver. >
On Wed, 17 Dec 2025 17:33:03 +0800, Damon Ding wrote:
> PATCH 1 is to ensure the last bridge declares OP_EDID or OP_MODES or both.
> PATCH 2 is a small format optimization for struct analogid_dp_device.
> PATCH 3 is to perform mode setting in &drm_bridge_funcs.atomic_enable.
> PATCH 4 is to add a new parameter to store the point of next bridge.
> PATCH 5 is to make legacy bridge driver more universal.
> PATCH 6-11 are preparations for apply drm_bridge_connector helper.
> PATCH 12 is to apply the drm_bridge_connector helper.
> PATCH 13-15 are to move the panel/bridge parsing to the Analogix side.
> PATCH 16 is to attach the next bridge on Analogix side uniformly.
> PATCH 17-18 are to apply the panel_bridge helper.
>
> [...]
Applied, thanks!
[01/18] drm/display: bridge_connector: Ensure last bridge determines EDID/modes detection capabilities
commit: 3c05e956b85e70cbd5042e03f615b23ca4635385
[02/18] drm/bridge: analogix_dp: Formalize the struct analogix_dp_device
commit: 10a2694fde68ba214eca7d24229094fc2427fddd
[03/18] drm/bridge: analogix_dp: Move &drm_bridge_funcs.mode_set to &drm_bridge_funcs.atomic_enable
commit: cff3f89ffbdd4b6c43a117c01aaf5b290ff80803
Best regards,
--
Luca Ceresoli <luca.ceresoli@bootlin.com>
Hi Damon, Am Mittwoch, 17. Dezember 2025, 10:33:03 Mitteleuropäische Normalzeit schrieb Damon Ding: > PATCH 1 is to ensure the last bridge declares OP_EDID or OP_MODES or both. > PATCH 2 is a small format optimization for struct analogid_dp_device. > PATCH 3 is to perform mode setting in &drm_bridge_funcs.atomic_enable. > PATCH 4 is to add a new parameter to store the point of next bridge. > PATCH 5 is to make legacy bridge driver more universal. > PATCH 6-11 are preparations for apply drm_bridge_connector helper. > PATCH 12 is to apply the drm_bridge_connector helper. > PATCH 13-15 are to move the panel/bridge parsing to the Analogix side. > PATCH 16 is to attach the next bridge on Analogix side uniformly. > PATCH 17-18 are to apply the panel_bridge helper. On top of all the recent bridge-related commits, this series still works on my rk3588-eDP board - when the display is plugged in on boot. As that is the current state we also had before, this series: Tested-by: Heiko Stuebner <heiko@sntech.de> on rk3588 ====== !!! The following should not hold up this series though, because the analogix-dp not handling hotplug, is also the current state already!!! ====== However, actually hotplugging the device does not seem to work. With the hpd-gpio inside a dp-connector node. (1) When booting connected and unplugging the display I get: [ 42.725888] rockchip-dp fdec0000.edp: Rx Max Link Rate is abnormal :0 ! [ 42.733325] rockchip-dp fdec0000.edp: Rx Max Lane count is abnormal :0 ! [ 42.764853] rockchip-dp fdec0000.edp: LT link start failed! [ 42.771105] rockchip-dp fdec0000.edp: eDP link training failed (-110) [ 42.778329] rockchip-dp fdec0000.edp: unable to do link train, ret=-110 [ 42.785747] [drm:analogix_dp_bridge_atomic_enable] *ERROR* dp commit error, ret = -110 ( ... repeasts a bunch of times ... ) [ 43.284897] rockchip-dp fdec0000.edp: failed to set bridge, retry: 4 [ 43.292045] rockchip-dp fdec0000.edp: too many times retry set bridge, give it up plugging the eDP back in reenables the display successfully though. (2) Booting with the display unplugged Same messages as above, but plugging the display in for the first time does not create an output. I'll try to dig more, but if you have an idea, what I should look at, I'd, be really grateful. Thanks Heiko
Hello Heiko, Damon, On Mon Jan 19, 2026 at 5:06 PM CET, Heiko Stübner wrote: > Hi Damon, > > Am Mittwoch, 17. Dezember 2025, 10:33:03 Mitteleuropäische Normalzeit schrieb Damon Ding: >> PATCH 1 is to ensure the last bridge declares OP_EDID or OP_MODES or both. >> PATCH 2 is a small format optimization for struct analogid_dp_device. >> PATCH 3 is to perform mode setting in &drm_bridge_funcs.atomic_enable. >> PATCH 4 is to add a new parameter to store the point of next bridge. >> PATCH 5 is to make legacy bridge driver more universal. >> PATCH 6-11 are preparations for apply drm_bridge_connector helper. >> PATCH 12 is to apply the drm_bridge_connector helper. >> PATCH 13-15 are to move the panel/bridge parsing to the Analogix side. >> PATCH 16 is to attach the next bridge on Analogix side uniformly. >> PATCH 17-18 are to apply the panel_bridge helper. > > On top of all the recent bridge-related commits, this series still works > on my rk3588-eDP board - when the display is plugged in on boot. > > As that is the current state we also had before, this series: > Tested-by: Heiko Stuebner <heiko@sntech.de> on rk3588 I'm appplying patches 1-3 and got a checkpatch warning for each patch: WARNING: Unexpected content after email: 'Heiko Stuebner <heiko@sntech.de> on rk3588', should be: 'Heiko Stuebner <heiko@sntech.de> (on rk3588)' I'm fixing it while applying those 3 patches. Damon, can you fix that for the remaining patches before sending a new iteration? Luca -- Luca Ceresoli, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
Hi Luca, On 2/3/2026 7:11 PM, Luca Ceresoli wrote: > Hello Heiko, Damon, > > On Mon Jan 19, 2026 at 5:06 PM CET, Heiko Stübner wrote: >> Hi Damon, >> >> Am Mittwoch, 17. Dezember 2025, 10:33:03 Mitteleuropäische Normalzeit schrieb Damon Ding: >>> PATCH 1 is to ensure the last bridge declares OP_EDID or OP_MODES or both. >>> PATCH 2 is a small format optimization for struct analogid_dp_device. >>> PATCH 3 is to perform mode setting in &drm_bridge_funcs.atomic_enable. >>> PATCH 4 is to add a new parameter to store the point of next bridge. >>> PATCH 5 is to make legacy bridge driver more universal. >>> PATCH 6-11 are preparations for apply drm_bridge_connector helper. >>> PATCH 12 is to apply the drm_bridge_connector helper. >>> PATCH 13-15 are to move the panel/bridge parsing to the Analogix side. >>> PATCH 16 is to attach the next bridge on Analogix side uniformly. >>> PATCH 17-18 are to apply the panel_bridge helper. >> >> On top of all the recent bridge-related commits, this series still works >> on my rk3588-eDP board - when the display is plugged in on boot. >> >> As that is the current state we also had before, this series: >> Tested-by: Heiko Stuebner <heiko@sntech.de> on rk3588 > > I'm appplying patches 1-3 and got a checkpatch warning for each patch: > > WARNING: Unexpected content after email: 'Heiko Stuebner <heiko@sntech.de> on rk3588', should be: 'Heiko Stuebner <heiko@sntech.de> (on rk3588)' > > I'm fixing it while applying those 3 patches. > > Damon, can you fix that for the remaining patches before sending a new > iteration? > Yes, will fix in v9. Best regards, Damon
Hi Heiko, On 1/20/2026 12:06 AM, Heiko Stübner wrote: > Hi Damon, > > Am Mittwoch, 17. Dezember 2025, 10:33:03 Mitteleuropäische Normalzeit schrieb Damon Ding: >> PATCH 1 is to ensure the last bridge declares OP_EDID or OP_MODES or both. >> PATCH 2 is a small format optimization for struct analogid_dp_device. >> PATCH 3 is to perform mode setting in &drm_bridge_funcs.atomic_enable. >> PATCH 4 is to add a new parameter to store the point of next bridge. >> PATCH 5 is to make legacy bridge driver more universal. >> PATCH 6-11 are preparations for apply drm_bridge_connector helper. >> PATCH 12 is to apply the drm_bridge_connector helper. >> PATCH 13-15 are to move the panel/bridge parsing to the Analogix side. >> PATCH 16 is to attach the next bridge on Analogix side uniformly. >> PATCH 17-18 are to apply the panel_bridge helper. > > On top of all the recent bridge-related commits, this series still works > on my rk3588-eDP board - when the display is plugged in on boot. > > As that is the current state we also had before, this series: > Tested-by: Heiko Stuebner <heiko@sntech.de> on rk3588 > > > ====== > !!! The following should not hold up this series though, because the > analogix-dp not handling hotplug, is also the current state already!!! > ====== > > However, actually hotplugging the device does not seem to work. > > With the hpd-gpio inside a dp-connector node. > > > (1) When booting connected and unplugging the display I get: > > [ 42.725888] rockchip-dp fdec0000.edp: Rx Max Link Rate is abnormal :0 ! > [ 42.733325] rockchip-dp fdec0000.edp: Rx Max Lane count is abnormal :0 ! > [ 42.764853] rockchip-dp fdec0000.edp: LT link start failed! > [ 42.771105] rockchip-dp fdec0000.edp: eDP link training failed (-110) > [ 42.778329] rockchip-dp fdec0000.edp: unable to do link train, ret=-110 > [ 42.785747] [drm:analogix_dp_bridge_atomic_enable] *ERROR* dp commit error, ret = -110 > ( ... repeasts a bunch of times ... ) > [ 43.284897] rockchip-dp fdec0000.edp: failed to set bridge, retry: 4 > [ 43.292045] rockchip-dp fdec0000.edp: too many times retry set bridge, give it up > > plugging the eDP back in reenables the display successfully though. > > (2) Booting with the display unplugged > > Same messages as above, but plugging the display in for the first time > does not create an output. > > I'll try to dig more, but if you have an idea, what I should look at, I'd, > be really grateful. > Sorry for the late reply. I've been heavily occupied with the downstream work recently. I can reproduce the same issue on my RK3576 IOTEST board, which is equipped with a standard DP receptacle for eDP interface. (BTW: The RK3576 Analogix DP functions properly with a set of targeted changes, and I plan to upstream these modifications later. :-)) Regarding the eDP HPD exception, several functional patches for HPD handling have not yet been synced to the upstream. I will verify these changes and submit them when time permits. Best regards, Damon
© 2016 - 2026 Red Hat, Inc.