diff --git a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c index be4a5f67f261..7f2215aefe7d 100644 --- a/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +++ b/drivers/gpu/drm/bridge/analogix/analogix_dp_core.c @@ -1311,14 +1311,24 @@ static int analogix_dp_bridge_attach(struct drm_bridge *bridge, struct drm_connector *connector = NULL; int ret = 0; - if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) - return 0; - if (!bridge->encoder) { DRM_ERROR("Parent encoder object not found"); return -ENODEV; } + if (dp->plat_data->bridge) { + ret = drm_bridge_attach(bridge->encoder, dp->plat_data->bridge, bridge, + dp->plat_data->skip_connector ? + 0 : DRM_BRIDGE_ATTACH_NO_CONNECTOR); + if (ret) { + DRM_ERROR("Failed to attach external bridge: %d\n", ret); + return ret; + } + } + + if (flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR) + return 0; + if (!dp->plat_data->skip_connector) { int connector_type = DRM_MODE_CONNECTOR_eDP; diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index cd044af50ea2..6d6df1674d43 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -263,17 +263,6 @@ static int rockchip_dp_bridge_attach(struct analogix_dp_plat_data *plat_data, { struct rockchip_dp_device *dp = to_dp(plat_data); struct rockchip_drm_sub_dev *sdev = &dp->sub_dev; - int ret; - - if (plat_data->bridge) { - ret = drm_bridge_attach(&dp->encoder, plat_data->bridge, bridge, - rockchip_dp_skip_connector(bridge) ? - DRM_BRIDGE_ATTACH_NO_CONNECTOR : 0); - if (ret) { - DRM_ERROR("Failed to attach bridge to drm: %d\n", ret); - return ret; - } - } if (!connector) { struct list_head *connector_list =