From b9c2efe661aed7a3fc421c294f01fdc636351ad9 Mon Sep 17 00:00:00 2001 From: Wyon Bi Date: Sat, 20 Aug 2022 12:40:17 +0000 Subject: [PATCH] drm/rockchip: dw-dp: Support periodically polled for external bridge Signed-off-by: Wyon Bi Change-Id: Icbcd9619b2bc5338cf5351c7a20811b8a65d9df3 --- drivers/gpu/drm/rockchip/dw-dp.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/gpu/drm/rockchip/dw-dp.c b/drivers/gpu/drm/rockchip/dw-dp.c index d5c0564adeb2..37fb38b908cb 100644 --- a/drivers/gpu/drm/rockchip/dw-dp.c +++ b/drivers/gpu/drm/rockchip/dw-dp.c @@ -682,6 +682,15 @@ static int dw_dp_connector_get_modes(struct drm_connector *connector) struct edid *edid; int num_modes = 0; + if (dp->right && dp->right->next_bridge) { + struct drm_bridge *bridge = dp->right->next_bridge; + + if (bridge->ops & DRM_BRIDGE_OP_MODES) { + if (!drm_bridge_get_modes(bridge, connector)) + return 0; + } + } + if (dp->next_bridge) num_modes = drm_bridge_get_modes(dp->next_bridge, connector); @@ -2114,6 +2123,9 @@ static int dw_dp_connector_init(struct dw_dp *dp) int ret; connector->polled = DRM_CONNECTOR_POLL_HPD; + if (dp->next_bridge && dp->next_bridge->ops & DRM_BRIDGE_OP_DETECT) + connector->polled = DRM_CONNECTOR_POLL_CONNECT | + DRM_CONNECTOR_POLL_DISCONNECT; connector->ycbcr_420_allowed = true; ret = drm_connector_init(bridge->dev, connector,